mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
Check/uncheck all selected cards in export window (Closes #93)
This commit is contained in:
@@ -4,6 +4,9 @@ Magic Set Editor changelog, for the details see `git log`
|
|||||||
HEAD: new items added as changes are made
|
HEAD: new items added as changes are made
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Features:
|
||||||
|
* You can now check/uncheck all selected cards in the export window (#93)
|
||||||
|
|
||||||
Template features:
|
Template features:
|
||||||
* Localization of game/stylesheet/symbol_font names is now done in those templates, instead of via the program-wide locale file. (#100)
|
* Localization of game/stylesheet/symbol_font names is now done in those templates, instead of via the program-wide locale file. (#100)
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,17 @@ void SelectCardList::toggle(const CardP& card) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SelectCardList::toggleSelected(bool select) {
|
||||||
|
for (long i = GetFirstSelected(); i != -1; i = GetNextSelected(i)) {
|
||||||
|
if (select) {
|
||||||
|
selected.insert(getCard(i));
|
||||||
|
} else {
|
||||||
|
selected.erase(getCard(i));
|
||||||
|
}
|
||||||
|
RefreshItem(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SelectCardList::onKeyDown(wxKeyEvent& ev) {
|
void SelectCardList::onKeyDown(wxKeyEvent& ev) {
|
||||||
if (selected_item_pos == -1 || !selected_item) {
|
if (selected_item_pos == -1 || !selected_item) {
|
||||||
// no selection
|
// no selection
|
||||||
@@ -82,18 +93,15 @@ void SelectCardList::onKeyDown(wxKeyEvent& ev) {
|
|||||||
}
|
}
|
||||||
switch (ev.GetKeyCode()) {
|
switch (ev.GetKeyCode()) {
|
||||||
case WXK_SPACE: {
|
case WXK_SPACE: {
|
||||||
toggle(getCard());
|
toggleSelected(!isSelected(getCard()));
|
||||||
RefreshItem(selected_item_pos);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WXK_NUMPAD_ADD: case '+': {
|
case WXK_NUMPAD_ADD: case '+': {
|
||||||
selected.insert(getCard());
|
toggleSelected(true);
|
||||||
RefreshItem(selected_item_pos);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WXK_NUMPAD_SUBTRACT: case '-': {
|
case WXK_NUMPAD_SUBTRACT: case '-': {
|
||||||
selected.erase(getCard());
|
toggleSelected(false);
|
||||||
RefreshItem(selected_item_pos);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -106,8 +114,14 @@ void SelectCardList::onLeftDown(wxMouseEvent& ev) {
|
|||||||
long item = HitTest(wxPoint(ev.GetX(), ev.GetY()), flags);
|
long item = HitTest(wxPoint(ev.GetX(), ev.GetY()), flags);
|
||||||
if (flags == wxLIST_HITTEST_ONITEMICON) {
|
if (flags == wxLIST_HITTEST_ONITEMICON) {
|
||||||
// only clicking the icon toggles
|
// only clicking the icon toggles
|
||||||
toggle(getCard(item));
|
if (IsSelected(item)) {
|
||||||
RefreshItem(item);
|
// if multiple items are selected in the view (regardless of checkbox status), check/uncheck them all
|
||||||
|
toggleSelected(!isSelected(getCard(item)));
|
||||||
|
return; // don't change selection
|
||||||
|
} else {
|
||||||
|
toggle(getCard(item));
|
||||||
|
RefreshItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ private:
|
|||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
std::set<CardP> selected; ///< which cards are selected?
|
std::set<CardP> selected; ///< which cards are selected?
|
||||||
|
|
||||||
void toggle(const CardP& card);
|
void toggle(const CardP& card);
|
||||||
|
void toggleSelected(bool select);
|
||||||
|
|
||||||
void onKeyDown(wxKeyEvent&);
|
void onKeyDown(wxKeyEvent&);
|
||||||
void onLeftDown(wxMouseEvent&);
|
void onLeftDown(wxMouseEvent&);
|
||||||
|
|||||||
Reference in New Issue
Block a user