/* TextEditor::setup * Sets up text editor properties depending on cvars and the current * text styleset/style *******************************************************************/ void TextEditor::setup() { // General settings SetBufferedDraw(true); SetUseAntiAliasing(true); SetMouseDwellTime(500); AutoCompSetIgnoreCase(true); SetIndentationGuides(txed_indent_guides); StyleSetBackground(wxSTC_STYLE_INDENTGUIDE, WXCOL(col_edge_line)); // Right margin line SetEdgeColour(WXCOL(col_edge_line)); SetEdgeColumn(txed_edge_column); if (txed_edge_column == 0) SetEdgeMode(wxSTC_EDGE_NONE); else SetEdgeMode(wxSTC_EDGE_LINE); // Apply default style StyleSet::applyCurrent(this); CallTipUseStyle(10); StyleSetChangeable(wxSTC_STYLE_CALLTIP, true); wxFont font_ct(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); StyleSetFont(wxSTC_STYLE_CALLTIP, font_ct); CallTipSetForegroundHighlight(WXCOL(StyleSet::currentSet()->getStyle("calltip_hl")->getForeground())); // Set lexer if (txed_syntax_hilight) SetLexer(wxSTC_LEX_CPPNOCASE); else SetLexer(wxSTC_LEX_NULL); // Re-colour text Colourise(0, GetTextLength()); }
/*---------------------------------------------------------------------------*/ void wxSQLEditorBase::Init() { m_FontName = _T("Courier New"); m_FontSize = 10; SetWrapMode(wxSTC_WRAP_NONE); // wxSTC_WRAP_WORD wxSTC_WRAP_NONE SetLexer(wxSTC_LEX_SQL); SetTabWidth(2); SetUseTabs(false); SetTabIndents (true); SetBackSpaceUnIndents (true); SetIndent(2); SetViewEOL(false); SetIndentationGuides(true); SetEOLMode(wxSTC_EOL_LF); SetEdgeColumn(200); SetEdgeMode(wxSTC_EDGE_LINE); // wxSTC_EDGE_NONE wxSTC_EDGE_LINE SetViewWhiteSpace(wxSTC_WS_INVISIBLE); // wxSTC_WS_VISIBLEALWAYS SetMarginType(1, wxSTC_MARGIN_SYMBOL); SetMarginWidth(1, 0); SetKeyWords(0, SQLWordlist1); SetKeyWords(1, SQLWordlist2); SetKeyWords(4, SQLWordlist3); SetKeyWords(5, SQLWordlist4); ReInitAllStyle(); }
void FB_STC::LoadSettings ( ) { FB_Config * Prefs = m_Ide->GetConfig(); Style_STC_FB * Style = &Prefs->Style_FB; // Clear all styles there might be defined StyleClearAll( ); SetLexer( 0 ); // Tab and indenting SetTabWidth ( Prefs->TabSize ); SetUseTabs ( false ); SetTabIndents ( true ); SetBackSpaceUnIndents ( true ); SetIndent ( Prefs->TabSize ); SetIndentationGuides ( Prefs->IndentGuide ); // Right margin SetEdgeMode ( Prefs->RightMargin ? wxSTC_EDGE_LINE: wxSTC_EDGE_NONE ); SetEdgeColumn ( Prefs->EdgeColumn ); // Line and line ending SetEOLMode ( 0 ); SetViewEOL ( Prefs->DisplayEOL ); SetViewWhiteSpace ( Prefs->WhiteSpace ? wxSTC_WS_VISIBLEALWAYS: wxSTC_WS_INVISIBLE ); // Misc CmdKeyClear (wxSTC_KEY_TAB, 0); #define _STYLE(nr) Style->Style[nr] wxFont font ( _STYLE(0).Size, wxMODERN, wxNORMAL, wxNORMAL, false, _STYLE(0).Font ); StyleSetForeground (wxSTC_STYLE_DEFAULT, Prefs->GetClr(_STYLE(0).Face)); StyleSetBackground (wxSTC_STYLE_DEFAULT, Prefs->GetClr(_STYLE(0).Back)); StyleSetFont( wxSTC_STYLE_DEFAULT, font ); StyleSetForeground (0, Prefs->GetClr(_STYLE(0).Face)); StyleSetBackground (0, Prefs->GetClr(_STYLE(0).Back)); StyleSetFont( 0, font ); StyleSetForeground (wxSTC_STYLE_LINENUMBER, Prefs->GetClr(Style->LineNumberFace)); StyleSetBackground (wxSTC_STYLE_LINENUMBER, Prefs->GetClr(Style->LineNumberBack)); StyleSetFont( wxSTC_STYLE_LINENUMBER, font ); SetCaretForeground (Prefs->GetClr(Style->CaretFace)); SetSelForeground(true, Prefs->GetClr(Style->SelectFace)); SetSelBackground(true, Prefs->GetClr(Style->SelectBack)); #undef STYLE int LineNrMargin = TextWidth(wxSTC_STYLE_LINENUMBER, _T("0001")); SetMarginWidth (0, Prefs->LineNumber ? LineNrMargin : 0); SetMarginWidth (1,0); if ( Prefs->CurrentLine ) { SetCaretLineVisible( true ); SetCaretLineBack( Prefs->GetClr( Style->CaretLine ) ); } }
/* TextEditor::setup * Sets up text editor properties depending on cvars and the current * text styleset/style *******************************************************************/ void TextEditor::setup() { // General settings SetBufferedDraw(true); SetUseAntiAliasing(true); SetMouseDwellTime(500); AutoCompSetIgnoreCase(true); SetIndentationGuides(txed_indent_guides); // Right margin line SetEdgeColumn(txed_edge_column); if (txed_edge_column == 0) SetEdgeMode(wxSTC_EDGE_NONE); else SetEdgeMode(wxSTC_EDGE_LINE); // Apply default style StyleSet::applyCurrent(this); CallTipUseStyle(10); StyleSetChangeable(wxSTC_STYLE_CALLTIP, true); wxFont font_ct(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); StyleSetFont(wxSTC_STYLE_CALLTIP, font_ct); CallTipSetForegroundHighlight(WXCOL(StyleSet::currentSet()->getStyle("calltip_hl")->getForeground())); // Set folding options setupFolding(); // Re-colour text Colourise(0, GetTextLength()); // Set word wrapping if (txed_word_wrap) SetWrapMode(wxSTC_WRAP_WORD); else SetWrapMode(wxSTC_WRAP_NONE); // Set word match indicator style SetIndicatorCurrent(8); IndicatorSetStyle(8, wxSTC_INDIC_ROUNDBOX); IndicatorSetUnder(8, true); IndicatorSetOutlineAlpha(8, 60); IndicatorSetAlpha(8, 40); }
void IWnd_stc::_DoUpdateStyle() { BitFlags& flags(param.flags); SetTabWidth (param.wdtab); SetUseTabs (true); SetTabIndents (true); SetBackSpaceUnIndents (true); SetIndent (flags.get(FLAG_INDENT)? param.wdtab: 0); SetViewEOL (flags.get(FLAG_SHOWEOL)); SetIndentationGuides (flags.get(FLAG_INDENTGUIDE)); SetEdgeColumn (80); SetEdgeMode (flags.get(FLAG_LONGLINE)?wxSTC_EDGE_LINE: wxSTC_EDGE_NONE); SetViewWhiteSpace (flags.get(FLAG_WHITESPACE)?wxSTC_WS_VISIBLEALWAYS: wxSTC_WS_INVISIBLE); SetOvertype (flags.get(FLAG_OVERTYPE)); SetReadOnly (flags.get(FLAG_READONLY)); SetWrapMode (flags.get(FLAG_WRAPMODE)?wxSTC_WRAP_WORD: wxSTC_WRAP_NONE); UpdateMarginLineNumWidth(true); }
void LuaScriptEditorView::SetupSourceEditor() { StyleSetFont(STYLE_DEFAULT, "Courier New"); StyleSetSize(STYLE_DEFAULT, 11); SetEdgeColumn(100); SetEdgeMode(EDGE_LINE); SetMarginWidthN(0, 50); // margin 0 displays line numbers, but has default width 0 StyleSetFore(0, RGB(0x80, 0x80, 0x80)); StyleSetFore(1, RGB(0x00, 0x7f, 0x00)); StyleSetFore(2, RGB(0x00, 0x7f, 0x00)); StyleSetFore(3, RGB(0x7f, 0x7f, 0x7f)); StyleSetFore(4, RGB(0x00, 0x7f, 0x7f)); StyleSetFore(5, RGB(0x00, 0x00, 0x7f)); StyleSetFore(6, RGB(0x7f, 0x00, 0x7f)); StyleSetFore(7, RGB(0x7f, 0x00, 0x7f)); StyleSetFore(8, RGB(0x00, 0x7f, 0x7f)); StyleSetFore(9, RGB(0x7f, 0x7f, 0x7f)); StyleSetFore(10, RGB(0x00, 0x00, 0x00)); StyleSetFore(11, RGB(0x00, 0x00, 0x00)); StyleSetBold(5, true); StyleSetBold(10, true); SetLexer(SCLEX_LUA); // set Lua keywords and add RemotePhotoTool specific classes SetKeyWords(0, "and break do else elseif end for function if in " "local nil not or repeat return then until while " "App Sys Constants RemoteReleaseControl SourceDevice " "ImageProperty DeviceProperty ShootingMode Viewfinder " "BulbReleaseControl"); SetTabWidth(3); SetUseTabs(true); // only notify about text edits in SCEN_CHANGE messages SetModEventMask(SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT); }
bool Edit::InitializePrefs (const wxString &name) { // initialize styles StyleClearAll(); LanguageInfo const* curInfo = NULL; // determine language bool found = false; int languageNr; for (languageNr = 0; languageNr < g_LanguagePrefsSize; languageNr++) { curInfo = &g_LanguagePrefs [languageNr]; if (curInfo->name == name) { found = true; break; } } if (!found) return false; // set lexer and language SetLexer (curInfo->lexer); m_language = curInfo; // set margin for line numbers SetMarginType (m_LineNrID, wxSTC_MARGIN_NUMBER); StyleSetForeground (wxSTC_STYLE_LINENUMBER, wxColour (wxT("DARK GREY"))); StyleSetBackground (wxSTC_STYLE_LINENUMBER, *wxWHITE); SetMarginWidth (m_LineNrID, 0); // start out not visible // annotations style StyleSetBackground(ANNOTATION_STYLE, wxColour(244, 220, 220)); StyleSetForeground(ANNOTATION_STYLE, *wxBLACK); StyleSetSizeFractional(ANNOTATION_STYLE, (StyleGetSizeFractional(wxSTC_STYLE_DEFAULT)*4)/5); // default fonts for all styles! int Nr; for (Nr = 0; Nr < wxSTC_STYLE_LASTPREDEFINED; Nr++) { wxFont font(wxFontInfo(10).Family(wxFONTFAMILY_MODERN)); StyleSetFont (Nr, font); } // set common styles StyleSetForeground (wxSTC_STYLE_DEFAULT, wxColour (wxT("DARK GREY"))); StyleSetForeground (wxSTC_STYLE_INDENTGUIDE, wxColour (wxT("DARK GREY"))); // initialize settings if (g_CommonPrefs.syntaxEnable) { int keywordnr = 0; for (Nr = 0; Nr < STYLE_TYPES_COUNT; Nr++) { if (curInfo->styles[Nr].type == -1) continue; const StyleInfo &curType = g_StylePrefs [curInfo->styles[Nr].type]; wxFont font(wxFontInfo(curType.fontsize) .Family(wxFONTFAMILY_MODERN) .FaceName(curType.fontname)); StyleSetFont (Nr, font); if (curType.foreground) { StyleSetForeground (Nr, wxColour (curType.foreground)); } if (curType.background) { StyleSetBackground (Nr, wxColour (curType.background)); } StyleSetBold (Nr, (curType.fontstyle & mySTC_STYLE_BOLD) > 0); StyleSetItalic (Nr, (curType.fontstyle & mySTC_STYLE_ITALIC) > 0); StyleSetUnderline (Nr, (curType.fontstyle & mySTC_STYLE_UNDERL) > 0); StyleSetVisible (Nr, (curType.fontstyle & mySTC_STYLE_HIDDEN) == 0); StyleSetCase (Nr, curType.lettercase); const char *pwords = curInfo->styles[Nr].words; if (pwords) { SetKeyWords (keywordnr, pwords); keywordnr += 1; } } } // set margin as unused SetMarginType (m_DividerID, wxSTC_MARGIN_SYMBOL); SetMarginWidth (m_DividerID, 0); SetMarginSensitive (m_DividerID, false); // folding SetMarginType (m_FoldingID, wxSTC_MARGIN_SYMBOL); SetMarginMask (m_FoldingID, wxSTC_MASK_FOLDERS); StyleSetBackground (m_FoldingID, *wxWHITE); SetMarginWidth (m_FoldingID, 0); SetMarginSensitive (m_FoldingID, false); if (g_CommonPrefs.foldEnable) { SetMarginWidth (m_FoldingID, curInfo->folds != 0? m_FoldingMargin: 0); SetMarginSensitive (m_FoldingID, curInfo->folds != 0); SetProperty (wxT("fold"), curInfo->folds != 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.comment"), (curInfo->folds & mySTC_FOLD_COMMENT) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.compact"), (curInfo->folds & mySTC_FOLD_COMPACT) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.preprocessor"), (curInfo->folds & mySTC_FOLD_PREPROC) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.html"), (curInfo->folds & mySTC_FOLD_HTML) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.html.preprocessor"), (curInfo->folds & mySTC_FOLD_HTMLPREP) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.comment.python"), (curInfo->folds & mySTC_FOLD_COMMENTPY) > 0? wxT("1"): wxT("0")); SetProperty (wxT("fold.quotes.python"), (curInfo->folds & mySTC_FOLD_QUOTESPY) > 0? wxT("1"): wxT("0")); } SetFoldFlags (wxSTC_FOLDFLAG_LINEBEFORE_CONTRACTED | wxSTC_FOLDFLAG_LINEAFTER_CONTRACTED); // set spaces and indentation SetTabWidth (4); SetUseTabs (false); SetTabIndents (true); SetBackSpaceUnIndents (true); SetIndent (g_CommonPrefs.indentEnable? 4: 0); // others SetViewEOL (g_CommonPrefs.displayEOLEnable); SetIndentationGuides (g_CommonPrefs.indentGuideEnable); SetEdgeColumn (80); SetEdgeMode (g_CommonPrefs.longLineOnEnable? wxSTC_EDGE_LINE: wxSTC_EDGE_NONE); SetViewWhiteSpace (g_CommonPrefs.whiteSpaceEnable? wxSTC_WS_VISIBLEALWAYS: wxSTC_WS_INVISIBLE); SetOvertype (g_CommonPrefs.overTypeInitial); SetReadOnly (g_CommonPrefs.readOnlyInitial); SetWrapMode (g_CommonPrefs.wrapModeInitial? wxSTC_WRAP_WORD: wxSTC_WRAP_NONE); return true; }
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); }