def __init__(self, parent, id_=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): wx.stc.StyledTextCtrl.__init__(self, parent, id_, pos, size, style) ed_style.StyleMgr.__init__(self, self.GetStyleSheet()) # Attributes self.file = ed_txt.EdFile() self._code = dict( compsvc=autocomp.AutoCompService.GetCompleter(self), synmgr=syntax.SyntaxMgr(ed_glob.CONFIG['CACHE_DIR']), keywords=[' '], comment=list(), clexer=None, # Container lexer method indenter=None, # Auto indenter lang_id=0) # Language ID from syntax module self.vert_edit = vertedit.VertEdit(self, markerNumber=MARKER_VERT_EDIT) self._line_num = True # Show line numbers self._last_cwidth = 1 # one pixel # Set Up Margins ## Outer Left Margin Bookmarks self.SetMarginType(MARK_MARGIN, wx.stc.STC_MARGIN_SYMBOL) self.SetMarginMask(MARK_MARGIN, EditraBaseStc.ED_STC_MASK_MARKERS) self.SetMarginSensitive(MARK_MARGIN, True) self.SetMarginWidth(MARK_MARGIN, 16) ## Middle Left Margin Line Number Indication self.SetMarginType(NUM_MARGIN, wx.stc.STC_MARGIN_NUMBER) self.SetMarginMask(NUM_MARGIN, 0) ## Inner Left Margin Setup Folders self.SetMarginType(FOLD_MARGIN, wx.stc.STC_MARGIN_SYMBOL) self.SetMarginMask(FOLD_MARGIN, wx.stc.STC_MASK_FOLDERS) self.SetMarginSensitive(FOLD_MARGIN, True) # Set Mac specific keybindings if wx.Platform == '__WXMAC__': for keys in _GetMacKeyBindings(): self.CmdKeyAssign(*keys) # Set default EOL format if wx.Platform != '__WXMSW__': self.SetEOLMode(wx.stc.STC_EOL_LF) # Setup Auto-comp images # TODO: should be called on theme change messages self.RegisterImages() # Event Handlers self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self) self.Bind(wx.stc.EVT_STC_CHANGE, self.OnChanged) self.Bind(wx.stc.EVT_STC_MODIFIED, self.OnModified) self.Bind(wx.stc.EVT_STC_AUTOCOMP_SELECTION, self.OnAutoCompSel)
def __init__(self, parent, id_, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): wx.stc.StyledTextCtrl.__init__(self, parent, id_, pos, size, style) ed_style.StyleMgr.__init__(self, self.GetStyleSheet()) # Attributes self.file = ed_txt.EdFile() self._code = dict( compsvc=autocomp.AutoCompService.GetCompleter(self), synmgr=syntax.SyntaxMgr(ed_glob.CONFIG['CACHE_DIR']), keywords=[' '], comment=list(), clexer=None, # Container lexer method indenter=None, # Auto indenter lang_id=0) # Language ID from syntax module self.vert_edit = vertedit.VertEdit(self) # Set Up Margins ## Outer Left Margin Bookmarks self.SetMarginType(MARK_MARGIN, wx.stc.STC_MARGIN_SYMBOL) self.SetMarginMask(MARK_MARGIN, self.ED_STC_MASK_MARKERS) self.SetMarginSensitive(MARK_MARGIN, True) self.SetMarginWidth(MARK_MARGIN, 12) ## Middle Left Margin Line Number Indication self.SetMarginType(NUM_MARGIN, wx.stc.STC_MARGIN_NUMBER) self.SetMarginMask(NUM_MARGIN, 0) ## Inner Left Margin Setup Folders self.SetMarginType(FOLD_MARGIN, wx.stc.STC_MARGIN_SYMBOL) self.SetMarginMask(FOLD_MARGIN, wx.stc.STC_MASK_FOLDERS) self.SetMarginSensitive(FOLD_MARGIN, True) # Set Mac specific keybindings if wx.Platform == '__WXMAC__': for keys in _GetMacKeyBindings(): self.CmdKeyAssign(*keys) # Event Handlers self.Bind(wx.stc.EVT_STC_CHANGE, self.OnChanged) self.Bind(wx.stc.EVT_STC_MODIFIED, self.OnModified)
def __init__(self, parent): """Initialize the Shell""" shell.Shell.__init__(self, parent, locals=dict()) # Get the color scheme to use style = Profile_Get(PYSHELL_STYLE) if style is None: style = Profile_Get('SYNTHEME') ed_style.StyleMgr.__init__(self, self.GetStyleSheet(style)) # Attributes self.SetStyleBits(5) self._shell_style = style mgr = syntax.SyntaxMgr(ed_glob.CONFIG['CACHE_DIR']) syn_data = mgr.SyntaxData('py') synspec = syn_data[syntax.SYNSPEC] self.SetLexer(wx.stc.STC_LEX_PYTHON) self.SetSyntax(synspec)
def testSingleton(self): """Test that only a singelton instance is created""" self.assertTrue(self.mgr is syntax.SyntaxMgr())
def setUp(self): self.mgr = syntax.SyntaxMgr() self.mgr.LoadModule('_python')
def OnClose(self, evt=None): """Close this frame and unregister it from the applications mainloop. @note: Closing the frame will write out all session data to the users configuration directory. @keyword evt: Event fired that called this handler @type evt: wxMenuEvent @return: None on destroy, or True on cancel """ # Cleanup Controls _PSET('LAST_SESSION', self.nb.GetFileNames()) self._exiting = True controls = self.nb.GetPageCount() self.LOG("[ed_main][evt] OnClose: Number of controls: %d" % controls) while controls: if controls <= 0: self.Close(True) # Force exit since there is a problem self.LOG("[ed_main][evt] OnClose: Requesting Page Close") result = self.nb.ClosePage() if result == wx.ID_CANCEL: self._exiting = False return True controls -= 1 ### If we get to here there is no turning back so cleanup ### additional items and save user settings # Write out saved document information self.nb.DocMgr.WriteBook() syntax.SyntaxMgr().SaveState() # Save Shelf contents _PSET('SHELF_ITEMS', self._shelf.GetItemStack()) # Save Window Size/Position for next launch self.UpdateAutoPerspective() # XXX On wxMac the window size doesnt seem to take the toolbar # into account so destroy it so that the window size is accurate. if wx.Platform == '__WXMAC__' and self.GetToolBar(): self.GetToolBar().Destroy() # Raise the window from being iconized so that the size and position is # correct for the next launch (msw). if self.IsIconized(): self.Iconize(False) _PSET('WSIZE', self.GetSizeTuple()) _PSET('MAXIMIZED', self.IsMaximized()) _PSET('WPOS', self.GetPositionTuple()) self.LOG("[ed_main][evt] OnClose: Closing editor at pos=%s size=%s" % \ (_PGET('WPOS', 'str'), _PGET('WSIZE', 'str'))) # Update profile profiler.AddFileHistoryToProfile(self.filehistory) profiler.Profile().Write(_PGET('MYPROFILE')) # Cleanup file history try: del self.filehistory except AttributeError: self.LOG("[ed_main][err] OnClose: Trapped AttributeError OnExit") # Post exit notice to all aui panes panes = self._mgr.GetAllPanes() exit_evt = ed_event.MainWindowExitEvent(ed_event.edEVT_MAINWINDOW_EXIT, wx.ID_ANY) for pane in panes: wx.PostEvent(pane.window, exit_evt) # Finally close the window self.LOG("[ed_main][evt] OnClose: Closing Main Frame") wx.GetApp().UnRegisterWindow(repr(self)) self.Destroy()