def __init__(self, node, text, secondaryText="", icon=None, parent=None): super(NodeHeader, self).__init__(parent) self._node = node self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) layout = QtWidgets.QGraphicsLinearLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.setOrientation(QtCore.Qt.Horizontal) self.setLayout(layout) self.headerIcon = HeaderPixmap(pixmap=icon or "", parent=self) layout.addItem(self.headerIcon) if not icon: self.headerIcon.hide() self._createLabels(text, secondaryText, layout) layout.addStretch(1) headerButton = NodeHeaderButton(size=12, color=node.model.headerButtonColor()) headerButton.stateChanged.connect(self.headerButtonStateChanged.emit) layout.addItem(headerButton) layout.setAlignment(headerButton, QtCore.Qt.AlignCenter | QtCore.Qt.AlignCenter)
def init(self): layout = QtWidgets.QGraphicsLinearLayout(parent=self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.setOrientation(QtCore.Qt.Vertical) self.header = NodeHeader(self, self.model.text(), self.model.secondaryText(), parent=self) self.header.headerTextChanged.connect(self.onHeaderTextChanged) self.header.headerButtonStateChanged.connect( self.onHeaderButtonStateChanged) self.attributeContainer = graphicitems.ItemContainer(parent=self) self.attributeContainer.layout().setSpacing(0) self.setToolTip(self.model.toolTip()) layout.addItem(self.header) layout.addItem(self.attributeContainer) # bind the objectModel signals to this qNode self.model.addAttributeSig.connect(self.addAttribute) self.model.attributeNameChangedSig.connect(self.setAttributeName) self.model.nodeNameChangedSig.connect(self.header.setText) self.model.removeAttributeSig.connect(self.removeAttribute) self.model.selectionChangedSig.connect(self.setSelected) # objectModel.progressUpdatedSig.connect(self) # objectModel.parentChangedSig.connect(self) self.setLayout(layout) # now bind the attributes from the model if it has any for attr in self.model.attributes( inputs=True, outputs=True, attributeVisLevel=ATTRIBUTE_VIS_LEVEL_ONE): self.addAttribute(attr)
def __init__(self, orientation=QtCore.Qt.Vertical, parent=None): super(ItemContainer, self).__init__(parent=parent) self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) layout = QtWidgets.QGraphicsLinearLayout() layout.setSpacing(2) layout.setContentsMargins(0, 0, 0, 0) layout.setOrientation(orientation) self.setLayout(layout)
def __init__(self, node, text, parent=None): super(NodeHeader, self).__init__(parent) self._node = node self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) layout = QtWidgets.QGraphicsLinearLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.setOrientation(QtCore.Qt.Horizontal) self.setLayout(layout) self._createLabel(text, layout) layout.addStretch(1)
def __init__(self, text, *args, **kwargs): super(TextContainer, self).__init__(*args, **kwargs) self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) layout = QtWidgets.QGraphicsLinearLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.setOrientation(QtCore.Qt.Horizontal) self.setLayout(layout) self.title = GraphicsText(text, parent=self) layout.addItem(self.title) layout.setAlignment(self.title, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop)
def __init__(self, model, acceptsContextMenu=True, parent=None): super(PanelWidget, self).__init__(parent=parent) self.setFlag(self.ItemSendsScenePositionChanges) self.setFlag(self.ItemIgnoresTransformations) self.model = model self.leftPanel = Panel(model, ioType="Input", acceptsContextMenu=acceptsContextMenu) self.rightPanel = Panel(model, ioType="Output", acceptsContextMenu=acceptsContextMenu) self.leftPanel.setMaximumWidth(model.config.panelWidth) self.rightPanel.setMaximumWidth(model.config.panelWidth) layout = QtWidgets.QGraphicsLinearLayout(parent=self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.setOrientation(QtCore.Qt.Horizontal) layout.addItem(self.leftPanel) layout.addStretch(1) layout.addItem(self.rightPanel) self.setLayout(layout)
def __init__(self, pixmap, title="", parent=None): super(GraphicsThumbnailWidget, self).__init__(parent) self.selected = False self._size = QtCore.QSizeF() layout = QtWidgets.QGraphicsLinearLayout(QtCore.Qt.Vertical, self) layout.setSpacing(2) layout.setContentsMargins(5, 5, 5, 5) self.setContentsMargins(0, 0, 0, 0) self.pixmapWidget = graphicspixmap.GraphicsPixmapWidget(pixmap, self) self.labelWidget = graphicitems.TextContainer(title, self) layout.addItem(self.pixmapWidget) layout.addItem(self.labelWidget) layout.setAlignment(self.pixmapWidget, QtCore.Qt.AlignCenter) layout.setAlignment(self.labelWidget, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom) self.setLayout(layout) self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
def __init__(self, objectModel, ioType, acceptsContextMenu=False, parent=None): super(Panel, self).__init__(parent=parent) self.model = objectModel self.ioType = ioType layout = QtWidgets.QGraphicsLinearLayout(parent=self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(1) layout.setOrientation(QtCore.Qt.Vertical) self.attributeContainer = graphicitems.ItemContainer(parent=self) layout.addItem(self.attributeContainer) self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) self.acceptsContextMenu = acceptsContextMenu self.setLayout(layout) self.setFlags(self.flags() & QtCore.Qt.ItemIsSelectable) self.setZValue(100) self.refresh()