def cb_insert_file_list(combobox, index, paths): model = combobox.model() iconprovider = QFileIconProvider() for i, path in enumerate(paths): basename = os.path.basename(path) item = QStandardItem(basename) item.setToolTip(path) item.setIcon(iconprovider.icon(QFileInfo(path))) model.insertRow(index + i, item)
def _cat_desc_to_std_item(self, desc): """ Create a QStandardItem for the category description. """ item = QStandardItem() item.setText(desc.name) if desc.icon: icon = desc.icon else: icon = "icons/default-category.svg" icon = icon_loader.from_description(desc).get(icon) item.setIcon(icon) if desc.background: background = desc.background else: background = DEFAULT_COLOR background = NAMED_COLORS.get(background, background) brush = QBrush(QColor(background)) item.setData(brush, self.BACKGROUND_ROLE) tooltip = desc.description if desc.description else desc.name item.setToolTip(tooltip) item.setFlags(Qt.ItemIsEnabled) item.setData(desc, self.CATEGORY_DESC_ROLE) return item
def addItemToStore(self, name, category=None, icon=None): newItem = QStandardItem(name) if icon: newItem.setIcon(icon) if category: newItem.setData(category) self.__modelStore.appendRow(newItem)
def addNcFile(self, ncFileName): f = NetCDFFile(ncFileName) self.files[ncFileName] = f fItem = QStandardItem(ncFileName) fItem.setIcon(self.icons['file']) fItem.setData(QVariant(ncFileName)) fItem.ncItem = ('F', f) self.rootItem.appendRow(fItem) for an,av in ncFAttributes(f).items(): aItem = QStandardItem(an) aItem.setIcon(self.icons['attribute']) aItem.setData(QVariant(an)) aItem.ncItem = ('A', av) fItem.appendRow(aItem) for dn,dv in f.dimensions.items(): dItem = QStandardItem(dn) dItem.setIcon(self.icons['dimension']) dItem.setData(QVariant(dn)) dItem.ncItem = ('D', dv) fItem.appendRow(dItem) for vn, vv in f.variables.items(): vItem = QStandardItem(vn) vItem.setIcon(self.icons['variable']) vItem.setData(QVariant(vn)) vItem.ncItem = ('V', vv) fItem.appendRow(vItem) for an,av in ncVAttributes(vv).items(): aItem = QStandardItem(an) aItem.setIcon(self.icons['attribute']) aItem.setData(QVariant(an)) aItem.ncItem = ('A', av) vItem.appendRow(aItem)
def dropMimeData(self, mimedata, action, row, column, parentIndex): """ Handles the dropping of an item onto the model. De-serializes the data and inserts it into the model. """ # decode data using qgis helpers uri_list = QgsMimeDataUtils.decodeUriList(mimedata) if not uri_list: return False # find parent item dropParent = self.itemFromIndex(parentIndex) if not dropParent: return False # each uri will become a new item for uri in uri_list: item = QStandardItem(uri.name) item.setData(uri) # avoid placing dragged layers on it item.setDropEnabled(False) if uri.providerKey in ICON_MAPPER: item.setIcon(QIcon(ICON_MAPPER[uri.providerKey])) dropParent.appendRow(item) dropParent.emitDataChanged() return True
def _cat_desc_to_std_item(self, desc): """ Create a QStandardItem for the category description. """ item = QStandardItem() item.setText(desc.name) if desc.icon: icon = desc.icon else: icon = "icons/default-category.svg" icon = icon_loader.from_description(desc).get(icon) item.setIcon(icon) if desc.background: background = desc.background else: background = DEFAULT_COLOR background = NAMED_COLORS.get(background, background) brush = QBrush(QColor(background)) item.setData(brush, self.BACKGROUND_ROLE) tooltip = desc.description if desc.description else desc.name item.setToolTip(tooltip) item.setFlags(Qt.ItemIsEnabled) item.setData(QVariant(desc), self.CATEGORY_DESC_ROLE) return item
def _processDB(self, db, parent, dbf): """process the database and add its child nodes""" for k, v in db.items(): item = QStandardItem(k) item.setIcon(self.icons["project"]) item.setData(QVariant("P|%s|%s" % (dbf, v.path))) parent.appendRow(item) self._processProject(v, item, dbf)
def addSensorgroup(self, project_mi, sg): """show a newly created or updated sensorgroup""" dbf = self.dsFolder(project_mi) item = QStandardItem(sg.name) item.setIcon(self.icons["sensorgroup"]) item.setData(QVariant("G|%s|%s" % (dbf, sg.path))) self.itemFromIndex(project_mi).appendRow(item) self._processSensorGroup(sg, item, dbf)
def _processProject(self, pr, parent, dbf): """process the project and add its child nodes""" for k, v in pr.items(): item = QStandardItem(k) item.setIcon(self.icons['sensorgroup']) item.setData(QVariant("G|%s|%s" % (dbf, v.path))) parent.appendRow(item) self._processSensorGroup(v, item, dbf)
def update_model(self, model, schema, profile): """ Update the model by retrieving the profile given in database """ menudict = {} with self.transaction(): cur = self.connection.cursor() select = """ select name, profile, model_index, datasource_uri from {}.{} where profile = '{}' """.format(schema, self.table, profile) cur.execute(select) rows = cur.fetchall() model.clear() for name, profile, model_index, datasource_uri in self.sortby_modelindex( rows): menu = model.invisibleRootItem() indexes = json.loads(model_index) parent = '' for idx, subname in indexes[:-1]: parent += '{}-{}/'.format(idx, subname) if parent in menudict: # already created entry menu = menudict[parent] continue # create menu item = QStandardItem(subname) uri_struct = QgsMimeDataUtils.Uri(datasource_uri) item.setData(uri_struct) item.setIcon( QIcon(':/plugins/MenuBuilder/resources/menu.svg')) item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDropEnabled | Qt.ItemIsEditable) item.setWhatsThis("menu") menu.appendRow(item) menudict[parent] = item # set current menu to the new created item menu = item # add leaf (layer item) item = QStandardItem(name) uri_struct = QgsMimeDataUtils.Uri(datasource_uri) # fix layer name instead of table name # usefull when the layer has been renamed in menu uri_struct.name = name if uri_struct.providerKey in ICON_MAPPER: item.setIcon(QIcon(ICON_MAPPER[uri_struct.providerKey])) item.setData(uri_struct) # avoid placing dragged layers on it item.setDropEnabled(False) if uri_struct.providerKey == 'postgres': # set tooltip to postgres comment comment = self.get_table_comment(uri_struct.uri) item.setToolTip(comment) menudict[parent].appendRow(item)
def addDatabase(self, folder): """add the database at folder to the model""" db = DataBaseRoot(folder) self.databases[folder] = db dbItem = QStandardItem(db.name) dbItem.setData(QVariant("R|%s" % folder)) dbItem.setIcon(self.icons["database"]) self.rootItem.appendRow(dbItem) self._processDB(db, dbItem, folder)
def update_model(self, model, schema, profile): """ Update the model by retrieving the profile given in database """ menudict = {} with self.transaction(): cur = self.connection.cursor() select = """ select name, profile, model_index, datasource_uri from {}.{} where profile = '{}' """.format(schema, self.table, profile) cur.execute(select) rows = cur.fetchall() model.clear() for name, profile, model_index, datasource_uri in self.sortby_modelindex(rows): menu = model.invisibleRootItem() indexes = json.loads(model_index) parent = '' for idx, subname in indexes[:-1]: parent += '{}-{}/'.format(idx, subname) if parent in menudict: # already created entry menu = menudict[parent] continue # create menu item = QStandardItem(subname) uri_struct = QgsMimeDataUtils.Uri(datasource_uri) item.setData(uri_struct) item.setIcon(QIcon(':/plugins/MenuBuilder/resources/menu.svg')) item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDropEnabled | Qt.ItemIsEditable) item.setWhatsThis("menu") menu.appendRow(item) menudict[parent] = item # set current menu to the new created item menu = item # add leaf (layer item) item = QStandardItem(name) uri_struct = QgsMimeDataUtils.Uri(datasource_uri) # fix layer name instead of table name # usefull when the layer has been renamed in menu uri_struct.name = name if uri_struct.providerKey in ICON_MAPPER: item.setIcon(QIcon(ICON_MAPPER[uri_struct.providerKey])) item.setData(uri_struct) # avoid placing dragged layers on it item.setDropEnabled(False) if uri_struct.providerKey == 'postgres': # set tooltip to postgres comment comment = self.get_table_comment(uri_struct.uri) item.setToolTip(comment) menudict[parent].appendRow(item)
def addChart(self, chart, mi): """add a new chart to sensorgroup item at mi""" t, sensorgroup = self.dsNode(mi) if not chart.name in sensorgroup.charts: sensorgroup.addChart(chart) sensorgroup.flush() chItem = QStandardItem(chart.name) chItem.setIcon(self.icons["graph"]) chItem.setData(QVariant("C|%s|%s|%s" % (self.dsFolder(mi), sensorgroup.path, chart.name))) self.itemFromIndex(mi).appendRow(chItem)
def _processSensorGroup(self, sg, parent, dbf): """process the sensorgroup and add its child nodes""" for k, v in sg.items(): item = QStandardItem(k) item.setIcon(self.icons["sensor"]) item.setData(QVariant("S|%s|%s" % (dbf, v.path))) parent.appendRow(item) for k, v in sg.getCharts().items(): item = QStandardItem(k) item.setIcon(self.icons["graph"]) item.setData(QVariant("C|%s|%s|%s" % (dbf, sg.path, k))) parent.appendRow(item)
def writeModeData(self,data): ''' get data output and add on QtableWidgets ''' ParentMaster = QStandardItem('[ {0[src]} > {0[dst]} ] {1[Method]} {1[Host]}{1[Path]}'.format( data['urlsCap']['IP'], data['urlsCap']['Headers'])) ParentMaster.setIcon(QIcon('icons/accept.png')) ParentMaster.setSizeHint(QSize(30,30)) for item in data['urlsCap']['Headers']: ParentMaster.appendRow([QStandardItem('{}'.format(item)), QStandardItem(data['urlsCap']['Headers'][item])]) self.model.appendRow(ParentMaster) self.setFirstColumnSpanned(ParentMaster.row(), self.rootIndex(), True) self.scrollToBottom()
def requestUrl(self, action): url = action.data().toString() settings = self.settings settings.beginGroup(settings.keys.main) useExternal = settings.value("useSystemBrowser", False).toBool() settings.endGroup() if useExternal: QDesktopServices.openUrl(QUrl(url)) else: item = QStandardItem(url) item.setData(QVariant(url), DataRoles.url) item.setData(QVariant(action.toolTip()), DataRoles.urlTitle) item.setIcon(action.icon()) self.emit(Signals.openUrl, item)
def requestUrl(self, action): url = action.data().toString() settings = self.settings settings.beginGroup(settings.keys.main) useExternal = settings.value('useSystemBrowser', False).toBool() settings.endGroup() if useExternal: QDesktopServices.openUrl(QUrl(url)) else: item = QStandardItem(url) item.setData(QVariant(url), DataRoles.url) item.setData(QVariant(action.toolTip()), DataRoles.urlTitle) item.setIcon(action.icon()) self.emit(Signals.openUrl, item)
def actualizeSpectraModel(sample): #color =QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2], .4) model=QApplication.instance().view.spectraModel if model.rowCount(): model.clear() for i, spectrum in enumerate(sample.ispectra()): std_item = QStandardItem(str(spectrum.rtmin)) #std_item.setBackground(QBrush(color)) s = "<b>rtmin</b>: %f<br/>"%spectrum.rt s += "<b>rtmax</b>: %f<br/>"%spectrum.rtmin s += "<b>nb Points</b>: %d"%spectrum.x_data.shape[0] std_item.setToolTip(s) std_item.setIcon(QIcon(os.path.normpath('gui/icons/spectrumicon.png'))) std_item.setEditable(False) model.appendRow(std_item)
def loadwidgettypes(self): self.useablewidgets.blockSignals(True) for widgettype in roam.editorwidgets.core.supportedwidgets(): try: configclass = configmanager.editorwidgets.widgetconfigs[widgettype] except KeyError: continue configwidget = configclass() item = QStandardItem(widgettype) item.setData(configwidget, Qt.UserRole) item.setData(widgettype, Qt.UserRole + 1) item.setIcon(QIcon(widgeticon(widgettype))) self.useablewidgets.model().appendRow(item) self.widgetstack.addWidget(configwidget) self.useablewidgets.blockSignals(False)
def loadwidgettypes(self): self.widgetCombo.blockSignals(True) for widgettype in roam.editorwidgets.core.supportedwidgets(): try: configclass = configmanager.editorwidgets.widgetconfigs[widgettype] except KeyError: continue configwidget = configclass() item = QStandardItem(widgettype) item.setData(configwidget, Qt.UserRole) item.setData(widgettype, Qt.UserRole + 1) item.setIcon(QIcon(widgeticon(widgettype))) self.widgetCombo.model().appendRow(item) self.widgetstack.addWidget(configwidget) self.widgetCombo.blockSignals(False)
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 _processProject(self, pr, parent, dbf): """process the project and add its child nodes""" for k, v in pr.items(): if isinstance(v, SensorGroup): item = QStandardItem(k) item.setIcon(self.icons["sensorgroup"]) item.setData(QVariant("G|%s|%s" % (dbf, v.path))) parent.appendRow(item) self._processSensorGroup(v, item, dbf) elif isinstance(v, Project): item = QStandardItem(k) item.setIcon(self.icons["project"]) item.setData(QVariant("P|%s|%s" % (dbf, v.path))) parent.appendRow(item) self._processProject(v, item, dbf) else: print k, v
def actualizeSpectraModel(sample): #color =QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2], .4) model = QApplication.instance().view.spectraModel if model.rowCount(): model.clear() for i, spectrum in enumerate(sample.ispectra()): std_item = QStandardItem(str(spectrum.rtmin)) #std_item.setBackground(QBrush(color)) s = "<b>rtmin</b>: %f<br/>" % spectrum.rt s += "<b>rtmax</b>: %f<br/>" % spectrum.rtmin s += "<b>nb Points</b>: %d" % spectrum.x_data.shape[0] std_item.setToolTip(s) std_item.setIcon( QIcon(os.path.normpath('gui/icons/spectrumicon.png'))) std_item.setEditable(False) model.appendRow(std_item)
def __init__(self, parent = None): QStandardItemModel.__init__(self, parent) self._settings = QSettings() self._settings.beginGroup("plugins") self.pluginloader = PluginLoader() self.pluginloader.pluginsToLoad = self.__checkToLoad() for plugin in self.pluginloader.plugins: if plugin.load == True: item = QStandardItem(plugin.pluginUserString) if plugin.icon: item.setIcon(plugin.icon) font = item.font() font.setPointSize(font.pointSize() + 4) item.setFont(font) item.setEditable(False) item.plugin = plugin self.appendRow(item)
def __init__(self, parent=None): QStandardItemModel.__init__(self, parent) self._settings = QSettings() self._settings.beginGroup("plugins") self.pluginloader = PluginLoader() self.pluginloader.pluginsToLoad = self.__checkToLoad() for plugin in self.pluginloader.plugins: if plugin.load == True: item = QStandardItem(plugin.pluginUserString) if plugin.icon: item.setIcon(plugin.icon) font = item.font() font.setPointSize(font.pointSize() + 4) item.setFont(font) item.setEditable(False) item.plugin = plugin self.appendRow(item)
def add_menu(self): """ Add a menu inside qtreeview """ item = QStandardItem('NewMenu') item.setIcon(QIcon(':/plugins/MenuBuilder/resources/menu.svg')) # select current index selected and insert as a sibling brother = self.target.selectedIndexes() if not brother or not brother[0].parent(): # no selection, add menu at the top level self.menumodel.insertRow(self.menumodel.rowCount(), item) return parent = self.menumodel.itemFromIndex(brother[0].parent()) if not parent: self.menumodel.insertRow(self.menumodel.rowCount(), item) return parent.appendRow(item)
def addPeakToOneCluster(self, action): #if action.text() == 'Identification': #print "launch Identification" # return idx = self.view.treeView_3.selectedIndexes()[0] model = idx.model() s = self.currentSample[ 2] #self.model.sample(idx.parent().data().toString(), fullNameEntry=False) peak = s.peakAt(str(idx.data().toString())) peakToAdd = s.peakAt(str(action.text())) peak.fragCluster += [peakToAdd] #first add the parent peak.fragCluster += peakToAdd.fragCluster + peakToAdd.isoCluster #then add its child #add item item = QStandardItem(action.text()) gotFragItem = False for i in xrange(model.itemFromIndex(idx).rowCount()): if model.itemFromIndex(idx).child( i).text() == "fragments/adducts:": gotFragItem = True fragItem = model.itemFromIndex(idx).child(i) fragItem.appendRow(item) break if not gotFragItem: fragItem = QStandardItem("fragments/adducts:") fragItem.appendRow(item) model.itemFromIndex(idx).appendRow(fragItem) #remove the entry peakToAdd for i in xrange(model.rowCount()): item_ = model.item(i, 0) if item_.text() == s.shortName(): for j in xrange(item_.rowCount()): if item_.child(j).text() == action.text(): selector = self.view.treeView_3.selectionModel() for idx in self.view.treeView_3.selectedIndexes(): selector.select(idx, QItemSelectionModel.Deselect) item.setIcon(item_.child(j).icon()) selector.select(model.indexFromItem(item_.child(j)), QItemSelectionModel.Select) self.view.treeView_3.removeSelected() break break
def _buildfromlist(self, widget, listconfig): items = listconfig['items'] for item in items: parts = item.split(';') data = parts[0] try: desc = parts[1] except IndexError: desc = data try: path = parts[2] icon = QIcon(path) except: icon = QIcon() item = QStandardItem(desc) item.setData(data, Qt.UserRole) item.setIcon(icon) self.listmodel.appendRow(item)
def loadwidgettypes(self): """ Load all supported widgets into the combobox for the form designer. :return: """ self.useablewidgets.blockSignals(True) for widgettype in roam.editorwidgets.core.supportedwidgets(): try: configclass = configmanager.editorwidgets.widgetconfigs[widgettype] except KeyError: continue configwidget = configclass() item = QStandardItem(widgettype) item.setData(configwidget, Qt.UserRole) item.setData(widgettype, Qt.UserRole + 1) item.setIcon(QIcon(widgeticon(widgettype))) self.useablewidgets.model().appendRow(item) self.widgetstack.addWidget(configwidget) self.useablewidgets.blockSignals(False)
def _widget_desc_to_std_item(self, desc, category): """ Create a QStandardItem for the widget description. """ item = QStandardItem(desc.name) item.setText(desc.name) if desc.icon: icon = desc.icon else: icon = "icons/default-widget.svg" icon = icon_loader.from_description(desc).get(icon) item.setIcon(icon) # This should be inherited from the category. background = None if desc.background: background = desc.background elif category.background: background = category.background else: background = DEFAULT_COLOR if background is not None: background = NAMED_COLORS.get(background, background) brush = QBrush(QColor(background)) item.setData(brush, self.BACKGROUND_ROLE) tooltip = tooltip_helper(desc) style = "ul { margin-top: 1px; margin-bottom: 1px; }" tooltip = TOOLTIP_TEMPLATE.format(style=style, tooltip=tooltip) item.setToolTip(tooltip) item.setWhatsThis(whats_this_helper(desc)) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item.setData(desc, self.WIDGET_DESC_ROLE) # Create the action for the widget_item action = self.create_action_for_item(item) item.setData(action, self.WIDGET_ACTION_ROLE) return item
def update(self): model = QStandardItemModel() model.setHorizontalHeaderItem(0, QStandardItem(i18n.get('account'))) model.setHorizontalHeaderItem(1, QStandardItem(i18n.get('message'))) self.list_.setModel(model) now = int(time.time()) interval = self.base.core.get_queue_interval() * 60 if self.last_timestamp: est_time = ((self.last_timestamp + interval) - now) / 60 else: est_time = 0 row = 0 for status in self.base.core.list_statuses_queue(): username = get_username_from(status.account_id) protocol_image = "%s.png" % get_protocol_from(status.account_id) item = QStandardItem(QString.fromUtf8(username)) item.setIcon(QIcon(self.base.load_image(protocol_image, True))) model.setItem(row, 0, item) model.setItem(row, 1, QStandardItem(QString.fromUtf8(status.text))) row += 1 humanized_interval = self.base.humanize_time_intervals( self.base.core.get_queue_interval()) humanized_est_time = self.base.humanize_time_intervals(est_time) warning = i18n.get('messages_will_be_send') % humanized_interval next_message = ' '.join( [i18n.get('next_message_should_be_posted_in'), humanized_est_time]) self.caption.setText(warning) if row == 0: self.estimated_time.setText('') else: self.estimated_time.setText(next_message) self.list_.horizontalHeader().setResizeMode(1, QHeaderView.Stretch) self.list_.resizeColumnsToContents() self.__enable()
def _widget_desc_to_std_item(self, desc, category): """ Create a QStandardItem for the widget description. """ item = QStandardItem(desc.name) item.setText(desc.name) if desc.icon: icon = desc.icon else: icon = "icons/default-widget.svg" icon = icon_loader.from_description(desc).get(icon) item.setIcon(icon) # This should be inherited from the category. background = None if desc.background: background = desc.background elif category.background: background = category.background else: background = DEFAULT_COLOR if background is not None: background = NAMED_COLORS.get(background, background) brush = QBrush(QColor(background)) item.setData(brush, self.BACKGROUND_ROLE) tooltip = tooltip_helper(desc) style = "ul { margin-top: 1px; margin-bottom: 1px; }" tooltip = TOOLTIP_TEMPLATE.format(style=style, tooltip=tooltip) item.setToolTip(tooltip) item.setWhatsThis(whats_this_helper(desc)) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) item.setData(QVariant(desc), self.WIDGET_DESC_ROLE) # Create the action for the widget_item action = self.create_action_for_item(item) item.setData(QVariant(action), self.WIDGET_ACTION_ROLE) return item
def fillViews(self): flagList = glob(os.path.abspath(self.cfgInfo.defaultIconDir() + "*.png")) flagList.sort() XkbLayouts = self.getXkbLayouts() for x in XkbLayouts: # fill layout listView for k in x.keys(): self.langList.append(k) self.dataDict = {} for dict in XkbLayouts: # fill internal data dict for dName, isocode in dict.items(): dispName = dName self.dataDict.update({dispName: isocode}) self.langList.sort() for f in flagList: # fill the flag listView i = QStandardItem(f.split("/")[-1].split(".")[0].upper()) i.setIcon(QIcon(f)) self.fmodel.appendRow(i) self.ui.flagLabel.setPixmap(QPixmap(flagList[0])) self.fillResView() del flagList del XkbLayouts
def addPeakToOneCluster(self, action): #if action.text() == 'Identification': #print "launch Identification" # return idx=self.view.treeView_3.selectedIndexes()[0] model=idx.model() s=self.currentSample[2]#self.model.sample(idx.parent().data().toString(), fullNameEntry=False) peak= s.peakAt(str(idx.data().toString())) peakToAdd=s.peakAt(str(action.text())) peak.fragCluster += [peakToAdd]#first add the parent peak.fragCluster += peakToAdd.fragCluster+peakToAdd.isoCluster#then add its child #add item item=QStandardItem(action.text()) gotFragItem=False for i in xrange (model.itemFromIndex(idx).rowCount()): if model.itemFromIndex(idx).child(i).text() == "fragments/adducts:": gotFragItem = True fragItem = model.itemFromIndex(idx).child(i) fragItem.appendRow(item) break if not gotFragItem: fragItem = QStandardItem("fragments/adducts:") fragItem.appendRow(item) model.itemFromIndex(idx).appendRow(fragItem) #remove the entry peakToAdd for i in xrange(model.rowCount()): item_=model.item(i, 0) if item_.text()==s.shortName(): for j in xrange(item_.rowCount()): if item_.child(j).text()==action.text(): selector=self.view.treeView_3.selectionModel() for idx in self.view.treeView_3.selectedIndexes(): selector.select(idx ,QItemSelectionModel.Deselect) item.setIcon(item_.child(j).icon()) selector.select(model.indexFromItem(item_.child(j)), QItemSelectionModel.Select) self.view.treeView_3.removeSelected() break break
def update(self): model = QStandardItemModel() model.setHorizontalHeaderItem(0, QStandardItem(i18n.get('account'))) model.setHorizontalHeaderItem(1, QStandardItem(i18n.get('message'))) self.list_.setModel(model) now = int(time.time()) interval = self.base.core.get_queue_interval() * 60 if self.last_timestamp: est_time = ((self.last_timestamp + interval) - now) / 60 else: est_time = 0 row = 0 for status in self.base.core.list_statuses_queue(): username = get_username_from(status.account_id) protocol_image = "%s.png" % get_protocol_from(status.account_id) item = QStandardItem(QString.fromUtf8(username)) item.setIcon(QIcon(self.base.load_image(protocol_image, True))) model.setItem(row, 0, item) model.setItem(row, 1, QStandardItem(QString.fromUtf8(status.text))) row += 1 humanized_interval = self.base.humanize_time_intervals(self.base.core.get_queue_interval()) humanized_est_time = self.base.humanize_time_intervals(est_time) warning = i18n.get('messages_will_be_send') % humanized_interval next_message = ' '.join([i18n.get('next_message_should_be_posted_in'), humanized_est_time]) self.caption.setText(warning) if row == 0: self.estimated_time.setText('') else: self.estimated_time.setText(next_message) self.list_.horizontalHeader().setResizeMode(1, QHeaderView.Stretch) self.list_.resizeColumnsToContents() self.__enable()
def populatePhotos(self, index=0): self.model.clear() QApplication.setOverrideCursor(Qt.WaitCursor) # photos is a list of tuples (id, title, imagepath) photos = self._photosOfLandmark() for i in photos: tp = os.path.join(self.thumbpath, str(i[0])) + '.png' img = self.thumbnailPhoto(i[2], tp) icon = QIcon(img) title = i[1] if i[1] else '<unnamed photo> %s' % i[0] item = QStandardItem(title) item.setIcon(icon) item.setData(i[0], Qt.UserRole) item.setToolTip(title) self.model.appendRow(item) lastIdx = self.model.indexFromItem(item) idx = self.model.createIndex(0, 0) if self.model.rowCount() > 0: if index == -1: idx = lastIdx elif index > 0: idx = self.model.createIndex(index, 0) self.lstPhotos.selectionModel().select(idx, QItemSelectionModel.Select) else: self._clearForm() QApplication.restoreOverrideCursor()
def fillTree(self): self.items = {} self.model.clear() self.model.setHorizontalHeaderLabels([self.tr('Setting'), self.tr('Value')]) text = unicode(self.searchBox.text()) settings = ProcessingConfig.getSettings() rootItem = self.model.invisibleRootItem() priorityKeys = [self.tr('General'), self.tr('Models'), self.tr('Scripts')] for group in priorityKeys: groupItem = QStandardItem(group) icon = ProcessingConfig.getGroupIcon(group) groupItem.setIcon(icon) groupItem.setEditable(False) emptyItem = QStandardItem() emptyItem.setEditable(False) rootItem.insertRow(0, [groupItem, emptyItem]) for setting in settings[group]: if setting.hidden or setting.name.startswith("MENU_"): continue if text == '' or text.lower() in setting.description.lower(): labelItem = QStandardItem(setting.description) labelItem.setIcon(icon) labelItem.setEditable(False) self.items[setting] = SettingItem(setting) groupItem.insertRow(0, [labelItem, self.items[setting]]) if text != '': self.tree.expand(groupItem.index()) providersItem = QStandardItem(self.tr('Providers')) icon = QIcon(os.path.join(pluginPath, 'images', 'alg.png')) providersItem.setIcon(icon) providersItem.setEditable(False) emptyItem = QStandardItem() emptyItem.setEditable(False) rootItem.insertRow(0, [providersItem, emptyItem]) for group in settings.keys(): if group in priorityKeys or group == menusSettingsGroup: continue groupItem = QStandardItem(group) icon = ProcessingConfig.getGroupIcon(group) groupItem.setIcon(icon) groupItem.setEditable(False) for setting in settings[group]: if setting.hidden: continue if text == '' or text.lower() in setting.description.lower(): labelItem = QStandardItem(setting.description) labelItem.setIcon(icon) labelItem.setEditable(False) self.items[setting] = SettingItem(setting) groupItem.insertRow(0, [labelItem, self.items[setting]]) emptyItem = QStandardItem() emptyItem.setEditable(False) providersItem.appendRow([groupItem, emptyItem]) menusItem = QStandardItem(self.tr('Menus (requires restart)')) icon = QIcon(os.path.join(pluginPath, 'images', 'menu.png')) menusItem.setIcon(icon) menusItem.setEditable(False) emptyItem = QStandardItem() emptyItem.setEditable(False) rootItem.insertRow(0, [menusItem, emptyItem]) providers = Processing.providers for provider in providers: groupItem = QStandardItem(provider.getDescription()) icon = provider.getIcon() groupItem.setIcon(icon) groupItem.setEditable(False) for alg in provider.algs: labelItem = QStandardItem(alg.name) labelItem.setIcon(icon) labelItem.setEditable(False) try: setting = ProcessingConfig.settings["MENU_" + alg.commandLineName()] except: continue self.items[setting] = SettingItem(setting) groupItem.insertRow(0, [labelItem, self.items[setting]]) emptyItem = QStandardItem() emptyItem.setEditable(False) menusItem.appendRow([groupItem, emptyItem]) self.tree.sortByColumn(0, Qt.AscendingOrder) self.adjustColumns()
def _buildfromlayer(self, widget, layerconfig): layername = layerconfig['layer'] keyfield = layerconfig['key'] valuefield = layerconfig['value'] filterexp = layerconfig.get('filter', None) try: layer = QgsMapLayerRegistry.instance().mapLayersByName( layername)[0] except IndexError: roam.utils.warning( "Can't find layer {} in project".format(layername)) return keyfieldindex = layer.fieldNameIndex(keyfield) valuefieldindex = layer.fieldNameIndex(valuefield) if keyfieldindex == -1 or valuefieldindex == -1: roam.utils.warning("Can't find key or value column") return if self.allownulls: item = QStandardItem('(no selection)') item.setData(None, Qt.UserRole) self.listmodel.appendRow(item) attributes = {keyfieldindex, valuefieldindex} iconfieldindex = layer.fieldNameIndex('icon') if iconfieldindex > -1: attributes.add(iconfieldindex) if not filterexp and valuefieldindex == keyfieldindex and iconfieldindex == -1: values = layer.uniqueValues(keyfieldindex) for value in values: value = nullconvert(value) item = QStandardItem(value) item.setData(value, Qt.UserRole) self.listmodel.appendRow(item) return flags = QgsFeatureRequest.NoGeometry expression = None if filterexp: expression = QgsExpression(filterexp) expression.prepare(layer.pendingFields()) if expression.hasParserError(): roam.utils.warning("Expression has parser error: {}".format( expression.parserErrorString())) return if expression.needsGeometry(): flags = QgsFeatureRequest.NoFlags for field in expression.referencedColumns(): index = layer.fieldNameIndex(field) attributes.add(index) request = QgsFeatureRequest().setFlags(flags).setSubsetOfAttributes( list(attributes)) for feature in layer.getFeatures(request): if expression and not expression.evaluate(feature): continue keyvalue = nullconvert(feature[keyfieldindex]) valuvalue = nullconvert(feature[valuefield]) try: path = feature[iconfieldindex] icon = QIcon(path) except KeyError: icon = QIcon() item = QStandardItem(unicode(keyvalue)) item.setData(unicode(valuvalue), Qt.UserRole) item.setIcon(icon) self.listmodel.appendRow(item)
def _buildfromlayer(self, widget, layerconfig): layername = layerconfig['layer'] keyfield = layerconfig['key'] valuefield = layerconfig['value'] filterexp = layerconfig.get('filter', None) try: layer = QgsMapLayerRegistry.instance().mapLayersByName(layername)[0] except IndexError: roam.utils.warning("Can't find layer {} in project".format(layername)) return keyfieldindex = layer.fieldNameIndex(keyfield) valuefieldindex = layer.fieldNameIndex(valuefield) if keyfieldindex == -1 or valuefieldindex == -1: roam.utils.warning("Can't find key or value column") return if self.allownulls: item = QStandardItem('(no selection)') item.setData(None, Qt.UserRole) self.listmodel.appendRow(item) attributes = {keyfieldindex, valuefieldindex} iconfieldindex = layer.fieldNameIndex('icon') if iconfieldindex > -1: attributes.add(iconfieldindex) if not filterexp and valuefieldindex == keyfieldindex and iconfieldindex == -1: values = layer.uniqueValues(keyfieldindex) for value in values: value = nullconvert(value) item = QStandardItem(value) item.setData(value, Qt.UserRole) self.listmodel.appendRow(item) return flags = QgsFeatureRequest.NoGeometry expression = None if filterexp: expression = QgsExpression(filterexp) expression.prepare(layer.pendingFields()) if expression.hasParserError(): roam.utils.warning("Expression has parser error: {}".format(expression.parserErrorString())) return if expression.needsGeometry(): flags = QgsFeatureRequest.NoFlags for field in expression.referencedColumns(): index = layer.fieldNameIndex(field) attributes.add(index) request = QgsFeatureRequest().setFlags(flags).setSubsetOfAttributes(list(attributes)) for feature in layer.getFeatures(request): if expression and not expression.evaluate(feature): continue keyvalue = nullconvert(feature[keyfieldindex]) valuvalue = nullconvert(feature[valuefield]) try: path = feature[iconfieldindex] icon = QIcon(path) except KeyError: icon = QIcon() item = QStandardItem(unicode(keyvalue)) item.setData(unicode(valuvalue), Qt.UserRole) item.setIcon(icon) self.listmodel.appendRow(item)
def fillTree(self): self.items = {} self.model.clear() self.model.setHorizontalHeaderLabels([self.tr('Setting'), self.tr('Value')]) text = unicode(self.searchBox.text()) settings = ProcessingConfig.getSettings() rootItem = self.model.invisibleRootItem() priorityKeys = [self.tr('General'), self.tr('Models'), self.tr('Scripts')] for group in priorityKeys: groupItem = QStandardItem(group) icon = ProcessingConfig.getGroupIcon(group) groupItem.setIcon(icon) groupItem.setEditable(False) emptyItem = QStandardItem() emptyItem.setEditable(False) rootItem.insertRow(0, [groupItem, emptyItem]) for setting in settings[group]: if setting.hidden: continue if text == '' or text.lower() in setting.description.lower(): labelItem = QStandardItem(setting.description) labelItem.setIcon(icon) labelItem.setEditable(False) self.items[setting] = SettingItem(setting) groupItem.insertRow(0, [labelItem, self.items[setting]]) if text != '': self.tree.expand(groupItem.index()) providersItem = QStandardItem(self.tr('Providers')) icon = QIcon(os.path.join(pluginPath, 'images', 'alg.png')) providersItem.setIcon(icon) providersItem.setEditable(False) emptyItem = QStandardItem() emptyItem.setEditable(False) rootItem.insertRow(0, [providersItem, emptyItem]) for group in settings.keys(): if group in priorityKeys: continue groupItem = QStandardItem(group) icon = ProcessingConfig.getGroupIcon(group) groupItem.setIcon(icon) groupItem.setEditable(False) for setting in settings[group]: if setting.hidden: continue if text == '' or text.lower() in setting.description.lower(): labelItem = QStandardItem(setting.description) labelItem.setIcon(icon) labelItem.setEditable(False) self.items[setting] = SettingItem(setting) groupItem.insertRow(0, [labelItem, self.items[setting]]) emptyItem = QStandardItem() emptyItem.setEditable(False) providersItem.appendRow([groupItem, emptyItem]) self.tree.sortByColumn(0, Qt.AscendingOrder) self.adjustColumns()
PyQt使用Model时,如果Model创建时未设置parent,则运行完退出时会报错: QObject::startTimer: QTimer can only be used with threads started with QThread ''' # model = QStandardItemModel() # 创建标准项模型 model = QStandardItemModel(view) # 创建标准项模型 # 获取模型的根项(Root Item),根项是不可见的 parentItem = model.invisibleRootItem() # 创建标准项item0,并设置显示文本,图标和工具提示 item0 = QStandardItem() item0.setText("A") pixmap0 = QPixmap(50, 50) pixmap0.fill(QColor("red")) # pixmap0.fill(Qt.red) item0.setIcon(QIcon(pixmap0)) item0.setToolTip("indexA") parentItem.appendRow(item0) # 将item0 作为根项的子项 # 将创建的标准项作为新的父项 parentItem = item0 # 创建新的标准项,它将作为item0的子项 item1 = QStandardItem() item1.setText("B") pixmap1 = QPixmap(50, 50) pixmap1.fill(Qt.blue) item1.setIcon(QIcon(pixmap1)) item1.setToolTip("indexB") parentItem.appendRow(item1)