def resetItems(self): from qtpy.QtGui import QStandardItem from qtpy.QtCore import Qt # Empty the model before reset self.readingListModel.clear() # Reset index = 0 todayIndex = None filterEntry = self.filterEntry.text() for key, value in self.plan.items(): checked, passages = value if not (self.hideCheckedItems and checked) and ( filterEntry == "" or (filterEntry != "" and filterEntry.lower() in passages.lower())): item = QStandardItem("{0}. {1}".format(key, passages)) item.setToolTip("{0}{1}{2}".format(self.translation[8], key, self.translation[9])) if key == self.todayNo: todayIndex = index item.setCheckable(True) item.setCheckState(Qt.CheckState.Checked if checked else Qt. CheckState.Unchecked) self.readingListModel.appendRow(item) index += 1 if todayIndex is not None: self.readingList.setCurrentIndex( self.readingListModel.index(todayIndex, 0))
def create_table_item(column, itemname, invalid_value_count, log_size, callable, *args): item = QStandardItem() item.setEditable(False) #format if there is invalid data entries if invalid_value_count == -1: item.setData(DEEP_RED, Qt.BackgroundRole) item.setToolTip( "All of the values in the log are marked invalid, none of them are filtered." ) elif invalid_value_count > 0: saturation = 10 + (170 * (invalid_value_count / (log_size + invalid_value_count))) item.setData(QColor.fromHsv(0, saturation, 255), Qt.BackgroundRole) aux_verb = "is" if invalid_value_count == 1 else "are" item.setToolTip( f"{invalid_value_count}/{log_size+invalid_value_count} of the values in the log" f" {aux_verb} marked invalid, and {aux_verb} filtered.") try: item.setText(callable(*args)) except Exception as exc: logger.warning("Error setting column {} for log {}: {}".format( column, itemname, str(exc))) return item
def commentaryListView(self): # https://doc.qt.io/archives/qtforpython-5.12/PySide2/QtCore/QStringListModel.html # https://gist.github.com/minoue/9f384cd36339429eb0bf # https://www.pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/ list = QListView() list.setEditTriggers(QAbstractItemView.NoEditTriggers) model = QStandardItemModel(list) for index, commentary in enumerate(self.parent.commentaryFullNameList): item = QStandardItem(commentary) item.setToolTip(self.parent.commentaryList[index]) #item.setCheckable(True) #item.setCheckState(Qt.CheckState.Checked) #item.setCheckState(Qt.CheckState.Unchecked) #print(item.checkState() is Qt.CheckState.Checked) model.appendRow(item) #model = QStringListModel(self.parent.commentaryList) #model = QStringListModel(self.parent.commentaryFullNameList) list.setModel(model) if config.commentaryText in self.parent.commentaryList: list.setCurrentIndex( model.index( self.parent.commentaryList.index(config.commentaryText), 0)) list.selectionModel().selectionChanged.connect(self.commentarySelected) return list
def addItem(self, text, data=None, toolTip=None): item = QStandardItem() item.setText(text) if data is None: item.setData(text) else: item.setData(data) if toolTip is not None: item.setToolTip(toolTip) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable) item.setData(Qt.Checked if text in self.checkItems else Qt.Unchecked, Qt.CheckStateRole) self.model().appendRow(item)
def reloadFilters(self): self.filters = self.db.getAll() self.dataViewModel.clear() rowCount = 0 for bible, description in self.filters: item = QStandardItem(bible) item.setToolTip(bible) item.setCheckable(True) self.dataViewModel.setItem(rowCount, 0, item) item = QStandardItem(description) self.dataViewModel.setItem(rowCount, 1, item) rowCount += 1 self.dataViewModel.setHorizontalHeaderLabels([ config.thisTranslation["filter2"], config.thisTranslation["pattern"] ]) self.filtersTable.resizeColumnsToContents()
def populatePortList(self, model, tv, ports): tv.setModel(model) root = model.invisibleRootItem() portsdict = {} for port in ports: if port.client not in portsdict: portsdict[port.client] = [] portsdict[port.client].append(port) for client in humansorted(portsdict): clientitem = QStandardItem(client) for port in humansorted(portsdict[client], key=attrgetter("group", "order", "name")): portspec = (port.client, port.name) if port.pretty_name: label = "%s (%s)" % (port.pretty_name, port.name) else: label = port.name portitem = QStandardItem(label) portitem.setData(portspec) portitem.setCheckable(True) portitem.setUserTristate(False) # Check box toggling is done in the treeview clicked handler "on_port_clicked" portitem.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) portitem.setToolTip(self.makePortTooltip(port)) if portspec in self.rec_sources: portitem.setCheckState(2) clientitem.appendRow(portitem) root.appendRow(clientitem) tv.expandAll()
def resetItems(self): self.isUpdating = True # Empty the model before reset self.dataViewModel.clear() # Reset self.data = self.getOptions() filterEntry = self.filterEntry.text().lower() rowCount = 0 for flag, value in self.data.items(): configValue, default, tooltip, *_ = value if filterEntry == "" or (filterEntry != "" and (filterEntry in flag.lower() or filterEntry in tooltip.lower())): # 1st column item = QStandardItem(flag) item.setToolTip(tooltip) item.setCheckable(True) item.setCheckState(Qt.CheckState.Checked if configValue else Qt.CheckState.Unchecked) self.dataViewModel.setItem(rowCount, 0, item) # 2nd column item = QStandardItem(str(default)) self.dataViewModel.setItem(rowCount, 1, item) # 3rd column tooltip = tooltip.replace("\n", " ") item = QStandardItem(tooltip) item.setToolTip(tooltip) self.dataViewModel.setItem(rowCount, 2, item) # add row count rowCount += 1 self.dataViewModel.setHorizontalHeaderLabels([ config.thisTranslation["flag"], config.thisTranslation["default"], config.thisTranslation["description"] ]) self.dataView.resizeColumnsToContents() self.isUpdating = False
def loadBibleSelection(self): self.settingBibles = True self.dataViewModel.clear() biblesInCollection = [] if self.selectedCollection is not None: biblesInCollection = config.bibleCollections[ self.selectedCollection] rowCount = 0 for bible, description in self.bibles: item = QStandardItem(bible) item.setToolTip(bible) item.setCheckable(True) if bible in biblesInCollection: item.setCheckState(Qt.Checked) self.dataViewModel.setItem(rowCount, 0, item) item = QStandardItem(description) self.dataViewModel.setItem(rowCount, 1, item) rowCount += 1 self.dataViewModel.setHorizontalHeaderLabels([ config.thisTranslation["bible"], config.thisTranslation["description"] ]) self.biblesTable.resizeColumnsToContents() self.settingBibles = False
def setupUI(self): mainLayout = QVBoxLayout() mainLayout.addWidget(QLabel(self.translation[0])) subLayout = QHBoxLayout() layout = QVBoxLayout() layout.addWidget(QLabel(self.translation[1])) dataView1 = QListView() dataView1.setEditTriggers(QAbstractItemView.NoEditTriggers) dataViewModel1 = QStandardItemModel(dataView1) dataView1.setModel(dataViewModel1) for plugin in FileUtil.fileNamesWithoutExtension( os.path.join("plugins", "startup"), "py"): item = QStandardItem(plugin) item.setToolTip(plugin) item.setCheckable(True) item.setCheckState( Qt.CheckState.Unchecked if plugin in config.excludeStartupPlugins else Qt.CheckState.Checked) dataViewModel1.appendRow(item) dataViewModel1.itemChanged.connect(self.itemChanged1) layout.addWidget(dataView1) subLayout.addLayout(layout) layout = QVBoxLayout() layout.addWidget(QLabel(self.translation[2])) dataView2 = QListView() dataView2.setEditTriggers(QAbstractItemView.NoEditTriggers) dataViewModel2 = QStandardItemModel(dataView2) dataView2.setModel(dataViewModel2) for plugin in FileUtil.fileNamesWithoutExtension( os.path.join("plugins", "menu"), "py"): item = QStandardItem(plugin) item.setToolTip(plugin) item.setCheckable(True) item.setCheckState(Qt.CheckState.Unchecked if plugin in config. excludeMenuPlugins else Qt.CheckState.Checked) dataViewModel2.appendRow(item) dataViewModel2.itemChanged.connect(self.itemChanged2) layout.addWidget(dataView2) subLayout.addLayout(layout) layout = QVBoxLayout() layout.addWidget(QLabel(self.translation[3])) dataView3 = QListView() dataView3.setEditTriggers(QAbstractItemView.NoEditTriggers) dataViewModel3 = QStandardItemModel(dataView3) dataView3.setModel(dataViewModel3) for plugin in FileUtil.fileNamesWithoutExtension( os.path.join("plugins", "context"), "py"): item = QStandardItem(plugin) item.setToolTip(plugin) item.setCheckable(True) item.setCheckState( Qt.CheckState.Unchecked if plugin in config.excludeContextPlugins else Qt.CheckState.Checked) dataViewModel3.appendRow(item) dataViewModel3.itemChanged.connect(self.itemChanged3) layout.addWidget(dataView3) subLayout.addLayout(layout) layout = QVBoxLayout() layout.addWidget(QLabel(self.translation[4])) dataView4 = QListView() dataView4.setEditTriggers(QAbstractItemView.NoEditTriggers) dataViewModel4 = QStandardItemModel(dataView4) dataView4.setModel(dataViewModel4) for plugin in FileUtil.fileNamesWithoutExtension( os.path.join("plugins", "shutdown"), "py"): item = QStandardItem(plugin) item.setToolTip(plugin) item.setCheckable(True) item.setCheckState( Qt.CheckState.Unchecked if plugin in config.excludeShutdownPlugins else Qt.CheckState.Checked) dataViewModel4.appendRow(item) dataViewModel4.itemChanged.connect(self.itemChanged4) layout.addWidget(dataView4) subLayout.addLayout(layout) mainLayout.addLayout(subLayout) self.setLayout(mainLayout)