// ----------------------------------------------------------------------------- // Adds controls to the entry panel toolbar // ----------------------------------------------------------------------------- void GfxEntryPanel::setupToolbar() { // Zoom auto g_zoom = new SToolBarGroup(toolbar_, "Zoom"); slider_zoom_ = new SZoomSlider(g_zoom, gfx_canvas_); g_zoom->addCustomControl(slider_zoom_); toolbar_->addGroup(g_zoom); // Editing operations auto g_edit = new SToolBarGroup(toolbar_, "Editing"); g_edit->addActionButton("pgfx_settrans", ""); cb_colour_ = new ColourBox(g_edit, -1, ColRGBA::BLACK, false, true); cb_colour_->setPalette(&gfx_canvas_->palette()); button_brush_ = g_edit->addActionButton("pgfx_setbrush", ""); g_edit->addCustomControl(cb_colour_); g_edit->addActionButton("pgfx_drag", ""); g_edit->addActionButton("pgfx_draw", ""); g_edit->addActionButton("pgfx_erase", ""); g_edit->addActionButton("pgfx_magic", ""); SAction::fromId("pgfx_drag")->setChecked(); // Drag offsets by default toolbar_->addGroup(g_edit); // Image operations auto g_image = new SToolBarGroup(toolbar_, "Image"); g_image->addActionButton("pgfx_mirror", ""); g_image->addActionButton("pgfx_flip", ""); g_image->addActionButton("pgfx_rotate", ""); g_image->addActionButton("pgfx_crop", ""); g_image->addActionButton("pgfx_convert", ""); toolbar_->addGroup(g_image); // Colour operations auto g_colour = new SToolBarGroup(toolbar_, "Colour"); g_colour->addActionButton("pgfx_remap", ""); g_colour->addActionButton("pgfx_colourise", ""); g_colour->addActionButton("pgfx_tint", ""); toolbar_->addGroup(g_colour); // Misc operations auto g_png = new SToolBarGroup(toolbar_, "PNG"); g_png->addActionButton("pgfx_pngopt", ""); toolbar_->addGroup(g_png); toolbar_->enableGroup("PNG", false); }
bool VCMatrix::loadXML(const QDomElement *root) { QDomNode node; QDomElement tag; QString str; Q_ASSERT(root != NULL); if (root->tagName() != KXMLQLCVCMatrix) { qWarning() << Q_FUNC_INFO << "Matrix node not found"; return false; } /* Widget commons */ loadXMLCommon(root); /* Children */ node = root->firstChild(); while (node.isNull() == false) { tag = node.toElement(); if (tag.tagName() == KXMLQLCWindowState) { bool visible = false; int x = 0; int y = 0; int w = 0; int h = 0; loadXMLWindowState(&tag, &x, &y, &w, &h, &visible); setGeometry(x, y, w, h); } else if (tag.tagName() == KXMLQLCVCWidgetAppearance) { loadXMLAppearance(&tag); } else if (tag.tagName() == KXMLQLCVCMatrixFunction) { str = tag.attribute(KXMLQLCVCMatrixFunctionID); setFunction(str.toUInt()); if (tag.hasAttribute(KXMLQLCVCMatrixInstantApply)) setInstantChanges(true); } else if (tag.tagName() == KXMLQLCVCWidgetInput) { loadXMLInput(&tag); } else if(tag.tagName() == KXMLQLCVCMatrixControl) { VCMatrixControl *control = new VCMatrixControl(0xFF); if (control->loadXML(tag) == false) delete control; else addCustomControl(control); } else { qWarning() << Q_FUNC_INFO << "Unknown VCMatrix tag:" << tag.tagName(); } node = node.nextSibling(); } return true; }
// ----------------------------------------------------------------------------- // Sets up the wxWidgets window layout // ----------------------------------------------------------------------------- void MainWindow::setupLayout() { // Create the wxAUI manager & related things aui_mgr_ = new wxAuiManager(this); aui_mgr_->SetArtProvider(new SAuiDockArt()); wxAuiPaneInfo p_inf; // Set icon auto icon_filename = App::path(App::iconFile(), App::Dir::Temp); App::archiveManager().programResourceArchive()->entry(App::iconFile())->exportFile(icon_filename); SetIcon(wxIcon(icon_filename, wxBITMAP_TYPE_ICO)); wxRemoveFile(icon_filename); // -- Editor Area -- stc_tabs_ = new STabCtrl(this, true, true, tabs_condensed ? 27 : 31, true, true); // Setup panel info & add panel p_inf.CenterPane(); p_inf.Name("editor_area"); p_inf.PaneBorder(false); aui_mgr_->AddPane(stc_tabs_, p_inf); // Create Start Page start_page_ = new SStartPage(stc_tabs_); if (show_start_page) { stc_tabs_->AddPage(start_page_, "Start Page"); stc_tabs_->SetPageBitmap(0, Icons::getIcon(Icons::General, "logo")); start_page_->init(); createStartPage(); } else start_page_->Show(false); // -- Console Panel -- auto panel_console = new ConsolePanel(this, -1); // Setup panel info & add panel p_inf.DefaultPane(); p_inf.Float(); p_inf.FloatingSize(WxUtils::scaledSize(600, 400)); p_inf.FloatingPosition(WxUtils::scaledPoint(100, 100)); p_inf.MinSize(WxUtils::scaledSize(-1, 192)); p_inf.Show(false); p_inf.Caption("Console"); p_inf.Name("console"); aui_mgr_->AddPane(panel_console, p_inf); // -- Archive Manager Panel -- panel_archivemanager_ = new ArchiveManagerPanel(this, stc_tabs_); // Setup panel info & add panel p_inf.DefaultPane(); p_inf.Left(); p_inf.BestSize(WxUtils::scaledSize(192, 480)); p_inf.Caption("Archive Manager"); p_inf.Name("archive_manager"); p_inf.Show(true); p_inf.Dock(); aui_mgr_->AddPane(panel_archivemanager_, p_inf); // -- Undo History Panel -- panel_undo_history_ = new UndoManagerHistoryPanel(this, nullptr); // Setup panel info & add panel p_inf.DefaultPane(); p_inf.Right(); p_inf.BestSize(WxUtils::scaledSize(128, 480)); p_inf.Caption("Undo History"); p_inf.Name("undo_history"); p_inf.Show(false); p_inf.Dock(); aui_mgr_->AddPane(panel_undo_history_, p_inf); // -- Menu bar -- auto menu = new wxMenuBar(); menu->SetThemeEnabled(false); // File menu auto file_new_menu = new wxMenu(""); SAction::fromId("aman_newwad")->addToMenu(file_new_menu, "&Wad Archive"); SAction::fromId("aman_newzip")->addToMenu(file_new_menu, "&Zip Archive"); SAction::fromId("aman_newmap")->addToMenu(file_new_menu, "&Map"); auto file_menu = new wxMenu(""); file_menu->AppendSubMenu(file_new_menu, "&New", "Create a new Archive"); SAction::fromId("aman_open")->addToMenu(file_menu); SAction::fromId("aman_opendir")->addToMenu(file_menu); file_menu->AppendSeparator(); SAction::fromId("aman_save")->addToMenu(file_menu); SAction::fromId("aman_saveas")->addToMenu(file_menu); SAction::fromId("aman_saveall")->addToMenu(file_menu); file_menu->AppendSubMenu(panel_archivemanager_->getRecentMenu(), "&Recent Files"); file_menu->AppendSeparator(); SAction::fromId("aman_close")->addToMenu(file_menu); SAction::fromId("aman_closeall")->addToMenu(file_menu); file_menu->AppendSeparator(); SAction::fromId("main_exit")->addToMenu(file_menu); menu->Append(file_menu, "&File"); // Edit menu auto editor_menu = new wxMenu(""); SAction::fromId("main_undo")->addToMenu(editor_menu); SAction::fromId("main_redo")->addToMenu(editor_menu); editor_menu->AppendSeparator(); SAction::fromId("main_setbra")->addToMenu(editor_menu); SAction::fromId("main_preferences")->addToMenu(editor_menu); menu->Append(editor_menu, "E&dit"); // View menu auto view_menu = new wxMenu(""); SAction::fromId("main_showam")->addToMenu(view_menu); SAction::fromId("main_showconsole")->addToMenu(view_menu); SAction::fromId("main_showundohistory")->addToMenu(view_menu); SAction::fromId("main_showstartpage")->addToMenu(view_menu); toolbar_menu_ = new wxMenu(); view_menu->AppendSubMenu(toolbar_menu_, "Toolbars"); menu->Append(view_menu, "&View"); // Tools menu auto tools_menu = new wxMenu(""); SAction::fromId("main_runscript")->addToMenu(tools_menu); menu->Append(tools_menu, "&Tools"); // Help menu auto help_menu = new wxMenu(""); SAction::fromId("main_onlinedocs")->addToMenu(help_menu); SAction::fromId("main_about")->addToMenu(help_menu); #ifdef __WXMSW__ SAction::fromId("main_updatecheck")->addToMenu(help_menu); #endif menu->Append(help_menu, "&Help"); // Set the menu SetMenuBar(menu); // -- Toolbars -- toolbar_ = new SToolBar(this, true); // Create File toolbar auto tbg_file = new SToolBarGroup(toolbar_, "_File"); tbg_file->addActionButton("aman_newwad"); tbg_file->addActionButton("aman_newzip"); tbg_file->addActionButton("aman_open"); tbg_file->addActionButton("aman_opendir"); tbg_file->addActionButton("aman_save"); tbg_file->addActionButton("aman_saveas"); tbg_file->addActionButton("aman_saveall"); tbg_file->addActionButton("aman_close"); tbg_file->addActionButton("aman_closeall"); toolbar_->addGroup(tbg_file); // Create Archive toolbar auto tbg_archive = new SToolBarGroup(toolbar_, "_Archive"); tbg_archive->addActionButton("arch_newentry"); tbg_archive->addActionButton("arch_newdir"); tbg_archive->addActionButton("arch_importfiles"); tbg_archive->addActionButton("arch_texeditor"); tbg_archive->addActionButton("arch_mapeditor"); tbg_archive->addActionButton("arch_run"); toolbar_->addGroup(tbg_archive); // Create Entry toolbar auto tbg_entry = new SToolBarGroup(toolbar_, "_Entry"); tbg_entry->addActionButton("arch_entry_rename"); tbg_entry->addActionButton("arch_entry_delete"); tbg_entry->addActionButton("arch_entry_import"); tbg_entry->addActionButton("arch_entry_export"); tbg_entry->addActionButton("arch_entry_moveup"); tbg_entry->addActionButton("arch_entry_movedown"); toolbar_->addGroup(tbg_entry); // Create Base Resource Archive toolbar auto tbg_bra = new SToolBarGroup(toolbar_, "_Base Resource", true); auto brc = new BaseResourceChooser(tbg_bra); tbg_bra->addCustomControl(brc); tbg_bra->addActionButton("main_setbra", "settings"); toolbar_->addGroup(tbg_bra); // Create Palette Chooser toolbar auto tbg_palette = new SToolBarGroup(toolbar_, "_Palette", true); palette_chooser_ = new PaletteChooser(tbg_palette, -1); palette_chooser_->selectPalette(global_palette); tbg_palette->addCustomControl(palette_chooser_); toolbar_->addGroup(tbg_palette); // Archive and Entry toolbars are initially disabled toolbar_->enableGroup("_archive", false); toolbar_->enableGroup("_entry", false); // Add toolbar aui_mgr_->AddPane( toolbar_, wxAuiPaneInfo() .Top() .CaptionVisible(false) .MinSize(-1, SToolBar::getBarHeight()) .Resizable(false) .PaneBorder(false) .Name("toolbar")); // Populate the 'View->Toolbars' menu populateToolbarsMenu(); toolbar_->enableContextMenu(); // -- Status Bar -- CreateStatusBar(3); // Load previously saved perspective string loadLayout(); // Finalize aui_mgr_->Update(); Layout(); // Bind events Bind(wxEVT_SIZE, &MainWindow::onSize, this); Bind(wxEVT_CLOSE_WINDOW, &MainWindow::onClose, this); Bind(wxEVT_AUINOTEBOOK_PAGE_CHANGED, &MainWindow::onTabChanged, this); Bind(wxEVT_STOOLBAR_LAYOUT_UPDATED, &MainWindow::onToolBarLayoutChanged, this, toolbar_->GetId()); Bind(wxEVT_ACTIVATE, &MainWindow::onActivate, this); Bind(wxEVT_AUINOTEBOOK_PAGE_CLOSE, [&](wxAuiNotebookEvent& e) { // Null start_page pointer if start page tab is closed auto page = stc_tabs_->GetPage(stc_tabs_->GetSelection()); if (page->GetName() == "startpage") start_page_ = nullptr; }); // Initial focus to toolbar toolbar_->SetFocus(); }
// ----------------------------------------------------------------------------- // ScriptEditorPanel class constructor // ----------------------------------------------------------------------------- ScriptEditorPanel::ScriptEditorPanel(wxWindow* parent) : wxPanel(parent, -1), entry_script_{ new ArchiveEntry() }, entry_compiled_{ new ArchiveEntry() } { // Setup sizer auto sizer = new wxBoxSizer(wxVERTICAL); SetSizer(sizer); // Toolbar auto toolbar = new SToolBar(this); sizer->Add(toolbar, 0, wxEXPAND); wxArrayString actions; actions.Add("mapw_script_save"); actions.Add("mapw_script_compile"); actions.Add("mapw_script_togglelanguage"); toolbar->addActionGroup("Scripts", actions); // Jump To toolbar group auto group_jump_to = new SToolBarGroup(toolbar, "Jump To", true); choice_jump_to_ = new wxChoice(group_jump_to, -1, wxDefaultPosition, WxUtils::scaledSize(200, -1)); group_jump_to->addCustomControl(choice_jump_to_); toolbar->addGroup(group_jump_to); // Add text editor auto hbox = new wxBoxSizer(wxHORIZONTAL); sizer->Add(hbox, 1, wxEXPAND); auto vbox = new wxBoxSizer(wxVERTICAL); hbox->Add(vbox, 1, wxEXPAND); text_editor_ = new TextEditorCtrl(this, -1); text_editor_->setJumpToControl(choice_jump_to_); vbox->Add(text_editor_, 1, wxEXPAND | wxALL, UI::pad()); // Set language wxString lang = Game::configuration().scriptLanguage(); if (S_CMPNOCASE(lang, "acs_hexen")) { text_editor_->setLanguage(TextLanguage::fromId("acs")); entry_script_->setName("SCRIPTS"); entry_compiled_->setName("BEHAVIOR"); } else if (S_CMPNOCASE(lang, "acs_zdoom")) { text_editor_->setLanguage(TextLanguage::fromId("acs_z")); entry_script_->setName("SCRIPTS"); entry_compiled_->setName("BEHAVIOR"); } // Add Find+Replace panel panel_fr_ = new FindReplacePanel(this, *text_editor_); text_editor_->setFindReplacePanel(panel_fr_); vbox->Add(panel_fr_, 0, wxEXPAND | wxALL, UI::pad()); panel_fr_->Hide(); // Add function/constants list list_words_ = new wxTreeListCtrl(this, -1); list_words_->SetInitialSize(WxUtils::scaledSize(200, -10)); hbox->Add(list_words_, 0, wxEXPAND | wxALL, UI::pad()); populateWordList(); list_words_->Show(script_show_language_list); // Bind events list_words_->Bind(wxEVT_TREELIST_ITEM_ACTIVATED, &ScriptEditorPanel::onWordListActivate, this); }