//+----------------------------------------------------------------------------+ //| Description: Magic Set Editor - Program to make Magic (tm) cards | //| Copyright: (C) 2001 - 2007 Twan van Laarhoven | //| License: GNU General Public License 2 or later (see file COPYING) | //+----------------------------------------------------------------------------+ // ----------------------------------------------------------------------------- : Includes #include #include #include #include #include #include #include #include #include #include #include #include DECLARE_POINTER_TYPE(ExportTemplate); // ----------------------------------------------------------------------------- : HtmlExportWindow HtmlExportWindow::HtmlExportWindow(Window* parent, const SetP& set) : wxDialog(parent,wxID_ANY,_TITLE_("export html"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxCLIP_CHILDREN) , set(set) { // init controls list = new PackageList(this, ID_EXPORT_LIST); options = new ExportOptionsEditor(this, wxID_ANY, wxNO_BORDER); options->setSet(new_intrusive1(set->stylesheet)); // dummy set // init sizers wxSizer* s = new wxBoxSizer(wxVERTICAL); s->Add(new wxStaticText(this, wxID_ANY, _LABEL_("html template")), 0, wxALL, 4); s->Add(list, 0, wxEXPAND | wxALL & ~wxTOP, 4); wxSizer* s2 = new wxStaticBoxSizer(wxVERTICAL, this, _LABEL_("html export options")); s2->Add(options, 2, wxEXPAND, 0); s->Add(s2, 1, wxEXPAND | wxALL, 4); s->Add(CreateButtonSizer(wxOK | wxCANCEL) , 0, wxEXPAND | wxALL, 8); s->SetSizeHints(this); SetSizer(s); SetSize(700,500); // list list->showData(set->game->name() + _("-*")); list->select(settings.gameSettingsFor(*set->game).default_export); } void HtmlExportWindow::onOk(wxCommandEvent&) { ExportTemplateP exp = list->getSelection(); // get filename String name = wxFileSelector(_TITLE_("save html"),_(""),_(""),_(""),exp->file_type, wxSAVE | wxOVERWRITE_PROMPT); if (name.empty()) return; wxBusyCursor wait; // export info for script ExportInfo info; info.export_template = exp; info.set = set; WITH_DYNAMIC_ARG(export_info, &info); // create directory? if (exp->create_directory) { wxFileName fn(name); info.directory_relative = fn.GetName() + _("-files"); fn.SetFullName(info.directory_relative); info.directory_absolute = fn.GetFullPath(); wxMkdir(info.directory_absolute); } // run export script Context& ctx = set->getContext(); LocalScope scope(ctx); ctx.setVariable(_("options"), to_script(&settings.exportOptionsFor(*exp))); ctx.setVariable(_("directory"), to_script(info.directory_relative)); ScriptValueP result = exp->script.invoke(ctx); // Save to file wxFileOutputStream file(name); { // TODO: write as image? // write as string wxTextOutputStream stream(file); stream.WriteString(*result); } // Done EndModal(wxID_OK); } void HtmlExportWindow::onTemplateSelect(wxCommandEvent&) { wxBusyCursor wait; ExportTemplateP export_template = list->getSelection(); handle_pending_errors(); options->showExport(export_template); settings.gameSettingsFor(*set->game).default_export = export_template->name(); UpdateWindowUI(wxUPDATE_UI_RECURSE); } void HtmlExportWindow::onUpdateUI(wxUpdateUIEvent& ev) { switch (ev.GetId()) { case wxID_OK: ev.Enable(list->hasSelection()); break; } } BEGIN_EVENT_TABLE(HtmlExportWindow,wxDialog) EVT_GALLERY_SELECT (ID_EXPORT_LIST, HtmlExportWindow::onTemplateSelect) EVT_BUTTON (wxID_OK, HtmlExportWindow::onOk) EVT_UPDATE_UI (wxID_ANY, HtmlExportWindow::onUpdateUI) END_EVENT_TABLE ()