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)
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())
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
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)
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)
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()
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)
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() )
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())
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)
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)
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())
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())
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)
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())
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)
def __init__(self, parent): super(ItemHolder, self).__init__(parent) layout = QtWidgets.QGraphicsLinearLayout() layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout)
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)
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)
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
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()
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() )
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)
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())
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
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)
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)
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()
def reset(self): self.setScene(QtWidgets.QGraphicsScene()) self.__connections = set() self.__nodes = {} self.__selection = set() self._manipulationMode = MANIP_MODE_NONE self._selectionRect = None
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)