def setupChecklist(widget, names, checks = None): tp = type(widget) # Prepare checks if checks is None: checks = [] for name in names: checks.append(Qt.Unchecked) else: newChecks = [] for check in checks: if check: newChecks.append(Qt.Checked) else: newChecks.append(Qt.Unchecked) checks = newChecks ## QListView if tp is QListView: model = QStandardItemModel() for i in xrange(len(names)): item = QStandardItem(names[i]) item.setCheckable(True) item.setCheckState(checks[i]) model.appendRow(item) widget.setModel(model) ## QListWidget elif tp is QListWidget: for i in xrange(len(names)): item = QListWidgetItem(names[i]) item.setFlags(Qt.ItemFlags(48)) # 48 = checkable(16), enabled(32) item.setCheckState(checks[i]) widget.addItem(item) ## NOT SUPPORTED else: raise TypeError('Class ' + str(tp) + ' is not supported.')
def exportResult(self): dlg = ExportDlg(self) dlg.ui.txtHeading.setText(self.surfaceType + "_Export") columnNames = [] if self.obstaclesModel != None: columnNames = self.obstaclesModel.fixedColumnLabels self.stModel = QStandardItemModel() for i in range(len(columnNames)): stItem = QStandardItem(columnNames[i]) stItem.setCheckable(True) checkFlag = True for hideColName in self.obstaclesModel.hideColumnLabels: if columnNames[i] == hideColName: checkFlag = False break if checkFlag: stItem.setCheckState(Qt.Checked) else: stItem.setCheckState(Qt.Unchecked) self.stModel.setItem(i, 0, stItem) if len(columnNames) <= 0: return dlg.ui.listColumns.setModel(self.stModel) result = dlg.exec_() return (result, dlg.resultHideColumnIndexs)
def fillScalars(self): scalars = [ 'absorbance (%)', 'reflectance (%)', 'transmittance (%)', 'absorbance (mA/cm²)', 'reflectance (mA/cm²)', 'transmittance (mA/cm²)', 'generation', 'Jmax (mA/cm²)', 'absorption layerwise (%)', 'absorption layerwise (mA/cm²)', 'collection layerwise (%)', 'collection layerwise (mA/cm²)', 'calc. time (s)' ] self.scalarListModel = QStandardItemModel() scalarsToShow = self.defaults['defaultScalars'] for value in scalars: item = QStandardItem(value) check = Qt.Checked if value in scalarsToShow else Qt.Unchecked item.setCheckState(check) item.setCheckable(True) self.scalarListModel.appendRow(item) self.scalarListView.setModel(self.scalarListModel)
def on_ions_updated(self, new_ions): qmodel = QStandardItemModel() qmodel.setColumnCount(2) qmodel.setHorizontalHeaderItem(0, QStandardItem('Ion')) qmodel.setHorizontalHeaderItem(1, QStandardItem('Abundance (%)')) root = qmodel.invisibleRootItem() element_keyfunc = lambda x: x.isotope.element sorted_ions = sorted(new_ions, key=element_keyfunc) for element, ions in itertools.groupby(sorted_ions, key=element_keyfunc): element_item = QStandardItem(element) element_item.setCheckable(True) element_item.setCheckState(2) root.appendRow(element_item) for ion in ions: ion_name = QStandardItem(ion.name) ion_name.setData(ion,32) ion_name.emitDataChanged() ion_abundance = QStandardItem(str(ion.isotope.abundance)) element_item.appendRow([ion_name, ion_abundance]) self.ionlistTree.setModel(qmodel) self.ionlistTree.expandAll() self.addionsButton.setEnabled(True) self._qmodel=qmodel
def _add_entity(self, party): # Add entity item to view item = QStandardItem(QIcon(':/plugins/stdm/images/icons/table.png'), party.short_name) item.setCheckable(True) item.setCheckState(Qt.Unchecked) self._model.appendRow(item)
def populateList(self): model = QStandardItemModel() for i, option in enumerate(self.options): item = QStandardItem(option) item.setCheckState(Qt.Checked if i in self.selectedoptions else Qt.Unchecked) item.setCheckable(True) model.appendRow(item) self.lstLayers.setModel(model)
def get_coloured_root_item(filepath, color, colorr): root = QStandardItem(filepath) gradient = QLinearGradient(-100, -100, 100, 100) gradient.setColorAt(0.7, colorr) gradient.setColorAt(1, color) root.setBackground(QBrush(gradient)) root.setEditable(False) root.setCheckState(Qt.Checked) root.setCheckable(True) return root
def _load_item(self, values, checked_values): """Load item list""" for v in values: item = QStandardItem(str(v)) if v in checked_values: item.setCheckState(Qt.Checked) else: item.setCheckState(Qt.Unchecked) item.setCheckable(True) self.m_sim.appendRow(item)
def _add_entity(self, entity): # Add entity item to view item = QStandardItem( QIcon(':/plugins/stdm/images/icons/table.png'), entity.short_name ) item.setCheckable(True) item.setCheckState(Qt.Unchecked) self._model.appendRow(item)
def update_realizations_view(self): completed = self._run_model.completed_realizations_mask for (index, successful) in enumerate(completed): items = self.realizations_view.model().findItems(str(index)) if not items: item = QStandardItem(str(index)) self.realizations_view.model().appendRow(item) else: item = items[0] item.setCheckState(successful or item.checkState())
def getColouredRootItem(sample): """stable, may be subdivised in sub routines """ root = QStandardItem(sample.shortName()) #root.setIcon(QIcon(QPixmap(os.path.normpath('gui/icons/formula.png')))) color =QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2],1.) colorr=QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2],.5) gradient=QLinearGradient(-100, -100, 100, 100) gradient.setColorAt(0.7, colorr);gradient.setColorAt(1, color) root.setBackground(QBrush(gradient)) root.setEditable(False) root.setCheckState(Qt.Checked) root.setCheckable(True) return root
def populateTableViews(self, polarity): frags, adds = self.getFragAddData(polarity) self.adductsModel, self.fragsModel = QStandardItemModel(), QStandardItemModel() self.adductsModel.setHorizontalHeaderLabels(["Adducts(name, mass, nmol)"]) self.fragsModel.setHorizontalHeaderLabels(["Fragments(name, mass, nmol)"]) for i, adduct in enumerate(adds.keys()): item =QStandardItem(', '.join(map(str, adduct))) item.setCheckable(True) if adds[adduct]: item.setCheckState(2) else: item.setCheckState(0) self.adductsModel.setItem(i, 0, item) self.view.adductsTable.setModel(self.adductsModel) for i, frag in enumerate(frags.keys()): item = QStandardItem(', '.join(map(str, frag))) item.setCheckable(True) if frags[frag]: item.setCheckState(2) else: item.setCheckState(0) self.fragsModel.setItem(i, 0, item) self.view.fragTable.setModel(self.fragsModel)
def populateTableViews(self, polarity): frags, adds = self.getFragAddData(polarity) self.adductsModel, self.fragsModel = QStandardItemModel( ), QStandardItemModel() self.adductsModel.setHorizontalHeaderLabels( ["Adducts(name, mass, nmol)"]) self.fragsModel.setHorizontalHeaderLabels( ["Fragments(name, mass, nmol)"]) for i, adduct in enumerate(adds.keys()): item = QStandardItem(', '.join(map(str, adduct))) item.setCheckable(True) if adds[adduct]: item.setCheckState(2) else: item.setCheckState(0) self.adductsModel.setItem(i, 0, item) self.view.adductsTable.setModel(self.adductsModel) for i, frag in enumerate(frags.keys()): item = QStandardItem(', '.join(map(str, frag))) item.setCheckable(True) if frags[frag]: item.setCheckState(2) else: item.setCheckState(0) self.fragsModel.setItem(i, 0, item) self.view.fragTable.setModel(self.fragsModel)
def Add(self, caption, isCheckedFlag=False): captionStr = "" if isinstance(caption, str) or isinstance(caption, QString): captionStr = caption else: captionStr = caption.ToString() self.hasObject = True self.objList.append([self.stdModel.rowCount(), caption]) item = QStandardItem(captionStr) item.setCheckable(True) if isCheckedFlag: item.setCheckState(Qt.Checked) else: item.setCheckState(Qt.Unchecked) self.stdModel.setItem(self.stdModel.rowCount(), item)
def addGroup(self, name = None, metadata = None): model = self.model() group_item = QStandardItem(name or 'New Group') group_item.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEditable) group_item.setEnabled(True) if metadata: group_item.setText('Metadata') group_item.setDropEnabled(True) group_item.setDragEnabled(True) group_item.setCheckable(True) group_item.setCheckState(Qt.Checked) group_item.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"group.png"))) model.appendRow([group_item]) if not name: self.setCurrentIndex(model.indexFromItem(group_item)) return group_item
def getColouredRootItem(sample): """stable, may be subdivised in sub routines """ root = QStandardItem(sample.shortName()) #root.setIcon(QIcon(QPixmap(os.path.normpath('gui/icons/formula.png')))) color = QColor.fromRgbF(sample.color[0], sample.color[1], sample.color[2], 1.) colorr = QColor.fromRgbF(sample.color[0], sample.color[1], sample.color[2], .5) gradient = QLinearGradient(-100, -100, 100, 100) gradient.setColorAt(0.7, colorr) gradient.setColorAt(1, color) root.setBackground(QBrush(gradient)) root.setEditable(False) root.setCheckState(Qt.Checked) root.setCheckable(True) return root
def addFieldDef(self,fieldDef, recover = None): self.defOrder = ['fieldName', 'fieldMap', 'fieldLabel', 'fieldType', 'fieldHint', 'fieldRequired', 'fieldDefault', 'fieldQtype', 'fieldWidget', 'fieldChoices','fieldAppearance','fieldReadOnly','fieldCalculation'] row = [] self.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"field.png"))) if not 'fieldReadOnly' in fieldDef: fieldDef['fieldReadOnly'] = '' if not 'fieldCalculation' in fieldDef: fieldDef['fieldCalculation'] = '' if recover: #backup dict provided if recovering fields state for fdef in self.defOrder: if fdef == 'fieldName': sub_item = QStandardItem(None) elif fdef == 'fieldRequired': sub_item = QStandardItem(None) sub_item.setCheckable(True) if fieldDef['fieldRequired']: sub_item.setCheckState(Qt.Checked) else: sub_item.setCheckState(Qt.Unchecked) else: sub_item = QStandardItem(fieldDef[fdef]) row.append(sub_item) self.appendRow(row) self.setCheckable(True) if fieldDef['fieldEnabled']: self.setCheckState(Qt.Checked) else: self.setCheckState(Qt.Unchecked) else: fieldDef['fieldType'] = self.getODKType(fieldDef) if fieldDef['fieldType'] in appearanceDef.keys(): fieldDef['fieldAppearance'] = appearanceDef[fieldDef['fieldType']][0] else: fieldDef['fieldAppearance'] = 'default' for fdef in self.defOrder: if fdef == 'fieldName': sub_item = QStandardItem(None) elif fdef == 'fieldRequired': sub_item = QStandardItem(None) sub_item.setCheckable(True) if fieldDef['fieldRequired']: sub_item.setCheckState(Qt.Checked) else: sub_item.setCheckState(Qt.Unchecked) elif fdef == 'fieldChoices': sub_item = QStandardItem(json.dumps(fieldDef[fdef])) else: sub_item = QStandardItem(fieldDef[fdef] or '') sub_item.setDropEnabled(False) sub_item.setDragEnabled(False) row.append(sub_item) self.appendRow(row) self.setCheckable(True) if fieldDef['fieldEnabled']: self.setCheckState(Qt.Checked) else: self.setCheckState(Qt.Unchecked)
def __init__(self, parent = None): QStandardItemModel.__init__(self, parent) self._settings = QSettings() for pluginobject in PluginLoader("ALL").plugins: # Changed the plugin viewable name to the UserString value # as it looks better for the user. #item = QStandardItem(pluginobject.pluginName) item = QStandardItem(pluginobject.pluginUserString) check = Qt.Unchecked valueString = "plugins/" + pluginobject.pluginName + "/load" if self._settings.value(valueString).toString() == "True": check = Qt.Checked item.setCheckState(check) item.setCheckable(True) item.setEditable(False) item.plugin = pluginobject self.appendRow(item)
def __init__(self, parent=None): QStandardItemModel.__init__(self, parent) self._settings = QSettings() for pluginobject in PluginLoader("ALL").plugins: # Changed the plugin viewable name to the UserString value # as it looks better for the user. #item = QStandardItem(pluginobject.pluginName) item = QStandardItem(pluginobject.pluginUserString) check = Qt.Unchecked valueString = "plugins/" + pluginobject.pluginName + "/load" if self._settings.value(valueString).toString() == "True": check = Qt.Checked item.setCheckState(check) item.setCheckable(True) item.setEditable(False) item.plugin = pluginobject self.appendRow(item)
def fillCalculations(self): self.calculations = [ 'Stack optics (A,R,T)', 'Ellipsometry', 'Field intensity', 'Layerwise optics (absorption, collection, QE)', 'Generation' ] self.calcListModel = QStandardItemModel() calculationsToShow = self.defaults['defaultCalculations'] for value in self.calculations: item = QStandardItem(value) check = Qt.Checked if value in calculationsToShow else Qt.Unchecked item.setCheckState(check) item.setCheckable(True) #item.setEnabled(False) self.calcListModel.appendRow(item) self.calculationsListView.setModel(self.calcListModel)
def model_init(self): categories = {} if not categories: with open('categories.json') as f: categories = load(f) for element in categories: catItem = QStandardItem(element.keys()[0]) catItem.setCheckable(True) catItem.setCheckState(element[element.keys()[0]]) for type_name, check_state in element["Types"].items(): typeItem = QStandardItem(type_name) typeItem.setCheckable(True) typeItem.setCheckState(check_state) catItem.appendRow(typeItem) self.model.appendRow(catItem) self.treeView.setModel(self.model) self.submit_file_types()
def fillCalculations(self): self.calculations = ['Stack optics (A,R,T)', 'Ellipsometry', 'Field intensity', 'Layerwise optics (absorption, collection, QE)', 'Generation' ] self.calcListModel = QStandardItemModel() calculationsToShow = self.defaults['defaultCalculations'] for value in self.calculations: item = QStandardItem(value) check = Qt.Checked if value in calculationsToShow else Qt.Unchecked item.setCheckState(check) item.setCheckable(True) #item.setEnabled(False) self.calcListModel.appendRow(item) self.calculationsListView.setModel(self.calcListModel)
def initListView(self): """Init status table""" # List Box model model = QStandardItemModel() # Init list objects for i, frame in enumerate(self.task.videoLabelHandler.files): item = QStandardItem(frame + "\t{0} Objects".format(len(self.task.videoLabelHandler.objects))) item.setCheckState(Qt.Checked) item.setCheckable(True) model.appendRow(item) if self.segmentation_mode: model.item(0).setEnabled(False) else: model.item(i).setCheckState(Qt.Unchecked) model.item(i).setEnabled(False) # Set model self.view.setModel(model)
def fillPlots(self): plots = [ 'total A,R,T', # requires calc [0] 'Ellipsometry', # requires nothing 'absorption (layerwise)', # requires calc [2] 'collection (layerwise)', # requires calc [2] 'QE', # requires calc [2] 'reflection (interfacewise)', 'generation' # requires calc [3] ] self.plotListModel = QStandardItemModel() plotsToShow = self.defaults['defaultPlots'] for value in plots: item = QStandardItem(value) check = Qt.Checked if value in plotsToShow else Qt.Unchecked item.setCheckState(check) item.setCheckable(True) self.plotListModel.appendRow(item) self.plotListView.setModel(self.plotListModel)
def appendRepository(self, path, active, autoUpdate, canAutoUpdate = None): activeItem = QStandardItem() activeItem.setEditable(False) activeItem.setCheckState(Qt.Checked if active else Qt.Unchecked) activeItem.setCheckable(True) pathItem = QStandardItem() pathItem.setData(path, Qt.DisplayRole) pathItem.setEditable(False) autoUpdateItem = QStandardItem() autoUpdateItem.setEditable(False) if canAutoUpdate == None: canAutoUpdate = self._gitHandler.hasGit(path) if canAutoUpdate: autoUpdateItem.setCheckState(Qt.Checked if autoUpdate else Qt.Unchecked) autoUpdateItem.setCheckable(True) statusItem = QStandardItem() self._updateStatusItem(statusItem, path) self._reposModel.appendRow([activeItem, pathItem, autoUpdateItem, statusItem])
def load_document_types(self): """ Load all document types to the list view and enable/check the items for those types that have been found. """ self._attr_model.clear() self._attr_model.setColumnCount(2) file_infos = self._dir.entryInfoList( QDir.Readable | QDir.Files, QDir.Name ) # Index file info based on name idx_file_infos = {fi.completeBaseName().lower(): fi for fi in file_infos} for d in self._doc_types: doc_type_item = QStandardItem(d) doc_type_item.setCheckable(True) path_item = QStandardItem() item_enabled = False check_state = Qt.Unchecked dl = d.lower() if dl in idx_file_infos: item_enabled = True check_state = Qt.Checked path = idx_file_infos[dl].filePath() path_item.setText(path) doc_type_item.setToolTip(path) doc_type_item.setEnabled(item_enabled) doc_type_item.setCheckState(check_state) self._attr_model.appendRow([doc_type_item, path_item]) self.lst_docs.setModel(self._attr_model)
def comboProjectChanged(self): if len(self.ui.comboProject.currentText()) > 0: self.project_id = self.projects_id[self.ui.comboProject.currentText()] #get project tasks qsubtasks = QStandardItemModel() for proj_tasks in self.asana_api.tasks.find_by_project(self.project_id, { 'completed_since': 'now'}): item = QStandardItem(proj_tasks['name']) item.setEditable(True) item.setToolTip('Double click to edit') if not proj_tasks['name'].endswith(':'): check = Qt.Unchecked item.setCheckState(check) item.setCheckable(True) self.projects_id[proj_tasks['name']] = proj_tasks['id'] item.setStatusTip(str(proj_tasks['id'])) else: font = QFont() font.setWeight(QFont.Bold) item.setFont(font) #populate the listview qsubtasks.appendRow(item) self.ui.listTasks.setModel(qsubtasks) QApplication.setOverrideCursor(QCursor(Qt.ArrowCursor)) qsubtasks.itemChanged.connect(self.checkTasks)
def setColumnCombos(self, cols, quotedCols): # get sensible default columns. do this before sorting in case there's hints in the column order (eg, id is more likely to be first) try: defaultGeomCol = next(col for col in cols if col in ['geom', 'geometry', 'the_geom', 'way']) except: defaultGeomCol = None try: defaultUniqueCol = [col for col in cols if 'id' in col][0] except: defaultUniqueCol = None colNames = sorted(zip(cols, quotedCols)) newItems = [] uniqueIsFilled = False for (col, quotedCol) in colNames: item = QStandardItem(col) item.setData(quotedCol) item.setEnabled(True) item.setCheckable(self.allowMultiColumnPk) item.setSelectable(not self.allowMultiColumnPk) if self.allowMultiColumnPk: matchingItems = self.uniqueModel.findItems(col) if matchingItems: item.setCheckState(matchingItems[0].checkState()) uniqueIsFilled = uniqueIsFilled or matchingItems[0].checkState() == Qt.Checked else: item.setCheckState(Qt.Unchecked) newItems.append(item) if self.allowMultiColumnPk: self.uniqueModel.clear() self.uniqueModel.appendColumn(newItems) self.uniqueChanged() else: previousUniqueColumn = self.uniqueCombo.currentText() self.uniqueModel.clear() self.uniqueModel.appendColumn(newItems) if self.uniqueModel.findItems(previousUniqueColumn): self.uniqueCombo.setEditText(previousUniqueColumn) uniqueIsFilled = True oldGeometryColumn = self.geomCombo.currentText() self.geomCombo.clear() self.geomCombo.addItems(cols) self.geomCombo.setCurrentIndex(self.geomCombo.findText(oldGeometryColumn, Qt.MatchExactly)) # set sensible default columns if the columns are not already set try: if self.geomCombo.currentIndex() == -1: self.geomCombo.setCurrentIndex(cols.index(defaultGeomCol)) except: pass items = self.uniqueModel.findItems(defaultUniqueCol) if items and not uniqueIsFilled: if self.allowMultiColumnPk: items[0].setCheckState(Qt.Checked) else: self.uniqueCombo.setEditText(defaultUniqueCol) try: pass except: pass
def set_items(self, items): self.__items = items model = self.__model model.clear() model.setHorizontalHeaderLabels(["", "Name", "Version", "Action"]) for item in items: if isinstance(item, Installed): installed = True ins, dist = item name = dist.project_name summary = get_dist_meta(dist).get("Summary", "") version = ins.version if ins is not None else dist.version else: installed = False (ins, ) = item dist = None name = ins.name summary = ins.summary version = ins.version updatable = is_updatable(item) item1 = QStandardItem() item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | (Qt.ItemIsTristate if updatable else 0)) if installed and updatable: item1.setCheckState(Qt.PartiallyChecked) elif installed: item1.setCheckState(Qt.Checked) else: item1.setCheckState(Qt.Unchecked) item2 = QStandardItem(name) item2.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item2.setToolTip(summary) item2.setData(item, Qt.UserRole) if updatable: version = "{} < {}".format(dist.version, ins.version) item3 = QStandardItem(version) item3.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item4 = QStandardItem() item4.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) model.appendRow([item1, item2, item3, item4]) self.__view.resizeColumnToContents(0) self.__view.setColumnWidth(1, max(150, self.__view.sizeHintForColumn(1))) self.__view.setColumnWidth(2, max(150, self.__view.sizeHintForColumn(2))) if self.__items: self.__view.selectionModel().select( self.__view.model().index(0, 0), QItemSelectionModel.Select | QItemSelectionModel.Rows)
def __setupUi(self): """Set up the UI. """ if self.__macUnified: self.tab = QToolBar() self.addToolBar(Qt.TopToolBarArea, self.tab) self.setUnifiedTitleAndToolBarOnMac(True) # This does not seem to work self.setWindowFlags(self.windowFlags() & \ ~Qt.MacWindowToolBarButtonHint) self.tab.actionTriggered[QAction].connect( self.__macOnToolBarAction) central = QStackedWidget() central.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) else: self.tab = central = QTabWidget(self) # Add a close button to the bottom of the dialog # (to satisfy GNOME 3 which shows the dialog without a title bar). container = container_widget_helper() container.layout().addWidget(central) buttonbox = QDialogButtonBox(QDialogButtonBox.Close) buttonbox.rejected.connect(self.close) container.layout().addWidget(buttonbox) self.setCentralWidget(container) self.stack = central # General Tab tab = QWidget() self.addTab(tab, self.tr("General"), toolTip=self.tr("General Options")) form = QFormLayout() tab.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) nodes = QWidget(self, objectName="nodes") nodes.setLayout(QVBoxLayout()) nodes.layout().setContentsMargins(0, 0, 0, 0) cb_anim = QCheckBox(self.tr("Enable node animations"), objectName="enable-node-animations", toolTip=self.tr( "Enable shadow and ping animations for node " "items in the scheme.")) self.bind(cb_anim, "checked", "schemeedit/enable-node-animations") nodes.layout().addWidget(cb_anim) form.addRow(self.tr("Nodes"), nodes) links = QWidget(self, objectName="links") links.setLayout(QVBoxLayout()) links.layout().setContentsMargins(0, 0, 0, 0) cb_show = QCheckBox(self.tr("Show channel names between widgets"), objectName="show-channel-names", toolTip=self.tr( "Show source and sink channel names " "over the links.")) self.bind(cb_show, "checked", "schemeedit/show-channel-names") links.layout().addWidget(cb_show) form.addRow(self.tr("Links"), links) quickmenu = QWidget(self, objectName="quickmenu-options") quickmenu.setLayout(QVBoxLayout()) quickmenu.layout().setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("On double click"), toolTip=self.tr("Open quick menu on a double click " "on an empty spot in the canvas")) cb2 = QCheckBox(self.tr("On right click"), toolTip=self.tr("Open quick menu on a right click " "on an empty spot in the canvas")) cb3 = QCheckBox(self.tr("On space key press"), toolTip=self.tr("On Space key press while the mouse" "is hovering over the canvas.")) cb4 = QCheckBox(self.tr("On any key press"), toolTip=self.tr("On any key press while the mouse" "is hovering over the canvas.")) self.bind(cb1, "checked", "quickmenu/trigger-on-double-click") self.bind(cb2, "checked", "quickmenu/trigger-on-right-click") self.bind(cb3, "checked", "quickmenu/trigger-on-space-key") self.bind(cb4, "checked", "quickmenu/trigger-on-any-key") quickmenu.layout().addWidget(cb1) quickmenu.layout().addWidget(cb2) quickmenu.layout().addWidget(cb3) quickmenu.layout().addWidget(cb4) form.addRow(self.tr("Open quick menu on"), quickmenu) startup = QWidget(self, objectName="startup-group") startup.setLayout(QVBoxLayout()) startup.layout().setContentsMargins(0, 0, 0, 0) cb_splash = QCheckBox(self.tr("Show splash screen"), self, objectName="show-splash-screen") cb_welcome = QCheckBox(self.tr("Show welcome screen"), self, objectName="show-welcome-screen") self.bind(cb_splash, "checked", "startup/show-splash-screen") self.bind(cb_welcome, "checked", "startup/show-welcome-screen") startup.layout().addWidget(cb_splash) startup.layout().addWidget(cb_welcome) form.addRow(self.tr("On startup"), startup) toolbox = QWidget(self, objectName="toolbox-group") toolbox.setLayout(QVBoxLayout()) toolbox.layout().setContentsMargins(0, 0, 0, 0) exclusive = QCheckBox(self.tr("Only one tab can be open at a time")) self.bind(exclusive, "checked", "mainwindow/toolbox-dock-exclusive") toolbox.layout().addWidget(exclusive) form.addRow(self.tr("Tool box"), toolbox) tab.setLayout(form) # Output Tab tab = QWidget() self.addTab(tab, self.tr("Output"), toolTip="Output Redirection") form = QFormLayout() box = QWidget(self, objectName="streams") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Standard output")) cb2 = QCheckBox(self.tr("Standard error")) self.bind(cb1, "checked", "output/redirect-stdout") self.bind(cb2, "checked", "output/redirect-stderr") layout.addWidget(cb1) layout.addWidget(cb2) box.setLayout(layout) form.addRow(self.tr("Redirect output"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) combo = QComboBox() combo.addItems([ self.tr("Critical"), self.tr("Error"), self.tr("Warn"), self.tr("Info"), self.tr("Debug") ]) cb = QCheckBox(self.tr("Show output on 'Error'"), objectName="focus-on-error") self.bind(combo, "currentIndex", "logging/level") self.bind(cb, "checked", "output/show-on-error") layout.addWidget(combo) layout.addWidget(cb) box.setLayout(layout) form.addRow(self.tr("Logging"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Stay on top"), objectName="stay-on-top") cb2 = QCheckBox(self.tr("Dockable"), objectName="output-dockable") self.bind(cb1, "checked", "output/stay-on-top") self.bind(cb2, "checked", "output/dockable") layout.addWidget(cb1) layout.addWidget(cb2) box.setLayout(layout) form.addRow(self.tr("Output window"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Open in external browser"), objectName="open-in-external-browser") cb2 = QCheckBox(self.tr("Stay on top"), objectName="help-stay-on-top") cb3 = QCheckBox(self.tr("Dockable"), objectName="help-dockable") self.bind(cb1, "checked", "help/open-in-external-browser") self.bind(cb2, "checked", "help/stay-on-top") self.bind(cb3, "checked", "help/dockable") layout.addWidget(cb1) layout.addWidget(cb2) layout.addWidget(cb3) box.setLayout(layout) form.addRow(self.tr("Help window"), box) tab.setLayout(form) # Categories Tab tab = QWidget() layout = QVBoxLayout() view = QListView() from .. import registry reg = registry.global_registry() model = QStandardItemModel() settings = QSettings() for cat in reg.categories(): item = QStandardItem() item.setText(cat.name) item.setCheckable(True) visible, _ = category_state(cat, settings) item.setCheckState(Qt.Checked if visible else Qt.Unchecked) model.appendRow([item]) view.setModel(model) layout.addWidget(view) tab.setLayout(layout) model.itemChanged.connect(lambda item: save_category_state( reg.category(str(item.text())), _State(item.checkState() == Qt.Checked, -1), settings)) self.addTab(tab, "Categories") if self.__macUnified: # Need some sensible size otherwise mac unified toolbar 'takes' # the space that should be used for layout of the contents self.adjustSize()
def set_items(self, items): self.__items = items model = self.__model model.clear() model.setHorizontalHeaderLabels(["", "Name", "Version", "Action"]) for item in items: if isinstance(item, Installed): installed = True ins, dist = item name = dist.project_name summary = get_dist_meta(dist).get("Summary", "") version = ins.version if ins is not None else dist.version else: installed = False (ins,) = item dist = None name = ins.name summary = ins.summary version = ins.version updatable = is_updatable(item) item1 = QStandardItem() item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | (Qt.ItemIsTristate if updatable else 0)) if installed and updatable: item1.setCheckState(Qt.PartiallyChecked) elif installed: item1.setCheckState(Qt.Checked) else: item1.setCheckState(Qt.Unchecked) item2 = QStandardItem(name) item2.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item2.setToolTip(summary) item2.setData(item, Qt.UserRole) if updatable: version = "{} < {}".format(dist.version, ins.version) item3 = QStandardItem(version) item3.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item4 = QStandardItem() item4.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) model.appendRow([item1, item2, item3, item4]) self.__view.resizeColumnToContents(0) self.__view.setColumnWidth( 1, max(150, self.__view.sizeHintForColumn(1))) self.__view.setColumnWidth( 2, max(150, self.__view.sizeHintForColumn(2))) if self.__items: self.__view.selectionModel().select( self.__view.model().index(0, 0), QItemSelectionModel.Select | QItemSelectionModel.Rows )
def __setupUi(self): """Set up the UI. """ if self.__macUnified: self.tab = QToolBar() self.addToolBar(Qt.TopToolBarArea, self.tab) self.setUnifiedTitleAndToolBarOnMac(True) # This does not seem to work self.setWindowFlags(self.windowFlags() & \ ~Qt.MacWindowToolBarButtonHint) self.tab.actionTriggered[QAction].connect( self.__macOnToolBarAction ) central = QStackedWidget() central.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) else: self.tab = central = QTabWidget(self) # Add a close button to the bottom of the dialog # (to satisfy GNOME 3 which shows the dialog without a title bar). container = container_widget_helper() container.layout().addWidget(central) buttonbox = QDialogButtonBox(QDialogButtonBox.Close) buttonbox.rejected.connect(self.close) container.layout().addWidget(buttonbox) self.setCentralWidget(container) self.stack = central # General Tab tab = QWidget() self.addTab(tab, self.tr("General"), toolTip=self.tr("General Options")) form = QFormLayout() tab.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) nodes = QWidget(self, objectName="nodes") nodes.setLayout(QVBoxLayout()) nodes.layout().setContentsMargins(0, 0, 0, 0) cb_anim = QCheckBox( self.tr("Enable node animations"), objectName="enable-node-animations", toolTip=self.tr("Enable shadow and ping animations for node " "items in the scheme.") ) self.bind(cb_anim, "checked", "schemeedit/enable-node-animations") nodes.layout().addWidget(cb_anim) form.addRow(self.tr("Nodes"), nodes) links = QWidget(self, objectName="links") links.setLayout(QVBoxLayout()) links.layout().setContentsMargins(0, 0, 0, 0) cb_show = QCheckBox( self.tr("Show channel names between widgets"), objectName="show-channel-names", toolTip=self.tr("Show source and sink channel names " "over the links.") ) self.bind(cb_show, "checked", "schemeedit/show-channel-names") links.layout().addWidget(cb_show) form.addRow(self.tr("Links"), links) quickmenu = QWidget(self, objectName="quickmenu-options") quickmenu.setLayout(QVBoxLayout()) quickmenu.layout().setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("On double click"), toolTip=self.tr("Open quick menu on a double click " "on an empty spot in the canvas")) cb2 = QCheckBox(self.tr("On right click"), toolTip=self.tr("Open quick menu on a right click " "on an empty spot in the canvas")) cb3 = QCheckBox(self.tr("On space key press"), toolTip=self.tr("On Space key press while the mouse" "is hovering over the canvas.")) cb4 = QCheckBox(self.tr("On any key press"), toolTip=self.tr("On any key press while the mouse" "is hovering over the canvas.")) self.bind(cb1, "checked", "quickmenu/trigger-on-double-click") self.bind(cb2, "checked", "quickmenu/trigger-on-right-click") self.bind(cb3, "checked", "quickmenu/trigger-on-space-key") self.bind(cb4, "checked", "quickmenu/trigger-on-any-key") quickmenu.layout().addWidget(cb1) quickmenu.layout().addWidget(cb2) quickmenu.layout().addWidget(cb3) quickmenu.layout().addWidget(cb4) form.addRow(self.tr("Open quick menu on"), quickmenu) startup = QWidget(self, objectName="startup-group") startup.setLayout(QVBoxLayout()) startup.layout().setContentsMargins(0, 0, 0, 0) cb_splash = QCheckBox(self.tr("Show splash screen"), self, objectName="show-splash-screen") cb_welcome = QCheckBox(self.tr("Show welcome screen"), self, objectName="show-welcome-screen") self.bind(cb_splash, "checked", "startup/show-splash-screen") self.bind(cb_welcome, "checked", "startup/show-welcome-screen") startup.layout().addWidget(cb_splash) startup.layout().addWidget(cb_welcome) form.addRow(self.tr("On startup"), startup) toolbox = QWidget(self, objectName="toolbox-group") toolbox.setLayout(QVBoxLayout()) toolbox.layout().setContentsMargins(0, 0, 0, 0) exclusive = QCheckBox(self.tr("Only one tab can be open at a time")) self.bind(exclusive, "checked", "mainwindow/toolbox-dock-exclusive") toolbox.layout().addWidget(exclusive) form.addRow(self.tr("Tool box"), toolbox) tab.setLayout(form) # Output Tab tab = QWidget() self.addTab(tab, self.tr("Output"), toolTip="Output Redirection") form = QFormLayout() box = QWidget(self, objectName="streams") layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Standard output")) cb2 = QCheckBox(self.tr("Standard error")) self.bind(cb1, "checked", "output/redirect-stdout") self.bind(cb2, "checked", "output/redirect-stderr") layout.addWidget(cb1) layout.addWidget(cb2) box.setLayout(layout) form.addRow(self.tr("Redirect output"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) combo = QComboBox() combo.addItems([self.tr("Critical"), self.tr("Error"), self.tr("Warn"), self.tr("Info"), self.tr("Debug")]) cb = QCheckBox(self.tr("Show output on 'Error'"), objectName="focus-on-error") self.bind(combo, "currentIndex", "logging/level") self.bind(cb, "checked", "output/show-on-error") layout.addWidget(combo) layout.addWidget(cb) box.setLayout(layout) form.addRow(self.tr("Logging"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Stay on top"), objectName="stay-on-top") cb2 = QCheckBox(self.tr("Dockable"), objectName="output-dockable") self.bind(cb1, "checked", "output/stay-on-top") self.bind(cb2, "checked", "output/dockable") layout.addWidget(cb1) layout.addWidget(cb2) box.setLayout(layout) form.addRow(self.tr("Output window"), box) box = QWidget() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) cb1 = QCheckBox(self.tr("Open in external browser"), objectName="open-in-external-browser") cb2 = QCheckBox(self.tr("Stay on top"), objectName="help-stay-on-top") cb3 = QCheckBox(self.tr("Dockable"), objectName="help-dockable") self.bind(cb1, "checked", "help/open-in-external-browser") self.bind(cb2, "checked", "help/stay-on-top") self.bind(cb3, "checked", "help/dockable") layout.addWidget(cb1) layout.addWidget(cb2) layout.addWidget(cb3) box.setLayout(layout) form.addRow(self.tr("Help window"), box) tab.setLayout(form) # Categories Tab tab = QWidget() layout = QVBoxLayout() view = QListView() from .. import registry reg = registry.global_registry() model = QStandardItemModel() settings = QSettings() for cat in reg.categories(): item = QStandardItem() item.setText(cat.name) item.setCheckable(True) visible, _ = category_state(cat, settings) item.setCheckState(Qt.Checked if visible else Qt.Unchecked) model.appendRow([item]) view.setModel(model) layout.addWidget(view) tab.setLayout(layout) model.itemChanged.connect( lambda item: save_category_state( reg.category(str(item.text())), _State(item.checkState() == Qt.Checked, -1), settings ) ) self.addTab(tab, "Categories") if self.__macUnified: # Need some sensible size otherwise mac unified toolbar 'takes' # the space that should be used for layout of the contents self.adjustSize()
def scan(self): #self.treeViewComputer.setEnabled(False) #self.fileTypesButton.setEnabled(False) self.files_found = {} self.category_number_length = {} self.threads = [] self.stop = False if not self.selected_file_types: dialog = FileTypes() dialog.setModal(True) self.selected_file_types, ok = dialog.call() if not ok: return files_found_dialog = FilesFound(self) files_found_dialog.setModal(True) files_found_dialog.show() header_counter = 0 for element in self.selected_file_types: selected = [] for _type, state in element["Types"].items(): if state == Qt.Checked: selected.append(_type) if selected: cat = QStandardItem( element.keys()[0]) # WARNING! it may be unordered self.files_found_model.setHorizontalHeaderItem( header_counter, cat) self.category_number_length.update( {element.keys()[0]: [header_counter, 0]}) self.files_found_tree.setColumnWidth(header_counter - 1, 200) header_counter += 1 for index, state in self.model_computer.checks.items(): self.files_found.update({element.keys()[0]: []}) print("start tread for %s" % element.keys()[0]) th = Thread(target=self.model_computer.exportChecked, args=(self, { index: state }, element.keys()[0], selected, self.files_found)) th.start() self.threads.append(th) status = map(Thread.isAlive, self.threads) start_time = int(time.time()) while any(status): qApp.processEvents() status = map(Thread.isAlive, self.threads) self.filesFoundLabel.setText("Scanning...") if (int(time.time()) - start_time) % 2 == 0: if self.files_found: self.lock.acquire() for cat, (num, length) in self.category_number_length.items(): files = self.files_found[cat] for i in range(length, len(files)): fileItem = QStandardItem( self.files_found[cat][i].split(sep)[-1]) fileItem.setCheckable(True) fileItem.setCheckState(2) fileItem.setToolTip(self.files_found[cat][i]) self.files_found_model.invisibleRootItem( ).setChild(i, num, fileItem) self.category_number_length[cat][1] = len(files) self.lock.release() if self.stop: self.filesFoundLabel.setText("Scanning was stopped by user") self.files_found = {} self.threads = [] else: for cat, (num, length) in self.category_number_length.items(): if self.files_found: files = self.files_found[cat] for i in range(length, len(files)): fileItem = QStandardItem( self.files_found[cat][i].split(sep)[-1]) fileItem.setCheckable(True) fileItem.setCheckState(2) fileItem.setToolTip(self.files_found[cat][i]) self.files_found_model.invisibleRootItem().setChild( i, num, fileItem) self.category_number_length[cat][1] = len(files) self.filesFoundLabel.setText( "Scanning finished! Files found %s. Click on the Storage tab" % sum(len(v) for k, v in self.files_found.items())) self.files_found_bar.setMaximum(1) self.files_found_bar.setValue(1) self.files_found_ok_enable.setEnabled(True)