Beispiel #1
0
    def __iterateOnData(self, data, parentWidget=None):
        """Private method to recursively build the tree widgets.

        Args:
            data (dict): Data to iterate on.

        """

        for item in sorted(data['components']):
            if data['components'][
                    item] not in self.ks.registeredComponents.keys():
                print("Warning: Component module " + data['components'][item] +
                      " not found in registered components:")
                for component in self.ks.registeredComponents:
                    print "  " + component
                continue

            treeItem = QtWidgets.QTreeWidgetItem(parentWidget)
            treeItem.setData(0, QtCore.Qt.UserRole, data['components'][item])
            treeItem.setText(0, item)
            component = self.ks.registeredComponents[data['components'][item]]
            module = sys.modules[component.__module__]
            treeItem.setToolTip(0, module.__file__)

            if parentWidget is not None:
                parentWidget.setToolTip(0, os.path.dirname(module.__file__))

        for item in data['subDirs'].keys():

            treeItem = QtWidgets.QTreeWidgetItem(parentWidget)
            treeItem.setData(0, QtCore.Qt.UserRole, 'Folder')
            treeItem.setText(0, item)

            self.__iterateOnData(data['subDirs'][item], parentWidget=treeItem)
Beispiel #2
0
    def __init__(self, valueController, parent=None):
        super(StringEditor, self).__init__(valueController, parent=parent)

        vbox = QtWidgets.QVBoxLayout()

        self._editor = QtWidgets.QTextEdit(self)
        options = valueController.getOption('multiLine')
        self._editor.setMinimumHeight(options.get('numLines', 5) * 20)
        self._editor.setMaximumHeight(options.get('numLines', 5) * 20)
        vbox.addWidget(self._editor, 1)

        # vbox.addStretch(0)
        vbox.setContentsMargins(0, 0, 0, 0)
        self.setLayout(vbox)
        self.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                           QtWidgets.QSizePolicy.Expanding)

        self.updateEditorValue()

        # we get lots of 'editingFinished' events,
        # so filter to only generate undos for important ones.

        self._value = self._editor.toPlainText()

        def invokeSetter():
            value = self._editor.toPlainText()
            if self._value != value:
                self._value = value
                self._setValueToController()

        self._editor.textChanged.connect(self._setValueToController)

        self.setEditable(valueController.isEditable())
Beispiel #3
0
    def __init__(self, port, text, hOffset, color, highlightColor):
        super(PortLabel, self).__init__(port)
        self.__port = port
        self.__text = text
        self.__textItem = QtWidgets.QGraphicsTextItem(text, self)
        self._labelColor = color
        self.__highlightColor = highlightColor
        self.__textItem.setDefaultTextColor(self._labelColor)
        self.__textItem.setFont(self.__font)
        option = self.__textItem.document().defaultTextOption()
        option.setWrapMode(QtGui.QTextOption.NoWrap)
        self.__textItem.document().setDefaultTextOption(option)
        self.__textItem.document().setDocumentMargin(0)
        self.__textItem.adjustSize()
        self.__textItem.transform().translate(
            0,
            self.__fontMetrics.height() * -0.5)

        self.setPreferredSize(self.textSize())
        self.setSizePolicy(
            QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                  QtWidgets.QSizePolicy.Fixed))
        self.setWindowFrameMargins(0, 0, 0, 0)
        self.setHOffset(hOffset)

        self.setAcceptHoverEvents(True)
        self.__mousDownPos = None
Beispiel #4
0
    def __init__(self, valueController, parent=None):
        super(ListViewEditor, self).__init__(valueController, parent=parent)

        hbox = QtWidgets.QHBoxLayout()
        self._editor = QtWidgets.QListWidget(self)

        self.__items = valueController.getOption('combo')
        for item in self.__items:
            self._editor.addItem(str(item))
        self._editor.setMaximumHeight(65)

        hbox.addWidget(self._editor, 1)

        hbox.addStretch(0)
        hbox.setContentsMargins(0, 0, 0, 0)
        self.setLayout(hbox)
        self.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                           QtWidgets.QSizePolicy.Fixed)

        self.updateEditorValue()

        if self.isEditable():
            self._editor.itemSelectionChanged.connect(
                self._setValueToController)
        else:
            self._editor.setReadOnly(True)
