diff --git a/pype/tools/standalonepublish/widgets/widget_components_list.py b/pype/tools/standalonepublish/widgets/widget_components_list.py new file mode 100644 index 0000000000..357bd1e671 --- /dev/null +++ b/pype/tools/standalonepublish/widgets/widget_components_list.py @@ -0,0 +1,90 @@ +from . import QtCore, QtGui, QtWidgets + + +class ComponentsList(QtWidgets.QTableWidget): + def __init__(self, parent=None): + super().__init__(parent=parent) + + self._main_column = 0 + + self.setColumnCount(1) + self.setSelectionBehavior( + QtWidgets.QAbstractItemView.SelectRows + ) + self.setSelectionMode( + QtWidgets.QAbstractItemView.ExtendedSelection + ) + self.setVerticalScrollMode( + QtWidgets.QAbstractItemView.ScrollPerPixel + ) + self.verticalHeader().hide() + + try: + self.verticalHeader().setResizeMode( + QtWidgets.QHeaderView.ResizeToContents + ) + except Exception: + self.verticalHeader().setSectionResizeMode( + QtWidgets.QHeaderView.ResizeToContents + ) + + self.horizontalHeader().setStretchLastSection(True) + self.horizontalHeader().hide() + + def count(self): + return self.rowCount() + + def add_widget(self, widget, row=None): + if row is None: + row = self.count() + + self.insertRow(row) + self.setCellWidget(row, self._main_column, widget) + + self.resizeRowToContents(row) + + return row + + def remove_widget(self, row): + self.removeCellWidget(row, self._main_column) + self.removeRow(row) + + def move_widget(self, widget, newRow): + oldRow = self.indexOfWidget(widget) + if oldRow: + self.insertRow(newRow) + # Collect the oldRow after insert to make sure we move the correct + # widget. + oldRow = self.indexOfWidget(widget) + + self.setCellWidget(newRow, self._main_column, widget) + self.resizeRowToContents(oldRow) + + # Remove the old row + self.removeRow(oldRow) + + def clear_widgets(self): + '''Remove all widgets.''' + self.clear() + self.setRowCount(0) + + def widget_index(self, widget): + index = None + for row in range(self.count()): + candidateWidget = self.widget_at(row) + if candidateWidget == widget: + index = row + break + + return index + + def widgets(self): + widgets = [] + for row in range(self.count()): + widget = self.widget_at(row) + widgets.append(widget) + + return widgets + + def widget_at(self, row): + return self.cellWidget(row, self._main_column) diff --git a/pype/tools/standalonepublish/widgets/widget_tree_components.py b/pype/tools/standalonepublish/widgets/widget_tree_components.py deleted file mode 100644 index 76e5a9bce0..0000000000 --- a/pype/tools/standalonepublish/widgets/widget_tree_components.py +++ /dev/null @@ -1,14 +0,0 @@ -from . import QtCore, QtGui, QtWidgets - - -class TreeComponents(QtWidgets.QTreeWidget): - def __init__(self, parent): - super().__init__(parent) - - self.invisibleRootItem().setFlags(QtCore.Qt.ItemIsEnabled) - self.setIndentation(28) - self.headerItem().setText(0, 'Components') - - self.setRootIsDecorated(False) - - self.itemDoubleClicked.connect(lambda i, c: i.double_clicked(c))