Example #1
1
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)
Example #2
0
File: qt.py Project: odipus/orange3
    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
Example #3
0
 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)
Example #4
0
 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 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 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
Example #7
0
    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
Example #8
0
    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)
Example #12
0
    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)
Example #16
0
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 _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)
Example #18
0
 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()
Example #19
0
 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()
Example #20
0
 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)
Example #21
0
 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)
Example #22
0
    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)
Example #23
0
    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)
Example #24
0
    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)
Example #25
0
 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
Example #27
0
    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)
Example #28
0
    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)
Example #30
0
    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 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)
Example #32
0
    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
Example #33
0
    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)
Example #34
0
    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)
Example #35
0
    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)
Example #36
0
File: qt.py Project: odipus/orange3
    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
Example #37
0
    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()
Example #38
0
    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
Example #40
0
 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
Example #41
0
    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()
Example #42
0
    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()
Example #43
0
    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()
Example #44
0
    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)
Example #45
0
    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)
Example #46
0
    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()
Example #47
0
    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)