def test_py_code_edit(editor): assert isinstance(editor, QtWidgets.QPlainTextEdit) assert isinstance(editor, CodeEdit) assert isinstance(editor, PyCodeEdit) QTest.qWait(1000) editor.modes.get(PythonSH).color_scheme = ColorScheme('darcula') QTest.qWait(1000) editor.modes.get(PythonSH).color_scheme = ColorScheme('qt') QTest.qWait(1000)
def __init__(self, parent=None): super(CodeEditor, self).__init__(parent, False) # self.setObjectName( 'CodeEditor' ) self.font_size = 12 self.use_spaces_instead_of_tabs = False server_script = server.__file__ interpreter = sys.executable # self.backend.start( server_script, interpreter, None, reuse=True ) # append panels self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.SearchAndReplacePanel(), Panel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) # append modes # self.modes.append(modes.AutoCompleteMode()) self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) # self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.RightMarginMode()) sh = self.modes.append( modes.PygmentsSH(self.document(), color_scheme=ColorScheme('monokai'))) sh.fold_detector = IndentFoldDetector() self.modes.append(modes.ZoomMode()) # self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.AutoIndentMode()) self.modes.append(modes.IndenterMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode())
def edit_preferences(self): try: DlgPreferences.edit_preferences(self.main_window) except ValueError: # dialog canceled _logger().info('settings dialog canceled') else: _logger().info('applying settings') self.app.apply_mimetypes_preferences() self.app.update_app_style() self.app.home.update_style() QtGui.QIcon.setThemeName(Settings().icon_theme) self._update_status_bar_labels() for editor in self.ui.tabWidgetEditors.widgets( include_clones=True): update_editor_settings(editor) self.ui.consoleOutput.apply_color_scheme( ColorScheme(Settings().color_scheme)) editor.rehighlight() try: self.ui.actionEnableLinter.blockSignals(True) self.ui.actionEnableLinter.setChecked( editor.linter_mode.enabled) self.ui.actionEnableLinter.blockSignals(False) except AttributeError: # not a cobol code edit self.ui.actionEnableLinter.setEnabled(False) else: self.ui.actionEnableLinter.setEnabled(True)
def __init__(self, bt_compile, bt_run, parent=None): self._buttons = (bt_compile, bt_run) super().__init__(parent) self.syntax_highlighter.color_scheme = ColorScheme( Settings().color_scheme) self.linter_mode = self.modes.append(CobolLinterMode()) self.app = None
def update_editor_settings(editor): from open_cobol_ide.settings import Settings settings = Settings() # general settings for all editors editor.tab_length = settings.tab_len editor.font_name = settings.font editor.font_size = settings.font_size editor.show_whitespaces = settings.show_whitespaces editor.syntax_highlighter.color_scheme = ColorScheme(settings.color_scheme) editor.panels.get('FoldingPanel').native_look = not settings.dark_style try: # cobol editor specific settings editor.backspace_mode.enabled = settings.enable_smart_backspace editor.comment_indicator = settings.comment_indicator editor.free_format = settings.free_format editor.caret_line_mode.enabled = settings.highlight_caret editor.auto_indent_mode.enabled = settings.enable_autoindent editor.code_completion_mode.trigger_length = \ settings.code_completion_trigger_len editor.line_nbr_panel.enabled = settings.display_lines editor.line_nbr_panel.setVisible(settings.display_lines) editor.linter_mode.enabled = settings.show_errors editor.lower_case_keywords = settings.lower_case_keywords editor.file.autodetect_eol = settings.autodetect_eol editor.file.preferred_eol = settings.preferred_eol editor.modes.get('CodeCompletionMode').smart_completion = \ bool(settings.completion_filter_mode) editor.enable_linter() except AttributeError: editor.syntax_highlighter.pygments_style = settings.color_scheme
def __init__(self, app): super().__init__(app) self.ui.tabWidgetEditors.current_changed.connect(self._current_changed) self.ui.tabWidgetEditors.last_tab_closed.connect( self._on_last_tab_closed) self.ui.tableWidgetOffsets.show_requested.connect( self.ui.dockWidgetOffsets.show) self.ui.actionPreferences.triggered.connect(self.edit_preferences) self.ui.actionPreferences.setShortcut(QtGui.QKeySequence.Preferences) if self.ui.actionPreferences.shortcut().toString().strip() == '': self.ui.actionPreferences.setShortcut('F2') self._setup_status_bar() self.ui.consoleOutput.apply_color_scheme( ColorScheme(Settings().color_scheme)) self.ui.tvFileSystem.activated.connect(self._on_tvFileSystem_activated) self.ui.tvFileSystem.setHeaderHidden(True) for i in range(1, 4): self.ui.tvFileSystem.hideColumn(i) self.ui.tvFileSystem.ignore_directories('bin') mnu = FSContextMenu(self.app) self.ui.tvFileSystem.set_context_menu(mnu) self.ui.tvFileSystem.file_created.connect(self.app.file.open_file) self.ui.tvFileSystem.file_renamed.connect( self.ui.tabWidgetEditors.rename_document) self.ui.tvFileSystem.file_deleted.connect( self.ui.tabWidgetEditors.close_document) lock_fs_path = Settings().lock_fs_path if lock_fs_path and os.path.exists(lock_fs_path): self.ui.tvFileSystem.set_root_path(lock_fs_path) else: Settings().lock_fs_path = '' self.ui.btFSLock.setChecked(lock_fs_path != '') self.ui.btFSLock.toggled.connect(self._on_fs_path_lock_toggled)
def __init__(self, parent=None, server_script=server.__file__, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt'): super(GenericCodeEdit, self).__init__(parent, create_default_actions) from pyqode.core import panels from pyqode.core import modes self.backend.start(server_script, interpreter, args) # append panels self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.SearchAndReplacePanel(), Panel.Position.BOTTOM) self.panels.append(panels.EncodingPanel(), Panel.Position.TOP) # append modes self.modes.append(modes.AutoCompleteMode()) self.add_separator() self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.RightMarginMode()) self.modes.append(modes.PygmentsSyntaxHighlighter( self.document(), color_scheme=ColorScheme(color_scheme))) self.modes.append(modes.ZoomMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.AutoIndentMode()) self.modes.append(modes.IndenterMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(modes.ExtendedSelectionMode()) self.syntax_highlighter.fold_detector = IndentFoldDetector()
def __init__(self, parent=None, server_script=server.__file__, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt', reuse_backend=False): super(PyCodeEdit, self).__init__(parent=parent, create_default_actions=create_default_actions) self.backend.start(server_script, interpreter, args, reuse=reuse_backend) self.setLineWrapMode(self.NoWrap) self.setWindowTitle("pyQode - Python Editor") # install those modes first as they are required by other modes/panels self.modes.append(modes.OutlineMode(defined_names)) # panels self.panels.append(panels.SearchAndReplacePanel(), panels.SearchAndReplacePanel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.CheckerPanel()) self.panels.append(panels.GlobalCheckerPanel(), panels.GlobalCheckerPanel.Position.RIGHT) self.add_separator() # modes # generic self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.RightMarginMode()) self.modes.append(modes.ZoomMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) # python specifics self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyAutoCompleteMode()) self.modes.append(pymodes.PyFlakesChecker()) self.modes.append(pymodes.PEP8CheckerMode()) self.modes.append(pymodes.CalltipsMode()) self.modes.append(pymodes.PyIndenterMode()) self.modes.append(pymodes.GoToAssignmentsMode()) self.modes.append(pymodes.CommentsMode()) self.modes.append( pymodes.PythonSH(self.document(), color_scheme=ColorScheme(color_scheme))) self.syntax_highlighter.fold_detector = PythonFoldDetector() self.panels.append(pypanels.QuickDocPanel(), api.Panel.Position.BOTTOM) self.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) self.panels.append(panels.ReadOnlyPanel(), api.Panel.Position.TOP)
def refresh_color_scheme(self): if self.styles_group and self.styles_group.checkedAction(): style = self.styles_group.checkedAction().text() style = style.replace('&', '') # qt5 bug on kde? else: style = 'qt' for editor in self.tabWidget.widgets(): editor.syntax_highlighter.color_scheme = ColorScheme(style) editor.modes.get(modes.CaretLineHighlighterMode).refresh()
def __init__(self, parent=None, server_script=server.__file__, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='default'): super(PyCodeEditor, self).__init__(parent=parent, create_default_actions=create_default_actions) self.backend.start(server_script, interpreter, args) self.setLineWrapMode(self.NoWrap) self.setWindowTitle("pyQode for LPy") # panels self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.CheckerPanel()) self.panels.append(panels.GlobalCheckerPanel(), panels.GlobalCheckerPanel.Position.RIGHT) self._panel_search = panels.SearchAndReplacePanel() self.panels.append(self._panel_search, panels.SearchAndReplacePanel.Position.BOTTOM) self.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) self.add_separator() self.panels.append(pypanels.QuickDocPanel(), api.Panel.Position.BOTTOM) # modes # generic self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.RightMarginMode()) self.modes.append(modes.ZoomMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(modes.ExtendedSelectionMode()) # python specifics self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyAutoCompleteMode()) # self.modes.append(pymodes.FrostedCheckerMode()) self.modes.append(pymodes.PEP8CheckerMode()) self.modes.append(pymodes.CalltipsMode()) self.modes.append(pymodes.PyIndenterMode()) self.modes.append(pymodes.GoToAssignmentsMode()) self.modes.append(pymodes.CommentsMode()) self.modes.append( pymodes.PythonSH(self.document(), color_scheme=ColorScheme(color_scheme))) self.syntax_highlighter.fold_detector = PythonFoldDetector()
def _init_code_edit(self, backend): self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(pymodes.PyIndenterMode()) self.modes.append(CodeCompletionMode()) super(PyConsole, self)._init_code_edit(backend) self.modes.append(SyntaxHighlighter(self.document(), color_scheme=ColorScheme(self._pygment_color_scheme))) try: self.panels.remove('ReadOnlyPanel') except KeyError: pass self.update_terminal_colors()
def __init__(self, parent=None, color_scheme='qt'): super().__init__(parent=parent) self.setLineWrapMode(self.NoWrap) # install those modes first as they are required by other modes/panels self.modes.append(modes.OutlineMode(defined_names)) # panels self.panels.append(panels.SearchAndReplacePanel(), panels.SearchAndReplacePanel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.CheckerPanel()) self.panels.append(panels.GlobalCheckerPanel(), panels.GlobalCheckerPanel.Position.RIGHT) # modes # generic self.modes.append(modes.CursorHistoryMode()) self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.RightMarginMode()) self.modes.append(modes.ZoomMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) # python specifics self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyAutoCompleteMode()) self.modes.append(pymodes.FrostedCheckerMode()) self.modes.append(pymodes.PEP8CheckerMode()) self.modes.append(pymodes.CalltipsMode()) self.modes.append(pymodes.PyIndenterMode()) self.add_separator() self.modes.append(AddImportMode()) self.modes.append(pymodes.GoToAssignmentsMode()) self.modes.append(pymodes.CommentsMode()) self.modes.append( pymodes.PythonSH(self.document(), color_scheme=ColorScheme(color_scheme))) self.syntax_highlighter.fold_detector = PythonFoldDetector() self.panels.append(pypanels.QuickDocPanel(), pyqode_api.Panel.Position.BOTTOM) self.panels.append(panels.EncodingPanel(), pyqode_api.Panel.Position.TOP) self.breakpoints_panel = self.panels.append(panels.MarkerPanel()) self.line_highlighter = self.modes.append(modes.LineHighlighterMode()) self.restart_backend()
def _apply_editor_preferences(self, editor, show_panels): _logger(self).info('applying preferences on editor: %s' % editor.file.path) prefs = Preferences() # appearance editor.font_name = prefs.editor_appearance.font editor.font_size = prefs.editor_appearance.font_size editor.show_whitespaces = prefs.editor_appearance.show_whitespaces scheme = ColorScheme(prefs.editor_appearance.color_scheme) editor.syntax_highlighter.color_scheme = scheme self.ui.textEditPgmOutput.apply_color_scheme(scheme) # editor settings editor.panels.get('FoldingPanel').highlight_caret_scope = \ prefs.editor.highlight_caret_scope editor.use_spaces_instead_of_tabs = \ prefs.editor.use_spaces_instead_of_tabs editor.modes.get('RightMarginMode').position = \ prefs.editor.margin_pos editor.tab_length = prefs.editor.tab_len editor.file.replace_tabs_by_spaces = \ prefs.editor.convert_tabs_to_spaces editor.file.clean_trailing_whitespaces = \ prefs.editor.clean_trailing editor.file.fold_imports = prefs.editor.fold_imports editor.file.fold_docstrings = prefs.editor.fold_docstrings editor.file.restore_cursor = prefs.editor.restore_cursor editor.file.safe_save = prefs.editor.safe_save mode = editor.modes.get('CodeCompletionMode') mode.trigger_length = prefs.editor.cc_trigger_len mode.show_tooltips = prefs.editor.cc_show_tooltips mode.case_sensitive = prefs.editor.cc_case_sensitive editor.setCenterOnScroll(prefs.editor.center_on_scroll) # modes for m in editor.modes: if m.name in prefs.editor.modes: m.enabled = prefs.editor.modes[m.name] else: m.enabled = True # disable unwanted panels for name, state in prefs.editor.panels.items(): try: panel = editor.panels.get(name) except KeyError: _logger().exception('failed to retrieve mode by name: %r' % name) else: if name not in commons.DYNAMIC_PANELS: if not show_panels and state is True: continue panel.setEnabled(state) panel.setVisible(state)
def __init__(self): super(MyPythonCodeEdit, self).__init__() # starts the default pyqode.python server (which enable the jedi code # completion worker). self.backend.start(server.__file__) # some other modes/panels require the analyser mode, the best is to # install it first #self.modes.append(pymodes.DocumentAnalyserMode()) #--- core panels self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.CheckerPanel()) self.panels.append(panels.SearchAndReplacePanel(), panels.SearchAndReplacePanel.Position.BOTTOM) self.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) # add a context menu separator between editor's # builtin action and the python specific actions self.add_separator() #--- python specific panels self.panels.append(pypanels.QuickDocPanel(), api.Panel.Position.BOTTOM) #--- core modes self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.OccurrencesHighlighterMode()) #self.modes.append(modes.RightMarginMode()) self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.ZoomMode()) #--- python specific modes self.modes.append(pymodes.CommentsMode()) self.modes.append(pymodes.CalltipsMode()) self.modes.append(pymodes.FrostedCheckerMode()) #self.modes.append(pymodes.PEP8CheckerMode()) self.modes.append(pymodes.PyAutoCompleteMode()) self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyIndenterMode()) sh = self.modes.append(PythonSH(self.document())) # change its color scheme (from pygments) sh.color_scheme = ColorScheme('monokai') self.panels.append(QuickDocPanel(), QuickDocPanel.Position.BOTTOM)
def __init__(self, app): super().__init__(app) self.ui.tabWidgetEditors.editors.clear() self.ui.tabWidgetEditors.fallback_editor = GenericCodeEdit for editor_type in self.editor_types: self.ui.tabWidgetEditors.register_code_edit(editor_type) self.ui.tabWidgetEditors.current_changed.connect( self._current_changed) self.ui.tabWidgetEditors.last_tab_closed.connect( self._on_last_tab_closed) self.ui.tableWidgetOffsets.show_requested.connect( self.ui.dockWidgetOffsets.show) self.ui.actionPreferences.triggered.connect(self.edit_preferences) self.ui.btPreferences.clicked.connect(self.edit_preferences) self.ui.actionPreferences.setShortcut(QtGui.QKeySequence.Preferences) if self.ui.actionPreferences.shortcut().toString().strip() == '': self.ui.actionPreferences.setShortcut('F2') self._setup_status_bar() self.ui.consoleOutput.apply_color_scheme( ColorScheme(Settings().color_scheme)) self.ui.tvFileSystem.activated.connect(self._on_tvFileSystem_activated) self.ui.tvFileSystem.setHeaderHidden(True) self.ui.bt_fs_up.setIcon(QtGui.QIcon.fromTheme( 'go-up', QtGui.QIcon(':/pyqode-icons/rc/go-up.png'))) self.ui.bt_fs_up.clicked.connect(self._fs_go_up) for i in range(1, 4): self.ui.tvFileSystem.hideColumn(i) self.ui.tvFileSystem.add_ignore_patterns('bin', '.oci*.cbl') mnu = FSContextMenu(self.app) self.ui.tvFileSystem.set_context_menu(mnu) self.ui.tvFileSystem.file_created.connect(self.app.file.open_file) self.ui.tvFileSystem.file_renamed.connect( self.ui.tabWidgetEditors.rename_document) self.ui.tvFileSystem.file_deleted.connect( self.ui.tabWidgetEditors.close_document) lock_fs_path = Settings().lock_fs_path if lock_fs_path and os.path.exists(lock_fs_path): self.ui.tvFileSystem.set_root_path(lock_fs_path) else: Settings().lock_fs_path = '' self.ui.btFSLock.setChecked(lock_fs_path != '') self.ui.btFSLock.toggled.connect(self._on_fs_path_lock_toggled) self.ui.btNavLock.toggled.connect(self._on_navlock_toggled) self.ui.btNavLock.setChecked(not self.ui.twNavigation.sync_with_editor) self.ui.twNavigation.sync_with_editor_changed.connect( self._on_nav_sync_changed) self.ui.actionEnableLinter.toggled.connect( self._on_enable_linter_toggled)
def __init__(self, parent=None, server_script=server.__file__, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt', reuse_backend=False): super(JSONCodeEdit, self).__init__(parent, create_default_actions=create_default_actions) self.backend.start(server_script, interpreter, args, reuse=reuse_backend) # append panels self.panels.append(panels.SearchAndReplacePanel(), Panel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(json_panels.NavigationPanel(), Panel.Position.TOP) self.panels.append(panels.CheckerPanel()) # append modes self.modes.append(json_modes.AutoCompleteMode()) self.add_separator() self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.sh = self.modes.append( json_modes.JSONSyntaxHighlighter( self.document(), color_scheme=ColorScheme(color_scheme))) self.modes.append(modes.IndenterMode()) self.modes.append(modes.ZoomMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.AutoIndentMode()) self.modes.append(json_modes.AutoIndentMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(json_modes.JSONLinter()) self.syntax_highlighter.fold_detector = JSONFoldDetector() self.panels.append(panels.EncodingPanel(), Panel.Position.TOP) self.panels.append(panels.ReadOnlyPanel(), Panel.Position.TOP)
def __init__(self, parent=None, color_scheme='qt'): super().__init__(parent=parent) # panels self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.CheckerPanel()) self.panels.append(panels.GlobalCheckerPanel(), panels.GlobalCheckerPanel.Position.RIGHT) # modes self.modes.append(modes.RightMarginMode()) self.caret_highlighter = self.modes.append( modes.CaretLineHighlighterMode()) self.modes.append( pymodes.PythonSH(self.document(), color_scheme=ColorScheme(color_scheme))) self.syntax_highlighter.fold_detector = PythonFoldDetector() self.breakpoints_panel = self.panels.append(panels.MarkerPanel())
def edit_preferences(self): try: DlgPreferences.edit_preferences(self.main_window) except ValueError: # dialog canceled _logger().info('settings dialog canceled') else: _logger().info('applying settings') self.app.update_app_style() self.app.home.update_style() QtGui.QIcon.setThemeName(Settings().icon_theme) for editor in self.ui.tabWidgetEditors.widgets( include_clones=True): update_editor_settings(editor) self.ui.consoleOutput.apply_color_scheme( ColorScheme(Settings().color_scheme)) editor.rehighlight()
def __init__(self, parent=None, server_script=None, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt', reuse_backend=False): super(GenericCodeEdit, self).__init__(parent, create_default_actions) from pyqode.core import panels from pyqode.core import modes if server_script is None: server_script = GenericCodeEdit.DEFAULT_SERVER self.backend.start(server_script, interpreter, args, reuse=reuse_backend) # append panels self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.SearchAndReplacePanel(), Panel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) # append modes self.modes.append(modes.CursorHistoryMode()) self.modes.append(modes.AutoCompleteMode()) self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.RightMarginMode()) self.modes.append( modes.PygmentsSyntaxHighlighter( self.document(), color_scheme=ColorScheme(color_scheme))) self.modes.append(modes.ZoomMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.AutoIndentMode()) self.modes.append(modes.IndenterMode()) self.modes.append(modes.SymbolMatcherMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) self.panels.append(panels.EncodingPanel(), Panel.Position.TOP) self.panels.append(panels.ReadOnlyPanel(), Panel.Position.TOP)
def _restore_original(self, clones): super(CodeEditTabWidget, self)._restore_original(clones) try: first = clones[0] except (IndexError, TypeError): # empty or None pass else: try: # remove original highlighter (otherwise we get a runtime error # saying the original c++ object has been deleted) new_sh = first.syntax_highlighter.__class__( first.document(), color_scheme=ColorScheme( first.syntax_highlighter.color_scheme.name)) first.modes.remove(first.syntax_highlighter.name) first.modes.append(new_sh) except (AttributeError, TypeError): pass
def apply_preferences(self): prefs = Preferences() self.font_family = prefs.editor_appearance.font self.font_size = prefs.editor_appearance.font_size self.syntax_style = prefs.editor_appearance.color_scheme scheme = ColorScheme(self.syntax_style) foreground = scheme.formats['normal'].foreground().color() background = scheme.background if background.lightness() < 128: self.style_sheet = styles.default_dark_style_template % dict( bgcolor=background.name(), fgcolor=foreground.name(), select="#444") else: self.style_sheet = styles.default_light_style_template % dict( bgcolor=background.name(), fgcolor=foreground.name(), select="#ccc")
def __init__(self, parent=None, server_script=server.__file__, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt', reuse_backend=False): from pyqode.core import panels from pyqode.core import modes super(TextCodeEdit, self).__init__(parent, create_default_actions) self.backend.start(server_script, interpreter, args, reuse=reuse_backend) # append panels self.panels.append(panels.SearchAndReplacePanel(), Panel.Position.BOTTOM) self.panels.append(panels.FoldingPanel()) self.panels.append(panels.LineNumberPanel()) # append modes self.modes.append(modes.AutoCompleteMode()) self.modes.append(modes.ExtendedSelectionMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.FileWatcherMode()) self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.RightMarginMode()) self.modes.append( TextCodeEdit.TextSH(self.document(), ColorScheme(color_scheme))) self.modes.append(modes.ZoomMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.CodeCompletionMode()) self.modes.append(modes.AutoIndentMode()) self.modes.append(modes.IndenterMode()) self.modes.append(modes.SymbolMatcherMode()) self.panels.append(panels.EncodingPanel(), Panel.Position.TOP)
""" Minimal example showing the use of the PythonSH mode. """ import logging logging.basicConfig(level=logging.DEBUG) import sys from pyqode.qt import QtWidgets from pyqode.core.api import CodeEdit, ColorScheme from pyqode.python.backend import server from pyqode.python.modes import PythonSH if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) editor = CodeEdit() editor.backend.start(server.__file__) editor.resize(800, 600) # add a native python syntax highlighter sh = editor.modes.append(PythonSH(editor.document())) # change its color scheme (from pygments) sh.color_scheme = ColorScheme('monokai') editor.show() editor.file.open(__file__) app.exec_() editor.close() del editor del app
def apply_preferences(self): self.widget.font_name = settings.editor_font() self.widget.font_size = settings.editor_font_size() self.widget.syntax_highlighter.color_scheme = ColorScheme( settings.color_scheme()) self.widget.update_terminal_colors()
def __init__(self, parent=None): super().__init__(parent, free_format=Settings().free_format) self.syntax_highlighter.color_scheme = ColorScheme( Settings().color_scheme) self.linter_mode = self.modes.append(CobolLinterMode()) self.app = None