def __init__(self): super(MyPythonCodeEdit, self).__init__(color_scheme='monokai') # 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())
def test_enabled(editor): editor.panels.append(panels.EncodingPanel(), panels.EncodingPanel.Position.TOP) panel = get_panel(editor) assert panel.enabled panel.enabled = False panel.enabled = True
def __init__(self, viewer, snippets=None): self.model = None self.viewer = viewer QtWidgets.QWidget.__init__(self) self.layout = QtWidgets.QVBoxLayout(self) self.setLayout(self.layout) self.c = None self.tools = QtWidgets.QHBoxLayout(self) self.layout.addLayout(self.tools) self.runbutton = QtWidgets.QPushButton("Run") width = self.runbutton.fontMetrics().boundingRect("Run").width() + 20 self.runbutton.setMaximumWidth(width) self.tools.addWidget(self.runbutton) self.runbutton.clicked.connect(self.runCode) editor = CodeEdit() if has_pyqode: editor.backend.start(server.__file__) editor.panels.append(panels.FoldingPanel()) editor.panels.append(panels.LineNumberPanel()) editor.panels.append(panels.SearchAndReplacePanel(), panels.SearchAndReplacePanel.Position.BOTTOM) editor.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) editor.add_separator() editor.panels.append(pypanels.QuickDocPanel(), api.Panel.Position.BOTTOM) sh = editor.modes.append(PythonSH(editor.document())) editor.modes.append(modes.CaretLineHighlighterMode()) editor.modes.append(modes.CodeCompletionMode()) editor.modes.append(modes.ExtendedSelectionMode()) editor.modes.append(modes.FileWatcherMode()) editor.modes.append(modes.OccurrencesHighlighterMode()) editor.modes.append(modes.RightMarginMode()) editor.modes.append(modes.SmartBackSpaceMode()) editor.modes.append(modes.SymbolMatcherMode()) editor.modes.append(modes.ZoomMode()) editor.modes.append(pymodes.CommentsMode()) editor.modes.append(pymodes.CalltipsMode()) auto = pymodes.PyAutoCompleteMode() auto.logger.setLevel(logging.CRITICAL) editor.modes.append(auto) editor.modes.append(pymodes.PyAutoIndentMode()) editor.modes.append(pymodes.PyIndenterMode()) editor.show() else: editor.setStyleSheet("font-size: 10pt; font-family: Consolas, Courier;") self.editor = editor self.snippets = snippets if self.snippets: self.list = QtWidgets.QComboBox(self) self.replace_snippet(0) for snip_name in self.snippets.keys(): self.list.addItem(snip_name) self.tools.addWidget(self.list) self.list.currentIndexChanged[int].connect(self.replace_snippet) self.layout.addWidget(self.editor) self.output = QtWidgets.QTextEdit() self.output.setReadOnly(True) self.output.setStyleSheet("font-size: 10pt; font-family: Consolas, Courier; background-color: #444;") self.layout.addWidget(self.output)
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 __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 test_edit_anyway(editor): editor.panels.append(panels.EncodingPanel(), panels.EncodingPanel.Position.TOP) editor.file.open(PATH, encoding='utf_8', use_cached_encoding=False) QTest.qWait(1000) pnl = get_panel(editor) assert pnl.isVisible() is True assert pnl.ui.comboBoxEncodings.current_encoding == 'utf_8' pnl.ui.pushButtonEdit.clicked.emit(True) QTest.qWait(1000) assert pnl.isVisible() is False
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 __init__(self, parent=None, color_scheme='qt', free_format=False): super().__init__(parent) self.file = self.CobolFileManager(self) self._lower_case_keywords = False self._free_format = None self._comment_indicator = '*> ' self.word_separators.remove('-') self._start_server() self._setup_panels() self._setup_modes(color_scheme) self.encoding_panel = self.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) self.read_only_panel = self.panels.append(panels.ReadOnlyPanel(), api.Panel.Position.TOP) self.free_format = free_format
def __init__(self): super(MyPythonCodeEdit, self).__init__() # starts the default pyqode.python server (which enable the jedi code # completion worker). #Now it does not work, why????? if hasattr(sys, 'frozen'): self.backend.start(server.__file__, interpreter="python") else: 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())
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, server_script=None, interpreter=sys.executable, args=None, create_default_actions=True, color_scheme='qt', reuse_backend=True): super(RstCodeEdit, self).__init__(parent, create_default_actions) if server_script is None: server_script = self.DEFAULT_SERVER print 'is freezed?', hasattr(sys, 'frozen') print self.DEFAULT_SERVER print sys.executable print os.getcwd() sys.frozen = True self.backend.start(server_script, interpreter, args, reuse=reuse_backend) # append panels self.panels.append(panels.LineNumberPanel()) self.panels.append(panels.SearchAndReplacePanel(), api.Panel.Position.TOP) # append modes self.modes.append(modes.CursorHistoryMode()) self.modes.append(modes.CaseConverterMode()) self.modes.append(modes.FileWatcherMode()) # self.modes.append(modes.CaretLineHighlighterMode()) self.modes.append(modes.RightMarginMode()) self.modes.append(rstmodes.RstSH(self.document(), color_scheme=api.ColorScheme(color_scheme))) self.modes.append(modes.ZoomMode()) cc = modes.CodeCompletionMode() cc.trigger_symbols[:] = [] self.modes.append(cc) self.modes.append(modes.AutoIndentMode()) self.modes.append(modes.IndenterMode()) self.modes.append(modes.OccurrencesHighlighterMode()) self.modes.append(modes.SmartBackSpaceMode()) self.modes.append(modes.CheckerMode(workers.linter)) self.panels.append(panels.EncodingPanel(), api.Panel.Position.TOP) self.panels.append(panels.ReadOnlyPanel(), api.Panel.Position.TOP) self.panels.append(panels.CheckerPanel())
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(modes.OutlineMode(defined_names)) #--- 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.PyFlakesChecker()) self.modes.append(pymodes.PEP8CheckerMode()) self.modes.append(pymodes.PyAutoCompleteMode()) self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyIndenterMode()) self.modes.append(pymodes.PythonSH(self.document())) self.syntax_highlighter.fold_detector = PythonFoldDetector()
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 __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)
def __init__(self): super(scripteditoritem, 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()) self.modes.append(modes.PygmentsSyntaxHighlighter(self.document())) # --- 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()) self.syntax_highlighter.color_scheme = api.ColorScheme('darcula') QApplication.instance().aboutToQuit.connect( self.cleanup) # TODO: use this approach in Xi-cam # self.file.open('test.py') self.insertPlainText(''' # Required to allow controls manipulation in background import asyncio loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) # Setup RunEngine from bluesky import RunEngine from bluesky.plans import inner_product_scan RE = RunEngine({}) # Set up simulated hardware. from ophyd.sim import det4, motor1, motor2, motor3 # The 'det4' example detector a 2D Gaussian function of motor1, motor2. # Move motor1 from 1-5 while moving motor2 from 10-50 -- both in 5 steps. RE(inner_product_scan([det4], 5, motor1, 1, 5, motor2, 10, 50)) ''')
def __init__(self, parent, **kwargs): """ Args: parent (QWidget): Parent widget """ # Foe help, see # https://github.com/pyQode/pyqode.python/blob/master/examples/custom.py super().__init__(parent, **kwargs) self.gui = None # type: MetalGUI self.component_class_name = None # type: str - 'TransmonPocket' # type: str - 'qiskit_metal.qlibrary.qubits.transmon_pocket' self.component_module_name = None # type: str - '/Users/zlatko.minev/qiskit_metal/qiskit_metal/qlibrary/qubits/transmon_pocket.py' self.component_module_path = None # 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(modes.OutlineMode(defined_names)) # --- core panels # in pyqode/core/panels/folding.py there is: # if os.environ['QT_API'].lower() not in PYQT5_API self.panels.append(MetalPyqodeFoldingPanel()) 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.quick_doc_panel = pypanels.QuickDocPanel() self.panels.append(self.quick_doc_panel, api.Panel.Position.BOTTOM) ############################################################################ # core modes self.modes.append(modes.CaretLineHighlighterMode()) self.code_completion_mode = modes.CodeCompletionMode() self.modes.append(self.code_completion_mode) 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 # Help: https://pythonhosted.org/pyqode.python/pyqode.python.modes.html # Comments/uncomments a set of lines using Ctrl+/. self.modes.append(pymodes.CommentsMode()) # Shows function calltips. # This mode shows function/method call tips in a QToolTip using jedi.Script.call_signatures(). # https://pythonhosted.org/pyqode.python/pyqode.python.modes.html#calltipsmode self.calltips_mode = pymodes.CalltipsMode() self.calltips_mode.tooltipDisplayRequested.connect(self.calltip_called) self.modes.append(self.calltips_mode) self.modes.append(pymodes.PyFlakesChecker()) # self.modes.append(pymodes.PEP8CheckerMode()) self.auto_complete_mode = pymodes.PyAutoCompleteMode() self.modes.append(self.auto_complete_mode) self.modes.append(pymodes.PyAutoIndentMode()) self.modes.append(pymodes.PyIndenterMode()) self.modes.append(pymodes.PythonSH(self.document())) self.syntax_highlighter.fold_detector = PythonFoldDetector() # --- handle modifed text in other application # self.textChanged.connect(self.check_modified) # user function # Options # self.file.safe_save = False self.script = jedi.Script('') # get overwritten in set self.style_me()
def __init__(self, args): QMainWindow.__init__(self) self.setupUi(self) self.moderat = args['moderat'] self.client = args['client'] self.module_id = args['module_id'] self.alias = args['alias'] self.ip_address = args['ip_address'] self.p2p = args['p2p'] title_prefix = self.alias if len(self.alias) > 0 else self.ip_address self.setWindowTitle(u'[{}] {}'.format( title_prefix, self.moderat.MString('MSCRIPTING_TITLE'))) # init idle self.editor = api.CodeEdit() #self.editor.setStyleSheet('border: 0px; padding: 0px; background: #34495e;') # start the backend as soon as possible self.editor.backend.start(server.__file__) # append some modes and panels self.editor.modes.append(modes.CodeCompletionMode()) self.editor.modes.append(modes.AutoIndentMode()) self.editor.modes.append(modes.AutoCompleteMode()) self.editor.modes.append(modes.IndenterMode()) self.editor.modes.append(modes.ExtendedSelectionMode()) self.editor.modes.append(modes.SymbolMatcherMode()) self.editor.modes.append(modes.ZoomMode()) self.editor.modes.append(modes.LineHighlighterMode()) self.editor.modes.append( modes.PygmentsSyntaxHighlighter(self.editor.document())) sh = self.editor.modes.append(modes.PygmentsSH(self.editor.document())) sh.fold_detector = api.IndentFoldDetector() self.editor.modes.get( modes.PygmentsSyntaxHighlighter).pygments_style = 'monokai' self.editor.panels.append(panels.SearchAndReplacePanel(), api.Panel.Position.BOTTOM) self.editor.panels.append(panels.CheckerPanel()) self.editor.panels.append(panels.LineNumberPanel()) self.editor.panels.append(panels.MarkerPanel()) self.editor.panels.append(panels.EncodingPanel()) self.editor.panels.append(panels.FoldingPanel()) self.editor.panels.append(panels.ReadOnlyPanel()) self.output = Output(self.editor, self.moderat) self.splitter = QSplitter() self.splitter.setOrientation(Qt.Vertical) self.splitter.addWidget(self.editor) self.splitter.addWidget(self.output) self.setCentralWidget(self.splitter) # self.runButton.clicked.connect(self.run_script) # self.testButton.clicked.connect(self.run_test) # self.openButton.clicked.connect(self.from_file) # self.pluginsListButton.clicked.connect(self.open_list) # self.addPluginButton.clicked.connect(self.insert_plugin) # self.saveButton.clicked.connect(self.save_plugin) # self.pluginSearchLine.returnPressed.connect(self.insert_plugin) # self.clearButton.clicked.connect(self.clear_script) # self.pinButton.clicked.connect(self.always_top) # Autocompleter self.completer = QCompleter(self.moderat.plugins.keys()) self.completer.setCompletionMode(QCompleter.PopupCompletion) self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.popup().setStyleSheet('''background-color: #273747; color: #c9f5f7; border: 1px solid #243342; border-top: none;''') self.addTools()
This example tries to detect the file encoding using chardet. You can install chardet by running the following commmand:: pip install chardet .. note:: If you run this example without supplying a file argument, it will open a fallback file encoded with a chinese encoding. Chardet will not detect the right encoding but the file will load without any errors. I made this example to show you that you should not rely on a charset detector but instead provided a way for the user to reload the file with another encoding. This can be done using the EncodingMenu (in pyqode.core.widgets). """ import sys from pyqode.qt import QtWidgets from pyqode.core import api, panels, widgets from common import setup_editor, get_file_path import chardet pth = get_file_path() with open(pth, 'rb') as buf: encoding = chardet.detect(buf.read())['encoding'] app = QtWidgets.QApplication(sys.argv) editor = setup_editor(panels=[(panels.EncodingPanel(), api.Panel.Position.TOP)]) editor.file.open(pth, encoding=encoding, use_cached_encoding=False) app.exec_()
""" Show how decoding errors can be automatically handled using the EncodingPanel. """ import sys from pyqode.qt import QtWidgets from pyqode.core import api, panels from common import setup_editor, get_file_path app = QtWidgets.QApplication(sys.argv) editor = setup_editor( panels=[(panels.EncodingPanel(), api.Panel.Position.TOP)]) editor.file.open(get_file_path(), use_cached_encoding=False) app.exec_()