Beispiel #5
0
    def __init__(self, parent=None):

        # constructors of base classes
        super(KrakenUI, self).__init__(parent)
        self.setObjectName('mainUI')
        self.setWindowIcon(QtGui.QIcon(':/images/Kraken_Icon.png'))

        self.setWindowTitle("Kraken Editor")
        self.setAcceptDrops(True)

        self.graphViewWidget = KGraphViewWidget(parent=self)
        self.nodeLibrary = ComponentLibrary(parent=self)

        self.horizontalSplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal,
                                                      parent=self)
        self.horizontalSplitter.addWidget(self.nodeLibrary)
        self.horizontalSplitter.addWidget(self.graphViewWidget)

        self.horizontalSplitter.setStretchFactor(0, 0)
        self.horizontalSplitter.setStretchFactor(1, 1)
        self.horizontalSplitter.setSizes([0, 100])
        self.horizontalSplitter.splitterMoved.connect(self.splitterMoved)
        self.nodeLibraryExpandedSize = 175

        grid = QtWidgets.QVBoxLayout(self)
        grid.addWidget(self.horizontalSplitter)
Beispiel #6
0
    def createLayout(self):

        self.outputDialog = OutputLogDialog(self)

        # Setup Status Bar
        self.statusBar = KrakenStatusBar(self)

        mainWidget = QtWidgets.QWidget()

        # Main Layout
        self.mainLayout = QtWidgets.QVBoxLayout()
        self.mainLayout.setContentsMargins(0, 0, 0, 0)

        self.krakenUI = KrakenUI(self)
        self.krakenMenu = KrakenMenu(self)
        self.krakenUI.graphViewWidget.setGuideRigName('MyRig')
        self.krakenMenu.updateRigNameLabel()

        self.mainLayout.addWidget(self.krakenMenu)
        self.mainLayout.addWidget(self.krakenUI, 1)
        self.mainLayout.addWidget(self.statusBar)

        mainWidget.setLayout(self.mainLayout)
        self.setCentralWidget(mainWidget)

        self.statusBar.showMessage('Ready', 2000)

        self.setGeometry(250, 150, 800, 475)
        self.center()

        self.readSettings()
Beispiel #7
0
    def __init__(self, valueController, parent=None):
        super(StringListEditor, self).__init__(valueController, parent=parent)

        hbox = QtWidgets.QHBoxLayout()
        self._editor = QtWidgets.QListWidget(self)
        if self._valueController.hasOption('maxHeight'):
            self._editor.setMaximumHeight(
                self._valueController.getOption('maxHeight', 65))
            self.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                               QtWidgets.QSizePolicy.Fixed)
        else:
            self.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                               QtWidgets.QSizePolicy.Expanding)

        hbox.addWidget(self._editor, 1)
        hbox.setContentsMargins(0, 0, 0, 0)
        self.setLayout(hbox)

        self.updateEditorValue()

        if self.isEditable():

            def setSelectionOption(value):
                self._valueController.setOption('currentItem', value)

            self._editor.itemSelectionChanged.connect(setSelectionOption)
        else:
            self.setEditable(False)
Beispiel #8
0
    def __init__(self, valueController, parent=None):
        super(IntegerEditor, self).__init__(valueController, parent=parent)
        hbox = QtWidgets.QHBoxLayout()

        self._editor = QtWidgets.QSpinBox(self)

        if(self._dataType == 'UInt8' or
            self._dataType == 'UInt16' or
            self._dataType == 'UInt32' or
            self._dataType == 'UInt64' or
            self._dataType == 'Index' or
            self._dataType == 'Size' or
            self._dataType == 'Byte'):
            self._editor.setMinimum(0)
        else:
            self._editor.setMinimum(-100000000)

        self._editor.setMaximum(100000000)
        self._editor.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        hbox.addWidget(self._editor, 1)

        hbox.addStretch(0)
        hbox.setContentsMargins(0, 0, 0, 0)
        self.setLayout(hbox)
        self.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)

        self.updateEditorValue()

        self._editor.valueChanged.connect(self._setValueToController)

        self.setEditable( valueController.isEditable() )
