def setupUi(self, parent): """ Create a basic header and body layout to contain the generic or action proxy forms. """ step = self.step() if not step: return # main layout containing header and body layout = QtWidgets.QVBoxLayout(parent) layout.setSpacing(4) layout.setMargin(0) # header frame headerFrame = QtWidgets.QFrame(parent) headerColor = "rgba({0}, {1}, {2}, 40)".format( *self.getStepColor(step)) headerFrame.setStyleSheet( ".QFrame{{ background-color: {color}; " "border-radius: 2px; }}".format(color=headerColor)) layout.addWidget(headerFrame) self.setupHeaderUi(headerFrame) # body layout bodyFrame = QtWidgets.QFrame(parent) bodyFrame.setObjectName("bodyFrame") bodyColor = "rgba(255, 255, 255, 5)" bodyFrame.setStyleSheet( ".QFrame#bodyFrame{{ background-color: {color}; }}".format( color=bodyColor)) layout.addWidget(bodyFrame) self.setupBodyUi(bodyFrame)
def setupVariantsUi(self, parent, layout): # variant header variantHeader = QtWidgets.QFrame(parent) variantHeader.setStyleSheet( ".QFrame{ background-color: rgb(255, 255, 255, 15); border-radius: 2px }" ) layout.addWidget(variantHeader) variantHeaderLayout = QtWidgets.QHBoxLayout(variantHeader) variantHeaderLayout.setContentsMargins(10, 4, 4, 4) variantHeaderLayout.setSpacing(4) self.variantsLabel = QtWidgets.QLabel(variantHeader) self.variantsLabel.setText("Variants: ") variantHeaderLayout.addWidget(self.variantsLabel) spacer = QtWidgets.QSpacerItem(20, 4, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) layout.addItem(spacer) # add variant button addVariantBtn = QtWidgets.QPushButton(variantHeader) addVariantBtn.setText('+') addVariantBtn.setFixedSize(QtCore.QSize(20, 20)) addVariantBtn.clicked.connect(self.addVariant) variantHeaderLayout.addWidget(addVariantBtn) # variant list layout self.variantListLayout = QtWidgets.QVBoxLayout(parent) self.variantListLayout.setContentsMargins(0, 0, 0, 0) self.variantListLayout.setSpacing(4) layout.addLayout(self.variantListLayout)
def setupDefaultFormUi(self, parent): """ Optional UI setup that builds a standardized layout. Includes a form layout and a label with the attributes name. Should be called at the start of setupUi if desired. """ layout = QtWidgets.QVBoxLayout(parent) layout.setContentsMargins(0, 0, 0, 0) self.frame = QtWidgets.QFrame(parent) layout.addWidget(self.frame) self.formLayout = QtWidgets.QFormLayout(self.frame) # margin that will give us some visible area of # the frame that can change color based on valid state self.formLayout.setContentsMargins(2, 2, 2, 2) self.formLayout.setFieldGrowthPolicy( QtWidgets.QFormLayout.ExpandingFieldsGrow) self.formLayout.setLabelAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTop | QtCore.Qt.AlignTrailing) self.formLayout.setHorizontalSpacing(10) # attribute name self.label = QtWidgets.QLabel(self.frame) self.label.setMinimumSize( QtCore.QSize(self.LABEL_WIDTH, self.LABEL_HEIGHT)) self.label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignTop) # add some space above the label so it lines up self.label.setMargin(2) self.label.setText(pulse.names.toTitle(self.attr['name'])) self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)
def createPanelFrame(parent): """ Create a QFrame with consistent styling for a design view panel """ frame = QtWidgets.QFrame(parent) frame.setObjectName("panelFrame") frame.setStyleSheet(".QFrame#panelFrame{ background-color: rgba(255, 255, 255, 5); }") return frame
def setupUi(self, parent): """ Create the UI that is common to all BuildItem editors, including a basic header and layout. """ # main layout containing header and body layout = QtWidgets.QVBoxLayout(parent) layout.setSpacing(4) layout.setMargin(0) # header frame self.headerFrame = QtWidgets.QFrame(parent) headerColor = 'rgba({0}, {1}, {2}, 40)'.format(*self.getItemColor()) self.headerFrame.setStyleSheet( ".QFrame{{ background-color: {color}; border-radius: 2px; }}". format(color=headerColor)) layout.addWidget(self.headerFrame) # header layout self.headerLayout = QtWidgets.QHBoxLayout(self.headerFrame) self.headerLayout.setContentsMargins(10, 4, 4, 4) # display name label font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.displayNameLabel = QtWidgets.QLabel(self.headerFrame) self.displayNameLabel.setMinimumHeight(18) self.displayNameLabel.setFont(font) self.displayNameLabel.setText(self.getItemDisplayName()) self.headerLayout.addWidget(self.displayNameLabel) # body layout bodyFrame = QtWidgets.QFrame(parent) bodyFrame.setObjectName("bodyFrame") bodyColor = 'rgba(255, 255, 255, 5)'.format(*self.getItemColor()) bodyFrame.setStyleSheet( ".QFrame#bodyFrame{{ background-color: {color}; }}".format( color=bodyColor)) layout.addWidget(bodyFrame) self.mainLayout = QtWidgets.QVBoxLayout(bodyFrame) self.mainLayout.setMargin(6) self.mainLayout.setSpacing(0)
def setupVariantsUi(self, parent): viewutils.clearLayout(self.variantLayout) self.variantsLabel.setText("Variants: {0}".format( len(self.buildItem.variantValues))) for i, variant in enumerate(self.buildItem.variantValues): if i > 0: # divider line dividerLine = QtWidgets.QFrame(parent) dividerLine.setStyleSheet( ".QFrame{ background-color: rgb(0, 0, 0, 15); border-radius: 2px }" ) dividerLine.setMinimumHeight(2) self.variantLayout.addWidget(dividerLine) variantHLayout = QtWidgets.QHBoxLayout(parent) # remove variant button removeVariantBtn = QtWidgets.QPushButton(parent) removeVariantBtn.setText('x') removeVariantBtn.setFixedSize(QtCore.QSize(20, 20)) removeVariantBtn.clicked.connect( partial(self.removeVariantAtIndex, i)) variantHLayout.addWidget(removeVariantBtn) # create attr form for all variant attributes variantVLayout = QtWidgets.QVBoxLayout(parent) variantVLayout.setSpacing(0) variantHLayout.addLayout(variantVLayout) if self.buildItem.variantAttributes: for attr in self.buildItem.actionClass.config['attrs']: if attr['name'] not in self.buildItem.variantAttributes: continue attrValue = variant[attr['name']] # context = variant attrForm = ActionAttrForm.createForm(attr, attrValue, parent=parent) attrForm.valueChanged.connect( partial(self.attrValueChanged, variant, attrForm)) variantVLayout.addWidget(attrForm) else: noAttrsLabel = QtWidgets.QLabel(parent) noAttrsLabel.setText("No variant attributes") noAttrsLabel.setMinimumHeight(24) noAttrsLabel.setContentsMargins(10, 0, 0, 0) noAttrsLabel.setEnabled(False) variantVLayout.addWidget(noAttrsLabel) self.variantLayout.addLayout(variantHLayout)
def setupContentUi(self, parent): """ Build the content ui for this BatchBuildAction. Creates ui to manage the array of variant attributes. """ # constants main layout self.constantsLayout = QtWidgets.QVBoxLayout(parent) self.constantsLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addLayout(self.constantsLayout) spacer = QtWidgets.QSpacerItem(20, 4, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.mainLayout.addItem(spacer) # variant header variantHeader = QtWidgets.QFrame(parent) variantHeader.setStyleSheet( ".QFrame{ background-color: rgb(255, 255, 255, 15); border-radius: 2px }" ) self.mainLayout.addWidget(variantHeader) variantHeaderLayout = QtWidgets.QHBoxLayout(variantHeader) variantHeaderLayout.setContentsMargins(10, 4, 4, 4) variantHeaderLayout.setSpacing(4) self.variantsLabel = QtWidgets.QLabel(variantHeader) self.variantsLabel.setText("Variants: {0}".format( len(self.buildItem.variantValues))) variantHeaderLayout.addWidget(self.variantsLabel) spacer = QtWidgets.QSpacerItem(20, 4, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.mainLayout.addItem(spacer) # add variant button addVariantBtn = QtWidgets.QPushButton(variantHeader) addVariantBtn.setText('+') addVariantBtn.setFixedSize(QtCore.QSize(20, 20)) addVariantBtn.clicked.connect(self.addVariant) variantHeaderLayout.addWidget(addVariantBtn) # variant list main layout self.variantLayout = QtWidgets.QVBoxLayout(parent) self.variantLayout.setContentsMargins(0, 0, 0, 0) self.variantLayout.setSpacing(4) self.mainLayout.addLayout(self.variantLayout) self.setupConstantsUi(parent) self.setupVariantsUi(parent)
def setupUi(self, parent): layout = QtWidgets.QVBoxLayout(parent) layout.setMargin(4) self.frame = QtWidgets.QFrame(parent) self.frame.setObjectName("panelFrame") layout.addWidget(self.frame) hlayout = QtWidgets.QHBoxLayout(self.frame) labelLayout = QtWidgets.QVBoxLayout(parent) hlayout.addLayout(labelLayout) font = QtGui.QFont() font.setPointSize(10) font.setWeight(75) font.setBold(True) self.rigNameLabel = QtWidgets.QLabel(parent) self.rigNameLabel.setFont(font) self.rigNameLabel.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.rigNameLabel.setText( self.getRigNameText(self.blueprintModel.getRigName())) labelLayout.addWidget(self.rigNameLabel) font = QtGui.QFont() font.setItalic(True) self.rigOrBlueprintLabel = QtWidgets.QLabel(parent) self.rigOrBlueprintLabel.setFont(font) labelLayout.addWidget(self.rigOrBlueprintLabel) self.checkBtn = QtWidgets.QPushButton(parent) self.checkBtn.setText("Validate") self.checkBtn.setMaximumWidth(80) self.checkBtn.clicked.connect(self.runValidation) hlayout.addWidget(self.checkBtn) self.buildBtn = QtWidgets.QPushButton(parent) self.buildBtn.setText("Build") self.buildBtn.setMaximumWidth(80) self.buildBtn.clicked.connect(self.runBuild) hlayout.addWidget(self.buildBtn) self.openBPBtn = QtWidgets.QPushButton(parent) self.openBPBtn.setText("Open Blueprint") self.openBPBtn.clicked.connect(self.openBlueprintAndReload) hlayout.addWidget(self.openBPBtn) self.cleanState()