def __onDocumentOpened(self, sender, evt): document = evt if document is None: return docName = document.getName() if docName is None: return editor = self.__getFileEditor(docName) if editor is None: raise Exception('Cannot get the editor for file.\n Filename: %s' % docName) document.setEditor(editor) pageCaption = '' if '' == docName: pageCaption = 'Unsaved Document' else: pageCaption = docName if editor.openFile(document.getFullPath()): if self._auiNotebook.AddPage(document.getEditor(), pageCaption, True): self.__getOpenedDocuments()[document.getEditor()] = document Application.getDocumentManager().selectDocument(document.getFullPath()) else: editor.close() dlg = wx.MessageDialog(None, 'Cannot open file: %s' % document.getFullPath(), 'Error', wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() document.close()
def initData(self, argv): '''init configurations''' Application.getSettings().load() '''init document manager''' '''init plugin manager'''
def __createToolbar(self, toolbarInfo, id): if toolbarInfo is None: return toolbar = wx.ToolBar(self._window, id, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TB_FLAT | wx.TB_NODIVIDER) index = 0 for itemInfo in toolbarInfo.values(): itemId = id * 100 + index if itemInfo.getImage() is None or '' == itemInfo.getImage().strip(): continue imagePath = Application.getSettings().getWorkPath() + os.path.sep + itemInfo.getImage() bmp = wx.Bitmap(imagePath, wx.BITMAP_TYPE_PNG) toolbar.AddLabelTool(itemId, itemInfo.getName(), bmp, longHelp=itemInfo.getTip()) action = Application.getActionManager().getAction(itemInfo.getAction()) if action is not None: toolbar.Bind(wx.EVT_TOOL, action.execute, id=itemId) index += 1 if 0 == index: return None toolbar.Realize() return toolbar
def execute(self, evt): wildcard = "All files (*.*)|*" dlg = wx.FileDialog( None, message="Open File", defaultDir="", defaultFile="", wildcard=wildcard, style=wx.OPEN | wx.CHANGE_DIR | wx.MULTIPLE, ) if dlg.ShowModal() == wx.ID_OK: files = dlg.GetPaths() for file in files: Application.getDocumentManager().openDocument(file)
def __setEdgeStyle(self): editorStyle = Application.getSettings().getEditorStyle() edge = editorStyle.getEdge() if edge.getVisible(): self._editView.SetEdgeMode(stc.STC_EDGE_LINE) self._editView.SetEdgeColumn(edge.getMaxColumns()) else: self._editView.SetEdgeMode(stc.STC_EDGE_NONE)
def __onPageClose(self, evt): selectIndex = evt.GetSelection() if 0 <= selectIndex and self._auiNotebook.GetPageCount() > selectIndex: editor = self._auiNotebook.GetPage(selectIndex) if editor is None or not self.__getOpenedDocuments().has_key(editor): return closeAction = Application.getActionManager().getAction('DocumentActions.Close') if closeAction is not None: closeAction.execute(None)
def __setDefaultFont(self, lexer): editorStyle = Application.getSettings().getEditorStyle() font = editorStyle.getFont() if highlightSymbols.SYMBOLS.has_key(lexer): symbols = highlightSymbols.SYMBOLS[lexer] if symbols is None: symbols = highlightSymbols.NULL_SYMBOLS for symbol in symbols.values(): self._editView.StyleSetSpec(symbol, font.getSettings())
def execute(self, evt): document = Application.getDocumentManager().getCurrentDocument() if document is None: return if document.isContentChanged(): if ( wx.MessageDialog( None, "Do you want to save file: %s?" % document.getName(), "Warning", wx.YES | wx.NO | wx.ICON_WARNING, ).ShowModal() == wx.ID_YES ): saveAction = Application.getActionManager().getAction("DocumentActions.Save") if saveAction is not None: saveAction.execute(None) document.close()
def execute(self, evt): document = Application.getDocumentManager().getCurrentDocument() if document is None: return editor = document.getEditor() if editor is None: return editor.cut()
def __setIndentStyle(self): editorStyle = Application.getSettings().getEditorStyle() indent = editorStyle.getIndent() self._editView.SetIndent(indent.getSize()) self._editView.SetIndentationGuides(indent.getShowIndentGuide()) self._editView.SetBackSpaceUnIndents(indent.getBackspaceUnindents()) self._editView.SetTabIndents(indent.getTabIndes()) self._editView.SetTabWidth(indent.getTabWidth()) self._editView.SetUseTabs(indent.getUseTabs()) self._editView.SetViewWhiteSpace(indent.getViewWhitespace())
def __onClose(self, evt): ''' close all documents ''' closeAllFileAction = Application.getActionManager().getAction('DocumentActions.Close All') if closeAllFileAction is not None: closeAllFileAction.execute(None) ''' close all panes ''' self.getLayoutManager().clear() ''' destroy frame ''' self.Destroy()
def __checkChanged(self, evt): index = evt.GetSelection() label = self._toolbarListBox.GetString(index) isChecked = False if self._toolbarListBox.IsChecked(index): isChecked = True shownToolbars = Application.getMainFrame().getLayoutManager().getToolbars() toolbars = Application.getMainFrame().getToolbarManager().getToolbars() if not toolbars.has_key(label): return toolbar = toolbars[label] if toolbar is None: return if isChecked: if shownToolbars.has_key(label): return Application.getMainFrame().getLayoutManager().addToolbar(label, toolbar) else: if not shownToolbars.has_key(label): return Application.getMainFrame().getLayoutManager().removeToolbar(label)
def __initializeComponents(self): sizer = wx.BoxSizer(wx.VERTICAL) toolbars = Application.getMainFrame().getToolbarManager().getToolbars() shownToolbars = Application.getMainFrame().getLayoutManager().getToolbars() self._toolbarListBox = wx.CheckListBox(self, -1, choices=toolbars.keys()) index = 0 indexes = [] for toolbarName in toolbars.keys(): if shownToolbars.has_key(toolbarName): indexes.append(index) index += 1 self._toolbarListBox.SetChecked(indexes) sizer.Add(self._toolbarListBox, 0, wx.EXPAND | wx.ALL, 5) self.Bind(wx.EVT_CHECKLISTBOX, self.__checkChanged, self._toolbarListBox) self.SetSizer(sizer) sizer.Fit(self)
def __getFileEditor(self, filename): editorClass = '' filePatterns = Application.getSettings().getFileAssociations().keys() for filePattern in filePatterns: if fnmatch(filename, filePattern): editorClass = Application.getSettings().getFileAssociations()[filePattern] if editorClass is None or '' == editorClass: editorClass = Application.getSettings().getDefaultEditor() if editorClass is None or '' == editorClass: return None editorClsObj = createClassInstance(editorClass) if editorClsObj is None: return None editor = editorClsObj(self) if editor is None: return None return editor
def __setMarkerStyle(self): editorStyle = Application.getSettings().getEditorStyle() marker = editorStyle.getMarker() style = EditorStyle.MARKER_STYLES[marker.getStyle()] fgColor = marker.getFgColor() bgColor = marker.getBgColor() for key, value in style.items(): try: self._editView.MarkerDefine(key, value, fgColor, bgColor) except: continue self.Bind(stc.EVT_STC_MARGINCLICK, self.__onMarginClick) self.Bind(stc.EVT_STC_UPDATEUI, self._onUpdateUI)
def execute(self, evt): document = Application.getDocumentManager().getCurrentDocument() if document is None: return wildcard = "All files (*.*)|*" dlg = wx.FileDialog( None, message="Save file as ...", defaultDir=os.getcwd(), defaultFile="", wildcard=wildcard, style=wx.SAVE | wx.CHANGE_DIR, ) if dlg.ShowModal() == wx.ID_OK: document.rename(dlg.GetPath()) document.save()
def __loadFileWithEncoding(self, filename): import codecs encodings=Application.getSettings().getEncodings() if encodings is None: encodings = ['utf-8'] for encoding in encodings: try: file = codecs.open(filename, 'r', encoding=encoding) context = file.read() self._encoding = encoding file.close() return context except UnicodeDecodeError: file.close() except LookupError: pass # invalid encoding return None
def __setHighlightStyle(self, lexer): if not highlightSymbols.SYMBOLS.has_key(lexer) or stc.STC_LEX_NULL == lexer: return editorStyle = Application.getSettings().getEditorStyle() highlightStyles = editorStyle.getHighlightStyles() if not highlightStyles.has_key(lexer): return highlight = highlightStyles[lexer] self._editView.SetKeyWords(0, highlight.getKeywords()) styles = highlight.getHighlightStyles() symbols = highlightSymbols.SYMBOLS[lexer] for key, value in styles.items(): if symbols.has_key(key): self._editView.StyleSetSpec(symbols[key], value.getSettings())
def __createMenu(self, menuInfo, parentMenu): menu = None if parentMenu == self.__getMenubar() or 0 < len(menuInfo.getChildren().keys()): menu = wx.Menu() self.__getMenubar().Append(menu, menuInfo.getName()) else: if '-' == menuInfo.getName(): parentMenu.AppendSeparator() else: menu = parentMenu.Append(-1, menuInfo.getName(), menuInfo.getTip()) if menuInfo.getAction() is not None and '' != menuInfo.getAction(): action = Application.getActionManager().getAction(menuInfo.getAction()) if action is not None: self._window.Bind(wx.EVT_MENU, action.execute, menu) for sub in menuInfo.getChildren().values(): self.__createMenu(sub, menu)
def execute(self, evt): info = wx.AboutDialogInfo() info.Name = "Graver" info.Version = "0.0.1" # info.Copyright = "(C) 2006 Programmers and Coders Everywhere" info.Description = wordwrap( "Graver is a light text editor which created by Python and wxPython.\n" "This text editor implemented plugin interface for developers.\n" "Developers could create their own panels, editors, menus and toolbars to extend the function of this editor.\n" "In the future, this text editor will be implemented to a lightly IDE.\n", 350, wx.ClientDC(Application.getMainFrame()), ) info.WebSite = ("http://graver.sourceforge.net", "Graver Home Page") info.Developers = ["Tiny Strimp"] # info.License = wordwrap(licenseText, 500, wx.ClientDC(self)) # Then we call wx.AboutBox giving it that info object wx.AboutBox(info)
def __init__(self, parent): Pane.__init__(self, parent, 'EditorContainer', '', pos=wx.CENTER, showCaption=False) self._openedDocuments = None Application.getDocumentManager().getDocumentOpenedEventHandler().add(self.__onDocumentOpened) Application.getDocumentManager().getDocumentClosedEventHandler().add(self.__onDocumentClosed) Application.getDocumentManager().getDocumentSavedEventHandler().add(self.__onDocumentSaved) Application.getDocumentManager().getDocumentChangedEventHandler().add(self.__onDocumentChanged) Application.getDocumentManager().getDocumentRenamedEventHandler().add(self.__onDocumentRenamed) Application.getDocumentManager().getSelectedDocumentChangedEventHandler().add(self.__selectDocument) self.__initializeComponent()
def __setEOLStyle(self): editorStyle = Application.getSettings().getEditorStyle() eol = editorStyle.getEOL() self._editView.SetEOLMode(stc.STC_EOL_LF) self._editView.SetViewEOL(eol.getShowEOL())
def execute(self, evt): Application.getDocumentManager().openDocument("")
def __setCaretStyle(self): editorStyle = Application.getSettings().getEditorStyle() caret = editorStyle.getCaret() self._editView.SetCaretForeground(caret.getColor())
def initUI(self, argv): mainfrm = MainFrame('Graver', displaySize=(800,600)) self.SetTopWindow(mainfrm) Application.setMainFrame(mainfrm)
def execute(self, evt): mainFrm = Application.getMainFrame() if mainFrm is None: return mainFrm.Close()
def initApp(self, argv): self.initData(argv) self.initUI(argv) Application.getMainFrame().Show(True)
def __init__(self, workPath): wx.App.__init__(self) Application.getSettings().setWorkPath(workPath)
def __onPageChanged(self, evt): index = self._auiNotebook.GetSelection() editor = self._auiNotebook.GetPage(index) if self.__getOpenedDocuments().has_key(editor): document = self.__getOpenedDocuments()[editor] Application.getDocumentManager().selectDocument(document.getFullPath())
def initializes(self): toolbarInfos = Application.getSettings().getToolbars() self.__createToolbars(toolbarInfos);