Beispiel #9
0
    def __init__(self, valueController, parent=None):
        super(FilepathEditor, self).__init__(valueController, parent=parent)

        self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding,
                           QtWidgets.QSizePolicy.Fixed)

        self._line = QtWidgets.QLineEdit(self)
        self._browse = QtWidgets.QPushButton(' ... ', self)

        hbox = QtWidgets.QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        hbox.addWidget(self._line)
        hbox.addWidget(self._browse)

        self.setLayout(hbox)
        self.__updateOptions()

        def localSetter(value):
            self._setValueToController()

        self._line.textEdited.connect(localSetter)

        def __onBrowse():
            if self._line.text() == '':
                initialDir = self._folder
            else:
                initialDir = os.path.join(self._folder, self._line.text())

            if self._saveFile:
                (filepath, filter) = QtWidgets.QFileDialog.getSaveFileName(
                    None,
                    caption=self._options['Title'],
                    dir=initialDir,
                    filter=self._options['Filter'])
            else:
                (filepath, filter) = QtWidgets.QFileDialog.getOpenFileName(
                    None,
                    caption=self._options['Title'],
                    dir=initialDir,
                    filter=self._options['Filter'])

            if filepath is None or len(filepath) == 0:
                return

            if self._folder != '':
                filepath = os.path.relpath(filepath, self._folder)

            self.setEditorValue(filepath)
            self._setValueToController()

        self._browse.clicked.connect(__onBrowse)
        valueController.optionChanged.connect(self.__updateOptions)

        self.updateEditorValue()
        self.setEditable(valueController.isEditable())
Beispiel #10
0
    def createLayout(self):
        """Sets up the layout for the dialog."""

        self.textWidget = QtWidgets.QTextEdit(self)
        self.textWidget.setLineWrapMode(QtWidgets.QTextEdit.NoWrap)
        self.textWidget.setReadOnly(True)
        self.textWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)

        self.outputLogLayout = QtWidgets.QVBoxLayout(self)
        self.outputLogLayout.addWidget(self.textWidget)

        self.setLayout(self.outputLogLayout)
Beispiel #11
0
    def __init__(self, text, parent=None):
        super(NodeHeader, self).__init__(parent)

        self.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding))

        layout = QtWidgets.QGraphicsLinearLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(3)
        layout.setOrientation(QtCore.Qt.Horizontal)
        self.setLayout(layout)

        self._titleWidget = NodeTitle(text, self)
        layout.addItem(self._titleWidget)
        layout.setAlignment(self._titleWidget, QtCore.Qt.AlignCenter | QtCore.Qt.AlignTop)
Beispiel #12
0
    def __init__(self, valueController, parent=None):
        super(BaseSliderEditor, self).__init__(valueController, parent=parent)

        self._editEditor = QtWidgets.QLineEdit(self)
        self._sliderEditor = QtWidgets.QSlider(QtCore.Qt.Horizontal, self)

        self._range = valueController.getOption('range')
        # self._uiOutOfSliderRange = self._range
        # self._dynamicRange = True
        # self._uiDynamicRange = self._range

        # self._accurateRange = { 'min': 0, 'max': 0 }

        self.setEditable(self.isEditable())
Beispiel #13
0
    def __init__(self, text, parent=None):
        super(NodeTitle, self).__init__(parent)

        self.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed))

        self.__textItem = QtWidgets.QGraphicsTextItem(text, self)
        self.__textItem.setDefaultTextColor(self.__color)
        self.__textItem.setFont(self.__font)
        self.__textItem.setPos(0, -2)
        option = self.__textItem.document().defaultTextOption()
        option.setWrapMode(QtGui.QTextOption.NoWrap)
        self.__textItem.document().setDefaultTextOption(option)
        self.__textItem.adjustSize()

        self.setPreferredSize(self.textSize())
