Example #1
0
    def __init__(self, client, binding, qUndoStack, dfgLogWidget, settings,
                 canvasWindow, config):
        QtGui.QWidget.__init__(self)

        self.setObjectName('ScriptEditorWidget')
        self.setStyleSheet(LoadFabricStyleSheet("FabricUI.qss"))

        self.__undoStackIndex = qUndoStack.index()
        qUndoStack.indexChanged.connect(self.undoStackIndexChanged)
        self.__qUndoStack = qUndoStack
        self.__echoStackIndexChanges = True

        self.eval_globals = {
            "binding": BindingWrapper(client, binding, qUndoStack),
            "newGraph": canvasWindow.onNewGraph,
            "newScript": self.newScript,
            "loadScript": self.loadScript,
            "bindingUtils": DFG.DFGBindingUtils(),
        }

        self.dfgLogWidget = dfgLogWidget

        self.settings = settings

        self.log = LogWidget()
        self.log.setFont(config.fixedFont)

        self.filename = ""

        self.stdout = LogStdOut(self.log)
        self.stderr = LogStdErr(self.log)

        self.cmd = self.CmdEditor(config.fixedFont)
        self.cmd.returnPressed.connect(self.execute)
        self.cmd.linesSelected.connect(self.onLinesSelected)

        splitter = QtGui.QSplitter(QtCore.Qt.Vertical)
        splitter.setContentsMargins(0, 0, 0, 0)
        splitter.addWidget(self.cmd)
        splitter.addWidget(self.log)

        newAction = QtGui.QAction("New", self)
        newAction.setShortcut(QtGui.QKeySequence("Alt+Ctrl+N"))
        newAction.setToolTip(
            "New script (%s)" %
            newAction.shortcut().toString(QtGui.QKeySequence.NativeText))
        newAction.triggered.connect(self.newScript)

        openAction = QtGui.QAction("Open", self)
        openAction.setShortcut(QtGui.QKeySequence("Alt+Ctrl+O"))
        openAction.setToolTip(
            "Open script (%s)" %
            openAction.shortcut().toString(QtGui.QKeySequence.NativeText))
        openAction.triggered.connect(self.open)

        self.saveAction = QtGui.QAction("Save", self)
        self.saveAction.setShortcut(QtGui.QKeySequence("Alt+Ctrl+S"))
        self.saveAction.setToolTip(
            "Save script (%s)" %
            self.saveAction.shortcut().toString(QtGui.QKeySequence.NativeText))
        self.saveAction.triggered.connect(self.save)
        self.saveAction.setEnabled(False)
        self.cmd.modificationChanged.connect(self.onModificationChanged)

        saveAsAction = QtGui.QAction("Save As...", self)
        saveAsAction.setShortcut(QtGui.QKeySequence("Alt+Shift+Ctrl+S"))
        saveAsAction.setToolTip(
            "Save script As... (%s)" %
            saveAsAction.shortcut().toString(QtGui.QKeySequence.NativeText))
        saveAsAction.triggered.connect(self.saveAs)

        executeAction = QtGui.QAction("Execute", self)
        executeAction.setShortcuts([
            QtGui.QKeySequence("Ctrl+Return"),
            QtGui.QKeySequence("Ctrl+Enter")
        ])
        executeAction.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
        executeAction.setToolTip(
            "Execute script (%s)" %
            executeAction.shortcut().toString(QtGui.QKeySequence.NativeText))
        executeAction.triggered.connect(self.execute)
        self.cmd.addAction(executeAction)

        self.echoCommandsAction = QtGui.QAction("Echo Commands", self)
        self.echoCommandsAction.setCheckable(True)
        self.echoCommandsAction.setChecked(
            bool(self.settings.value("scriptEditor/echoCommands", True)))
        self.echoCommandsAction.toggled.connect(self.echoCommandsToggled)

        toolBar = QtGui.QToolBar()
        toolBar.addAction(newAction)
        toolBar.addAction(openAction)
        toolBar.addAction(self.saveAction)
        toolBar.addAction(saveAsAction)
        toolBar.addSeparator()
        toolBar.addAction(executeAction)
        toolBar.addSeparator()
        toolBar.addAction(self.echoCommandsAction)
        toolBar.addAction(self.log.clearAction("Clear Output"))

        layout = QtGui.QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(toolBar)
        layout.addWidget(splitter)

        self.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)
Example #2
0
    def __init__(self, client, binding, qUndoStack, dfgLogWidget, settings,
                 canvasWindow, config):
        QtGui.QWidget.__init__(self)

        self.setObjectName('ScriptEditorWidget')
        self.setStyleSheet(LoadFabricStyleSheet("FabricUI.qss"))

        self.__undoStackIndex = qUndoStack.index()
        qUndoStack.indexChanged.connect(self.undoStackIndexChanged)
        self.__qUndoStack = qUndoStack
        self._echoStackIndexChanges = True
        self._isExecuting = False

        self.eval_globals = {
            "binding": BindingWrapper(client, binding, qUndoStack),
            "newGraph": canvasWindow.onNewGraph,
            "newScript": self.newScript,
            "loadScript": self.loadScript,
            "bindingUtils": DFG.DFGBindingUtils(),
            "Commands": sys.modules["Commands"]
        }

        self.dfgLogWidget = dfgLogWidget

        self.settings = settings

        self.log = LogWidget()
        self.log.setFont(config.fixedFont)

        self.filename = ""

        self.stdout = LogStdOut(self.log)
        self.stderr = LogStdErr(self.log)

        self.cmd = self.CmdEditor(config.fixedFont)
        self.cmd.returnPressed.connect(self.execute)
        self.cmd.linesSelected.connect(self.onLinesSelected)

        splitter = QtGui.QSplitter(QtCore.Qt.Vertical)
        splitter.setContentsMargins(0, 0, 0, 0)
        splitter.addWidget(self.cmd)
        splitter.addWidget(self.log)

        newAction = NewScriptAction(self)

        openAction = OpenScriptAction(self)

        self.saveAction = SaveScriptAction(self)

        self.cmd.modificationChanged.connect(self.onModificationChanged)

        saveAsAction = SaveScriptAsAction(self)

        executeAction = ExecuteScriptAction(self)
        self.cmd.addAction(executeAction)

        self.echoCommandsAction = QtGui.QAction("Echo Commands", self)
        self.echoCommandsAction.setCheckable(True)
        self.echoCommandsAction.setChecked(
            bool(self.settings.value("scriptEditor/echoCommands", True)))
        self.echoCommandsAction.toggled.connect(self.echoCommandsToggled)

        toolBar = QtGui.QToolBar()
        toolBar.addAction(newAction)
        toolBar.addAction(openAction)
        toolBar.addAction(self.saveAction)
        toolBar.addAction(saveAsAction)
        toolBar.addSeparator()
        toolBar.addAction(executeAction)
        toolBar.addSeparator()
        toolBar.addAction(self.echoCommandsAction)
        toolBar.addAction(self.log.clearAction("Clear Output"))

        layout = QtGui.QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(toolBar)
        layout.addWidget(splitter)

        self.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)