Example #1
0
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)
Example #2
0
    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())
Example #3
0
 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)
Example #4
0
 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
Example #5
0
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
Example #6
0
 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)
Example #7
0
    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()
Example #8
0
    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)
Example #9
0
 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()
Example #10
0
    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()
Example #11
0
 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()
Example #12
0
    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()
Example #13
0
    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)
Example #14
0
    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)
Example #15
0
 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)
Example #16
0
    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)
Example #17
0
 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())
Example #18
0
 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()
Example #19
0
    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
Example #21
0
 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")
Example #22
0
    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)
Example #23
0
"""
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
Example #24
0
 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()
Example #25
0
 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