def setModified(self, item: QTreeWidgetItem, modified: bool): f = item.font(0) f.setItalic(modified) item.setFont(0, f) item.setFont(1, f) f.setBold(modified) item.setFont(2, f)
def fillTreeWidget(self): """ Заполняем tree widget записями, на основе разбиения на категории""" self._loadingData = True self._ui.twEntries.clear() for key in self._categories: self._categories[key] = sorted(self._categories[key], key=attrgetter('title')) item = DateTreeWidgetItem(self._ui.twEntries) font = item.font(0) font.setPointSize(11) font.setBold(True) item.setFont(0, font) if settings.showEntryCountInCategory(): item.setText(0, "{} ({})".format(key, len(self._categories[key]))) else: item.setText(0, key) item.setData(0, Qt.UserRole, self._keyForCategory[key]) for e in self._categories[key]: entryItem = QTreeWidgetItem(item) font = entryItem.font(0) font.setPointSize(12) entryItem.setCheckState(0, Qt.Checked if e.interesting else Qt.Unchecked) entryItem.setText(0, e.title) entryItem.setFont(0, font) entryItem.setData(0, Qt.UserRole, e.id) self._setToolTipForItem(e, entryItem) self._ui.twEntries.sortItems(0, Qt.AscendingOrder) self._ui.twEntries.expandAll() self._loadingData = False
def _loadCardGroup(self, groupName, records, parent=None): if (not groupName): groupName = 'None' cards = self.cardWidget() factory = self.factory() # create the group item group_item = QTreeWidgetItem(parent, [groupName]) font = group_item.font(0) font.setBold(True) font.setPointSize(font.pointSize() + 2) group_item.setFont(0, font) group_item.setFlags(Qt.ItemIsEnabled) # load sub-groups if (type(records) == dict): for subgroup, records in sorted(records.items()): self._loadCardGroup(subgroup, records, group_item) else: for record in records: widget = factory.createCard(cards, record) if (not widget): continue widget.adjustSize() # create the card item item = QTreeWidgetItem(group_item) item.setSizeHint(0, QSize(0, widget.height())) cards.setItemWidget(item, 0, widget) group_item.setExpanded(True)
def _loadCardGroup( self, groupName, records, parent = None ): if ( not groupName ): groupName = 'None' cards = self.cardWidget() factory = self.factory() # create the group item group_item = QTreeWidgetItem(parent, [groupName]) font = group_item.font(0) font.setBold(True) font.setPointSize(font.pointSize() + 2) group_item.setFont(0, font) group_item.setFlags(Qt.ItemIsEnabled) # load sub-groups if ( type(records) == dict ): for subgroup, records in sorted(records.items()): self._loadCardGroup(subgroup, records, group_item) else: for record in records: widget = factory.createCard(cards, record) if ( not widget ): continue widget.adjustSize() # create the card item item = QTreeWidgetItem(group_item) item.setSizeHint(0, QSize(0, widget.height())) cards.setItemWidget(item, 0, widget) group_item.setExpanded(True)
def _set_root_path_message(self, message): self.clear() base_item = QTreeWidgetItem([message]) font = base_item.font(0) font.setItalic(True) base_item.setFont(0, font) self.addTopLevelItem(base_item)
def createSeparatorItem( self ): """ Creates a new separator item. :return <QTreeWidgetItem> """ item = QTreeWidgetItem([' ']) font = item.font(0) font.setStrikeOut(True) item.setFont(0, font) item.setData(0, Qt.UserRole, qt.wrapVariant('separator')) flags = item.flags() flags ^= Qt.ItemIsDropEnabled item.setFlags(flags) return item
def createSeparatorItem(self): """ Creates a new separator item. :return <QTreeWidgetItem> """ item = QTreeWidgetItem([' ']) font = item.font(0) font.setStrikeOut(True) item.setFont(0, font) item.setData(0, Qt.UserRole, qt.wrapVariant('separator')) flags = item.flags() flags ^= Qt.ItemIsDropEnabled item.setFlags(flags) return item
def createTreeItem(self, object): icon = object.getIcon() label = object.formatID() tree = QTreeWidgetItem([label]) tree.setData(0, Qt.UserRole, QVariant(object['id'])) tooltip = object.getToolTip() if tooltip: tree.setToolTip(0, tooltip) if icon: tree.setIcon(0, QIcon(icon)) font = tree.font(0) if object['editable']: font.setBold(True) if not object['references']: font.setItalic(True) tree.setFont(0, font) if not object['editable']: unsetFlag(tree, Qt.ItemIsEditable) return tree
def __createEntry(self, description, entryText, entryVersion): """ Private method to generate a program entry. @param description descriptive text (string or QString) @param entryText text to show (string or QString) @param entryVersion version string to show (string or QString). """ itm = QTreeWidgetItem(self.programsList, QStringList(description)) font = itm.font(0) font.setBold(True) itm.setFont(0, font) if len(entryVersion): itm2 = QTreeWidgetItem(itm, QStringList() << entryText << entryVersion) itm.setExpanded(True) else: itm.setText(1, self.trUtf8("(not found)")) QApplication.processEvents() self.programsList.header().resizeSections(QHeaderView.ResizeToContents) self.programsList.header().setStretchLastSection(True)
def display(self): ''' Initialize top-level items ''' if len(self.items) == 0: return self.tree.clear() #If there is only one item then set it as the root item if len(self.items) == 1: rootItem = self.items[0] #Set root font rtFont = rootItem.font(0) rtFont.setBold(True) rootItem.setFont(0,rtFont) #Add the tree item to the tree widget self.tree.addTopLevelItem(rootItem) rootItem.setExpanded(True) else: rootItem = QTreeWidgetItem(self.tree) rootItem.setText(0,self.title) rootItem.setIcon(0,QIcon(self.rootResource)) #Set root font rtFont = rootItem.font(0) rtFont.setBold(True) rootItem.setFont(0,rtFont) rootItem.addChildren(self.items) rootItem.setExpanded(True) #Force the horizontal scrollbar to show self.tree.header().setResizeMode(QHeaderView.ResizeToContents)
def display(self): ''' Initialize top-level items ''' if len(self.items) == 0: return self.tree.clear() #If there is only one item then set it as the root item if len(self.items) == 1: rootItem = self.items[0] #Set root font rtFont = rootItem.font(0) rtFont.setBold(True) rootItem.setFont(0, rtFont) #Add the tree item to the tree widget self.tree.addTopLevelItem(rootItem) rootItem.setExpanded(True) else: rootItem = QTreeWidgetItem(self.tree) rootItem.setText(0, self.title) rootItem.setIcon(0, QIcon(self.rootResource)) #Set root font rtFont = rootItem.font(0) rtFont.setBold(True) rootItem.setFont(0, rtFont) rootItem.addChildren(self.items) rootItem.setExpanded(True) #Force the horizontal scrollbar to show self.tree.header().setResizeMode(QHeaderView.ResizeToContents)
def __createProgramEntry(self, description, exe, versionCommand = "", versionStartsWith = "", versionPosition = 0, version = "", versionCleanup = None, versionRe = None): """ Private method to generate a program entry. @param description descriptive text (string or QString) @param exe name of the executable program (string) @param versionCommand command line switch to get the version info (string) if this is empty, the given version will be shown. @param versionStartsWith start of line identifying version info (string) @param versionPosition index of part containing the version info (integer) @keyparam version version string to show (string) @keyparam versionCleanup tuple of two integers giving string positions start and stop for the version string (tuple of integers) @keyparam versionRe regexp to determine the line identifying version info (string). Takes precedence over versionStartsWith. @return version string of detected or given version (string) """ itm = QTreeWidgetItem(self.programsList, QStringList(description)) font = itm.font(0) font.setBold(True) itm.setFont(0, font) if not exe: itm.setText(1, self.trUtf8("(not configured)")) else: if os.path.isabs(exe): if not Utilities.isExecutable(exe): exe = "" else: exe = Utilities.getExecutablePath(exe) if exe: if versionCommand and \ (versionStartsWith != "" or \ (versionRe is not None and versionRe != "")) and \ versionPosition: proc = QProcess() proc.setProcessChannelMode(QProcess.MergedChannels) proc.start(exe, QStringList(versionCommand)) finished = proc.waitForFinished(10000) if finished: output = \ unicode(proc.readAllStandardOutput(), str(Preferences.getSystem("IOEncoding")), 'replace') if versionRe is None: versionRe = "^%s" % re.escape(versionStartsWith) versionRe = re.compile(versionRe, re.UNICODE) for line in output.splitlines(): if versionRe.search(line): try: version = line.split()[versionPosition] if versionCleanup: version = \ version[versionCleanup[0]:versionCleanup[1]] break except IndexError: version = self.trUtf8("(unknown)") else: version = self.trUtf8("(not executable)") itm2 = QTreeWidgetItem(itm, QStringList() << exe << version) itm.setExpanded(True) else: itm.setText(1, self.trUtf8("(not found)")) QApplication.processEvents() self.programsList.header().resizeSections(QHeaderView.ResizeToContents) self.programsList.header().setStretchLastSection(True) return version