mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-11 21:27:01 -04:00
fixed bug: empty OptionalScript were saved as empty string, causing parse error when reading.
custom pack types can now be removed again. git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1329 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -313,6 +313,7 @@ class CustomPackDialog : public wxDialog {
|
|||||||
void storePack();
|
void storePack();
|
||||||
void onAmountChange(wxSpinEvent&);
|
void onAmountChange(wxSpinEvent&);
|
||||||
void onOk(wxCommandEvent&);
|
void onOk(wxCommandEvent&);
|
||||||
|
void onRemove(wxCommandEvent&);
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomPackDialog::CustomPackDialog(Window* parent, const SetP& set, const PackTypeP& edited_pack)
|
CustomPackDialog::CustomPackDialog(Window* parent, const SetP& set, const PackTypeP& edited_pack)
|
||||||
@@ -322,6 +323,7 @@ CustomPackDialog::CustomPackDialog(Window* parent, const SetP& set, const PackTy
|
|||||||
// init ui
|
// init ui
|
||||||
totals = new PackTotalsPanel(this, wxID_ANY, generator, true);
|
totals = new PackTotalsPanel(this, wxID_ANY, generator, true);
|
||||||
name = new wxTextCtrl(this, wxID_ANY, edited_pack ? edited_pack->name : _("custom pack"));
|
name = new wxTextCtrl(this, wxID_ANY, edited_pack ? edited_pack->name : _("custom pack"));
|
||||||
|
wxButton* remove = new wxButton(this, ID_REMOVE_ITEM, _BUTTON_("remove item"));
|
||||||
// init sizer
|
// init sizer
|
||||||
wxSizer* s = new wxBoxSizer(wxVERTICAL);
|
wxSizer* s = new wxBoxSizer(wxVERTICAL);
|
||||||
wxSizer* s2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _LABEL_("pack name"));
|
wxSizer* s2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _LABEL_("pack name"));
|
||||||
@@ -338,7 +340,10 @@ CustomPackDialog::CustomPackDialog(Window* parent, const SetP& set, const PackTy
|
|||||||
s5->Add(totals, 1, wxEXPAND | wxALL, 4);
|
s5->Add(totals, 1, wxEXPAND | wxALL, 4);
|
||||||
s3->Add(s5, 1, wxEXPAND | wxLEFT, 8);
|
s3->Add(s5, 1, wxEXPAND | wxLEFT, 8);
|
||||||
s->Add(s3, 0, wxEXPAND | wxALL & ~wxTOP, 8);
|
s->Add(s3, 0, wxEXPAND | wxALL & ~wxTOP, 8);
|
||||||
s->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxALL & ~wxTOP, 8);
|
wxSizer* s6 = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
s6->Add(remove, 0, wxALL & ~wxTOP & ~wxRIGHT, 8);
|
||||||
|
s6->Add(CreateButtonSizer(wxOK | wxCANCEL), 1, wxALL & ~wxTOP, 8);
|
||||||
|
s->Add(s6, 0, wxEXPAND);
|
||||||
// add spin controls
|
// add spin controls
|
||||||
FOR_EACH(pack, set->game->pack_types) {
|
FOR_EACH(pack, set->game->pack_types) {
|
||||||
if (pack->selectable) continue; // this pack is already selectable from the main UI
|
if (pack->selectable) continue; // this pack is already selectable from the main UI
|
||||||
@@ -392,12 +397,17 @@ void CustomPackDialog::onOk(wxCommandEvent&) {
|
|||||||
storePack();
|
storePack();
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
}
|
}
|
||||||
|
void CustomPackDialog::onRemove(wxCommandEvent&) {
|
||||||
|
edited_pack = PackTypeP();
|
||||||
|
EndModal(wxID_OK);
|
||||||
|
}
|
||||||
void CustomPackDialog::onAmountChange(wxSpinEvent&) {
|
void CustomPackDialog::onAmountChange(wxSpinEvent&) {
|
||||||
updateTotals();
|
updateTotals();
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(CustomPackDialog, wxDialog)
|
BEGIN_EVENT_TABLE(CustomPackDialog, wxDialog)
|
||||||
EVT_BUTTON (wxID_OK, CustomPackDialog::onOk)
|
EVT_BUTTON (wxID_OK, CustomPackDialog::onOk)
|
||||||
|
EVT_BUTTON (ID_REMOVE_ITEM, CustomPackDialog::onRemove)
|
||||||
EVT_SPINCTRL (ID_PACK_AMOUNT, CustomPackDialog::onAmountChange)
|
EVT_SPINCTRL (ID_PACK_AMOUNT, CustomPackDialog::onAmountChange)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
@@ -578,18 +588,21 @@ void RandomPackPanel::onCommand(int id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void RandomPackPanel::onPackTypeClick(wxCommandEvent& ev) {
|
void RandomPackPanel::onPackTypeClick(wxCommandEvent& ev) {
|
||||||
for (size_t i = 0 ; i < pickers.size() ; ++i) {
|
FOR_EACH(pick, pickers) {
|
||||||
const PackAmountPicker& pick = pickers[i];
|
|
||||||
if (pick.label == ev.GetEventObject()) {
|
if (pick.label == ev.GetEventObject()) {
|
||||||
// edit this pack type
|
// edit this pack type
|
||||||
CustomPackDialog dlg(this, set, pick.pack);
|
CustomPackDialog dlg(this, set, pick.pack);
|
||||||
if (dlg.ShowModal() == wxID_OK) {
|
if (dlg.ShowModal() == wxID_OK) {
|
||||||
if (dlg.get()) {
|
if (dlg.get()) {
|
||||||
|
// update pack
|
||||||
|
for (size_t i = 0 ; i < set->pack_types.size() ; ++i) {
|
||||||
|
if (set->pack_types[i] == pick.pack) {
|
||||||
|
set->actions.addAction( new ChangePackAction(*set,i,dlg.get()) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
// delete pack
|
// delete pack
|
||||||
set->actions.addAction( new AddPackAction(REMOVE,*set,pick.pack) );
|
set->actions.addAction( new AddPackAction(REMOVE,*set,pick.pack) );
|
||||||
} else {
|
|
||||||
// update pack
|
|
||||||
set->actions.addAction( new ChangePackAction(*set,i,dlg.get()) );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -90,7 +90,9 @@ template <> void Reader::handle(OptionalScript& os) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <> void Writer::handle(const OptionalScript& os) {
|
template <> void Writer::handle(const OptionalScript& os) {
|
||||||
handle(os.unparsed);
|
if (os.script) {
|
||||||
|
handle(os.unparsed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <> void GetDefaultMember::handle(const OptionalScript& os) {
|
template <> void GetDefaultMember::handle(const OptionalScript& os) {
|
||||||
|
|||||||
Reference in New Issue
Block a user