void ListCtrlLogger::UpdateSettings() { if (!control) return; ConfigManager* cfgman = Manager::Get()->GetConfigManager(_T("message_manager")); int size = cfgman->ReadInt(_T("/log_font_size"), platform::macosx ? 10 : 8); wxFont default_font(size, fixed ? wxFONTFAMILY_MODERN : wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); wxFont bold_font(default_font); wxFont italic_font(default_font); bold_font.SetWeight(wxFONTWEIGHT_BOLD); wxFont bigger_font(bold_font); bigger_font.SetPointSize(size + 2); wxFont small_font(default_font); small_font.SetPointSize(size - 4); italic_font.SetStyle(wxFONTSTYLE_ITALIC); wxColour default_text_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); for(unsigned int i = 0; i < num_levels; ++i) { style[i].font = default_font; style[i].colour = default_text_colour; } ColourManager *colours = Manager::Get()->GetColourManager(); style[caption].font = bigger_font; style[success].colour = colours->GetColour(wxT("logs_success_text")); style[failure].colour = colours->GetColour(wxT("logs_failure_text")); style[warning].font = italic_font; style[warning].colour = colours->GetColour(wxT("logs_warning_text")); style[error].colour = colours->GetColour(wxT("logs_error_text")); style[critical].font = bold_font; style[critical].colour = colours->GetColour(wxT("logs_critical_text_listctrl")); style[spacer].font = small_font; style[pagetitle] = style[caption]; // Tell control and items about the font change control->SetFont(default_font); for (int i = 0; i < control->GetItemCount(); ++i) { wxFont font = control->GetItemFont(i); font.SetPointSize(size); control->SetItemFont( i, font ); }//for } // end of UpdateSettings
// constructor OccurrencesHighlighting::OccurrencesHighlighting(): m_pHighlighter(NULL), m_pPanel(NULL), m_pViewMenu(NULL) { // Make sure our resources are available. // In the generated boilerplate code we have no resources but when // we add some, it will be nice that this code is in place already ;) if (!Manager::LoadResource(_T("occurrenceshighlighting.zip"))) NotifyMissingFile(_T("occurrenceshighlighting.zip")); ColourManager* cm = Manager::Get()->GetColourManager(); cm->RegisterColour(_("Editor"), _("Highlight occurrence"), wxT("editor_highlight_occurrence"), *wxRED ); cm->RegisterColour(_("Editor"), _("Permanently highlighted occurrences"), wxT("editor_highlight_occurrence_permanently"), *wxGREEN); }
LogManager::LogManager() { for (size_t i = 0; i < max_logs; ++i) { slot[i].index = i; slot[i].log = &g_null_log; } SetLog(new StdoutLogger, stdout_log); SetLog(new StdoutLogger, app_log); SetLog(new StdoutLogger, debug_log); slot[stdout_log].title = _T("stdout"); slot[app_log].title = _T("Code::Blocks"); slot[debug_log].title = _T("Code::Blocks Debug"); ColourManager *manager = Manager::Get()->GetColourManager(); manager->RegisterColour(_("Logs"), _("Success text"), wxT("logs_success_text"), *wxBLUE); manager->RegisterColour(_("Logs"), _("Warning text"), wxT("logs_warning_text"), *wxBLUE); manager->RegisterColour(_("Logs"), _("Error text"), wxT("logs_error_text"), wxColour(0xf0, 0x00, 0x00)); manager->RegisterColour(_("Logs"), _("Critical text"), wxT("logs_critical_text"), *wxWHITE); manager->RegisterColour(_("Logs"), _("Critical background"), wxT("logs_critical_back"), *wxRED); manager->RegisterColour(_("Logs"), _("Critical text (ListCtrl)"), wxT("logs_critical_text_listctrl"), wxColour(0x0a, 0x00, 0x00)); manager->RegisterColour(_("Logs"), _("Failure text"), wxT("logs_failure_text"), wxColour(0x00, 0x00, 0xa0)); Register(_T("null"), new Instantiator<NullLogger>); Register(_T("stdout"), new Instantiator<StdoutLogger>); Register(_T("text"), new Instantiator<TextCtrlLogger>); Register(_T("file"), new Instantiator<FileLogger, true>); }
void EditorColourSet::Apply(HighlightLanguage lang, cbStyledTextCtrl* control, bool isC) { if (!control) return; control->StyleClearAll(); if (lang == HL_NONE) return; // first load the default colours to all styles used by the actual lexer (ignoring some built-in styles) OptionColour* defaults = GetDefaultOption(lang); OptionSet& mset = m_Sets[lang]; control->SetLexer(mset.m_Lexers); control->SetStyleBits(control->GetStyleBitsNeeded()); if (defaults) { int countStyles = 1 << control->GetStyleBits(); // walk until countStyles, otherwise the background-colour is only set for characters, // not for empty background for (int i = 0; i <= countStyles; ++i) { if (i < 33 || (i > 39 && i < wxSCI_STYLE_MAX)) DoApplyStyle(control, i, defaults); } } // Calling StyleClearAll above clears the style for the line numbers, so we have to re-apply it. ColourManager *colours = Manager::Get()->GetColourManager(); control->StyleSetForeground(wxSCI_STYLE_LINENUMBER, colours->GetColour(wxT("editor_linenumbers_fg"))); control->StyleSetBackground(wxSCI_STYLE_LINENUMBER, colours->GetColour(wxT("editor_linenumbers_bg"))); for (unsigned int i = 0; i < mset.m_Colours.GetCount(); ++i) { OptionColour* opt = mset.m_Colours.Item(i); if (opt->isStyle) { DoApplyStyle(control, opt->value, opt); } else { if (opt->value == cbHIGHLIGHT_LINE) { control->SetCaretLineBackground(opt->back); Manager::Get()->GetConfigManager(_T("editor"))->Write(_T("/highlight_caret_line_colour"), opt->back); } else if (opt->value == cbSELECTION) { if (opt->back != wxNullColour) { control->SetSelBackground(true, opt->back); // Manager::Get()->GetConfigManager(_T("editor"))->Write(_T("/selection_colour"), opt->back); } else control->SetSelBackground(false, wxColour(0xC0, 0xC0, 0xC0)); if (opt->fore != wxNullColour) { control->SetSelForeground(true, opt->fore); // Manager::Get()->GetConfigManager(_T("editor"))->Write(_T("/selection_fgcolour"), opt->fore); } else control->SetSelForeground(false, *wxBLACK); } // else // { // control->MarkerDefine(-opt->value, 1); // control->MarkerSetBackground(-opt->value, opt->back); // } } } for (int i = 0; i <= wxSCI_KEYWORDSET_MAX; ++i) { if (!isC || i != 1) // exclude stl highlights for C control->SetKeyWords(i, mset.m_Keywords[i]); } control->Colourise(0, -1); // the *most* important part! }
PythonCodeCtrl::PythonCodeCtrl(wxWindow *parent, PythonInterpCtrl *py) : cbStyledTextCtrl(parent, wxID_ANY) { m_pyctrl = py; EditorManager *em = Manager::Get()->GetEditorManager(); // Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(PythonCodeCtrl::OnUserInput)); ConfigManager* mgr = Manager::Get()->GetConfigManager(_T("editor")); //MOST OF THIS STUFF IS TAKEN FROM CB EDITOR wxFont font(10, wxMODERN, wxNORMAL, wxNORMAL); wxString fontstring = mgr->Read(_T("/font"), wxEmptyString); if (!fontstring.IsEmpty()) { wxNativeFontInfo nfi; nfi.FromString(fontstring); font.SetNativeFontInfo(nfi); } SetMouseDwellTime(1000); SetScrollWidthTracking(true); SetScrollWidth(5); //Hides horizontal scrollbar if text doesn't exceed the window width int caretStyle = mgr->ReadInt(_T("/caret/style"), wxSCI_CARETSTYLE_LINE); SetCaretStyle(caretStyle); if (caretStyle == wxSCI_CARETSTYLE_LINE) SetCaretWidth(mgr->ReadInt(_T("/caret/width"), 1)); else SetCaretWidth(1); ColourManager *colours = Manager::Get()->GetColourManager(); SetCaretForeground(colours->GetColour(wxT("editor_caret"))); SetCaretPeriod(mgr->ReadInt(_T("/caret/period"), 500)); SetCaretLineVisible(mgr->ReadBool(_T("/highlight_caret_line"), false)); SetCaretLineBackground( Manager::Get()->GetConfigManager(_T("editor"))->ReadColour(_T("/highlight_caret_line_colour"), wxColour(0xFF, 0xFF, 0x00))); SetFoldMarginColour(true, colours->GetColour(wxT("editor_margin_chrome"))); SetFoldMarginHiColour(true, colours->GetColour(wxT("editor_margin_chrome_highlight"))); // setup for "CamelCase selection" if (mgr->ReadBool(_T("/camel_case"), false)) { // consider CamelCase for both: cursor movement with CTRL and selection with CTRL+SHIFT: CmdKeyAssign(wxSCI_KEY_LEFT, wxSCI_SCMOD_CTRL, wxSCI_CMD_WORDPARTLEFT); CmdKeyAssign(wxSCI_KEY_RIGHT, wxSCI_SCMOD_CTRL, wxSCI_CMD_WORDPARTRIGHT); CmdKeyAssign(wxSCI_KEY_LEFT, wxSCI_SCMOD_CTRL|wxSCI_SCMOD_SHIFT, wxSCI_CMD_WORDPARTLEFTEXTEND); CmdKeyAssign(wxSCI_KEY_RIGHT, wxSCI_SCMOD_CTRL|wxSCI_SCMOD_SHIFT, wxSCI_CMD_WORDPARTRIGHTEXTEND); } else // else set default "none CamelCase" key behavior (also default scintilla behaviour, see scintilla docs) { CmdKeyAssign(wxSCI_KEY_LEFT, wxSCI_SCMOD_CTRL, wxSCI_CMD_WORDLEFT); CmdKeyAssign(wxSCI_KEY_RIGHT, wxSCI_SCMOD_CTRL, wxSCI_CMD_WORDRIGHT); CmdKeyAssign(wxSCI_KEY_LEFT, wxSCI_SCMOD_CTRL|wxSCI_SCMOD_SHIFT, wxSCI_CMD_WORDLEFTEXTEND); CmdKeyAssign(wxSCI_KEY_RIGHT, wxSCI_SCMOD_CTRL|wxSCI_SCMOD_SHIFT, wxSCI_CMD_WORDRIGHTEXTEND); } SetUseTabs(mgr->ReadBool(_T("/use_tab"), false)); SetIndentationGuides(mgr->ReadBool(_T("/show_indent_guides"), false)?wxSCI_IV_LOOKBOTH:wxSCI_IV_NONE); SetTabIndents(mgr->ReadBool(_T("/tab_indents"), true)); SetBackSpaceUnIndents(mgr->ReadBool(_T("/backspace_unindents"), true)); SetWrapMode(mgr->ReadBool(_T("/word_wrap"), false)); if (mgr->ReadBool(_T("/word_wrap_style_home_end"), true)) { // in word wrap mode, home/end keys goto the wrap point if not already there, // otherwise to the start/end of the entire line. // alt+home/end go to start/end of the entire line. // in unwrapped mode, there is no difference between home/end and alt+home/end CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_NORM, wxSCI_CMD_LINEENDWRAP); CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_ALT, wxSCI_CMD_LINEEND); CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_SHIFT, wxSCI_CMD_LINEENDWRAPEXTEND); CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT, wxSCI_CMD_LINEENDEXTEND); // if user wants "Home" key to set cursor to the very beginning of line if (mgr->ReadBool(_T("/simplified_home"), false)) { CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_NORM,wxSCI_CMD_HOMEWRAP); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_ALT,wxSCI_CMD_HOME); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT,wxSCI_CMD_HOMEWRAPEXTEND); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT,wxSCI_CMD_HOMEEXTEND); } else // else set default "Home" key behavior { CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_NORM,wxSCI_CMD_VCHOMEWRAP); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_ALT,wxSCI_CMD_VCHOME); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT,wxSCI_CMD_VCHOMEWRAPEXTEND); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT,wxSCI_CMD_VCHOMEEXTEND); } } else { // in word wrap mode, home/end keys goto start/end of the entire line. alt+home/end goes to wrap points CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_ALT, wxSCI_CMD_LINEENDWRAP); CmdKeyAssign(wxSCI_KEY_END, wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT, wxSCI_CMD_LINEENDWRAPEXTEND); // if user wants "Home" key to set cursor to the very beginning of line if (mgr->ReadBool(_T("/simplified_home"), false)) { CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_ALT,wxSCI_CMD_HOMEWRAP); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT,wxSCI_CMD_HOMEWRAPEXTEND); } else // else set default "Home" key behavior { CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_ALT,wxSCI_CMD_VCHOMEWRAP); CmdKeyAssign(wxSCI_KEY_HOME,wxSCI_SCMOD_SHIFT|wxSCI_SCMOD_ALT,wxSCI_CMD_VCHOMEWRAPEXTEND); } } SetViewEOL(mgr->ReadBool(_T("/show_eol"), false)); SetViewWhiteSpace(mgr->ReadInt(_T("/view_whitespace"), 0)); // gutter SetEdgeMode(mgr->ReadInt(_T("/gutter/mode"), 0)); SetEdgeColour(Manager::Get()->GetColourManager()->GetColour(wxT("editor_gutter"))); SetEdgeColumn(mgr->ReadInt(_T("/gutter/column"), 80)); StyleSetFont(wxSCI_STYLE_DEFAULT, font); StyleClearAll(); SetTabWidth(mgr->ReadInt(_T("/tab_size"), 4)); SetIndent(mgr->ReadInt(_T("/tab_size"), 4)); //NEEDED FOR AUTO INDENTATION (NOT IN CB EDITOR) em->GetColourSet()->Apply(_("Python"),this); }
CCOptionsDlg::CCOptionsDlg(wxWindow* parent, NativeParser* np, CodeCompletion* cc, DocumentationHelper* dh) : m_NativeParser(np), m_CodeCompletion(cc), m_Parser(np->GetParser()), m_Documentation(dh) { ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("code_completion")); wxXmlResource::Get()->LoadPanel(this, parent, _T("dlgCCSettings")); // ----------------------------------------------------------------------- // Handle all options that are being directly applied from config // ----------------------------------------------------------------------- // Page "Code Completion" XRCCTRL(*this, "chkNoCC", wxCheckBox)->SetValue(!cfg->ReadBool(_T("/use_code_completion"), true)); XRCCTRL(*this, "chkNoSemantic", wxCheckBox)->SetValue(!cfg->ReadBool(_T("/semantic_keywords"), false)); XRCCTRL(*this, "chkEvalTooltip", wxCheckBox)->SetValue(cfg->ReadBool(_T("/eval_tooltip"), true)); XRCCTRL(*this, "chkAutoSelectOne", wxCheckBox)->SetValue(cfg->ReadBool(_T("/auto_select_one"), false)); XRCCTRL(*this, "chkAutoAddParentheses", wxCheckBox)->SetValue(cfg->ReadBool(_T("/auto_add_parentheses"), true)); XRCCTRL(*this, "chkDetectImpl", wxCheckBox)->SetValue(cfg->ReadBool(_T("/detect_implementation"),false)); XRCCTRL(*this, "chkAddDoxgenComment", wxCheckBox)->SetValue(cfg->ReadBool(_T("/add_doxgen_comment"), false)); XRCCTRL(*this, "chkEnableHeaders", wxCheckBox)->SetValue(cfg->ReadBool(_T("/enable_headers"), true)); XRCCTRL(*this, "chkAutoLaunch", wxCheckBox)->SetValue(cfg->ReadBool(_T("/auto_launch"), true)); XRCCTRL(*this, "spnAutoLaunchChars", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/auto_launch_chars"), 3)); XRCCTRL(*this, "spnMaxMatches", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/max_matches"), 16384)); XRCCTRL(*this, "txtFillupChars", wxTextCtrl)->SetValue(cfg->Read(_T("/fillup_chars"), wxEmptyString)); XRCCTRL(*this, "sldCCDelay", wxSlider)->SetValue(cfg->ReadInt(_T("/cc_delay"), 300) / 100); UpdateCCDelayLabel(); XRCCTRL(*this, "chkKL_1", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set1"), true)); XRCCTRL(*this, "chkKL_2", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set2"), true)); XRCCTRL(*this, "chkKL_3", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set3"), false)); XRCCTRL(*this, "chkKL_4", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set4"), false)); XRCCTRL(*this, "chkKL_5", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set5"), false)); XRCCTRL(*this, "chkKL_6", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set6"), false)); XRCCTRL(*this, "chkKL_7", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set7"), false)); XRCCTRL(*this, "chkKL_8", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set8"), false)); XRCCTRL(*this, "chkKL_9", wxCheckBox)->SetValue(cfg->ReadBool(_T("/lexer_keywords_set9"), false)); // Page "C / C++ parser" // NOTE (Morten#1#): Keep this in sync with files in the XRC file (settings.xrc) and nativeparser.cpp XRCCTRL(*this, "spnThreadsNum", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/max_threads"), 1)); XRCCTRL(*this, "spnThreadsNum", wxSpinCtrl)->Enable(false); XRCCTRL(*this, "spnParsersNum", wxSpinCtrl)->SetValue(cfg->ReadInt(_T("/max_parsers"), 5)); // Page "C / C++ parser (adv.)" // NOTE (Morten#1#): Keep this in sync with files in the XRC file (settings.xrc) and parser.cpp XRCCTRL(*this, "txtCCFileExtHeader", wxTextCtrl)->SetValue(cfg->Read(_T("/header_ext"), _T("h,hpp,tcc,xpm"))); XRCCTRL(*this, "chkCCFileExtEmpty", wxCheckBox)->SetValue(cfg->ReadBool(_T("/empty_ext"), true)); XRCCTRL(*this, "txtCCFileExtSource", wxTextCtrl)->SetValue(cfg->Read(_T("/source_ext"), _T("c,cpp,cxx,cc,c++"))); const wxStringHashMap& repl = Tokenizer::GetTokenReplacementsMap(); wxStringHashMap::const_iterator it = repl.begin(); while (it != repl.end()) { XRCCTRL(*this, "lstRepl", wxListBox)->Append(it->first + _T(" -> ") + it->second); ++it; } // Page "Symbol browser" XRCCTRL(*this, "chkNoSB", wxCheckBox)->SetValue(!cfg->ReadBool(_T("/use_symbols_browser"), true)); XRCCTRL(*this, "chkFloatCB", wxCheckBox)->SetValue(cfg->ReadBool(_T("/as_floating_window"), false)); XRCCTRL(*this, "chkScopeFilter", wxCheckBox)->SetValue(cfg->ReadBool(_T("/scope_filter"), true)); // ----------------------------------------------------------------------- // Handle all options that are being handled by m_Parser // ----------------------------------------------------------------------- // Page "Code Completion" XRCCTRL(*this, "chkUseSmartSense", wxCheckBox)->SetValue(!m_Parser.Options().useSmartSense); XRCCTRL(*this, "chkWhileTyping", wxCheckBox)->SetValue(m_Parser.Options().whileTyping); XRCCTRL(*this, "chkCaseSensitive", wxCheckBox)->SetValue(m_Parser.Options().caseSensitive); // Page "C / C++ parser" XRCCTRL(*this, "chkLocals", wxCheckBox)->SetValue(m_Parser.Options().followLocalIncludes); XRCCTRL(*this, "chkGlobals", wxCheckBox)->SetValue(m_Parser.Options().followGlobalIncludes); XRCCTRL(*this, "chkPreprocessor", wxCheckBox)->SetValue(m_Parser.Options().wantPreprocessor); XRCCTRL(*this, "chkComplexMacros", wxCheckBox)->SetValue(m_Parser.Options().parseComplexMacros); XRCCTRL(*this, "rdoOneParserPerWorkspace", wxRadioButton)->SetValue( m_NativeParser->IsParserPerWorkspace()); XRCCTRL(*this, "rdoOneParserPerProject", wxRadioButton)->SetValue(!m_NativeParser->IsParserPerWorkspace()); // Page "Symbol browser" XRCCTRL(*this, "chkInheritance", wxCheckBox)->SetValue(m_Parser.ClassBrowserOptions().showInheritance); XRCCTRL(*this, "chkExpandNS", wxCheckBox)->SetValue(m_Parser.ClassBrowserOptions().expandNS); XRCCTRL(*this, "chkTreeMembers", wxCheckBox)->SetValue(m_Parser.ClassBrowserOptions().treeMembers); // Page Documentation XRCCTRL(*this, "chkDocumentation", wxCheckBox)->SetValue(m_Documentation->IsEnabled()); ColourManager *colours = Manager::Get()->GetColourManager(); XRCCTRL(*this, "btnDocBgColor", wxButton)->SetBackgroundColour(colours->GetColour(wxT("cc_docs_back"))); XRCCTRL(*this, "btnDocTextColor", wxButton)->SetBackgroundColour(colours->GetColour(wxT("cc_docs_fore"))); XRCCTRL(*this, "btnDocLinkColor", wxButton)->SetBackgroundColour(colours->GetColour(wxT("cc_docs_link"))); // m_Parser.ParseBuffer(g_SampleClasses, true); // m_Parser.BuildTree(*XRCCTRL(*this, "treeClasses", wxTreeCtrl)); }
void CCOptionsDlg::OnApply() { ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("code_completion")); // ----------------------------------------------------------------------- // Handle all options that are being directly applied / written from UI: // ----------------------------------------------------------------------- // Page "Code Completion" cfg->Write(_T("/use_code_completion"), (bool)!XRCCTRL(*this, "chkNoCC", wxCheckBox)->GetValue()); cfg->Write(_T("/semantic_keywords"), (bool)!XRCCTRL(*this, "chkNoSemantic", wxCheckBox)->GetValue()); cfg->Write(_T("/use_SmartSense"), (bool) XRCCTRL(*this, "chkUseSmartSense", wxCheckBox)->GetValue()); cfg->Write(_T("/while_typing"), (bool) XRCCTRL(*this, "chkWhileTyping", wxCheckBox)->GetValue()); cfg->Write(_T("/case_sensitive"), (bool) XRCCTRL(*this, "chkCaseSensitive", wxCheckBox)->GetValue()); cfg->Write(_T("/eval_tooltip"), (bool) XRCCTRL(*this, "chkEvalTooltip", wxCheckBox)->GetValue()); cfg->Write(_T("/auto_select_one"), (bool) XRCCTRL(*this, "chkAutoSelectOne", wxCheckBox)->GetValue()); cfg->Write(_T("/auto_add_parentheses"), (bool) XRCCTRL(*this, "chkAutoAddParentheses", wxCheckBox)->GetValue()); cfg->Write(_T("/detect_implementation"),(bool) XRCCTRL(*this, "chkDetectImpl", wxCheckBox)->GetValue()); cfg->Write(_T("/add_doxgen_comment"), (bool) XRCCTRL(*this, "chkAddDoxgenComment", wxCheckBox)->GetValue()); cfg->Write(_T("/enable_headers"), (bool) XRCCTRL(*this, "chkEnableHeaders", wxCheckBox)->GetValue()); cfg->Write(_T("/auto_launch"), (bool) XRCCTRL(*this, "chkAutoLaunch", wxCheckBox)->GetValue()); cfg->Write(_T("/auto_launch_chars"), (int) XRCCTRL(*this, "spnAutoLaunchChars", wxSpinCtrl)->GetValue()); cfg->Write(_T("/max_matches"), (int) XRCCTRL(*this, "spnMaxMatches", wxSpinCtrl)->GetValue()); cfg->Write(_T("/fillup_chars"), XRCCTRL(*this, "txtFillupChars", wxTextCtrl)->GetValue()); cfg->Write(_T("/cc_delay"), (int) XRCCTRL(*this, "sldCCDelay", wxSlider)->GetValue() * 100); cfg->Write(_T("/lexer_keywords_set1"), (bool) XRCCTRL(*this, "chkKL_1", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set2"), (bool) XRCCTRL(*this, "chkKL_2", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set3"), (bool) XRCCTRL(*this, "chkKL_3", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set4"), (bool) XRCCTRL(*this, "chkKL_4", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set5"), (bool) XRCCTRL(*this, "chkKL_5", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set6"), (bool) XRCCTRL(*this, "chkKL_6", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set7"), (bool) XRCCTRL(*this, "chkKL_7", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set8"), (bool) XRCCTRL(*this, "chkKL_8", wxCheckBox)->GetValue()); cfg->Write(_T("/lexer_keywords_set9"), (bool) XRCCTRL(*this, "chkKL_9", wxCheckBox)->GetValue()); // Page "C / C++ parser" cfg->Write(_T("/parser_follow_local_includes"), (bool) XRCCTRL(*this, "chkLocals", wxCheckBox)->GetValue()); cfg->Write(_T("/parser_follow_global_includes"), (bool) XRCCTRL(*this, "chkGlobals", wxCheckBox)->GetValue()); cfg->Write(_T("/want_preprocessor"), (bool) XRCCTRL(*this, "chkPreprocessor", wxCheckBox)->GetValue()); cfg->Write(_T("/parse_complex_macros"), (bool) XRCCTRL(*this, "chkComplexMacros", wxCheckBox)->GetValue()); cfg->Write(_T("/max_threads"), (int) XRCCTRL(*this, "spnThreadsNum", wxSpinCtrl)->GetValue()); cfg->Write(_T("/parser_per_workspace"), (bool) XRCCTRL(*this, "rdoOneParserPerWorkspace", wxRadioButton)->GetValue()); cfg->Write(_T("/max_parsers"), (int) XRCCTRL(*this, "spnParsersNum", wxSpinCtrl)->GetValue()); // Page "C / C++ parser (adv.)" cfg->Write(_T("/header_ext"), XRCCTRL(*this, "txtCCFileExtHeader", wxTextCtrl)->GetValue()); cfg->Write(_T("/empty_ext"), (bool) XRCCTRL(*this, "chkCCFileExtEmpty", wxCheckBox)->GetValue()); cfg->Write(_T("/source_ext"), XRCCTRL(*this, "txtCCFileExtSource", wxTextCtrl)->GetValue()); // Page "Symbol browser" cfg->Write(_T("/use_symbols_browser"), (bool)!XRCCTRL(*this, "chkNoSB", wxCheckBox)->GetValue()); cfg->Write(_T("/browser_show_inheritance"), (bool) XRCCTRL(*this, "chkInheritance", wxCheckBox)->GetValue()); cfg->Write(_T("/browser_expand_ns"), (bool) XRCCTRL(*this, "chkExpandNS", wxCheckBox)->GetValue()); cfg->Write(_T("/as_floating_window"), (bool) XRCCTRL(*this, "chkFloatCB", wxCheckBox)->GetValue()); cfg->Write(_T("/browser_tree_members"), (bool) XRCCTRL(*this, "chkTreeMembers", wxCheckBox)->GetValue()); cfg->Write(_T("/scope_filter"), (bool) XRCCTRL(*this, "chkScopeFilter", wxCheckBox)->GetValue()); // Page "Documentation" cfg->Write(_T("/use_documentation_helper"), (bool) XRCCTRL(*this, "chkDocumentation", wxCheckBox)->GetValue()); cfg->Write(_T("/documentation_helper_background_color"), (wxColour) XRCCTRL(*this, "btnDocBgColor", wxButton)->GetBackgroundColour()); cfg->Write(_T("/documentation_helper_text_color"), (wxColour) XRCCTRL(*this, "btnDocTextColor", wxButton)->GetBackgroundColour()); cfg->Write(_T("/documentation_helper_link_color"), (wxColour) XRCCTRL(*this, "btnDocLinkColor", wxButton)->GetBackgroundColour()); // ----------------------------------------------------------------------- // Handle all options that are being be read by m_Parser.ReadOptions(): // ----------------------------------------------------------------------- // Force parser to read its options that we write in the config // Also don't forget to update the Parser option according UI! m_Parser.ReadOptions(); // Page "Code Completion" m_Parser.Options().useSmartSense = !XRCCTRL(*this, "chkUseSmartSense", wxCheckBox)->GetValue(); m_Parser.Options().whileTyping = XRCCTRL(*this, "chkWhileTyping", wxCheckBox)->GetValue(); m_Parser.Options().caseSensitive = XRCCTRL(*this, "chkCaseSensitive", wxCheckBox)->GetValue(); // Page "C / C++ parser" m_Parser.Options().followLocalIncludes = XRCCTRL(*this, "chkLocals", wxCheckBox)->GetValue(); m_Parser.Options().followGlobalIncludes = XRCCTRL(*this, "chkGlobals", wxCheckBox)->GetValue(); m_Parser.Options().wantPreprocessor = XRCCTRL(*this, "chkPreprocessor", wxCheckBox)->GetValue(); m_Parser.Options().parseComplexMacros = XRCCTRL(*this, "chkComplexMacros", wxCheckBox)->GetValue(); // Page "Symbol browser" m_Parser.ClassBrowserOptions().showInheritance = XRCCTRL(*this, "chkInheritance", wxCheckBox)->GetValue(); m_Parser.ClassBrowserOptions().expandNS = XRCCTRL(*this, "chkExpandNS", wxCheckBox)->GetValue(); m_Parser.ClassBrowserOptions().treeMembers = XRCCTRL(*this, "chkTreeMembers", wxCheckBox)->GetValue(); // Page "Documentation" m_Documentation->RereadOptions(cfg); m_Parser.Options().storeDocumentation = XRCCTRL(*this, "chkDocumentation", wxCheckBox)->GetValue(); m_Documentation->SetEnabled( XRCCTRL(*this, "chkDocumentation", wxCheckBox)->GetValue() ); ColourManager *colours = Manager::Get()->GetColourManager(); wxColor colour = XRCCTRL(*this, "btnDocBgColor", wxButton)->GetBackgroundColour(); colours->SetColour(wxT("cc_docs_back"), colour); colour = XRCCTRL(*this, "btnDocTextColor", wxButton)->GetBackgroundColour(); colours->SetColour(wxT("cc_docs_text"), colour); colour = XRCCTRL(*this, "btnDocLinkColor", wxButton)->GetBackgroundColour(); colours->SetColour(wxT("cc_docs_link"), colour); // Now write the parser options and re-read them again to make sure they are up-to-date m_Parser.WriteOptions(); m_NativeParser->RereadParserOptions(); m_Documentation->WriteOptions(cfg); m_CodeCompletion->RereadOptions(); }
void TextCtrlLogger::UpdateSettings() { if (!control) return; control->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); ConfigManager* cfgman = Manager::Get()->GetConfigManager(_T("message_manager")); int size = cfgman->ReadInt(_T("/log_font_size"), platform::macosx ? 10 : 8); wxFont default_font(size, fixed ? wxFONTFAMILY_MODERN : wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); wxFont bold_font(default_font); wxFont italic_font(default_font); bold_font.SetWeight(wxFONTWEIGHT_BOLD); wxFont bigger_font(bold_font); bigger_font.SetPointSize(size + 2); wxFont small_font(default_font); small_font.SetPointSize(size - 4); italic_font.SetStyle(wxFONTSTYLE_ITALIC); // might try alternatively //italic_font.SetStyle(wxFONTSTYLE_SLANT); wxColour default_text_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); for(unsigned int i = 0; i < num_levels; ++i) { style[i].SetFont(default_font); style[i].SetAlignment(wxTEXT_ALIGNMENT_DEFAULT); style[i].SetTextColour(default_text_colour); style[i].SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); // is it necessary to do that? //style[i].SetFlags(...); } style[caption].SetAlignment(wxTEXT_ALIGNMENT_CENTRE); bigger_font.SetUnderlined(true); style[caption].SetFont(bigger_font); ColourManager *colours = Manager::Get()->GetColourManager(); style[success].SetTextColour(colours->GetColour(wxT("logs_success_text"))); style[warning].SetFont(italic_font); style[warning].SetTextColour(colours->GetColour(wxT("logs_warning_text"))); style[error].SetFont(bold_font); style[error].SetTextColour(colours->GetColour(wxT("logs_error_text"))); style[critical].SetFont(bold_font); style[critical].SetTextColour(colours->GetColour(wxT("logs_critical_text"))); // we're setting both fore and background colors here style[critical].SetBackgroundColour(colours->GetColour(wxT("logs_critical_back"))); // so we don't have to mix in default colors style[spacer].SetFont(small_font); // Tell control about the font change control->SetFont(default_font); } // end of UpdateSettings