void EnvVarsConfigDlg::OnAddEnvVarClick(wxCommandEvent& WXUNUSED(event)) { #if defined(TRACE_ENVVARS) Manager::Get()->GetLogManager()->DebugLog(F(_T("OnAddEnvVarClick"))); #endif wxCheckListBox* lstEnvVars = XRCCTRL(*this, "lstEnvVars", wxCheckListBox); if (!lstEnvVars) return; wxString key; wxString value; EditPairDlg dlg(this, key, value, _("Add new variable"), EditPairDlg::bmBrowseForDirectory); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) { key.Trim(true).Trim(false); value.Trim(true).Trim(false); if (nsEnvVars::EnvvarVetoUI(key, NULL, -1)) return; int sel = lstEnvVars->Append(key + _T(" = ") + value); bool success = nsEnvVars::EnvvarApply(key, value); if (sel>=0) lstEnvVars->Check(sel, success); } }// OnAddEnvVarClick
bool cbDiffEditor::SaveAsUnifiedDiff() { ConfigManager* mgr = Manager::Get()->GetConfigManager(_T("app")); wxString Path = wxGetCwd(); wxString Filter; if(mgr && Path.IsEmpty()) Path = mgr->Read(_T("/file_dialogs/save_file_as/directory"), Path); wxFileDialog dlg(Manager::Get()->GetAppWindow(), _("Save file"), Path, wxEmptyString, _("Diff files (*.diff)|*.diff"), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); PlaceWindow(&dlg); if (dlg.ShowModal() != wxID_OK) // cancelled out return false; wxString Filename = dlg.GetPath(); // store the last used directory if(mgr) { wxString Test = dlg.GetDirectory(); mgr->Write(_T("/file_dialogs/save_file_as/directory"), dlg.GetDirectory()); } if(!cbSaveToFile(Filename, diff_)) { wxString msg; msg.Printf(_("File %s could not be saved..."), GetFilename().c_str()); cbMessageBox(msg, _("Error saving file"), wxICON_ERROR); return false; } return true; }
void DisassemblyDlg::OnSave(cb_unused wxCommandEvent& event) { wxFileDialog dlg(this, _("Save as text file"), _T("assembly_dump.txt"), wxEmptyString, FileFilters::GetFilterAll(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); PlaceWindow(&dlg); if (dlg.ShowModal() != wxID_OK) return; wxString output; cbProject* prj = Manager::Get()->GetProjectManager()->GetActiveProject(); if (prj) { output << _("Project title : ") << prj->GetTitle() << _T('\n'); output << _("Project path : ") << prj->GetBasePath() << _T('\n') << _T('\n'); } output << _("Frame function: ") << m_FrameFunction << _T('\n'); output << _("Frame address : ") << m_FrameAddress << _T('\n'); output << wxString(_T('-'), 80) << _T('\n'); output << m_pCode->GetText(); if (!cbSaveToFile(dlg.GetPath(), output)) cbMessageBox(_("Could not save file..."), _("Error"), wxICON_ERROR); }
wxString ChooseDirectory(wxWindow* parent, const wxString& message, const wxString& initialPath, const wxString& basePath, bool askToMakeRelative, // relative to initialPath bool showCreateDirButton) // where supported { wxDirDialog dlg(parent, message, _T(""), (showCreateDirButton ? wxDD_NEW_DIR_BUTTON : 0) | wxRESIZE_BORDER); dlg.SetPath(initialPath); PlaceWindow(&dlg); if (dlg.ShowModal() != wxID_OK) return wxEmptyString; wxFileName path(dlg.GetPath()); if (askToMakeRelative && !basePath.IsEmpty()) { // ask the user if he wants it to be kept as relative if (cbMessageBox(_("Keep this as a relative path?"), _("Question"), wxICON_QUESTION | wxYES_NO) == wxID_YES) { path.MakeRelativeTo(basePath); } } return path.GetFullPath(); }
void ScriptingSettingsDlg::OnBrowse(wxCommandEvent& event) { wxFileDialog dlg(this, _("Select script file"), XRCCTRL(*this, "txtScript", wxTextCtrl)->GetValue(), XRCCTRL(*this, "txtScript", wxTextCtrl)->GetValue(), FileFilters::GetFilterString(_T(".script")), wxFD_OPEN | compatibility::wxHideReadonly ); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) { wxString sel = UnixFilename(dlg.GetPath()); wxString userdir = UnixFilename(ConfigManager::GetFolder(sdScriptsUser)); wxString globaldir = UnixFilename(ConfigManager::GetFolder(sdScriptsGlobal)); wxFileName f(sel); if (sel.StartsWith(userdir)) { f.MakeRelativeTo(userdir); } else if (sel.StartsWith(globaldir)) { f.MakeRelativeTo(globaldir); } XRCCTRL(*this, "txtScript", wxTextCtrl)->SetValue(f.GetFullPath()); } }
int cbMessageBox(const wxString& message, const wxString& caption, int style, wxWindow *parent, int x, int y) { if (!parent) parent = Manager::Get()->GetAppWindow(); // Cannot create a wxMessageDialog with a NULL as parent if (!parent) { // wxMessage*Box* returns any of: wxYES, wxNO, wxCANCEL, wxOK. int answer = wxMessageBox(message, caption, style, parent, x, y); switch (answer) { // map answer to the one of wxMessage*Dialog* to ensure compatibility case (wxOK): return wxID_OK; case (wxCANCEL): return wxID_CANCEL; case (wxYES): return wxID_YES; case (wxNO): return wxID_NO; default: return -1; // NOTE: Cannot happen unless wxWidgets API changes } } wxMessageDialog dlg(parent, message, caption, style, wxPoint(x,y)); PlaceWindow(&dlg); // wxMessage*Dialog* returns any of wxID_OK, wxID_CANCEL, wxID_YES, wxID_NO return dlg.ShowModal(); }
void DebuggerTree::OnAddWatch(wxCommandEvent& event) { EditWatchDlg dlg; PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK && !dlg.GetWatch().keyword.IsEmpty()) AddWatch(dlg.GetWatch().keyword, dlg.GetWatch().format); }
void BacktraceDlg::OnSave(cb_unused wxCommandEvent& event) { wxFileDialog dlg(this, _("Save as text file"), wxEmptyString, wxEmptyString, FileFilters::GetFilterAll(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); PlaceWindow(&dlg); if (dlg.ShowModal() != wxID_OK) return; wxFFileOutputStream output(dlg.GetPath()); wxTextOutputStream text(output); for (int ii = 0; ii < m_list->GetItemCount(); ++ii) { wxListItem info; info.m_itemId = ii; info.m_col = 1; info.m_mask = wxLIST_MASK_TEXT; wxString addr = m_list->GetItem(info) && !info.m_text.IsEmpty() ? info.m_text : _T("??"); info.m_col = 2; wxString func = m_list->GetItem(info) && !info.m_text.IsEmpty() ? info.m_text : _T("??"); info.m_col = 3; wxString file = m_list->GetItem(info) && !info.m_text.IsEmpty() ? info.m_text : _T("??"); info.m_col = 4; wxString line = m_list->GetItem(info) && !info.m_text.IsEmpty() ? info.m_text : _T("??"); text << _T('#') << m_list->GetItemText(ii) << _T(' ') << addr << _T('\t') << func << _T(' ') << _T('(') << file << _T(':') << line << _T(')') << _T('\n'); } cbMessageBox(_("File saved"), _("Result"), wxICON_INFORMATION); }
void CompilerFactory::LoadSettings() { bool needAutoDetection = false; for (size_t i = 0; i < Compilers.GetCount(); ++i) { wxString baseKey = Compilers[i]->GetParentID().IsEmpty() ? _T("/sets") : _T("/user_sets"); Compilers[i]->LoadSettings(baseKey); CodeBlocksEvent event(cbEVT_COMPILER_SETTINGS_CHANGED); event.SetString(Compilers[i]->GetID()); event.SetInt(static_cast<int>(i)); event.SetClientData(static_cast<void*>(Compilers[i])); Manager::Get()->ProcessEvent(event); if (Compilers[i]->GetMasterPath().IsEmpty()) { Manager::Get()->GetLogManager()->DebugLog(F(_T("Master path of compiler ID \"%s\" is empty -> triggers auto-detection."), Compilers[i]->GetID().wx_str())); needAutoDetection = true; } } // auto-detect missing compilers if (needAutoDetection) { AutoDetectCompilers adc(Manager::Get()->GetAppWindow()); PlaceWindow(&adc); adc.ShowModal(); adc.Raise(); } }
void UserVariableManager::Configure() { UsrGlblMgrEditDialog d; PlaceWindow(&d); d.ShowModal(); m_ActiveSet = Manager::Get()->GetConfigManager(_T("gcv"))->Read(_T("/active")); }
int AnnoyingDialog::ShowModal() { if(m_DontAnnoy) return m_DefRet; PlaceWindow(this); return wxScrollingDialog::ShowModal(); }
void CCOptionsDlg::OnEditRepl(cb_unused wxCommandEvent& event) { wxString key; wxString value; int sel = XRCCTRL(*this, "lstRepl", wxListBox)->GetSelection(); if (sel == -1) return; key = XRCCTRL(*this, "lstRepl", wxListBox)->GetStringSelection(); value = key; key = key.BeforeFirst(_T(' ')); value = value.AfterLast(_T(' ')); EditPairDlg dlg(this, key, value, _("Edit replacement token"), EditPairDlg::bmDisable); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) { if ( ValidateReplacementToken(key, value) ) { Tokenizer::SetReplacementString(key, value); XRCCTRL(*this, "lstRepl", wxListBox)->SetString(sel, key + _T(" -> ") + value); } } }
void CodeBlocksApp::InitAssociations() { #ifdef __WXMSW__ ConfigManager *cfg = Manager::Get()->GetConfigManager(_T("app")); if (m_Assocs && cfg->ReadBool(_T("/environment/check_associations"), true)) { if (!Associations::Check()) { AskAssocDialog dlg(Manager::Get()->GetAppWindow()); PlaceWindow(&dlg); switch(dlg.ShowModal()) { case ASC_ASSOC_DLG_NO_DONT_ASK: cfg->Write(_T("/environment/check_associations"), false); break; case ASC_ASSOC_DLG_NO_ONLY_NOW: break; case ASC_ASSOC_DLG_YES_C_FILES: Associations::SetCore(); break; case ASC_ASSOC_DLG_YES_ALL_FILES: Associations::SetAll(); break; default: break; }; } } #endif }
void UserVariableManager::Arrogate() { if (m_Preempted.GetCount() == 0) return; wxString peList; UsrGlblMgrEditDialog d; for (unsigned int i = 0; i < m_Preempted.GetCount(); ++i) { d.AddVar(m_Preempted[i]); peList << m_Preempted[i] << _T('\n'); } peList = peList.BeforeLast('\n'); // remove trailing newline wxString msg; if (m_Preempted.GetCount() == 1) msg.Printf(_("In the currently active set, Code::Blocks does not know\n" "the global compiler variable \"%s\".\n\n" "Please define it."), peList.wx_str()); else msg.Printf(_("In the currently active set, Code::Blocks does not know\n" "the following global compiler variables:\n" "%s\n\n" "Please define them."), peList.wx_str()); PlaceWindow(&d); m_Preempted.Clear(); InfoWindow::Display(_("Global Compiler Variables"), msg , 8000 + 800*m_Preempted.GetCount(), 100); d.ShowModal(); }
void EnvironmentSettingsDlg::OnManageAssocs(wxCommandEvent& /*event*/) { #ifdef __WXMSW__ ManageAssocsDialog dlg(this); PlaceWindow(&dlg); dlg.ShowModal(); #endif }
wxString UserVariableManager::Replace(const wxString& variable) { wxString package = variable.AfterLast(wxT('#')).BeforeFirst(wxT('.')).MakeLower(); wxString member = variable.AfterFirst(wxT('.')).MakeLower(); wxString path(cSets + m_ActiveSet + _T('/') + package + _T('/')); wxString base = m_CfgMan->Read(path + cBase); if (base.IsEmpty()) { if (Manager::Get()->GetProjectManager()->IsLoading()) { // a project/workspace is being loaded. // no need to bug the user now about global vars. // just preempt it; ProjectManager will call Arrogate() when it's done. Preempt(variable); return variable; } else { wxString msg; msg.Printf(_("In the currently active set, Code::Blocks does not know\n" "the global compiler variable \"%s\".\n\n" "Please define it."), package.wx_str()); InfoWindow::Display(_("Global Compiler Variables"), msg , 8000, 1000); UsrGlblMgrEditDialog d; d.AddVar(package); PlaceWindow(&d); d.ShowModal(); } } if (member.IsEmpty() || member.IsSameAs(cBase)) return base; if (member.IsSameAs(cInclude) || member.IsSameAs(cLib) || member.IsSameAs(cObj) || member.IsSameAs(cBin)) { wxString ret = m_CfgMan->Read(path + member); if (ret.IsEmpty()) ret = base + _T('/') + member; return ret; } const wxString wtf(wxT("#$%&???WTF???&%$#")); wxString ret = m_CfgMan->Read(path + member, wtf); if ( ret.IsSameAs(wtf) ) { wxString msg; msg.Printf(_("In the currently active set, Code::Blocks does not know\n" "the member \"%s\" of the global compiler variable \"%s\".\n\n" "Please define it."), member.wx_str(), package.wx_str()); InfoWindow::Display(_("Global Compiler Variables"), msg , 8000, 1000); } return ret; }
void SpellCheckerPlugin::OnSpelling(cb_unused wxCommandEvent &event) { cbEditor *ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor(); if ( !ed ) return; cbStyledTextCtrl *stc = ed->GetControl(); if ( !stc ) return; if ( m_pSpellingDialog ) PlaceWindow(m_pSpellingDialog, pdlBest, true); stc->ReplaceSelection(m_pSpellChecker->CheckSpelling(stc->GetSelectedText())); }
// ---------------------------------------------------------------------------- // DoOnFileOpen: // in case we are opening a project (bProject == true) we do not want to interfere // with 'last type of files' (probably the call was open (existing) project on the // start here page --> so we know it's a project --> set the filter accordingly // but as said don't force the 'last used type of files' to change, that should // only change when an open file is carried out (so (source) file <---> project (file) ) // TODO : when regular file open and user manually sets filter to project files --> will change // the last type : is that expected behaviour ??? // ---------------------------------------------------------------------------- void ThreadSearchFrame::DoOnFileOpen(bool bProject) // ---------------------------------------------------------------------------- { wxString Filters = FileFilters::GetFilterString(); // the value returned by GetIndexForFilterAll() is updated by GetFilterString() int StoredIndex = FileFilters::GetIndexForFilterAll(); wxString Path; ConfigManager* mgr = Manager::Get()->GetConfigManager(_T("app")); if(mgr) { if(!bProject) { wxString Filter = mgr->Read(_T("/file_dialogs/file_new_open/filter")); if(!Filter.IsEmpty()) { FileFilters::GetFilterIndexFromName(Filters, Filter, StoredIndex); } Path = mgr->Read(_T("/file_dialogs/file_new_open/directory"), Path); } else { FileFilters::GetFilterIndexFromName(Filters, _("Code::Blocks project files"), StoredIndex); } } wxFileDialog* dlg = new wxFileDialog(this, _("Open file"), Path, wxEmptyString, Filters, wxFD_OPEN | wxFD_MULTIPLE | compatibility::wxHideReadonly); dlg->SetFilterIndex(StoredIndex); PlaceWindow(dlg); if (dlg->ShowModal() == wxID_OK) { // store the last used filter and directory // as said : don't do this in case of an 'open project' if(mgr && !bProject) { int Index = dlg->GetFilterIndex(); wxString Filter; if(FileFilters::GetFilterNameFromIndex(Filters, Index, Filter)) { mgr->Write(_T("/file_dialogs/file_new_open/filter"), Filter); } wxString Test = dlg->GetDirectory(); mgr->Write(_T("/file_dialogs/file_new_open/directory"), dlg->GetDirectory()); } wxArrayString files; dlg->GetPaths(files); OnDropFiles(0,0,files); } dlg->Destroy(); } // end of DoOnFileOpen
void ProjectOptionsDlg::OnEditDepsClick(wxCommandEvent& /*event*/) { wxListBox* lstTargets = XRCCTRL(*this, "lstBuildTarget", wxListBox); ProjectBuildTarget* target = m_Project->GetBuildTarget(lstTargets->GetSelection()); if (!target) return; ExternalDepsDlg dlg(this, m_Project, target); PlaceWindow(&dlg); dlg.ShowModal(); }
int HeaderFixup::Configure() { cbConfigurationDialog dlg(Manager::Get()->GetAppWindow(), wxID_ANY, _("Header Fixup Config")); cbConfigurationPanel* panel = GetConfigurationPanel(&dlg); if (panel) { dlg.AttachConfigurationPanel(panel); PlaceWindow(&dlg); return dlg.ShowModal() == wxID_OK ? 0 : -1; } return 1; }// Configure
void UsrGlblMgrEditDialog::NewVar(cb_unused wxCommandEvent& event) { wxTextEntryDialog d(this, _("Please specify a name for the new variable:"), _("New Variable")); PlaceWindow(&d); if (d.ShowModal() == wxID_OK) { wxString name = d.GetValue(); Save(); Sanitise(name); AddVar(name); } }
void ClassWizard::OnLaunch(cb_unused wxCommandEvent& event) { ProjectManager* prjMan = Manager::Get()->GetProjectManager(); cbProject* prj = prjMan->GetActiveProject(); ClassWizardDlg dlg(Manager::Get()->GetAppWindow()); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) { if (!prj) { cbMessageBox( _("The new class has been created."), _("Information"), wxOK | wxICON_INFORMATION, Manager::Get()->GetAppWindow()); } else if( cbMessageBox( _("The new class has been created.\n" "Do you want to add it to the current project?"), _("Add to project?"), wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION, Manager::Get()->GetAppWindow()) == wxID_YES) { wxArrayInt targets; prjMan->AddFileToProject(dlg.GetHeaderFilename(), prj, targets); if ( (targets.GetCount() != 0) && (dlg.IsValidImplementationFilename()) ) prjMan->AddFileToProject(dlg.GetImplementationFilename(), prj, targets); if (dlg.AddPathToProject()) { // Add the include Path to the Build targets.... for (size_t i = 0; i < targets.GetCount(); ++i) { ProjectBuildTarget* buildTarget = prj->GetBuildTarget(targets[i]); // Get the top level build Target if (buildTarget) { wxString include_dir = dlg.GetIncludeDir(); if (!include_dir.IsEmpty()) buildTarget->AddIncludeDir(include_dir); } else { wxString information; information.Printf(_("Could not find build target ID = %i.\nThe include directory won't be added to this target. Please do it manually"), targets[i]); cbMessageBox(information, _("Information"), wxOK | wxICON_INFORMATION, Manager::Get()->GetAppWindow()); } } } prjMan->GetUI().RebuildTree(); } } }
wxString ChooseFile(const wxString& title, const wxString& defaultFile, const wxString& filter) { wxFileDialog dlg(nullptr, title, wxEmptyString, Manager::Get()->GetMacrosManager()->ReplaceMacros(defaultFile), filter, wxFD_OPEN | compatibility::wxHideReadonly); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) return dlg.GetPath(); return wxEmptyString; }
int CodeChecker::Configure() { //create and display the configuration dialog for your plugin cbConfigurationDialog dlg(Manager::Get()->GetAppWindow(), wxID_ANY, _("Your dialog title")); cbConfigurationPanel* panel = GetConfigurationPanel(&dlg); if (panel) { dlg.AttachConfigurationPanel(panel); PlaceWindow(&dlg); return dlg.ShowModal() == wxID_OK ? 0 : -1; } return -1; }
wxString DefaultMimeHandler::ChooseExternalProgram() { wxFileDialog dlg(0, _("Select program"), wxEmptyString, wxEmptyString, FileFilters::GetFilterAll(), wxFD_OPEN | compatibility::wxHideReadonly); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) return dlg.GetPath(); return wxEmptyString; }
int ShellExtensions::Configure() { //create and display the configuration dialog for your plugin cbConfigurationDialog dlg(Manager::Get()->GetAppWindow(), wxID_ANY, _("ShellCommand Settings")); cbConfigurationPanel* panel = GetConfigurationPanel(&dlg); if (panel) { dlg.AttachConfigurationPanel(panel); PlaceWindow(&dlg); return dlg.ShowModal() == wxID_OK ? 0 : -1; } return -1; }
void FilePathPanel::OnbtnBrowseClick(wxCommandEvent& event) { cbProject* prj = Manager::Get()->GetProjectManager()->GetActiveProject(); wxFileDialog dlg(this, _("Select filename"), prj ? prj->GetBasePath() : _T(""), txtFilename->GetValue(), m_ExtFilter, wxFD_SAVE | wxFD_OVERWRITE_PROMPT); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) txtFilename->SetValue(dlg.GetPath()); }
int PythonInterpreter::Configure() { //create and display the configuration dialog for the plugin cbConfigurationDialog dlg(Manager::Get()->GetAppWindow(), wxID_ANY, _("Python Language Properties")); cbConfigurationPanel* panel = GetConfigurationPanel(&dlg); if (panel) { dlg.AttachConfigurationPanel(panel); PlaceWindow(&dlg); return dlg.ShowModal() == wxID_OK ? 0 : -1; } return -1; }
void ConfigurationPanel::OnButtonBrowse(wxCommandEvent & /*event*/) { wxString oldPath = m_exec_path->GetValue(); Manager::Get()->GetMacrosManager()->ReplaceEnvVars(oldPath); wxFileDialog dlg(this, _("Select executable file"), wxEmptyString, oldPath, wxFileSelectorDefaultWildcardStr, wxFD_OPEN | wxFD_FILE_MUST_EXIST); PlaceWindow(&dlg); if (dlg.ShowModal() == wxID_OK) { wxString newPath = dlg.GetPath(); m_exec_path->SetValue(newPath); } }
DLLIMPORT int cbGetSingleChoiceIndex(const wxString& message, const wxString& caption, const wxArrayString& choices, wxWindow *parent, const wxSize &size, int initialSelection) { if (!parent) parent = Manager::Get()->GetAppWindow(); wxSingleChoiceDialog dialog(parent, message, caption, choices); dialog.SetSelection(initialSelection); dialog.SetSize(size); PlaceWindow(&dialog); return (dialog.ShowModal() == wxID_OK ? dialog.GetSelection() : -1); }