def __init__(self, parent): self.editor = None SpyderPluginWidget.__init__(self, parent) # Read-only editor self.editor = CodeEditor(self) self.editor.setup_editor(linenumbers=False, language='py', code_folding=True, scrollflagarea=False) self.connect(self.editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) self.editor.setReadOnly(True) self.editor.set_font( get_font(self.ID) ) self.editor.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) # Add entries to read-only editor context-menu font_action = create_action(self, translate("Editor", "&Font..."), None, 'font.png', translate("Editor", "Set font style"), triggered=self.change_font) wrap_action = create_action(self, translate("Editor", "Wrap lines"), toggled=self.toggle_wrap_mode) wrap_action.setChecked( CONF.get(self.ID, 'wrap') ) self.editor.readonly_menu.addSeparator() add_actions(self.editor.readonly_menu, (font_action, wrap_action)) # Find/replace widget self.find_widget = FindReplace(self) self.find_widget.set_editor(self.editor) self.find_widget.hide()
def add_history(self, filename): """ Add new history tab Slot for SIGNAL('add_history(QString)') emitted by shell instance """ filename = encoding.to_unicode(filename) if filename in self.filenames: return editor = CodeEditor(self) if osp.splitext(filename)[1] == '.py': language = 'py' icon = get_icon('python.png') else: language = 'bat' icon = get_icon('cmdprompt.png') editor.setup_editor(linenumbers=False, language=language, code_folding=True, scrollflagarea=False) self.connect(editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) editor.setReadOnly(True) editor.set_font( get_font(self.ID) ) editor.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) text, _ = encoding.read(filename) editor.set_text(text) editor.set_cursor_position('eof') self.editors.append(editor) self.filenames.append(filename) self.icons.append(icon) index = self.tabwidget.addTab(editor, osp.basename(filename)) self.find_widget.set_editor(editor) self.tabwidget.setTabToolTip(index, filename) self.tabwidget.setTabIcon(index, icon) self.tabwidget.setCurrentIndex(index)
class ReadOnlyEditor(SpyderPluginWidget): """ Read-only editor plugin widget (see example of child class in inspector.py) """ def __init__(self, parent): self.editor = None SpyderPluginWidget.__init__(self, parent) # Read-only editor self.editor = CodeEditor(self) self.editor.setup_editor(linenumbers=False, language='py', code_folding=True, scrollflagarea=False) self.connect(self.editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) self.editor.setReadOnly(True) self.editor.set_font( get_font(self.ID) ) self.editor.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) # Add entries to read-only editor context-menu font_action = create_action(self, translate("Editor", "&Font..."), None, 'font.png', translate("Editor", "Set font style"), triggered=self.change_font) wrap_action = create_action(self, translate("Editor", "Wrap lines"), toggled=self.toggle_wrap_mode) wrap_action.setChecked( CONF.get(self.ID, 'wrap') ) self.editor.readonly_menu.addSeparator() add_actions(self.editor.readonly_menu, (font_action, wrap_action)) # Find/replace widget self.find_widget = FindReplace(self) self.find_widget.set_editor(self.editor) self.find_widget.hide() # <!> Layout will have to be implemented in child class! def get_focus_widget(self): """ Return the widget to give focus to when this plugin's dockwidget is raised on top-level """ return self.editor def get_plugin_actions(self): """Setup and return actions""" return (None, None) def closing_plugin(self, cancelable=False): """Perform actions before parent main window is closed""" return True def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, translate("Editor", "Select a new font")) if valid: self.editor.set_font(font) set_font(font, self.ID) def toggle_wrap_mode(self, checked): """Toggle wrap mode""" self.editor.toggle_wrap_mode(checked) CONF.set(self.ID, 'wrap', checked)