diff --git a/src/gui/control/item_list.cpp b/src/gui/control/item_list.cpp index 526e8bb5..e9a2aa21 100644 --- a/src/gui/control/item_list.cpp +++ b/src/gui/control/item_list.cpp @@ -44,7 +44,7 @@ void ItemList::selectNext() { selectItemPos(selected_item_pos + 1, true, true); } void ItemList::selectFirst() { - assert(0 < (long)sorted_list.size()); + if (sorted_list.empty()) return; selectItemPos(0, true); } diff --git a/src/gui/set/random_pack_panel.cpp b/src/gui/set/random_pack_panel.cpp index b4f81dc4..9bed6028 100644 --- a/src/gui/set/random_pack_panel.cpp +++ b/src/gui/set/random_pack_panel.cpp @@ -113,10 +113,10 @@ void PackTotalsPanel::draw(DC& dc) { } // draw total dc.SetPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)); - dc.DrawLine(0, y-4, size.x, y-4); - dc.SetPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT)); dc.DrawLine(0, y-3, size.x, y-3); - y += 6; + dc.SetPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT)); + dc.DrawLine(0, y-2, size.x, y-2); + y += 7; drawItem(dc, y, _LABEL_("total cards"), total); } @@ -334,6 +334,7 @@ void RandomPackPanel::generate() { } } card_list->rebuild(); + card_list->selectFirst(); } // ----------------------------------------------------------------------------- : Selection @@ -343,7 +344,12 @@ CardP RandomPackPanel::selectedCard() const { } void RandomPackPanel::selectCard(const CardP& card) { - preview->setCard(card); + // Don't change the card based on other panels + //preview->setCard(card); +} +void RandomPackPanel::onCardSelect(CardSelectEvent& ev) { + preview->setCard(ev.getCard()); + ev.Skip(); // but do change other panels' selection } void RandomPackPanel::selectionChoices(ExportCardSelectionChoices& out) { @@ -353,6 +359,12 @@ void RandomPackPanel::selectionChoices(ExportCardSelectionChoices& out) { )); } + +BEGIN_EVENT_TABLE(RandomPackPanel, wxPanel) + EVT_CARD_SELECT(wxID_ANY, RandomPackPanel::onCardSelect) +END_EVENT_TABLE () + + // ----------------------------------------------------------------------------- : Clipboard bool RandomPackPanel::canCopy() const { return card_list->canCopy(); } diff --git a/src/gui/set/random_pack_panel.hpp b/src/gui/set/random_pack_panel.hpp index 67ebb6ff..63b3e969 100644 --- a/src/gui/set/random_pack_panel.hpp +++ b/src/gui/set/random_pack_panel.hpp @@ -16,6 +16,7 @@ class CardViewer; class RandomCardList; class PackTotalsPanel; +struct CardSelectEvent; DECLARE_POINTER_TYPE(PackType); // ----------------------------------------------------------------------------- : RandomPackPanel @@ -47,6 +48,8 @@ class RandomPackPanel : public SetWindowPanel { virtual void doCopy(); private: + DECLARE_EVENT_TABLE(); + CardViewer* preview; ///< Card preview RandomCardList* card_list; ///< The list of cards wxTextCtrl* seed; ///< Seed value @@ -74,6 +77,8 @@ class RandomPackPanel : public SetWindowPanel { void generate(); /// Store the settings void storeSettings(); + + void onCardSelect(CardSelectEvent& ev); public: typedef PackItem PackItem_for_typeof; }; diff --git a/src/gui/set/window.cpp b/src/gui/set/window.cpp index 052fa21a..f51da468 100644 --- a/src/gui/set/window.cpp +++ b/src/gui/set/window.cpp @@ -146,7 +146,7 @@ SetWindow::SetWindow(Window* parent, const SetP& set) addPanel(menuWindow, tabBar, new StylePanel (this, wxID_ANY), 2, _("window_style"), _("style tab")); addPanel(menuWindow, tabBar, new KeywordsPanel (this, wxID_ANY), 3, _("window_keywords"), _("keywords tab")); addPanel(menuWindow, tabBar, new StatsPanel (this, wxID_ANY), 4, _("window_statistics"), _("stats tab")); - addPanel(menuWindow, tabBar, new RandomPackPanel(this, wxID_ANY), 5, _("window_cards"), _("random pack tab")); // TODO: Get me an icon + addPanel(menuWindow, tabBar, new RandomPackPanel(this, wxID_ANY), 5, _("window_random_pack"),_("random pack tab")); selectPanel(ID_WINDOW_CARDS); // select cards panel // loose ends diff --git a/src/resource/msw/mse.rc b/src/resource/msw/mse.rc index 4b66bc2b..c4540d43 100644 --- a/src/resource/msw/mse.rc +++ b/src/resource/msw/mse.rc @@ -65,6 +65,7 @@ tool/window_set_info IMAGE "tool/window_set_info.png" tool/window_style IMAGE "tool/window_style.png" tool/window_keywords IMAGE "tool/window_keywords.png" tool/window_statistics IMAGE "tool/window_statistics.png" +tool/window_random_pack IMAGE "tool/window_random_pack.png" tool/help IMAGE "tool/help.png" diff --git a/src/resource/msw/tool/window_random_pack.png b/src/resource/msw/tool/window_random_pack.png new file mode 100644 index 00000000..a9731622 Binary files /dev/null and b/src/resource/msw/tool/window_random_pack.png differ