void CFrame::OnDropDownToolbarSelect(wxCommandEvent& event) { ClearStatusBar(); switch(event.GetId()) { case IDM_ADD_PERSPECTIVE: { wxTextEntryDialog dlg(this, _("Enter a name for the new perspective:"), _("Create new perspective")); wxString DefaultValue = wxString::Format(_("Perspective %d"), Perspectives.size() + 1); dlg.SetValue(DefaultValue); bool DlgOk = false; int Return = 0; while (!DlgOk) { Return = dlg.ShowModal(); if (Return == wxID_CANCEL) return; else if (dlg.GetValue().Find(wxT(",")) != -1) { wxMessageBox(_("The name can not contain the character ','"), _("Notice"), wxOK, this); wxString Str = dlg.GetValue(); Str.Replace(wxT(","), wxT(""), true); dlg.SetValue(Str); } else if (dlg.GetValue().IsSameAs(wxT(""))) { wxMessageBox(_("The name can not be empty"), _("Notice"), wxOK, this); dlg.SetValue(DefaultValue); } else DlgOk = true; } SPerspectives Tmp; Tmp.Name = dlg.GetValue().mb_str(); Tmp.Perspective = m_Mgr->SavePerspective(); ActivePerspective = (u32)Perspectives.size(); Perspectives.push_back(Tmp); UpdateCurrentPerspective(); } break; case IDM_TAB_SPLIT: m_bTabSplit = event.IsChecked(); ToggleNotebookStyle(m_bTabSplit, wxAUI_NB_TAB_SPLIT); break; case IDM_NO_DOCKING: m_bNoDocking = event.IsChecked(); TogglePaneStyle(m_bNoDocking, IDM_NO_DOCKING); break; } }
void CFrame::SaveIniPerspectives() { if (Perspectives.size() == 0) return; if (ActivePerspective >= Perspectives.size()) ActivePerspective = 0; // Turn off edit before saving TogglePaneStyle(false, IDM_EDIT_PERSPECTIVES); UpdateCurrentPerspective(); IniFile ini; ini.Load(File::GetUserPath(F_DEBUGGERCONFIG_IDX)); // Save perspective names std::string STmp = ""; for (auto& Perspective : Perspectives) { STmp += Perspective.Name + ","; } STmp = STmp.substr(0, STmp.length() - 1); IniFile::Section* perspectives = ini.GetOrCreateSection("Perspectives"); perspectives->Set("Perspectives", STmp); perspectives->Set("Active", ActivePerspective); // Save the perspectives for (auto& Perspective : Perspectives) { std::string _Section = "P - " + Perspective.Name; IniFile::Section* perspec_section = ini.GetOrCreateSection(_Section); perspec_section->Set("Perspective", WxStrToStr(Perspective.Perspective)); std::string SWidth = "", SHeight = ""; for (u32 j = 0; j < Perspective.Width.size(); j++) { SWidth += StringFromFormat("%i,", Perspective.Width[j]); SHeight += StringFromFormat("%i,", Perspective.Height[j]); } // Remove the ending "," SWidth = SWidth.substr(0, SWidth.length() - 1); SHeight = SHeight.substr(0, SHeight.length() - 1); perspec_section->Set("Width", SWidth); perspec_section->Set("Height", SHeight); } ini.Save(File::GetUserPath(F_DEBUGGERCONFIG_IDX)); // Save notebook affiliations g_pCodeWindow->Save(); TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES); }
void CFrame::OnPerspectiveMenu(wxCommandEvent& event) { ClearStatusBar(); switch (event.GetId()) { case IDM_SAVE_PERSPECTIVE: if (Perspectives.size() == 0) { wxMessageBox(_("Please create a perspective before saving"), _("Notice"), wxOK, this); return; } SaveIniPerspectives(); GetStatusBar()->SetStatusText(StrToWxStr(std::string ("Saved " + Perspectives[ActivePerspective].Name)), 0); break; case IDM_PERSPECTIVES_ADD_PANE: AddPane(); break; case IDM_EDIT_PERSPECTIVES: m_bEdit = event.IsChecked(); TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES); break; case IDM_ADD_PERSPECTIVE: { wxTextEntryDialog dlg(this, _("Enter a name for the new perspective:"), _("Create new perspective")); wxString DefaultValue = wxString::Format(_("Perspective %d"), (int)(Perspectives.size() + 1)); dlg.SetValue(DefaultValue); int Return = 0; bool DlgOk = false; while (!DlgOk) { Return = dlg.ShowModal(); if (Return == wxID_CANCEL) { return; } else if (dlg.GetValue().Find(",") != -1) { wxMessageBox(_("The name cannot contain the character ','"), _("Notice"), wxOK, this); wxString Str = dlg.GetValue(); Str.Replace(",", "", true); dlg.SetValue(Str); } else if (dlg.GetValue().IsSameAs("")) { wxMessageBox(_("The name cannot be empty"), _("Notice"), wxOK, this); dlg.SetValue(DefaultValue); } else { DlgOk = true; } } SPerspectives Tmp; Tmp.Name = WxStrToStr(dlg.GetValue()); Tmp.Perspective = m_Mgr->SavePerspective(); ActivePerspective = (u32)Perspectives.size(); Perspectives.push_back(Tmp); UpdateCurrentPerspective(); PopulateSavedPerspectives(); } break; case IDM_TAB_SPLIT: m_bTabSplit = event.IsChecked(); ToggleNotebookStyle(m_bTabSplit, wxAUI_NB_TAB_SPLIT); break; case IDM_NO_DOCKING: m_bNoDocking = event.IsChecked(); TogglePaneStyle(m_bNoDocking, IDM_NO_DOCKING); break; } }