def remove_all(self): self.jointNamesList.clearContents() self.jointNamesList.setRowCount(0) self.jointNamesList.insertRow(0) self.jointNamesList.setItem(0, 0, QtWidgets.QTableWidgetItem("")) self.jointNamesList.setCurrentCell(0, 0) self.apply_names()
def dropEvent(self, event): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) rows_to_move = [[ QtWidgets.QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount()) ] for row_index in rows] for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: drop_row -= 1 for row_index, data in enumerate(rows_to_move): row_index += drop_row self.insertRow(row_index) for column_index, column_data in enumerate(data): self.setItem(row_index, column_index, column_data) event.accept() for row_index in range(len(rows_to_move)): for column_index in range(self.columnCount()): self.item(drop_row + row_index, column_index).setSelected(True)
def add(self): row = max(0, self.jointNamesList.currentRow() or 0) self.jointNamesList.insertRow(row) item = QtWidgets.QTableWidgetItem("") self.jointNamesList.setItem(row, 0, item) self.jointNamesList.setCurrentCell(row, 0) self.apply_names()
def update_name(self, row, column): item = self.jointNamesList.item(row, column) if row == self.jointNamesList.rowCount() - 1 and item.text(): self.jointNamesList.insertRow(row + 1) self.jointNamesList.setItem( row + 1, 0, QtWidgets.QTableWidgetItem("")) self.apply_names() self.jointNamesList.setCurrentCell(row + 1, 0) self.jointNamesList.editItem(self.jointNamesList.currentItem())
def setupUi(self, Form): Form.setObjectName("Form") Form.resize(403, 299) self.verticalLayout = QtWidgets.QVBoxLayout(Form) self.verticalLayout.setObjectName("verticalLayout") self.label = QtWidgets.QLabel(Form) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.jointNamesList = QtWidgets.QTableWidget(Form) self.jointNamesList.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.jointNamesList.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop) self.jointNamesList.setAlternatingRowColors(True) self.jointNamesList.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.jointNamesList.setObjectName("jointNamesList") self.jointNamesList.setColumnCount(1) self.jointNamesList.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.jointNamesList.setHorizontalHeaderItem(0, item) self.jointNamesList.horizontalHeader().setCascadingSectionResizes(True) self.jointNamesList.horizontalHeader().setDefaultSectionSize(40) self.jointNamesList.horizontalHeader().setStretchLastSection(True) self.horizontalLayout.addWidget(self.jointNamesList) self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.add_pushButton = QtWidgets.QPushButton(Form) self.add_pushButton.setObjectName("add_pushButton") self.verticalLayout_2.addWidget(self.add_pushButton) self.remove_pushButton = QtWidgets.QPushButton(Form) self.remove_pushButton.setObjectName("remove_pushButton") self.verticalLayout_2.addWidget(self.remove_pushButton) self.removeAll_pushButton = QtWidgets.QPushButton(Form) self.removeAll_pushButton.setObjectName("removeAll_pushButton") self.verticalLayout_2.addWidget(self.removeAll_pushButton) self.line = QtWidgets.QFrame(Form) self.line.setMinimumSize(QtCore.QSize(0, 16)) self.line.setBaseSize(QtCore.QSize(0, 0)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.verticalLayout_2.addWidget(self.line) self.moveUp_pushButton = QtWidgets.QPushButton(Form) self.moveUp_pushButton.setObjectName("moveUp_pushButton") self.verticalLayout_2.addWidget(self.moveUp_pushButton) self.moveDown_pushButton = QtWidgets.QPushButton(Form) self.moveDown_pushButton.setObjectName("moveDown_pushButton") self.verticalLayout_2.addWidget(self.moveDown_pushButton) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_2.addItem(spacerItem) self.horizontalLayout.addLayout(self.verticalLayout_2) self.verticalLayout.addLayout(self.horizontalLayout) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form)
def populate_controls(self): jointNames = self.root.attr("joint_names").get().split(",") if jointNames[-1]: jointNames.append("") self.jointNamesList.clearContents() self.jointNamesList.setRowCount(0) for i, name in enumerate(jointNames): self.jointNamesList.insertRow(i) item = QtWidgets.QTableWidgetItem(name.strip()) self.jointNamesList.setItem(i, 0, item)
def _setRowItem(self, rowPosition, itemIndex, itemContent): """Set the row item Args: rowPosition (Int): Row Index itemIndex (Int): Item Index itemContent (Str): Item content Returns: QTableWidgetItem: Item """ item = QtWidgets.QTableWidgetItem(itemContent) self.table.setItem(rowPosition, itemIndex, item) return item
def dropEvent(self, event): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) rows_to_move = [[ QtWidgets.QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount()) ] for row_index in rows] rows_widgets_to_move = [ self.cellWidget(row_index, 4) for row_index in rows ] for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: drop_row -= 1 for row_index, data in enumerate(rows_to_move): inRow = row_index + drop_row self.insertRow(inRow) for column_index, column_data in enumerate(data): if column_index != 4: self.setItem(inRow, column_index, column_data) # self.setCellWidget(inRow, 4, rows_widgets_to_move[row_index]) # moving the combo box crash maya. Current workaround is # create a new one and destroy the old # someone knows better way? Thanks :) operation_comboBox = QtWidgets.QComboBox() operation_comboBox.setObjectName("operation") operation_comboBox.addItem("Move Channel") operation_comboBox.addItem("Proxy Channel") size_polizy = QtWidgets.QComboBox.AdjustToContentsOnFirstShow operation_comboBox.SizeAdjustPolicy(size_polizy) oComboOld = rows_widgets_to_move[row_index] self.setCellWidget(inRow, 4, operation_comboBox) operation_comboBox.setCurrentIndex(oComboOld.currentIndex()) oComboOld.deleteLater() event.accept() for row_index in range(len(rows_to_move)): self.item(drop_row + row_index, 0).setSelected(True) self.item(drop_row + row_index, 1).setSelected(True) self.item(drop_row + row_index, 2).setSelected(True) self.item(drop_row + row_index, 3).setSelected(True)
def config_table(self): def value_update(attr_config, *args): """Update the attribute from the channel value Args: ch (QWidget): The channel widget atttr_config (dict): attribute configuration data *args: the current value """ if self.trigger_value_update: try: cmds.setAttr(self.namespace_sync(attr_config["fullName"]), args[0]) # refresh button color while value update for i in xrange(self.rowCount()): item = self.item(i, 0) attr = item.data(QtCore.Qt.UserRole) if (self.namespace_sync(attr["fullName"]) == self.namespace_sync( attr_config["fullName"])): button = self.cellWidget(i, 1) refresh_key_button_color( button, self.namespace_sync(attr_config["fullName"])) break except RuntimeError: fname = self.namespace_sync(attr_config["fullName"]) pm.displayWarning("Channel {} not Found.".format(fname) + " Maybe the channel master" + " contains not existing channels. " + "Review Channel Master configuration") def open_undo_chunk(): cmds.undoInfo(openChunk=True) def close_undo_chunk(): cmds.undoInfo(closeChunk=True) if not self.chan_config: return i = 0 for ch in self.chan_config["channels"]: at = self.chan_config["channels_data"][ch] at_name = self.namespace_sync(at["fullName"]) try: val = cmds.getAttr(at_name) except ValueError: pm.displayWarning( "{} not found. Maybe wrong NameSpace?".format(at_name)) continue if at["type"] in cmu.ATTR_SLIDER_TYPES: if at["type"] == "long": Type = "int" else: Type = "float" ch_ctl = pyflow_widgets.pyf_Slider(self, Type=Type, defaultValue=val, sliderRange=(at["min"], at["max"])) ch_ctl.valueChanged.connect( partial(value_update, at)) ch_ctl.sliderPressed.connect(open_undo_chunk) ch_ctl.sliderReleased.connect(close_undo_chunk) elif at["type"] == "bool": ch_ctl = QtWidgets.QWidget() layout = QtWidgets.QHBoxLayout(ch_ctl) cbox = QtWidgets.QCheckBox() cbox.setStyleSheet(CHECKBOX_STYLE) ch_ctl.setStyleSheet(CHECKBOX_STYLE) layout.addWidget(cbox) layout.setAlignment(QtCore.Qt.AlignCenter) layout.setContentsMargins(0, 0, 0, 0) ch_ctl.setLayout(layout) if val: cbox.setChecked(True) cbox.toggled.connect( partial(value_update, at)) elif at["type"] == "enum": # we handle special naming for separators if at["niceName"] == "__________": continue else: ch_ctl = QtWidgets.QComboBox() ch_ctl.addItems(at["items"]) ch_ctl.setCurrentIndex(val) ch_ctl.currentIndexChanged.connect( partial(value_update, at)) label_item = QtWidgets.QTableWidgetItem(at["niceName"] + " ") if at["color"]: color = QtGui.QColor() color.setRgbF(*at["color"]) label_item.setBackground(color) label_item.setData(QtCore.Qt.UserRole, at) label_item.setTextAlignment(QtCore.Qt.AlignRight) label_item.setToolTip(self.namespace_sync(at["fullName"])) label_item.setFlags(label_item.flags() ^ QtCore.Qt.ItemIsEditable) key_button = self.create_key_button(at) self.insertRow(i) self.setRowHeight(i, 17) self.setItem(i, 0, label_item) self.setCellWidget(i, 1, key_button) self.setCellWidget(i, 2, ch_ctl) self.track_widgets.append([key_button, ch_ctl]) i += 1
def setupUi(self, Form): Form.setObjectName("Form") Form.resize(832, 537) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.channelMapping_tableWidget = TableWidgetDragRowsChannelWrangler( Form) self.channelMapping_tableWidget.setDragDropMode( QtWidgets.QAbstractItemView.InternalMove) self.channelMapping_tableWidget.setDefaultDropAction( QtCore.Qt.MoveAction) self.channelMapping_tableWidget.setAlternatingRowColors(True) self.channelMapping_tableWidget.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.channelMapping_tableWidget.setCornerButtonEnabled(False) self.channelMapping_tableWidget.setObjectName( "channelMapping_tableWidget") self.channelMapping_tableWidget.setColumnCount(5) self.channelMapping_tableWidget.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.channelMapping_tableWidget.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.channelMapping_tableWidget.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.channelMapping_tableWidget.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.channelMapping_tableWidget.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.channelMapping_tableWidget.setHorizontalHeaderItem(4, item) self.verticalLayout.addWidget(self.channelMapping_tableWidget) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.export_pushButton = QtWidgets.QPushButton(Form) self.export_pushButton.setObjectName("export_pushButton") self.horizontalLayout.addWidget(self.export_pushButton) self.import_pushButton = QtWidgets.QPushButton(Form) self.import_pushButton.setObjectName("import_pushButton") self.horizontalLayout.addWidget(self.import_pushButton) self.verticalLayout.addLayout(self.horizontalLayout) self.apply_pushButton = QtWidgets.QPushButton(Form) self.apply_pushButton.setObjectName("apply_pushButton") self.verticalLayout.addWidget(self.apply_pushButton) self.horizontalLayout_4.addLayout(self.verticalLayout) self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.groupBox = QtWidgets.QGroupBox(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) self.groupBox.setObjectName("groupBox") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.channel_lineEdit = QtWidgets.QLineEdit(self.groupBox) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.channel_lineEdit.sizePolicy().hasHeightForWidth()) self.channel_lineEdit.setSizePolicy(sizePolicy) self.channel_lineEdit.setObjectName("channel_lineEdit") self.horizontalLayout_2.addWidget(self.channel_lineEdit) self.channel_pushButton = QtWidgets.QPushButton(self.groupBox) self.channel_pushButton.setObjectName("channel_pushButton") self.horizontalLayout_2.addWidget(self.channel_pushButton) self.verticalLayout_2.addWidget(self.groupBox) self.groupBox_2 = QtWidgets.QGroupBox(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.groupBox_2.sizePolicy().hasHeightForWidth()) self.groupBox_2.setSizePolicy(sizePolicy) self.groupBox_2.setObjectName("groupBox_2") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.groupBox_2) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.target_lineEdit = QtWidgets.QLineEdit(self.groupBox_2) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.target_lineEdit.sizePolicy().hasHeightForWidth()) self.target_lineEdit.setSizePolicy(sizePolicy) self.target_lineEdit.setObjectName("target_lineEdit") self.horizontalLayout_3.addWidget(self.target_lineEdit) self.target_pushButton = QtWidgets.QPushButton(self.groupBox_2) self.target_pushButton.setObjectName("target_pushButton") self.horizontalLayout_3.addWidget(self.target_pushButton) self.verticalLayout_2.addWidget(self.groupBox_2) self.setRow_pushButton = QtWidgets.QPushButton(Form) self.setRow_pushButton.setObjectName("setRow_pushButton") self.verticalLayout_2.addWidget(self.setRow_pushButton) self.line = QtWidgets.QFrame(Form) self.line.setFrameShadow(QtWidgets.QFrame.Plain) self.line.setLineWidth(2) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.verticalLayout_2.addWidget(self.line) self.setMultiChannel_pushButton = QtWidgets.QPushButton(Form) self.setMultiChannel_pushButton.setObjectName( "setMultiChannel_pushButton") self.verticalLayout_2.addWidget(self.setMultiChannel_pushButton) self.setMultiTarget_pushButton = QtWidgets.QPushButton(Form) self.setMultiTarget_pushButton.setObjectName( "setMultiTarget_pushButton") self.verticalLayout_2.addWidget(self.setMultiTarget_pushButton) self.line_2 = QtWidgets.QFrame(Form) self.line_2.setFrameShadow(QtWidgets.QFrame.Plain) self.line_2.setLineWidth(2) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.verticalLayout_2.addWidget(self.line_2) self.clearSelectedRows_pushButton = QtWidgets.QPushButton(Form) self.clearSelectedRows_pushButton.setObjectName( "clearSelectedRows_pushButton") self.verticalLayout_2.addWidget(self.clearSelectedRows_pushButton) self.clearAll_pushButton = QtWidgets.QPushButton(Form) self.clearAll_pushButton.setObjectName("clearAll_pushButton") self.verticalLayout_2.addWidget(self.clearAll_pushButton) self.line_4 = QtWidgets.QFrame(Form) self.line_4.setFrameShadow(QtWidgets.QFrame.Plain) self.line_4.setLineWidth(2) self.line_4.setFrameShape(QtWidgets.QFrame.HLine) self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_4.setObjectName("line_4") self.verticalLayout_2.addWidget(self.line_4) self.setMoveOp_pushButton = QtWidgets.QPushButton(Form) self.setMoveOp_pushButton.setObjectName("setMoveOp_pushButton") self.verticalLayout_2.addWidget(self.setMoveOp_pushButton) self.setProxyOp_pushButton = QtWidgets.QPushButton(Form) self.setProxyOp_pushButton.setObjectName("setProxyOp_pushButton") self.verticalLayout_2.addWidget(self.setProxyOp_pushButton) self.line_5 = QtWidgets.QFrame(Form) self.line_5.setFrameShadow(QtWidgets.QFrame.Plain) self.line_5.setLineWidth(2) self.line_5.setFrameShape(QtWidgets.QFrame.HLine) self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_5.setObjectName("line_5") self.verticalLayout_2.addWidget(self.line_5) self.groupBox_3 = QtWidgets.QGroupBox(Form) self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_3) self.gridLayout_2.setObjectName("gridLayout_2") self.movePolicy_comboBox = QtWidgets.QComboBox(self.groupBox_3) self.movePolicy_comboBox.setObjectName("movePolicy_comboBox") self.movePolicy_comboBox.addItem("") self.movePolicy_comboBox.addItem("") self.movePolicy_comboBox.addItem("") self.gridLayout_2.addWidget(self.movePolicy_comboBox, 0, 0, 1, 1) self.verticalLayout_2.addWidget(self.groupBox_3) self.groupBox_4 = QtWidgets.QGroupBox(Form) self.groupBox_4.setObjectName("groupBox_4") self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox_4) self.gridLayout_3.setObjectName("gridLayout_3") self.proxyPolicy_comboBox = QtWidgets.QComboBox(self.groupBox_4) self.proxyPolicy_comboBox.setObjectName("proxyPolicy_comboBox") self.proxyPolicy_comboBox.addItem("") self.proxyPolicy_comboBox.addItem("") self.gridLayout_3.addWidget(self.proxyPolicy_comboBox, 0, 0, 1, 1) self.verticalLayout_2.addWidget(self.groupBox_4) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_2.addItem(spacerItem) self.horizontalLayout_4.addLayout(self.verticalLayout_2) self.gridLayout.addLayout(self.horizontalLayout_4, 0, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form)