X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bbf7159c8211a398e573122c66b93722f5125c60..2fb0cabbf9e924c25d51b13bf7aa1ba8aa24e75e:/wxPython/samples/ide/activegrid/tool/CodeEditor.py diff --git a/wxPython/samples/ide/activegrid/tool/CodeEditor.py b/wxPython/samples/ide/activegrid/tool/CodeEditor.py index 7acf803359..7e245bcd1f 100644 --- a/wxPython/samples/ide/activegrid/tool/CodeEditor.py +++ b/wxPython/samples/ide/activegrid/tool/CodeEditor.py @@ -21,6 +21,7 @@ import string import sys import DebuggerService import MarkerService +from UICommon import CaseInsensitiveCompare _ = wx.GetTranslation if wx.Platform == '__WXMSW__': _WINDOWS = True @@ -117,7 +118,6 @@ class CodeView(STCTextEditor.TextView): def ProcessUpdateUIEvent(self, event): if not self.GetCtrl(): return False - hasText = self.GetCtrl().GetTextLength() > 0 id = event.GetId() if id == EXPAND_TEXT_ID: event.Enable(self.GetCtrl().CanLineExpand(self.GetCtrl().GetCurrentLine())) @@ -125,49 +125,29 @@ class CodeView(STCTextEditor.TextView): elif id == COLLAPSE_TEXT_ID: event.Enable(self.GetCtrl().CanLineCollapse(self.GetCtrl().GetCurrentLine())) return True - elif id == EXPAND_TOP_ID: - event.Enable(hasText) - return True - elif id == COLLAPSE_TOP_ID: - event.Enable(hasText) - return True - elif id == EXPAND_ALL_ID: - event.Enable(hasText) - return True - elif id == COLLAPSE_ALL_ID: - event.Enable(hasText) + elif (id == EXPAND_TOP_ID + or id == COLLAPSE_TOP_ID + or id == EXPAND_ALL_ID + or id == COLLAPSE_ALL_ID + or id == AUTO_COMPLETE_ID + or id == CLEAN_WHITESPACE + or id == INDENT_LINES_ID + or id == DEDENT_LINES_ID + or id == COMMENT_LINES_ID + or id == UNCOMMENT_LINES_ID): + event.Enable(self.GetCtrl().GetTextLength() > 0) return True elif id == CHECK_CODE_ID: event.Enable(False) return True - elif id == AUTO_COMPLETE_ID: - event.Enable(hasText) - return True - elif id == CLEAN_WHITESPACE: - event.Enable(hasText) - return True - elif id == SET_INDENT_WIDTH_ID: + elif (id == SET_INDENT_WIDTH_ID + or id == FOLDING_ID): event.Enable(True) return True elif id == USE_TABS_ID: event.Enable(True) event.Check(self.GetCtrl().GetUseTabs()) return True - elif id == INDENT_LINES_ID: - event.Enable(hasText) - return True - elif id == DEDENT_LINES_ID: - event.Enable(hasText) - return True - elif id == COMMENT_LINES_ID: - event.Enable(hasText) - return True - elif id == UNCOMMENT_LINES_ID: - event.Enable(hasText) - return True - elif id == FOLDING_ID: - event.Enable(True) - return True else: return STCTextEditor.TextView.ProcessUpdateUIEvent(self, event) @@ -375,18 +355,6 @@ class CodeView(STCTextEditor.TextView): return ['Put', 'Editor Specific', 'Keywords', 'Here'] - def CaseInsensitiveCompare(self, s1, s2): - """ GetAutoCompleteKeywordList() method used to show keywords in case insensitive order """ - s1L = s1.lower() - s2L = s2.lower() - if s1L == s2L: - return 0 - elif s1L < s2L: - return -1 - else: - return 1 - - def GetAutoCompleteKeywordList(self, context, hint): """ Replace this method with Editor specific keywords """ kw = self.GetAutoCompleteDefaultKeywords() @@ -401,7 +369,7 @@ class CodeView(STCTextEditor.TextView): else: replaceLen = 0 - kw.sort(self.CaseInsensitiveCompare) + kw.sort(CaseInsensitiveCompare) return " ".join(kw), replaceLen @@ -431,6 +399,7 @@ class CodeView(STCTextEditor.TextView): def OnSetIndentWidth(self): dialog = wx.TextEntryDialog(self._GetParentFrame(), _("Enter new indent width (2-10):"), _("Set Indent Width"), "%i" % self.GetCtrl().GetIndent()) + dialog.CenterOnParent() if dialog.ShowModal() == wx.ID_OK: try: indent = int(dialog.GetValue()) @@ -501,7 +470,7 @@ class CodeView(STCTextEditor.TextView): if hint == "ViewStuff": self.GetCtrl().SetViewDefaults() elif hint == "Font": - font, color = self.GetFontAndColorFromConfig() + font, color = self.GetCtrl().GetFontAndColorFromConfig() self.GetCtrl().SetFont(font) self.GetCtrl().SetFontColor(color) else: @@ -625,52 +594,22 @@ class CodeService(STCTextEditor.TextService): def ProcessUpdateUIEvent(self, event): id = event.GetId() - if id == EXPAND_TEXT_ID: - event.Enable(False) - return True - elif id == COLLAPSE_TEXT_ID: - event.Enable(False) - return True - elif id == EXPAND_TOP_ID: - event.Enable(False) - return True - elif id == COLLAPSE_TOP_ID: - event.Enable(False) - return True - elif id == EXPAND_ALL_ID: - event.Enable(False) - return True - elif id == COLLAPSE_ALL_ID: - event.Enable(False) - return True - elif id == CHECK_CODE_ID: - event.Enable(False) - return True - elif id == AUTO_COMPLETE_ID: - event.Enable(False) - return True - elif id == CLEAN_WHITESPACE: - event.Enable(False) - return True - elif id == SET_INDENT_WIDTH_ID: - event.Enable(False) - return True - elif id == USE_TABS_ID: - event.Enable(False) - return True - elif id == INDENT_LINES_ID: - event.Enable(False) - return True - elif id == DEDENT_LINES_ID: - event.Enable(False) - return True - elif id == COMMENT_LINES_ID: - event.Enable(False) - return True - elif id == UNCOMMENT_LINES_ID: - event.Enable(False) - return True - elif id == FOLDING_ID: + if (id == EXPAND_TEXT_ID + or id == COLLAPSE_TEXT_ID + or id == EXPAND_TOP_ID + or id == COLLAPSE_TOP_ID + or id == EXPAND_ALL_ID + or id == COLLAPSE_ALL_ID + or id == CHECK_CODE_ID + or id == AUTO_COMPLETE_ID + or id == CLEAN_WHITESPACE + or id == SET_INDENT_WIDTH_ID + or id == USE_TABS_ID + or id == INDENT_LINES_ID + or id == DEDENT_LINES_ID + or id == COMMENT_LINES_ID + or id == UNCOMMENT_LINES_ID + or id == FOLDING_ID): event.Enable(False) return True else: @@ -684,10 +623,8 @@ class CodeCtrl(STCTextEditor.TextCtrl): BREAKPOINT_MARKER_MASK = 0x2 - def __init__(self, parent, ID = -1, style = wx.NO_FULL_REPAINT_ON_RESIZE): - if ID == -1: - ID = wx.NewId() - STCTextEditor.TextCtrl.__init__(self, parent, ID, style) + def __init__(self, parent, id=-1, style = wx.NO_FULL_REPAINT_ON_RESIZE): + STCTextEditor.TextCtrl.__init__(self, parent, id, style) self.UsePopUp(False) self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) @@ -723,10 +660,10 @@ class CodeCtrl(STCTextEditor.TextCtrl): if _WINDOWS: # should test to see if menu item exists, if it does, add this workaround self.CmdKeyClear(wx.stc.STC_KEY_TAB, 0) # menu item "Indent Lines" from CodeService.InstallControls() generates another INDENT_LINES_ID event, so we'll explicitly disable the tab processing in the editor - wx.stc.EVT_STC_MARGINCLICK(self, ID, self.OnMarginClick) + wx.stc.EVT_STC_MARGINCLICK(self, self.GetId(), self.OnMarginClick) wx.EVT_KEY_DOWN(self, self.OnKeyPressed) if self.GetMatchingBraces(): - wx.stc.EVT_STC_UPDATEUI(self, ID, self.OnUpdateUI) + wx.stc.EVT_STC_UPDATEUI(self, self.GetId(), self.OnUpdateUI) self.StyleClearAll() self.UpdateStyles() @@ -771,7 +708,8 @@ class CodeCtrl(STCTextEditor.TextCtrl): item = menuBar.FindItemById(itemID) if item: menu.Append(itemID, item.GetLabel()) - + wx.EVT_MENU(self, itemID, self.DSProcessEvent) # wxHack: for customized right mouse menu doesn't work with new DynamicSashWindow + wx.EVT_UPDATE_UI(self, itemID, self.DSProcessUpdateUIEvent) # wxHack: for customized right mouse menu doesn't work with new DynamicSashWindow return menu @@ -885,6 +823,7 @@ class CodeCtrl(STCTextEditor.TextCtrl): def DoIndent(self): self.AddText('\n') + self.EnsureCaretVisible() # Need to do a default one for all languges