def set_variant(self, variant): if variant == self.variant: return if variant is None: self.clear() else: self.setEnabled(True) if isinstance(variant, Package): label_name = variant.qualified_name location = variant.uri else: label_name = variant.qualified_package_name location = variant.parent.uri label = "%s@%s" % (label_name, variant.wrapped.location) self.label.setText(label) self.table.clear() rows = [] if variant.description: desc = variant.description max_chars = 1000 if len(desc) > max_chars: desc = desc[:max_chars] + "..." rows.append(("description: ", desc)) if variant.uri: rows.append(("location: ", location)) if variant.timestamp: release_time_str = get_timestamp_str(variant.timestamp) rows.append(("released: ", release_time_str)) if variant.authors: txt = "; ".join(variant.authors) rows.append(("authors: ", txt)) if variant.requires: var_strs = [str(x) for x in variant.requires] if isinstance(variant, Variant): # put variant-specific requires in square brackets if variant.requires: index = find_last_sublist(variant.requires, variant.requires) if index is not None: var_strs[index] = "[%s" % var_strs[index] index2 = index + len(variant.requires) - 1 var_strs[index2] = "%s]" % var_strs[index2] txt = "; ".join(var_strs) rows.append(("requires: ", txt)) self.table.setRowCount(len(rows)) for i, row in enumerate(rows): label, value = row item = QtGui.QTableWidgetItem(label) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTop) self.table.setVerticalHeaderItem(i, item) item = QtGui.QTableWidgetItem(value) self.table.setItem(i, 0, item) vh = self.table.verticalHeader() vh.setVisible(True) self.table.resizeRowsToContents() self.variant = variant
def _set_variant(self, variant, preloaded_packages=None): self.clear() hh = self.horizontalHeader() self.setHorizontalHeaderLabels(["path", "released"]) hh.setResizeMode(0, QtGui.QHeaderView.Interactive) hh.setStretchLastSection(True) hh.setVisible(True) package_paths = self.context_model.packages_path package_filter = PackageFilterList.from_pod( self.context_model.package_filter) if variant and variant.wrapped.location in package_paths: self.version_index = -1 self.reference_version_index = -1 reference_version = None range_ = None if self.reference_variant and self.reference_variant.name == variant.name: reference_version = self.reference_variant.version versions = sorted([reference_version, variant.version]) range_ = VersionRange.as_span(*versions) timestamp = self.context().timestamp if preloaded_packages is not None: if range_ is None: packages = preloaded_packages else: packages = [ x for x in preloaded_packages if x.version in range_ ] else: it = iter_packages(name=variant.name, paths=package_paths, range_=range_) packages = sorted(it, key=lambda x: x.version, reverse=True) self.setRowCount(len(packages)) brush = self.palette().brush(QtGui.QPalette.Active, QtGui.QPalette.Base) for row, package in enumerate(packages): version_str = str(package.version) + ' ' item = QtGui.QTableWidgetItem(version_str) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.setVerticalHeaderItem(row, item) if package.version == variant.version: self.version_index = row update_font(item, bold=True) if reference_version is not None \ and package.version == reference_version: self.reference_version_index = row update_font(item, bold=True, italic=True) def _item(): item_ = QtGui.QTableWidgetItem() item_.setBackground( brush) # get rid of mouse-hover coloring return item_ if package.timestamp: release_str = get_timestamp_str(package.timestamp) in_future = (package.timestamp > timestamp) else: release_str = '-' in_future = False item = _item() txt = package.uri + " " icons = [] if in_future: icon = get_icon_widget( "clock_warning", "package did not exist at time of resolve") icons.append(icon) rule = package_filter.excludes(package) if rule: icon = get_icon_widget( "excluded", "package was excluded by rule %s" % str(rule)) icons.append(icon) if icons: label = QtGui.QLabel(txt) pane = create_pane(icons + [label, None], True, compact=True) self.setCellWidget(row, 0, pane) else: item.setText(txt) self.setItem(row, 0, item) item = _item() item.setText(release_str) self.setItem(row, 1, item) vh = self.verticalHeader() vh.setVisible(True) self.resizeColumnsToContents() hh.setStretchLastSection(True) self.update() self.allow_selection = True self.selectRow(self.version_index) self.allow_selection = False self.variant = variant
def set_package_name(self, package_name): package_paths = self.context_model.packages_path self.packages = {} self.clear() rows = [] busy_cursor = QtGui.QCursor(QtCore.Qt.WaitCursor) QtGui.QApplication.setOverrideCursor(busy_cursor) try: packages = list( iter_packages(name=str(package_name), paths=package_paths)) except RezError: packages = [] if not packages: self.setEnabled(False) self.package_name = None QtGui.QApplication.restoreOverrideCursor() return for i, package in enumerate( sorted(packages, key=lambda x: x.version, reverse=True)): version_str = str(package.version) + ' ' path_str = package.uri + " " release_str = get_timestamp_str(package.timestamp) \ if package.timestamp else '-' enabled = self.callback(package) if self.callback else True rows.append((enabled, version_str, path_str, release_str)) self.packages[i] = package QtGui.QApplication.restoreOverrideCursor() self.setRowCount(len(rows)) first_selectable_row = -1 for i, row in enumerate(rows): enabled, version_str = row[:2] row = row[2:] item = QtGui.QTableWidgetItem(version_str) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.setVerticalHeaderItem(i, item) for j in range(len(row)): item = QtGui.QTableWidgetItem(row[j]) if enabled: if first_selectable_row == -1: first_selectable_row = i else: item.setFlags(QtCore.Qt.NoItemFlags) self.setItem(i, j, item) self.setHorizontalHeaderLabels(["path", "released"]) self.resizeRowsToContents() self.resizeColumnsToContents() vh = self.verticalHeader() vh.setVisible(True) hh = self.horizontalHeader() hh.setStretchLastSection(True) hh.setVisible(True) self.package_name = package_name self.setEnabled(True) if first_selectable_row != -1: self.selectRow(first_selectable_row)
def _set_variant(self, variant, preloaded_packages=None): self.clear() hh = self.horizontalHeader() self.setHorizontalHeaderLabels(["path", "released"]) hh.setResizeMode(0, QtGui.QHeaderView.Interactive) hh.setStretchLastSection(True) hh.setVisible(True) package_paths = self.context_model.packages_path package_filter = PackageFilterList.from_pod(self.context_model.package_filter) if variant and variant.wrapped.location in package_paths: self.version_index = -1 self.reference_version_index = -1 reference_version = None range_ = None if self.reference_variant and self.reference_variant.name == variant.name: reference_version = self.reference_variant.version versions = sorted([reference_version, variant.version]) range_ = VersionRange.as_span(*versions) timestamp = self.context().timestamp if preloaded_packages is not None: if range_ is None: packages = preloaded_packages else: packages = [x for x in preloaded_packages if x.version in range_] else: it = iter_packages(name=variant.name, paths=package_paths, range_=range_) packages = sorted(it, key=lambda x: x.version, reverse=True) self.setRowCount(len(packages)) brush = self.palette().brush(QtGui.QPalette.Active, QtGui.QPalette.Base) for row, package in enumerate(packages): version_str = str(package.version) + ' ' item = QtGui.QTableWidgetItem(version_str) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.setVerticalHeaderItem(row, item) if package.version == variant.version: self.version_index = row update_font(item, bold=True) if reference_version is not None \ and package.version == reference_version: self.reference_version_index = row update_font(item, bold=True, italic=True) def _item(): item_ = QtGui.QTableWidgetItem() item_.setBackground(brush) # get rid of mouse-hover coloring return item_ if package.timestamp: release_str = get_timestamp_str(package.timestamp) in_future = (package.timestamp > timestamp) else: release_str = '-' in_future = False item = _item() txt = package.uri + " " icons = [] if in_future: icon = get_icon_widget( "clock_warning", "package did not exist at time of resolve") icons.append(icon) rule = package_filter.excludes(package) if rule: icon = get_icon_widget( "excluded", "package was excluded by rule %s" % str(rule)) icons.append(icon) if icons: label = QtGui.QLabel(txt) pane = create_pane(icons + [label, None], True, compact=True) self.setCellWidget(row, 0, pane) else: item.setText(txt) self.setItem(row, 0, item) item = _item() item.setText(release_str) self.setItem(row, 1, item) vh = self.verticalHeader() vh.setVisible(True) self.resizeColumnsToContents() hh.setStretchLastSection(True) self.update() self.allow_selection = True self.selectRow(self.version_index) self.allow_selection = False self.variant = variant
def set_package_name(self, package_name): package_paths = self.context_model.packages_path self.packages = {} self.clear() rows = [] busy_cursor = QtGui.QCursor(QtCore.Qt.WaitCursor) QtGui.QApplication.setOverrideCursor(busy_cursor) try: packages = list(iter_packages(name=str(package_name), paths=package_paths)) except RezError: packages = [] if not packages: self.setEnabled(False) self.package_name = None QtGui.QApplication.restoreOverrideCursor() return for i, package in enumerate(sorted(packages, key=lambda x: x.version, reverse=True)): version_str = str(package.version) + ' ' path_str = package.uri + " " release_str = get_timestamp_str(package.timestamp) \ if package.timestamp else '-' enabled = self.callback(package) if self.callback else True rows.append((enabled, version_str, path_str, release_str)) self.packages[i] = package QtGui.QApplication.restoreOverrideCursor() self.setRowCount(len(rows)) first_selectable_row = -1 for i, row in enumerate(rows): enabled, version_str = row[:2] row = row[2:] item = QtGui.QTableWidgetItem(version_str) item.setTextAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.setVerticalHeaderItem(i, item) for j in range(len(row)): item = QtGui.QTableWidgetItem(row[j]) if enabled: if first_selectable_row == -1: first_selectable_row = i else: item.setFlags(QtCore.Qt.NoItemFlags) self.setItem(i, j, item) self.setHorizontalHeaderLabels(["path", "released"]) self.resizeRowsToContents() self.resizeColumnsToContents() vh = self.verticalHeader() vh.setVisible(True) hh = self.horizontalHeader() hh.setStretchLastSection(True) hh.setVisible(True) self.package_name = package_name self.setEnabled(True) if first_selectable_row != -1: self.selectRow(first_selectable_row)