Beispiel #14
0
    def createLayout(self):
        self._mainLayout = QtWidgets.QVBoxLayout()
        self._mainLayout.setContentsMargins(10, 10, 10, 10)

        self._commentTextEdit = QtWidgets.QTextEdit(self)
        self._commentTextEdit.setText(self.nodeItem.getComment())
        self._commentTextEdit.setMinimumHeight(20)
        self._commentTextEdit.setMaximumHeight(40)

        self._settingsLayout = QtWidgets.QGridLayout()
        self._settingsLayout.setContentsMargins(10, 10, 10, 10)
        self._settingsLayout.setSpacing(3)
        self._settingsLayout.setColumnMinimumWidth(0, 75)
        self._settingsLayout.setColumnStretch(0, 0)
        self._settingsLayout.setColumnStretch(1, 1)

        # Settings widgets
        self._colorLabel = QtWidgets.QLabel('Color', self)
        self._colorLabel.setObjectName('color_label')
        self._colorLabel.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding,
                                       QtWidgets.QSizePolicy.Fixed)
        self._colorLabel.setMinimumWidth(75)
        self._colorWidget = KColorWidget(self, self.nodeItem.getColor())

        self._settingsLayout.addWidget(self._colorLabel,
                                       0,
                                       0,
                                       1,
                                       1,
                                       alignment=QtCore.Qt.AlignLeft)
        self._settingsLayout.addWidget(self._colorWidget,
                                       0,
                                       1,
                                       1,
                                       1,
                                       alignment=QtCore.Qt.AlignLeft)

        # OK and Cancel buttons
        self.buttons = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel,
            QtCore.Qt.Horizontal, self)

        self._mainLayout.addWidget(self._commentTextEdit)
        self._mainLayout.addLayout(self._settingsLayout)
        self._mainLayout.addStretch(1)
        self._mainLayout.addWidget(self.buttons)

        self.setLayout(self._mainLayout)
Beispiel #15
0
    def __init__(self, valueController, parent=None):
        super(ScalarSliderEditor, self).__init__(valueController,
                                                 parent=parent)

        hbox = QtWidgets.QHBoxLayout()

        validator = QtGui.QDoubleValidator(self)
        validator.setRange(self._range['min'], self._range['max'], 4)

        self._editEditor.setValidator(validator)
        self._editEditor.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                       QtWidgets.QSizePolicy.Fixed)

        self._sliderEditor.setMinimum(self._range['min'] * 1000)
        self._sliderEditor.setMaximum(self._range['max'] * 1000)
        self._sliderEditor.setSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        self._sliderEditor.setTickInterval(1000)

        self._editEditor.setMinimumWidth(50)
        self._editEditor.setMaximumWidth(90)

        hbox.addWidget(self._editEditor, 1)
        hbox.addWidget(self._sliderEditor, 1)
        hbox.addStretch()
        self.setLayout(hbox)
        self.layout().setContentsMargins(0, 0, 0, 0)

        self.updateEditorValue()

        def __sliderPressed():
            self.beginInteraction()

        def __sliderReleased():
            self.endInteraction()

        def __sliderMoved(value):
            if self._updatingEditor:
                return
            value = float(value) / 1000
            self._editEditor.setText(str(round(value, 4)))
            self._value = value
            self._setValueToController()

        def __textEdited():
            if self._updatingEditor:
                return
            value = self.getEditorValue()
            # if self._dynamicRange:
            #     self.updateSliderRange(value)
            self._sliderEditor.setValue(value * 1000)
            self._setValueToController()

        self._sliderEditor.sliderPressed.connect(__sliderPressed)
        self._sliderEditor.sliderReleased.connect(__sliderReleased)
        self._sliderEditor.valueChanged.connect(__sliderMoved)
        self._editEditor.editingFinished.connect(__textEdited)

        self.setEditable(valueController.isEditable())
Beispiel #16
0
 def __init__(self, parent):
     super(PortList, self).__init__(parent)
     layout = QtWidgets.QGraphicsLinearLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     layout.setSpacing(4)
     layout.setOrientation(QtCore.Qt.Vertical)
     self.setLayout(layout)
Beispiel #17
0
    def __init__(self, parent):
        super(ItemHolder, self).__init__(parent)

        layout = QtWidgets.QGraphicsLinearLayout()
        layout.setSpacing(0)
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)
Beispiel #18
0
    def openRigPreset(self):

        try:
            self.window().setCursor(QtCore.Qt.WaitCursor)

            settings = self.window().getSettings()
            settings.beginGroup('Files')
            lastFilePath = settings.value(
                "lastFilePath",
                os.path.join(GetKrakenPath(), self.guideRig.getName()))
            settings.endGroup()

            if not lastFilePath:
                lastFilePath = GetKrakenPath()

            fileDialog = QtWidgets.QFileDialog(self)
            fileDialog.setOption(QtWidgets.QFileDialog.DontUseNativeDialog,
                                 on=True)
            fileDialog.setWindowTitle('Open Rig Preset')
            fileDialog.setDirectory(
                os.path.dirname(os.path.abspath(lastFilePath)))
            fileDialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen)
            fileDialog.setNameFilter('Kraken Rig (*.krg)')

            if fileDialog.exec_() == QtWidgets.QFileDialog.Accepted:
                filePath = fileDialog.selectedFiles()[0]
                self.loadRigPreset(filePath)

        finally:
            self.window().setCursor(QtCore.Qt.ArrowCursor)
