def __init__(self, parent=None, *args, **kwargs): QtWidgets.QTableWidget.__init__(self, parent, *args, **kwargs) self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.setAlternatingRowColors(True) self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.setShowGrid(False) self.setColumnCount(5) self.setObjectName("previous_versions_table_widget") self.setColumnCount(5) self.setRowCount(0) self.setHorizontalHeaderItem(0, QtWidgets.QTableWidgetItem()) self.setHorizontalHeaderItem(1, QtWidgets.QTableWidgetItem()) self.setHorizontalHeaderItem(2, QtWidgets.QTableWidgetItem()) self.setHorizontalHeaderItem(3, QtWidgets.QTableWidgetItem()) self.setHorizontalHeaderItem(4, QtWidgets.QTableWidgetItem()) self.horizontalHeader().setStretchLastSection(True) self.verticalHeader().setStretchLastSection(False) tool_tip_html = \ "<html><head/><body><p>Right click to:</p><ul style=\"" \ "margin-top: 0px; margin-bottom: 0px; margin-left: 0px; " \ "margin-right: 0px; -qt-list-indent: 1;\"><li><span style=\" " \ "font-weight:600;\">Copy Path</span></li><li><span style=\" " \ "font-weight:600;\">Browse Path</span></li><li><span style=\" " \ "font-weight:600;\">Change Description</span></li></ul>" \ "<p>Double click to:</p><ul style=\"margin-top: 0px; " \ "margin-bottom: 0px; margin-left: 0px; margin-right: 0px; " \ "-qt-list-indent: 1;\"><li style=\" margin-top:12px; " \ "margin-bottom:12px; margin-left:0px; margin-right:0px; " \ "-qt-block-indent:0; text-indent:0px;\"><span style=\" " \ "font-weight:600;\">Open</span></li></ul></body></html>" try: self.setToolTip( QtWidgets.QApplication.translate( "Dialog", tool_tip_html, None, QtWidgets.QApplication.UnicodeUTF8)) except AttributeError: self.setToolTip( QtWidgets.QApplication.translate("Dialog", tool_tip_html, None)) self.versions = [] self.labels = [ '#', 'App', 'Created By', 'Updated By', 'Size', 'Date', 'Description', ] self.setColumnCount(len(self.labels))
def fill_table_widget(self): """fills the table widget with data """ task_data = self.get_filtered_entities() self.data_table_widget.clear() self.data_table_widget.setRowCount(len(task_data)) for i, t_data in enumerate(task_data): item = QtWidgets.QTableWidgetItem(t_data.name) self.data_table_widget.setItem(i, 0, item)
def _setup_ui(self): """create the ui elements """ self.resize(1350, 950) self.vertical_layout = QtWidgets.QVBoxLayout(self) # Dialog Label self.dialog_label = QtWidgets.QLabel(self) self.dialog_label.setText('Task Manager') self.dialog_label.setStyleSheet("color: rgb(71, 143, 202);font: 18pt;") self.vertical_layout.addWidget(self.dialog_label) # Title Line line = QtWidgets.QFrame(self) line.setFrameShape(QtWidgets.QFrame.HLine) line.setFrameShadow(QtWidgets.QFrame.Sunken) self.vertical_layout.addWidget(line) # -------------------------------------------- # Filter Fields label_role = QtWidgets.QFormLayout.LabelRole field_role = QtWidgets.QFormLayout.FieldRole expanding = QtWidgets.QSizePolicy.Expanding fixed = QtWidgets.QSizePolicy.Fixed minimum = QtWidgets.QSizePolicy.Minimum # Filters Form Layout self.filters_form_layout = QtWidgets.QFormLayout() self.filters_form_layout.setLabelAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.vertical_layout.addLayout(self.filters_form_layout) # Filer By Label i = 0 self.filter_by_label = QtWidgets.QLabel(self) self.filter_by_label.setText('Filter By') self.filters_form_layout.setWidget(i, field_role, self.filter_by_label) i += 1 # Project # Label self.filter_by_project_label = QtWidgets.QLabel(self) self.filter_by_project_label.setText('Project') self.filters_form_layout.setWidget(i, label_role, self.filter_by_project_label) # Field self.filter_by_project_combo_box = QtWidgets.QComboBox(self) self.filter_by_project_combo_box.setSizePolicy(expanding, fixed) self.filter_by_project_combo_box.setEditable(True) self.filters_form_layout.setWidget(i, field_role, self.filter_by_project_combo_box) i += 1 # Entity Type # Label self.filter_by_entity_type_label = QtWidgets.QLabel(self) self.filter_by_entity_type_label.setText('Entity Type') self.filters_form_layout.setWidget(i, label_role, self.filter_by_entity_type_label) # Field self.filter_by_entity_type_combo_box = QtWidgets.QComboBox(self) self.filter_by_entity_type_combo_box.setSizePolicy(expanding, fixed) self.filters_form_layout.setWidget( i, field_role, self.filter_by_entity_type_combo_box) i += 1 # Task Type # Label self.filter_by_task_type_label = QtWidgets.QLabel(self) self.filter_by_task_type_label.setText('Task Type') self.filters_form_layout.setWidget(i, label_role, self.filter_by_task_type_label) # Field self.filter_by_task_type_combo_box = QtWidgets.QComboBox(self) self.filter_by_task_type_combo_box.setSizePolicy(expanding, fixed) self.filters_form_layout.setWidget(i, field_role, self.filter_by_task_type_combo_box) i += 1 # Sequence # Only visible when entity type is Shot # Label self.filter_by_sequence_label = QtWidgets.QLabel(self) self.filter_by_sequence_label.setText('Sequence') self.filters_form_layout.setWidget(i, label_role, self.filter_by_sequence_label) # Field self.filter_by_sequence_combo_box = QtWidgets.QComboBox(self) self.filter_by_sequence_combo_box.setSizePolicy(expanding, fixed) self.filters_form_layout.setWidget(i, field_role, self.filter_by_sequence_combo_box) i += 1 # Resource # Label self.filter_by_resource_label = QtWidgets.QLabel(self) self.filter_by_resource_label.setText('Resource') self.filters_form_layout.setWidget(i, label_role, self.filter_by_resource_label) # Field self.filter_by_resource_combo_box = QtWidgets.QComboBox(self) self.filter_by_resource_combo_box.setSizePolicy(expanding, fixed) self.filters_form_layout.setWidget(i, field_role, self.filter_by_resource_combo_box) i += 1 # ------------------------------------------------ # Filter Button self.filter_button_horizontal_layout = QtWidgets.QHBoxLayout(self) self.filters_form_layout.setLayout( i, field_role, self.filter_button_horizontal_layout) self.filter_push_button = QtWidgets.QPushButton(self) self.filter_push_button.setText('-> Apply Filter <-') self.filter_button_horizontal_layout.addWidget(self.filter_push_button) # spacer spacer = QtWidgets.QSpacerItem(40, 20, expanding, minimum) self.filter_button_horizontal_layout.addItem(spacer) # ------------------------------------------------ # The main table widget self.data_table_widget = QtWidgets.QTableWidget(self) self.data_table_widget.setAutoFillBackground(True) self.data_table_widget.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self.data_table_widget.setColumnCount(2) self.data_table_widget.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.data_table_widget.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.data_table_widget.setHorizontalHeaderItem(1, item) self.data_table_widget.horizontalHeader().setStretchLastSection(True) self.vertical_layout.addWidget(self.data_table_widget)
def update_content(self, versions): """updates the content with the given versions data """ import os import datetime logger.debug('VersionsTableWidget.update_content() is started') self.clear() self.versions = versions self.setRowCount(len(versions)) def set_published_font(item): """sets the font for the given item :param item: the a QTableWidgetItem """ my_font = item.font() my_font.setBold(True) item.setFont(my_font) foreground = item.foreground() foreground.setColor(QtGui.QColor(0, 192, 0)) item.setForeground(foreground) # update the previous versions list from anima import defaults for i, version in enumerate(versions): is_published = version.is_published absolute_full_path = os.path.normpath( os.path.expandvars(version.full_path)).replace('\\', '/') version_file_exists = os.path.exists(absolute_full_path) c = 0 # ------------------------------------ # version_number item = QtWidgets.QTableWidgetItem(str(version.version_number)) # align to center and vertical center item.setTextAlignment(0x0004 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # created_with item = QtWidgets.QTableWidgetItem() if version.created_with: from anima.ui import utils as ui_utils item.setIcon(ui_utils.get_icon(version.created_with.lower())) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # user.name created_by = '' if version.created_by_id: created_by = defaults.user_names_lut[version.created_by_id] item = QtWidgets.QTableWidgetItem(created_by) # align to left and vertical center item.setTextAlignment(0x0001 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # user.name updated_by = '' if version.updated_by_id: updated_by = defaults.user_names_lut[version.updated_by_id] item = QtWidgets.QTableWidgetItem(updated_by) # align to left and vertical center item.setTextAlignment(0x0001 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # file size # get the file size # file_size_format = "%.2f MB" file_size = -1 if version_file_exists: file_size = float( os.path.getsize(absolute_full_path)) / 1048576 from anima import defaults item = QtWidgets.QTableWidgetItem(defaults.file_size_format % file_size) # align to left and vertical center item.setTextAlignment(0x0001 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # date # get the file date file_date = datetime.datetime.today() if version_file_exists: file_date = datetime.datetime.fromtimestamp( os.path.getmtime(absolute_full_path)) item = QtWidgets.QTableWidgetItem( file_date.strftime(defaults.date_time_format)) # align to left and vertical center item.setTextAlignment(0x0001 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # ------------------------------------ # description item = QtWidgets.QTableWidgetItem(version.description) # align to left and vertical center item.setTextAlignment(0x0001 | 0x0080) if is_published: set_published_font(item) if not version_file_exists: item.setBackground(QtGui.QColor(64, 0, 0)) self.setItem(i, c, item) c += 1 # ------------------------------------ # resize the first column self.resizeRowsToContents() self.resizeColumnsToContents() self.resizeRowsToContents() logger.debug('VersionsTableWidget.update_content() is finished')