CompilerSettingsDlg::CompilerSettingsDlg(wxWindow* parent) { wxXmlResource::Get()->LoadObject(this, parent, _T("dlgCompilerSettings"),_T("wxScrollingDialog")); XRCCTRL(*this, "wxID_OK", wxButton)->SetDefault(); m_pImageList = new wxImageList(80, 80); Connect(XRCID("nbMain"),wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING,wxListbookEventHandler(CompilerSettingsDlg::OnPageChanging)); Connect(XRCID("nbMain"),wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, wxListbookEventHandler(CompilerSettingsDlg::OnPageChanged )); // tab "Batch builds" if (platform::windows) XRCCTRL(*this, "txtBatchBuildsCmdLine", wxTextCtrl)->SetValue(Manager::Get()->GetConfigManager(_T("app"))->Read(_T("/batch_build_args"), appglobals::DefaultBatchBuildArgs)); else XRCCTRL(*this, "txtBatchBuildsCmdLine", wxTextCtrl)->Enable(false); // fill plugins list ConfigManager *bbcfg = Manager::Get()->GetConfigManager(_T("plugins")); wxArrayString bbplugins = bbcfg->ReadArrayString(_T("/batch_build_plugins")); if (!bbplugins.GetCount()) { // defaults if (platform::windows) bbplugins.Add(_T("compiler.dll")); else bbplugins.Add(_T("libcompiler.so")); } wxCheckListBox* clb = XRCCTRL(*this, "chkBBPlugins", wxCheckListBox); clb->Clear(); clb->SetMinSize(wxSize(-1, 150)); const PluginElementsArray& plugins = Manager::Get()->GetPluginManager()->GetPlugins(); for (size_t i = 0; i < plugins.GetCount(); ++i) { PluginElement* elem = plugins[i]; if (!elem) continue; cbPlugin* plugin = elem->plugin; if (!plugin || !plugin->IsAttached()) continue; wxString filename = wxFileName(elem->fileName).GetFullName(); size_t index = clb->Append(elem->info.title); // check item if any wildcard matches for (size_t n = 0; n < bbplugins.GetCount(); ++n) { if (filename.CmpNoCase(bbplugins[n]) == 0) { clb->Check(index, plugin->IsAttached()); break; } } } // add all plugins configuration panels AddPluginPanels(); // make sure everything is laid out properly GetSizer()->SetSizeHints(this); CentreOnParent(); Layout(); }
// class constructor ProjectOptionsDlg::ProjectOptionsDlg(wxWindow* parent, cbProject* project) : m_Project(project), m_Current_Sel(-1), m_pCompiler(0L) { wxXmlResource::Get()->LoadObject(this, parent, _T("dlgProjectOptions"),_T("wxScrollingDialog")); wxCheckListBox* list = XRCCTRL(*this, "lstFiles", wxCheckListBox); int count = m_Project->GetFilesCount(); for (int i = 0; i < count; ++i) { ProjectFile* pf = m_Project->GetFile(i); list->Append(pf->relativeFilename); } // this fixes the minsize of the file list // which becomes huge when we add items in it (!) list->SetMinSize(wxSize(50,50)); // general XRCCTRL(*this, "txtProjectName", wxTextCtrl)->SetValue(m_Project->GetTitle()); XRCCTRL(*this, "txtProjectFilename", wxStaticText)->SetLabel(m_Project->GetFilename()); XRCCTRL(*this, "txtProjectMakefile", wxTextCtrl)->SetValue(m_Project->GetMakefile()); XRCCTRL(*this, "chkCustomMakefile", wxCheckBox)->SetValue(m_Project->IsMakefileCustom()); XRCCTRL(*this, "txtExecutionDir", wxTextCtrl)->SetValue(m_Project->GetMakefileExecutionDir()); XRCCTRL(*this, "txtMakeTool", wxTextCtrl)->SetValue(m_Project->GetMakeTool()); XRCCTRL(*this, "rbPCHStrategy", wxRadioBox)->SetSelection((int)m_Project->GetModeForPCH()); Compiler* compiler = CompilerFactory::GetCompiler(project->GetCompilerID()); bool hasPCH = compiler && compiler->GetSwitches().supportsPCH; XRCCTRL(*this, "rbPCHStrategy", wxRadioBox)->Enable(hasPCH); XRCCTRL(*this, "chkExtendedObjNames", wxCheckBox)->SetValue(m_Project->GetExtendedObjectNamesGeneration()); XRCCTRL(*this, "chkNoForceObjectLowCase", wxCheckBox)->SetValue(m_Project->GetForceLowerCaseObject()); XRCCTRL(*this, "chkShowNotes", wxCheckBox)->SetValue(m_Project->GetShowNotesOnLoad()); XRCCTRL(*this, "txtNotes", wxTextCtrl)->SetValue(m_Project->GetNotes()); FillBuildTargets(); PluginsArray plugins = Manager::Get()->GetPluginManager()->GetCompilerOffers(); if (plugins.GetCount()) m_pCompiler = (cbCompilerPlugin*)plugins[0]; // scripts BuildScriptsTree(); // make sure everything is laid out properly // before adding panels from plugins // we don't want the dialog to become huge ;) // note that a similar situation in editor settings had been solved by commenting // the following line out... GetSizer()->SetSizeHints(this); // other plugins configuration AddPluginPanels(); CentreOnParent(); }
EnvironmentSettingsDlg::EnvironmentSettingsDlg(wxWindow* parent, wxAuiDockArt* art) : m_pArt(art) { ConfigManager *cfg = Manager::Get()->GetConfigManager(_T("app")); ConfigManager *pcfg = Manager::Get()->GetConfigManager(_T("project_manager")); ConfigManager *mcfg = Manager::Get()->GetConfigManager(_T("message_manager")); ConfigManager *acfg = Manager::Get()->GetConfigManager(_T("an_dlg")); wxXmlResource::Get()->LoadObject(this, parent, _T("dlgEnvironmentSettings"),_T("wxScrollingDialog")); int sel = cfg->ReadInt(_T("/environment/settings_size"), 0); wxListbook* lb = XRCCTRL(*this, "nbMain", wxListbook); SetSettingsIconsStyle(lb->GetListView(), (SettingsIconsStyle)sel); LoadListbookImages(); // this setting is not available under wxGTK #ifndef __WXMSW__ XRCCTRL(*this, "rbSettingsIconsSize", wxRadioBox)->Enable(false); #endif // tab "General" XRCCTRL(*this, "chkSingleInstance", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/single_instance"), true)); #ifdef __WXMSW__ static_cast<wxStaticBoxSizer*>(XRCCTRL(*this, "chkUseIPC", wxCheckBox)->GetContainingSizer())->GetStaticBox()->SetLabel(_("Dynamic Data Exchange (will take place after restart)")); #endif bool useIpc = cfg->ReadBool(_T("/environment/use_ipc"), true); XRCCTRL(*this, "chkUseIPC", wxCheckBox)->SetValue(useIpc); XRCCTRL(*this, "chkRaiseViaIPC", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/raise_via_ipc"), true)); XRCCTRL(*this, "chkRaiseViaIPC", wxCheckBox)->Enable(useIpc); XRCCTRL(*this, "chkAssociations", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/check_associations"), true)); XRCCTRL(*this, "chkModifiedFiles", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/check_modified_files"), true)); XRCCTRL(*this, "chkInvalidTargets", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/ignore_invalid_targets"), true)); XRCCTRL(*this, "rbAppStart", wxRadioBox)->SetSelection(cfg->ReadBool(_T("/environment/blank_workspace"), true) ? 1 : 0); wxTextCtrl* txt = XRCCTRL(*this, "txtConsoleTerm", wxTextCtrl); txt->SetValue(cfg->Read(_T("/console_terminal"), DEFAULT_CONSOLE_TERM)); #ifdef __WXMSW__ // under win32, this option is not needed, so disable it txt->Enable(false); #endif txt = XRCCTRL(*this, "txtConsoleShell", wxTextCtrl); txt->SetValue(cfg->Read(_T("/console_shell"), DEFAULT_CONSOLE_SHELL)); #ifdef __WXMSW__ // under win32, this option is not needed, so disable it txt->Enable(false); #endif #if defined __WXMSW__ const wxString openFolderCmds = _T("explorer.exe /select,"); #elif defined __WXMAC__ const wxString openFolderCmds = _T("open -R"); #else const wxString openFolderCmds = _T("xdg-open"); #endif XRCCTRL(*this, "txtOpenFolder", wxTextCtrl)->SetValue(cfg->Read(_T("/open_containing_folder"), openFolderCmds)); // tab "View" bool do_place = cfg->ReadBool(_T("/dialog_placement/do_place"), false); XRCCTRL(*this, "chkDoPlace", wxCheckBox)->SetValue(do_place); XRCCTRL(*this, "chkPlaceHead", wxCheckBox)->SetValue(cfg->ReadInt(_T("/dialog_placement/dialog_position"), 0) == pdlHead ? 1 : 0); XRCCTRL(*this, "chkPlaceHead", wxCheckBox)->Enable(do_place); XRCCTRL(*this, "rbProjectOpen", wxRadioBox)->SetSelection(pcfg->ReadInt(_T("/open_files"), 1)); XRCCTRL(*this, "rbSettingsIconsSize", wxRadioBox)->SetSelection(cfg->ReadInt(_T("/environment/settings_size"), 0)); XRCCTRL(*this, "spnLogFontSize", wxSpinCtrl)->SetValue(mcfg->ReadInt(_T("/log_font_size"), 8)); bool en = mcfg->ReadBool(_T("/auto_hide"), false); XRCCTRL(*this, "chkAutoHideMessages", wxCheckBox)->SetValue(en); XRCCTRL(*this, "chkAutoShowMessagesOnSearch", wxCheckBox)->SetValue(mcfg->ReadBool(_T("/auto_show_search"), true)); XRCCTRL(*this, "chkAutoShowMessagesOnWarn", wxCheckBox)->SetValue(mcfg->ReadBool(_T("/auto_show_build_warnings"), true)); XRCCTRL(*this, "chkAutoShowMessagesOnErr", wxCheckBox)->SetValue(mcfg->ReadBool(_T("/auto_show_build_errors"), true)); XRCCTRL(*this, "chkAutoShowMessagesOnSearch", wxCheckBox)->Enable(en); XRCCTRL(*this, "chkAutoShowMessagesOnWarn", wxCheckBox)->Enable(en); XRCCTRL(*this, "chkAutoShowMessagesOnErr", wxCheckBox)->Enable(en); XRCCTRL(*this, "chkSaveSelectionChangeInMP", wxCheckBox)->SetValue(mcfg->ReadBool(_T("/save_selection_change_in_mp"), true)); en = cfg->ReadBool(_T("/environment/view/dbl_clk_maximize"), true); XRCCTRL(*this, "chkDblClkMaximizes", wxCheckBox)->SetValue(en); int idx = Manager::Get()->GetAppFrame()->GetMenuBar()->FindMenu(_("&View")); if (idx != wxNOT_FOUND) { wxMenu* menuView = Manager::Get()->GetAppFrame()->GetMenuBar()->GetMenu(idx); int sub_idx = menuView->FindItem(_("Perspectives")); if (sub_idx != wxNOT_FOUND) { wxMenu* menuLayouts = menuView->FindItem(sub_idx)->GetSubMenu(); if (menuLayouts) { wxMenuItemList& items = menuLayouts->GetMenuItems(); for (size_t i = 0; i < items.GetCount() && ! items[i]->IsSeparator() ; ++i) { #if wxCHECK_VERSION(2,8,5) XRCCTRL(*this, "choLayoutToToggle", wxChoice)->Append(items[i]->GetLabelText(items[i]->GetItemLabelText())); #else XRCCTRL(*this, "choLayoutToToggle", wxChoice)->Append(items[i]->GetLabelFromText(items[i]->GetLabel())); #endif } } } } sel = XRCCTRL(*this, "choLayoutToToggle", wxChoice)->FindString( cfg->Read(_T("/environment/view/layout_to_toggle"),cfg->Read(_T("/main_frame/layout/default")))); XRCCTRL(*this, "choLayoutToToggle", wxChoice)->SetSelection(sel != wxNOT_FOUND ? sel : 0); XRCCTRL(*this, "choLayoutToToggle", wxChoice)->Enable(en); bool i18n=cfg->ReadBool(_T("/locale/enable"), false); XRCCTRL(*this, "chkI18N", wxCheckBox)->SetValue(i18n); wxDir locDir(ConfigManager::GetDataFolder() + _T("/locale")); wxString locFName; if(locDir.IsOpened() && locDir.GetFirst(&locFName/*, wxEmptyString, wxDIR_DIRS*/)) do { const wxLanguageInfo *info = wxLocale::FindLanguageInfo(locFName); if(info) { XRCCTRL(*this, "cbxLanguage", wxComboBox)->Append(info->Description); } }while(locDir.GetNext(&locFName)); XRCCTRL(*this, "cbxLanguage", wxComboBox)->Enable(i18n); const wxLanguageInfo *info = wxLocale::FindLanguageInfo(cfg->Read(_T("/locale/language"))); if(info) XRCCTRL(*this, "cbxLanguage", wxComboBox)->SetStringSelection(info->Description); // tab "Notebook" XRCCTRL(*this, "chkStackedBasedTabSwitching", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/tabs_stacked_based_switching"), 0)); bool enableTabMousewheel = cfg->ReadBool(_T("/environment/tabs_use_mousewheel"),true); bool modToAdvance = cfg->ReadBool(_T("/environment/tabs_mousewheel_advance"),false); XRCCTRL(*this, "chkNBUseMousewheel", wxCheckBox)->SetValue(enableTabMousewheel); XRCCTRL(*this, "rbNBModToAdvance", wxRadioButton)->SetValue(modToAdvance); XRCCTRL(*this, "rbNBModToMove", wxRadioButton)->SetValue(!modToAdvance); XRCCTRL(*this, "chkNBInvertAdvance", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/tabs_invert_advance"),false)); XRCCTRL(*this, "chkNBInvertMove", wxCheckBox)->SetValue(cfg->ReadBool(_T("/environment/tabs_invert_move"),false)); XRCCTRL(*this, "txtMousewheelModifier", wxTextCtrl)->SetValue(cfg->Read(_T("/environment/tabs_mousewheel_modifier"),_T("Ctrl"))); XRCCTRL(*this, "txtMousewheelModifier", wxTextCtrl)->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(EnvironmentSettingsDlg::OnMousewheelModifier)); XRCCTRL(*this, "rbNBModToAdvance", wxRadioButton)->Enable(enableTabMousewheel); XRCCTRL(*this, "rbNBModToMove", wxRadioButton)->Enable(enableTabMousewheel); XRCCTRL(*this, "chkNBInvertAdvance", wxCheckBox)->Enable(enableTabMousewheel); XRCCTRL(*this, "chkNBInvertMove", wxCheckBox)->Enable(enableTabMousewheel); XRCCTRL(*this, "txtMousewheelModifier", wxTextCtrl)->Enable(enableTabMousewheel); bool useToolTips = cfg->ReadBool(_T("/environment/tabs_use_tooltips"),true); XRCCTRL(*this, "chkNBUseToolTips", wxCheckBox)->SetValue(useToolTips); XRCCTRL(*this, "spnNBDwellTime", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/environment/tabs_dwell_time"), 1000)); XRCCTRL(*this, "spnNBDwellTime", wxSpinCtrl)->Enable(useToolTips); // tab "Docking" /* XRCCTRL(*this, "spnAuiBorder", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/environment/aui/border_size"), m_pArt->GetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE))); XRCCTRL(*this, "spnAuiSash", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/environment/aui/sash_size"), m_pArt->GetMetric(wxAUI_DOCKART_SASH_SIZE))); XRCCTRL(*this, "spnAuiCaption", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/environment/aui/caption_size"), m_pArt->GetMetric(wxAUI_DOCKART_CAPTION_SIZE))); XRCCTRL(*this, "btnAuiActiveCaptionColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/active_caption_colour"), m_pArt->GetColour(wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR))); XRCCTRL(*this, "btnAuiActiveCaptionGradientColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/active_caption_gradient_colour"), m_pArt->GetColour(wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR))); XRCCTRL(*this, "btnAuiActiveCaptionTextColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/active_caption_text_colour"), m_pArt->GetColour(wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR))); XRCCTRL(*this, "btnAuiInactiveCaptionColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/inactive_caption_colour"), m_pArt->GetColour(wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR))); XRCCTRL(*this, "btnAuiInactiveCaptionGradientColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/inactive_caption_gradient_colour"), m_pArt->GetColour(wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR))); XRCCTRL(*this, "btnAuiInactiveCaptionTextColour", wxButton)->SetBackgroundColour(cfg->ReadColour(_T("/environment/aui/inactive_caption_text_colour"), m_pArt->GetColour(wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR))); */ // tab "Dialogs" wxCheckListBox* clb = XRCCTRL(*this, "chkDialogs", wxCheckListBox); clb->Clear(); ConfigManagerContainer::StringSet dialogs = acfg->ReadSSet(_T("/disabled")); for (ConfigManagerContainer::StringSet::iterator i = dialogs.begin(); i != dialogs.end(); ++i) clb->Append(*i); // tab "Network" XRCCTRL(*this, "txtProxy", wxTextCtrl)->SetValue(cfg->Read(_T("/network_proxy"))); // disable some windows-only settings, in other platforms #ifndef __WXMSW__ XRCCTRL(*this, "chkAssociations", wxCheckBox)->Enable(false); XRCCTRL(*this, "btnSetAssocs", wxButton)->Enable(false); XRCCTRL(*this, "btnManageAssocs", wxButton)->Enable(false); #endif // add all plugins configuration panels AddPluginPanels(); // make sure everything is laid out properly GetSizer()->SetSizeHints(this); CentreOnParent(); }