Beispiel #19
0
    def build(self):

        self._editors = []

        for i in range(0, len(self._valueArray)):
            if self._displayArrayLimit and i == self._arrayLimit:
                break
            self.constructAndAddElementEditor(i)

        if self.isEditable() and self._enableAddElements:
            if not self._displayArrayLimit or self._displayArrayLimit and len(
                    self._valueArray
            ) < self._arrayLimit and not self._constSizeArray:
                self.addElementButton = QtWidgets.QPushButton(
                    self._addElementButtonLabel, self)

                def addElement():
                    undoManager = UndoRedoManager.getInstance()
                    undoManager.openBracket("Add element to :" +
                                            self.getName())

                    self.addElement()
                    self._setValueToController()

                    undoManager.closeBracket()
                    self.rebuild()

                self.addElementButton.clicked.connect(addElement)
                if self._displayIndex:
                    self._grid.addWidget(self.addElementButton,
                                         len(self._valueArray), 1, 1, 2)
                else:
                    self._grid.addWidget(self.addElementButton,
                                         len(self._valueArray), 0, 1, 2)
Beispiel #20
0
    def addSeparator(self, name=None):

        separatorEditor = QtWidgets.QFrame(self.paramsGroup)
        separatorEditor.setFrameShape(QtWidgets.QFrame.HLine)
        separatorEditor.setObjectName('separatorFrame')
        if name is not None:
            labelEditor = QtWidgets.QLabel(name, self.paramsGroup)
            labelEditor.setObjectName('separatorLabel')

            self.paramsLayout.addWidget(labelEditor, self.gridRow, 0)
            self.paramsLayout.addWidget(separatorEditor, self.gridRow, 1,
                                        QtCore.Qt.AlignBottom)
            self.gridRow += 1
        else:
            self.paramsLayout.addWidget(separatorEditor, self.gridRow, 0, 1, 2)
            self.gridRow += 1
Beispiel #21
0
    def closeEvent(self, event):

        msgBox = QtWidgets.QMessageBox(self)
        msgBox.setObjectName('SaveMessageBox')
        msgBox.setWindowTitle("Kraken Editor")
        msgBox.setText("You are closing Kraken.")
        msgBox.setInformativeText("Do you want to save your changes?")
        msgBox.setStandardButtons(QtWidgets.QMessageBox.Save
                                  | QtWidgets.QMessageBox.Discard
                                  | QtWidgets.QMessageBox.Cancel)
        msgBox.setDefaultButton(QtWidgets.QMessageBox.Save)

        ret = msgBox.exec_()

        if ret == QtWidgets.QMessageBox.Cancel:
            event.ignore()
            return

        elif ret == QtWidgets.QMessageBox.Save:
            self.kraken_ui.graphViewWidget.saveRigPreset()

            self.statusBar.showMessage('Closing')

        self.writeSettings()

        # Clear widget handler of any widgets otherwise references to deleted
        # widgets remain.
        for handler in logger.handlers:
            if type(handler).__name__ == 'WidgetHandler':
                handler.clearWidgets()
Beispiel #22
0
    def __init__(self, valueController, parent=None):
        super(Vec3Editor, self).__init__(valueController, parent=parent)

        self.__editors = []
        hbox = QtWidgets.QHBoxLayout()

        def defineLineEditSubEditor():
            widget = LineEdit(self)
            validator = QtGui.QDoubleValidator(self)
            validator.setDecimals(3)
            widget.setValidator(validator)
            hbox.addWidget(widget, 1)
            self.__editors.append(widget)
            return widget

        defineLineEditSubEditor()
        defineLineEditSubEditor()
        defineLineEditSubEditor()
        hbox.addStretch(0)
        hbox.setContentsMargins(0, 0, 0, 0)

        self.setLayout(hbox)
        self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)

        self.updateEditorValue()

        for i in range(0, len(self.__editors)):
            self.__editors[i].editingFinished.connect(self._setValueToController)

        self.setEditable( valueController.isEditable() )
