ToolBar::ToolBar(QWidget *parent):QWidget(parent) { this->setMinimumHeight(Config::ToolBarHeight); this->setMaximumHeight(Config::ToolBarHeight); this->setStyleSheet(Config::ToolBarStyleSheet); _btnKey = new ToolButton(Config::ToolBarPathKey, Config::ToolBarTxtKey, this); _btnKey->move(Config::ToolBarButtonSpace, 0); _btnCust = new ToolButton(Config::ToolBarPathCust, Config::ToolBarTxtCust, this); _btnCust->move(Config::ToolBarButtonSpace * 2 + Config::ToolBarButtonWidth, 0); connect(_btnKey, SIGNAL(clicked()), this, SLOT(selectPanel())); connect(_btnCust, SIGNAL(clicked()), this, SLOT(selectPanel())); }
void MusicSelection::processEvent(SDL_Event e) { if (e.type == SDL_MOUSEMOTION || e.type == SDL_MOUSEBUTTONUP || e.type == SDL_MOUSEBUTTONDOWN) { mouseX = e.motion.x; mouseY = e.motion.y; } if (e.type == SDL_MOUSEBUTTONDOWN && e.button.button == SDL_BUTTON_LEFT) { lastClickedX = mouseX; lastClickedY = mouseY; mouseIsClicked = true; if (mouseX < selectionBarX) { panelAreaIsClicked = true; backupPanelY(); } else { panelAreaIsClicked = false; checkIfClickableButtonIsPressed(); } } else if (e.type == SDL_MOUSEBUTTONUP && e.button.button == SDL_BUTTON_LEFT) { //Check if the click happened in the panel area if (mouseIsClicked && (!mouseIsBeingDragged) && mouseX < selectionBarX) { selectPanel(); } mouseIsBeingDragged = false; mouseIsClicked = false; panelAreaIsClicked = false; } else if (e.type == SDL_MOUSEMOTION) { if (mouseIsClicked) { //To prevent undefined behaviour when mouse is dragged into/out of selection bar if ((panelAreaIsClicked && mouseX > selectionBarX) || (!panelAreaIsClicked && mouseX < selectionBarX)) { mouseIsBeingDragged = false; mouseIsClicked = false; panelAreaIsClicked = false; } else if ((panelAreaIsClicked && mouseX < selectionBarX) || (!panelAreaIsClicked && mouseX > selectionBarX)) { mouseIsBeingDragged = true; } } } }
void SidebarWidget::optionChanged(const QString &option, const QVariant &value) { if (option == QLatin1String("Sidebar/CurrentPanel")) { selectPanel(value.toString()); } else if (option == QLatin1String("Sidebar/Panels")) { qDeleteAll(m_buttons.begin(), m_buttons.end()); m_buttons.clear(); QMenu *menu = new QMenu(m_ui->panelsButton); const QStringList chosenPanels = value.toStringList(); QStringList allPanels; allPanels << QLatin1String("bookmarks") << QLatin1String("cache") << QLatin1String("cookies") << QLatin1String("config") << QLatin1String("history") << QLatin1String("notes") << QLatin1String("transfers"); for (int i = 0; i < allPanels.count(); ++i) { QAction *action = new QAction(menu); action->setCheckable(true); action->setChecked(chosenPanels.contains(allPanels[i])); action->setData(allPanels[i]); action->setText(getPanelTitle(allPanels[i])); connect(action, SIGNAL(toggled(bool)), this, SLOT(choosePanel(bool))); menu->addAction(action); } menu->addSeparator(); for (int i = 0; i < chosenPanels.count(); ++i) { QToolButton *button = new QToolButton(this); button->setDefaultAction(new QAction(button)); button->setToolTip(getPanelTitle(chosenPanels.at(i))); button->setCheckable(true); button->setAutoRaise(true); button->defaultAction()->setData(chosenPanels.at(i)); if (chosenPanels.at(i) == QLatin1String("bookmarks")) { button->setIcon(ThemesManager::getIcon(QLatin1String("bookmarks"))); } else if (chosenPanels.at(i) == QLatin1String("cache")) { button->setIcon(ThemesManager::getIcon(QLatin1String("cache"))); } else if (chosenPanels.at(i) == QLatin1String("config")) { button->setIcon(ThemesManager::getIcon(QLatin1String("configuration"))); } else if (chosenPanels.at(i) == QLatin1String("cookies")) { button->setIcon(ThemesManager::getIcon(QLatin1String("cookies"))); } else if (chosenPanels.at(i) == QLatin1String("history")) { button->setIcon(ThemesManager::getIcon(QLatin1String("view-history"))); } else if (chosenPanels.at(i) == QLatin1String("notes")) { button->setIcon(ThemesManager::getIcon(QLatin1String("notes"))); } else if (chosenPanels.at(i) == QLatin1String("transfers")) { button->setIcon(ThemesManager::getIcon(QLatin1String("transfers"))); } else if (chosenPanels.at(i).startsWith(QLatin1String("web:"))) { button->setIcon(ThemesManager::getIcon(QLatin1String("text-html"))); QAction *action = new QAction(menu); action->setCheckable(true); action->setChecked(true); action->setData(chosenPanels.at(i)); action->setText(getPanelTitle(chosenPanels.at(i))); connect(action, SIGNAL(toggled(bool)), this, SLOT(choosePanel(bool))); menu->addAction(action); } else {
SetWindow::SetWindow(Window* parent, const SetP& set) : wxFrame(parent, wxID_ANY, _TITLE_("magic set editor"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE) , current_panel(nullptr) , find_dialog(nullptr) , find_data(wxFR_DOWN) , number_of_recent_sets(0) { SetIcon(load_resource_icon(_("app"))); // initialize menu bar wxMenuBar* menuBar = new wxMenuBar(); IconMenu* menuFile = new IconMenu(); menuFile->Append(ID_FILE_NEW, _("new"), _MENU_("new set"), _HELP_("new set")); menuFile->Append(ID_FILE_OPEN, _("open"), _MENU_("open set"), _HELP_("open set")); menuFile->Append(ID_FILE_SAVE, _("save"), _MENU_("save set"), _HELP_("save set")); menuFile->Append(ID_FILE_SAVE_AS, _MENU_("save set as"), _HELP_("save set as")); menuExport = new IconMenu(); menuExport->Append(ID_FILE_EXPORT_HTML, _("export_html"), _MENU_("export html"), _HELP_("export html")); menuExport->Append(ID_FILE_EXPORT_IMAGE, _("export_image"), _MENU_("export image"), _HELP_("export image")); menuExport->Append(ID_FILE_EXPORT_IMAGES, _("export_images"), _MENU_("export images"), _HELP_("export images")); menuExport->Append(ID_FILE_EXPORT_APPR, _("export_apprentice"), _MENU_("export apprentice"),_HELP_("export apprentice")); menuExport->Append(ID_FILE_EXPORT_MWS, _("export_mws"), _MENU_("export mws"), _HELP_("export mws")); menuFile->Append(wxID_ANY, _("export"), _MENU_("export"), _HELP_("export"), wxITEM_NORMAL, menuExport); menuFile->AppendSeparator(); menuFile->Append(ID_FILE_CHECK_UPDATES, _MENU_("check updates"), _HELP_("check updates")); #if USE_SCRIPT_PROFILING menuFile->Append(ID_FILE_PROFILER, _MENU_("show profiler"), _HELP_("show profiler")); #endif // menuFile->Append(ID_FILE_INSPECT, _("Inspect Internal Data..."), _("Shows a the data in the set using a tree structure")); // menuFile->AppendSeparator(); menuFile->Append(ID_FILE_RELOAD, _MENU_("reload data"), _HELP_("reload data")); menuFile->AppendSeparator(); menuFile->Append(ID_FILE_PRINT_PREVIEW, _("print_preview"), _MENU_("print preview"), _HELP_("print preview")); menuFile->Append(ID_FILE_PRINT, _("print"), _MENU_("print"), _HELP_("print")); menuFile->AppendSeparator(); // recent files go here menuFile->AppendSeparator(); menuFile->Append(ID_FILE_EXIT, _MENU_("exit"), _HELP_("exit")); menuBar->Append(menuFile, _MENU_("file")); IconMenu* menuEdit = new IconMenu(); menuEdit->Append(ID_EDIT_UNDO, _("undo"), _MENU_1_("undo",wxEmptyString), _HELP_("undo")); menuEdit->Append(ID_EDIT_REDO, _("redo"), _MENU_1_("redo",wxEmptyString), _HELP_("redo")); menuEdit->AppendSeparator(); menuEdit->Append(ID_EDIT_CUT, _("cut"), _MENU_("cut"), _HELP_("cut")); menuEdit->Append(ID_EDIT_COPY, _("copy"), _MENU_("copy"), _HELP_("copy")); menuEdit->Append(ID_EDIT_PASTE, _("paste"), _MENU_("paste"), _HELP_("paste")); menuEdit->AppendSeparator(); menuEdit->Append(ID_EDIT_FIND, _("find"), _MENU_("find"), _HELP_("find")); menuEdit->Append(ID_EDIT_FIND_NEXT, _MENU_("find next"), _HELP_("find next")); menuEdit->Append(ID_EDIT_REPLACE, _MENU_("replace"), _HELP_("replace")); menuEdit->Append(ID_EDIT_AUTO_REPLACE, _MENU_("auto replace"), _HELP_("auto replace")); menuEdit->AppendSeparator(); menuEdit->Append(ID_EDIT_PREFERENCES, _MENU_("preferences"), _HELP_("preferences")); menuBar->Append(menuEdit, _MENU_("edit")); IconMenu* menuWindow = new IconMenu(); menuWindow->Append(ID_WINDOW_NEW, _MENU_("new window"), _HELP_("new window")); menuWindow->AppendSeparator(); menuBar->Append(menuWindow, _MENU_("window")); IconMenu* menuHelp = new IconMenu(); menuHelp->Append(ID_HELP_INDEX, _("help"), _MENU_("index"), _HELP_("index")); menuHelp->Append(ID_HELP_WEBSITE, _MENU_("website"), _HELP_("website")); menuHelp->AppendSeparator(); menuHelp->Append(ID_HELP_ABOUT, _MENU_("about"), _HELP_("about")); menuBar->Append(menuHelp, _MENU_("help")); SetMenuBar(menuBar); // status bar CreateStatusBar(); SetStatusText(_HELP_("welcome")); // tool bar wxToolBar* tb = CreateToolBar(wxTB_FLAT | wxNO_BORDER | wxTB_HORIZONTAL); tb->SetToolBitmapSize(wxSize(18,18)); tb->AddTool(ID_FILE_NEW, _(""), load_resource_tool_image(_("new")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("new set"), _HELP_("new set")); tb->AddTool(ID_FILE_OPEN, _(""), load_resource_tool_image(_("open")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("open set"), _HELP_("open set")); tb->AddTool(ID_FILE_SAVE, _(""), load_resource_tool_image(_("save")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("save set"), _HELP_("save set")); tb->AddSeparator(); tb->AddTool(ID_FILE_EXPORT, _(""), load_resource_tool_image(_("export")), wxNullBitmap, wxITEM_CHECK, _TOOLTIP_("export"), _HELP_("export")); tb->AddSeparator(); tb->AddTool(ID_EDIT_CUT, _(""), load_resource_tool_image(_("cut")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("cut"), _HELP_("cut")); tb->AddTool(ID_EDIT_COPY, _(""), load_resource_tool_image(_("copy")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("copy"), _HELP_("copy")); tb->AddTool(ID_EDIT_PASTE, _(""), load_resource_tool_image(_("paste")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_("paste"), _HELP_("paste")); tb->AddSeparator(); tb->AddTool(ID_EDIT_UNDO, _(""), load_resource_tool_image(_("undo")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_1_("undo",wxEmptyString)); tb->AddTool(ID_EDIT_REDO, _(""), load_resource_tool_image(_("redo")), wxNullBitmap, wxITEM_NORMAL, _TOOLTIP_1_("redo",wxEmptyString)); tb->AddSeparator(); tb->Realize(); // tab bar, sizer wxToolBar* tabBar = new wxToolBar(this, ID_TAB_BAR, wxDefaultPosition, wxDefaultSize, wxTB_FLAT | wxNO_BORDER | wxTB_HORIZONTAL | wxTB_HORZ_TEXT | wxTB_NOALIGN); wxSizer* s = new wxBoxSizer(wxVERTICAL); s->Add(tabBar, 0, wxEXPAND | wxBOTTOM, 0); SetSizer(s); #if defined(__WXMSW__) && defined(TBSTYLE_EX_DOUBLEBUFFER) // Use double buffering HWND hWND = (HWND)tabBar->GetHWND(); int style = ::SendMessage(hWND, TB_GETEXTENDEDSTYLE, 0, 0); ::SendMessage(hWND, TB_SETEXTENDEDSTYLE, style | LVS_EX_DOUBLEBUFFER, 0); #endif // panels addPanel(menuWindow, tabBar, new CardsPanel (this, wxID_ANY), 0, _("window_cards"), _("cards tab")); addPanel(menuWindow, tabBar, new StylePanel (this, wxID_ANY), 1, _("window_style"), _("style tab")); addPanel(menuWindow, tabBar, new SetInfoPanel (this, wxID_ANY), 2, _("window_set_info"), _("set info 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_random_pack"),_("random pack tab")); addPanel(menuWindow, tabBar, new ConsolePanel (this, wxID_ANY), 6, _("window_console"), _("console tab")); selectPanel(ID_WINDOW_CARDS); // select cards panel // loose ends tabBar->Realize(); SetSize(settings.set_window_width, settings.set_window_height); if (settings.set_window_maximized) { Maximize(); } set_windows.push_back(this); // register this window // don't send update ui events to children // note: this still sends events for menu and toolbar items! wxUpdateUIEvent::SetMode(wxUPDATE_UI_PROCESS_SPECIFIED); SetExtraStyle(wxWS_EX_PROCESS_UI_UPDATES); tabBar->SetExtraStyle(wxWS_EX_PROCESS_UI_UPDATES); try { setSet(set); } catch (...) { // clean up! // if we don't destroy the panel we could crash in ~CardsPanel, since it expected // the insertSymbolMenu to be removed by destroyUI but not deleted. current_panel->destroyUI(GetToolBar(), GetMenuBar()); delete find_dialog; set_windows.erase(remove(set_windows.begin(), set_windows.end(), this)); throw; } current_panel->Layout(); }