Generated packs can now be selected for printing.

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1107 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2008-08-08 21:35:38 +00:00
parent 5cde673976
commit 2d2c434bd8
18 changed files with 322 additions and 64 deletions
+116 -1
View File
@@ -10,6 +10,113 @@
#include <gui/card_select_window.hpp>
#include <gui/control/select_card_list.hpp>
#include <util/window_id.hpp>
#include <wx/statline.h>
DECLARE_TYPEOF_COLLECTION(CardP);
DECLARE_TYPEOF_COLLECTION(ExportCardSelectionChoiceP);
// ----------------------------------------------------------------------------- : ExportCardSelectionChoice
ExportCardSelectionChoice::ExportCardSelectionChoice()
: label(_BUTTON_("export custom cards selection"))
, type(EXPORT_SEL_CUSTOM)
, the_cards(&own_cards)
{}
ExportCardSelectionChoice::ExportCardSelectionChoice(const Set& set)
: label(_BUTTON_("export entire set"))
, type(EXPORT_SEL_ENTIRE_SET)
, the_cards(&set.cards)
{}
ExportCardSelectionChoice::ExportCardSelectionChoice(const String& label, const vector<CardP>& cards)
: label(label)
, type(EXPORT_SEL_SUBSET)
, own_cards(cards)
, the_cards(&own_cards)
{}
ExportCardSelectionChoice::ExportCardSelectionChoice(const String& label, const vector<CardP>* cards)
: label(label)
, type(EXPORT_SEL_SUBSET)
, the_cards(cards)
{}
// ----------------------------------------------------------------------------- : ExportWindowBase
ExportWindowBase::ExportWindowBase(const SetP& set, const ExportCardSelectionChoices& cards_choices)
: set(set), cards_choices(cards_choices)
, active_choice(0)
, select_cards(nullptr)
{}
wxSizer* ExportWindowBase::Create() {
// create sizer
wxSizer* s = new wxStaticBoxSizer(wxVERTICAL, this, _LABEL_("select cards"));
// create choice radio buttons
int i = 0;
bool any_custom = false;
FOR_EACH(choice, cards_choices) {
wxRadioButton* btn = new wxRadioButton(this, ID_SELECTION_CHOICE + i, choice->label);
btn->Enable(!choice->the_cards->empty() || choice->type == EXPORT_SEL_CUSTOM);
s->Add(btn, 0, wxALL, 6);
s->AddSpacer(-4);
any_custom |= choice->type == EXPORT_SEL_CUSTOM;
i++;
}
// custom selection button
if (any_custom) {
select_cards = new wxButton(this, ID_SELECT_CARDS, _BUTTON_("select cards"));
wxSizer* s2 = new wxBoxSizer(wxHORIZONTAL);
s2->Add(select_cards, 1, wxLEFT, 20);
s->AddSpacer(4);
s->Add(s2, 0, wxALL & ~wxTOP, 6);
}
// total count label
s->AddSpacer(4);
s->Add(new wxStaticLine(this), 0, wxALL | wxEXPAND, 4);
s->AddSpacer(4);
card_count = new wxStaticText(this, wxID_ANY, wxEmptyString);
s->Add(card_count, 0, wxALL & ~wxTOP, 6);
s->AddSpacer(4);
// done
update();
return s;
}
void ExportWindowBase::onChangeSelectionChoice(wxCommandEvent& ev) {
active_choice = ev.GetId() - ID_SELECTION_CHOICE;
update();
}
void ExportWindowBase::onSelectCards(wxCommandEvent&) {
CardSelectWindow wnd(this, set, _LABEL_("select cards"), _TITLE_("select cards"));
ExportCardSelectionChoice& choice = *cards_choices.at(active_choice);
wnd.setSelection(choice.own_cards);
if (wnd.ShowModal() != wxID_OK) {
return; // cancel
}
// store cards
choice.own_cards.clear();
wnd.getSelection(choice.own_cards);
update();
}
void ExportWindowBase::update() {
ExportCardSelectionChoice& choice = *cards_choices.at(active_choice);
cards = choice.the_cards;
if (select_cards) {
select_cards->Enable(choice.type == EXPORT_SEL_CUSTOM);
}
card_count->SetLabel(_LABEL_1_("selected card count", String::Format(_("%d"),cards->size())));
wxWindow* ok_btn = FindWindow(wxID_OK);
if (ok_btn) ok_btn->Enable(!cards->empty());
}
BEGIN_EVENT_TABLE(ExportWindowBase, wxDialog)
EVT_RADIOBUTTON(wxID_ANY, ExportWindowBase::onChangeSelectionChoice)
EVT_BUTTON (ID_SELECT_CARDS, ExportWindowBase::onSelectCards)
END_EVENT_TABLE ()
// ----------------------------------------------------------------------------- : CardSelectWindow
@@ -36,7 +143,7 @@ CardSelectWindow::CardSelectWindow(Window* parent, const SetP& set, const String
s->Add(s2, 0, wxEXPAND | wxALL & ~wxTOP, 8);
s->SetSizeHints(this);
SetSizer(s);
SetSize(500,500);
SetSize(600,500);
}
}
@@ -44,6 +151,14 @@ bool CardSelectWindow::isSelected(const CardP& card) const {
return list->isSelected(card);
}
void CardSelectWindow::getSelection(vector<CardP>& out) const {
list->getSelection(out);
}
void CardSelectWindow::setSelection(const vector<CardP>& cards) {
list->setSelection(cards);
}
void CardSelectWindow::onSelectAll(wxCommandEvent&) {
list->selectAll();
}