Beispiel #23
0
    def __init__(self, parent):
        super(ContextualNodeList, self).__init__(parent)
        self.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.setFocus()

        self.setFixedSize(250, 200)

        self.searchLineEdit = SearchLineEdit(self)
        self.searchLineEdit.setObjectName('contextNodeListSearchLine')
        # self.searchLineEdit.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.searchLineEdit.setFocus()

        self.nodesList = NodeList(self)

        self.ks = KrakenSystem.getInstance()

        self.componentClassNames = []
        for componentClassName in sorted(self.ks.getComponentClassNames()):
            cmpCls = self.ks.getComponentClass(componentClassName)
            if cmpCls.getComponentType() != 'Guide':
                continue

            self.componentClassNames.append(componentClassName)

        self.nodes = None
        self.showClosestNames()
        self.searchLineEdit.textEdited.connect(self.showClosestNames)
        self.nodesList.itemClicked.connect(self.createNode)

        self.setIndex(0)

        grid = QtWidgets.QGridLayout()
        grid.addWidget(self.searchLineEdit, 0, 0)
        grid.addWidget(self.nodesList, 1, 0)
        self.setLayout(grid)
Beispiel #24
0
    def __init__(self, valueController, parent=None):
        super(LineEditor, self).__init__(valueController, parent=parent)

        hbox = QtWidgets.QHBoxLayout()

        self._editor = LineEditEditor(valueController, parent=self)
        hbox.addWidget(self._editor, 1)

        hbox.addStretch(0)
        hbox.setContentsMargins(0, 0, 0, 0)
        self.setLayout(hbox)
        self.setSizePolicy(QtWidgets.QSizePolicy.Preferred,
                           QtWidgets.QSizePolicy.Fixed)

        self.updateEditorValue()

        # we get lots of 'editingFinished' events,
        # so filter to only generate undos for important ones.
        self._value = valueController.getValue()

        def invokeSetter():
            value = self._editor.text()
            if self._value != value:
                self._value = value
                self._setValueToController()

        self._editor.editingFinished.connect(invokeSetter)

        self.setEditable(valueController.isEditable())
Beispiel #25
0
    def addValueEditor(self, name, widget):

        # widget.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        label = QtWidgets.QLabel(name, self)
        # label.setMaximumWidth(200)
        # label.setContentsMargins(0, 5, 0, 0)
        # label.setMinimumWidth(60)
        # label.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        # label.setAlignment(QtCore.Qt.AlignRight)
        # label.adjustSize()

        rowSpan = widget.getRowSpan()
        columnSpan = widget.getColumnSpan()
        # if columnSpan==1:
        self._grid.addWidget(label, self._gridRow, 0,
                             QtCore.Qt.AlignRight | QtCore.Qt.AlignTop)
        self._grid.addWidget(widget, self._gridRow, 1)  #, QtCore.Qt.AlignLeft)
        self._gridRow += 1
        # else:
        #     self._grid.addWidget(label, self._gridRow, 0, QtCore.Qt.AlignRight | QtCore.Qt.AlignTop)
        #     self._grid.addWidget(widget, self._gridRow+1, 0, rowSpan, columnSpan)
        #     self._gridRow += 2

        self._labels[name] = label
        self._editors[name] = widget
Beispiel #26
0
    def openColorDialog(self):

        colorDialog = QtWidgets.QColorDialog()
        colorDialog.setOption(QtWidgets.QColorDialog.DontUseNativeDialog, True)
        newColor = colorDialog.getColor(self._color, self)
        if newColor.isValid():
            self._color = newColor
            self.colorChanged.emit(newColor)
Beispiel #27
0
    def __init__(self, valueController, parent=None):

        super(Image2DEditor, self).__init__(valueController, parent=parent)

        self._grid = QtWidgets.QGridLayout()
        self._grid.setContentsMargins(0, 0, 0, 0)

        self.__value = self._invokeGetter()

        # format
        formatLabelEditor = QtWidgets.QLabel("format", self)
        formatLabelEditor.setMinimumWidth(20)
        self._formatEditor = QtWidgets.QLineEdit(self)
        self._formatEditor.setText(self.__value.pixelFormat)
        self._formatEditor.setReadOnly(True)

        self._grid.addWidget(formatLabelEditor, 0, 0, QtCore.Qt.AlignRight | QtCore.Qt.AlignTop)
        self._grid.addWidget(self._formatEditor, 0, 1)

        # width
        widthLabelEditor = QtWidgets.QLabel("width", self)
        widthLabelEditor.setMinimumWidth(20)
        self._widthEditor = QtWidgets.QSpinBox(self)
        self._widthEditor.setMinimum(0)
        self._widthEditor.setMaximum(9999999)
        self._widthEditor.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        self._widthEditor.setValue(self.__value.width)
        self._widthEditor.setReadOnly(True)

        self._grid.addWidget(widthLabelEditor, 1, 0, QtCore.Qt.AlignRight | QtCore.Qt.AlignTop)
        self._grid.addWidget(self._widthEditor, 1, 1)

        # height
        heightLabelEditor = QtWidgets.QLabel("height", self)
        heightLabelEditor.setMinimumWidth(20)
        self._heightEditor = QtWidgets.QSpinBox(self)
        self._heightEditor.setMinimum(0)
        self._heightEditor.setMaximum(9999999)
        self._heightEditor.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        self._heightEditor.setValue(self.__value.height)
        self._heightEditor.setReadOnly(True)

        self._grid.addWidget(heightLabelEditor, 2, 0, QtCore.Qt.AlignRight | QtCore.Qt.AlignTop)
        self._grid.addWidget(self._heightEditor, 2, 1)

        self._thumbnailSize = 40
        self.tumbnailEditor = QtWidgets.QLabel()
        self.tumbnailEditor.setBackgroundRole(QtGui.QPalette.Base)
        self.tumbnailEditor.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        self.tumbnailEditor.setScaledContents(True)

        self._updateThumbnail()

        self.setLayout(self._grid)
        self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
Beispiel #28
0
    def __init__(self, parent=None):

        # constructors of base classes
        super(KGraphViewWidget, self).__init__(parent)

        self._builder = None
        self._guideBuilder = None
        self.guideRig = None

        graphView = KGraphView(parent=self)
        graphView.nodeAdded.connect(self.__onNodeAdded)
        graphView.nodeRemoved.connect(self.__onNodeRemoved)
        graphView.beginConnectionManipulation.connect(
            self.__onBeginConnectionManipulation)
        graphView.endConnectionManipulation.connect(
            self.__onEndConnectionManipulationSignal)
        graphView.connectionAdded.connect(self.__onConnectionAdded)
        graphView.connectionRemoved.connect(self.__onConnectionRemoved)

        graphView.selectionChanged.connect(self.__onSelectionChanged)
        graphView.endSelectionMoved.connect(self.__onSelectionMoved)

        graphView.beginDeleteSelection.connect(self.__onBeginDeleteSelection)
        graphView.endDeleteSelection.connect(self.__onEndDeleteSelection)

        self.setGraphView(graphView)

        # =========================================
        # Setup hotkeys for the following actions.
        # =========================================

        undoShortcut = QtWidgets.QShortcut(
            QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_Z), self)
        undoShortcut.activated.connect(self.undo)

        redoShortcut = QtWidgets.QShortcut(
            QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_Y), self)
        redoShortcut.activated.connect(self.redo)

        openContextualNodeListShortcut = QtWidgets.QShortcut(
            QtGui.QKeySequence(QtCore.Qt.Key_Tab), self)
        openContextualNodeListShortcut.activated.connect(
            self.openContextualNodeList)

        self.newRigPreset()
Beispiel #29
0
    def reset(self):
        self.setScene(QtWidgets.QGraphicsScene())

        self.__connections = set()
        self.__nodes = {}
        self.__selection = set()

        self._manipulationMode = MANIP_MODE_NONE
        self._selectionRect = None
Beispiel #30
0
    def __init__(self, parent):
        super(ComponentLibrary, self).__init__(parent)

        self.setMinimumWidth(175)

        self.componentTreeWidget = ComponentTreeWidget(self)

        grid = QtWidgets.QGridLayout()
        grid.addWidget(self.componentTreeWidget, 0, 0)
        self.setLayout(grid)