def add(self, seq, text, position, foreground=False, background=False, icon=False): from PyQt4.QtGui import QTreeWidgetItem item = QTreeWidgetItem() item.setText(0, text) item.setData(0, Qt.UserRole, position) if foreground: item.setForeground(0, foreground) if background: item.setBackground(0, background) if icon: item.setIcon(0, icon) seq.append(item) return item
def fillTree(self): self.profilesTree.clear() allProfiles = defaultdict(list) for v in profiles.values(): allProfiles[v.group].append(v) profileIcon = QIcon(os.path.join(os.path.dirname(__file__), os.pardir, 'icons', 'profile.png')) for group, groupProfiles in allProfiles.iteritems(): groupItem = QTreeWidgetItem() groupItem.setText(0, group) for profile in groupProfiles: profileItem = QTreeWidgetItem() profileItem.profile = profile profileItem.isCustom = False profileItem.setText(0, profile.name) profileItem.setIcon(0, profileIcon) groupItem.addChild(profileItem) self.profilesTree.addTopLevelItem(groupItem) groupItem = QTreeWidgetItem() groupItem.setText(0, self.tr("User profiles")) for profile in customProfiles(): profileItem = QTreeWidgetItem() profileItem.profile = profile profileItem.isCustom = True profileItem.setText(0, profile.name) profileItem.setIcon(0, profileIcon) groupItem.addChild(profileItem) self.profilesTree.addTopLevelItem(groupItem) self.profilesTree.expandAll()
def buildParentItem(self, dcollection, title, rootresource): ''' Builds tree widget items from a dictionary. ''' rtItem = QTreeWidgetItem() rtItem.setText(0, title) rtItem.setIcon(0, QIcon(rootresource)) topLevelItems = [] for k, v in dcollection.iteritems(): parentItem = QTreeWidgetItem() if isinstance(v, dict): parentItem.setText(0, k) for kc, vc in v.iteritems(): child = QTreeWidgetItem() child.setText(0, self._combine(kc, vc)) parentItem.addChild(child) else: parentItem.setText(0, self._combine(k, v)) topLevelItems.append(parentItem) rtItem.addChildren(topLevelItems) rtItem.setExpanded(True) return rtItem
def _add_children(item, mod): for ref in mod.refs: try: childMod = self.project.get_module_at_filename(ref) except KeyError: childMod = self.project.get_module_at_dottedname(ref) if childMod in visited: return visited.add(childMod) child = QTreeWidgetItem(item) child.setText(0, ref) self._setup_font(child, ref, childMod.owner) child.setIcon(0, self._select_icon(childMod.owner)) child.setData(0, self.TYPE_MODULE, childMod) child.setData(0, self.TYPE_NODE, None) item.addChild(child) _add_children(child, childMod) for name, sym in mod.symbols.items(): if not isinstance(sym, Name): continue child = QTreeWidgetItem(item) child.setText(0, name) self._setup_font(child, name, sym) child.setIcon(0, self._select_icon(sym)) child.setData(0, self.TYPE_MODULE, mod) child.setData(0, self.TYPE_NODE, mod.symbols[name]) item.addChild(child)
def loadPlaylistFromIndex(self, ModelIndex): playlist = ModelIndex.data(Qt.UserRole).toPyObject()[0] self.emit(SIGNAL("start_loading")) print("Request for Playlist") thread = WorkerThread(playlist.listTracks) thread.start() while not thread.isFinished(): QApplication.processEvents() tracks = thread.result() print("Request Done.") #tracks = playlist.listTracks() for Id, trackObj in tracks.iteritems(): title = trackObj.title print("Title:", title) print("Modelindex:", ModelIndex) parentOfTitel = self.itemFromIndex(ModelIndex) entry2 = QTreeWidgetItem(parentOfTitel, [unicode(title)]) entry2.setIcon(0, QIcon(":/mp3.png")) entry2.setData(0, Qt.UserRole, QVariant((trackObj, ))) self.parentFromAlbum[unicode(title)] = entry2 print("Created: ", unicode(title)) self.emit(SIGNAL("stop_loading"))
def createActionItem( self, key ): """ Creates a new action item for the inputed key. :param key | <str> :return <QTreeWidgetItem> """ action = self._actions.get(key) if ( not action ): text = 'Missing Action: %s' % key item = QTreeWidgetItem([text]) ico = projexui.resources.find('img/log/warning.png') item.setIcon(0, QIcon(ico)) else: item = QTreeWidgetItem([str(action.text()).replace('&', '')]) item.setIcon(0, action.icon()) item.setSizeHint(0, QSize(120, 20)) item.setData(0, Qt.UserRole, qt.wrapVariant(key)) flags = item.flags() flags ^= Qt.ItemIsDropEnabled item.setFlags(flags) return item
def createActionItem(self, key): """ Creates a new action item for the inputed key. :param key | <str> :return <QTreeWidgetItem> """ action = self._actions.get(key) if (not action): text = 'Missing Action: %s' % key item = QTreeWidgetItem([text]) ico = projexui.resources.find('img/log/warning.png') item.setIcon(0, QIcon(ico)) else: item = QTreeWidgetItem([str(action.text()).replace('&', '')]) item.setIcon(0, action.icon()) item.setSizeHint(0, QSize(120, 20)) item.setData(0, Qt.UserRole, qt.wrapVariant(key)) flags = item.flags() flags ^= Qt.ItemIsDropEnabled item.setFlags(flags) return item
def appendPage(self, path, widget, icon=None): """Append page to the tree. Called by a plugin for creating own page. Example: :: widget = MitSchemeSettings(dialog) dialog.appendPage(u"Modes/MIT Scheme", widget, QIcon(':/enkiicons/languages/scheme.png')) """ pathParts = path.split('/') if len(pathParts) == 1: parentItem = None else: parentItem = self._itemByPath(pathParts[:-1]) twItem = QTreeWidgetItem([pathParts[-1]]) if icon is not None: twItem.setIcon(0, icon) if parentItem is not None: parentItem.addChild(twItem) else: self.twMenu.addTopLevelItem(twItem) self.swPages.addWidget(widget) self._pageForItem[path] = widget
def add_modify_account(self, add=False): dlg = AccountSettingsDialog(self) if not add: item = self.widgets.accounts.currentItem() if not item: return account = self.account_items.get(item) if not account: return #account = item.data(0, ITEM_PLACEHOLDER_ROLE).toPyObject() dlg.fill_from(account) else: item = QTreeWidgetItem() result = dlg.exec_() if not result == QDialog.Accepted: return new_a = dlg.values item.setText(0, new_a["name"]) #get icon and name... name, icon = getProtoIconAndName(getattr(yobotproto, new_a["improto"], -1)) item.setText(1, name) item.setIcon(1, icon) if add: if self.account_exists(new_a): print "account already exists.. not adding" return item.setData(0, ITEM_PLACEHOLDER_ROLE, new_a) self.widgets.accounts.addTopLevelItem(item) self.config.accounts.append(new_a) else: account.update(new_a)
def _loadDir(self, base_path, tree): for element in os.listdir(base_path): path = os.path.join(base_path, element) if (not os.path.isdir(path)) and (not path.endswith(".csv")): continue if os.path.isdir(path): parent_itm = QTreeWidgetItem(tree, [element]) self._loadDir(path, parent_itm) if parent_itm.childCount() == 0: parent = parent_itm.parent() root = parent_itm.treeWidget().invisibleRootItem() (parent or root).removeChild(parent_itm) else: parent_itm.setIcon( 0, QIcon( "/usr/share/icons/ubuntu-mono-light/places/16/folder-home.svg" )) # parent_itm.setExpanded(True) else: if Graph.getGraphDesc(path) is None: continue # item = GraphFileTreeWidgetItem(tree, element) item = QTreeWidgetItem(tree, [element]) item.setData(0, Qt.UserRole, path) item.setCheckState(0, Qt.Unchecked)
def __init__(self): super(LessonSelector, self).__init__() self.setupUi(self) self.lesson = None allLessons = defaultdict(list) for lesson in lessons: allLessons[lesson.group].append(lesson) lessonIcon = QIcon(os.path.dirname(__file__) + '/lesson.gif') for group, groupLessons in allLessons.iteritems(): groupItem = QTreeWidgetItem() groupItem.setText(0, group) for lesson in groupLessons: lessonItem = QTreeWidgetItem() lessonItem.lesson = lesson lessonItem.setText(0, lesson.name) lessonItem.setIcon(0, lessonIcon) groupItem.addChild(lessonItem) self.lessonsTree.addTopLevelItem(groupItem) self.lessonsTree.sortItems(0, 0) self.lessonsTree.expandAll() self.lessonsTree.currentItemChanged.connect(self.currentItemChanged) self.lessonsTree.itemDoubleClicked.connect(self.itemDoubleClicked) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
def appendPage(self, path, widget, icon=None): """Append page to the tree. Called by a plugin for creating own page. Example: :: widget = MitSchemeSettings(dialog) dialog.appendPage(u"Modes/MIT Scheme", widget, QIcon(':/enkiicons/languages/scheme.png')) """ pathParts = path.split('/') if len(pathParts) == 1: parentItem = None else: parentItem = self._itemByPath(pathParts[:-1]) twItem = QTreeWidgetItem([pathParts[-1]]) if icon is not None: twItem.setIcon(0, icon) else: twItem.setIcon(0, QIcon(':/enkiicons/transparent.png')) if parentItem is not None: parentItem.addChild(twItem) self.twMenu.expandAll() else: self.twMenu.addTopLevelItem(twItem) self.swPages.addWidget(widget) self._pageForItem[path] = widget
def loadPlaylistFromIndex(self, ModelIndex): playlist = ModelIndex.data(Qt.UserRole).toPyObject()[0] self.emit(SIGNAL("start_loading")) print("Request for Playlist") thread = WorkerThread(playlist.listTracks) thread.start() while not thread.isFinished(): QApplication.processEvents() tracks = thread.result() print("Request Done.") #tracks = playlist.listTracks() for Id, trackObj in tracks.iteritems(): title = trackObj.title print("Title:", title) print("Modelindex:", ModelIndex) parentOfTitel = self.itemFromIndex(ModelIndex) entry2 = QTreeWidgetItem(parentOfTitel, [unicode(title)]) entry2.setIcon(0, QIcon(":/mp3.png")) entry2.setData(0, Qt.UserRole, QVariant((trackObj,))) self.parentFromAlbum[unicode(title)] = entry2 print("Created: ", unicode(title)) self.emit(SIGNAL("stop_loading"))
def createTree(self): nodes = self._createTree(list(self.model)) root = QTreeWidgetItem([tr("Network interfaces")]) root.setIcon(0, QIcon(":/icons-32/home.png")) unsetFlag(root, Qt.ItemIsSelectable) for node in nodes: root.addChild(node) return [root]
def create_dir_item(dirname, parent): if dirname != root_path: displayed_name = osp.basename(dirname) else: displayed_name = dirname item = QTreeWidgetItem(parent, [displayed_name]) item.setIcon(0, get_std_icon('DirClosedIcon')) return item
def createChild(self, name, parent=None, icon=None): """ Create a new child for to the parent item. If the parent is None it add to the root. """ item = QTreeWidgetItem(self, [name]) if( parent is None) else QTreeWidgetItem(parent, [name]) if icon is not None: item.setIcon(0, QtGui.QIcon(icon)) return item
def createChild(self, name, parent=None, icon=None): """ Create a new child for to the parent item. If the parent is None it add to the root. """ item = QTreeWidgetItem(self, [name]) if ( parent is None) else QTreeWidgetItem(parent, [name]) if icon is not None: item.setIcon(0, QtGui.QIcon(icon)) return item
def makeTreeItem(self,item):#Overload if needed if item.getType() != 'VisitAnimal': item = SqlHandler.VisitAnimal(item) textString = item.stringList() textString.insert(self.iconplace, '') treeItem = QTreeWidgetItem(self.ui.treeWidget, textString) treeItem.setIcon(self.iconplace,self.getIcon(item.animal.picurePath())) treeItem.setData(0,0,item) return treeItem
def __setup_ui(self): #self.setText(0, self.__con_name) self.setIcon(0, QIcon(ICON_IDR + 'database.png')) self.__db_item = QTreeWidgetItem(self) self.__db_item.setIcon(0, QIcon(ICON_IDR + 'dir_close.png')) self.__db_item.setText(0, self.__schema_name) for table in self.__table_names: table_item = QTreeWidgetItem(self.__db_item) table_item.setIcon(0, QIcon(ICON_IDR + 'table.png')) table_item.setText(0, table)
def populate_classes(self): """Populate classes""" self.lines = {} for lineno, c_name, methods in self.classes: item = QTreeWidgetItem(self, [c_name]) self.lines[item] = lineno if methods is None: item.setIcon(0, get_icon('function.png')) else: item.setIcon(0, get_icon('class.png')) if methods: self.populate_methods(item, c_name, methods)
def fillInputsTree(self): icon = QIcon(os.path.join(pluginPath, 'images', 'input.png')) parametersItem = QTreeWidgetItem() parametersItem.setText(0, self.tr('Parameters')) for paramType in ModelerParameterDefinitionDialog.paramTypes: paramItem = QTreeWidgetItem() paramItem.setText(0, paramType) paramItem.setIcon(0, icon) paramItem.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) parametersItem.addChild(paramItem) self.inputsTree.addTopLevelItem(parametersItem) parametersItem.setExpanded(True)
def makeTreeItem(self, item): #Overload if needed if item.getType() != 'VisitAnimal': item = SqlHandler.VisitAnimal(item) textString = item.stringList() textString.insert(self.iconplace, '') treeItem = QTreeWidgetItem(self.ui.treeWidget, textString) treeItem.setIcon(self.iconplace, self.getIcon(item.animal.picurePath())) treeItem.setData(0, 0, item) return treeItem
def __setupModelData(self): dsList = DataSourcesList().data_sources.values() groupInfoList = GroupsList().groups groupsItems = [] groups = [] for ds in dsList: if ds.group in groups: group_item = groupsItems[groups.index(ds.group)] else: group_item = QTreeWidgetItem() group_item.setData(self.COLUMN_GROUP_DS, Qt.DisplayRole, ds.group) group_item.setData(self.COLUMN_VISIBILITY, Qt.DisplayRole, "") group_item.setData(self.COLUMN_SOURCE, Qt.DisplayRole, ds.category) group_item.setCheckState(self.COLUMN_VISIBILITY, Qt.Unchecked) groupInfo = groupInfoList.get(ds.group) if groupInfo is not None: group_item.setIcon(self.COLUMN_GROUP_DS, QIcon(groupInfo.icon)) else: group_item.setData( self.COLUMN_GROUP_DS, Qt.DisplayRole, ds.group + " (%s!)" % self.tr("group not found")) group_item.setData(self.COLUMN_GROUP_DS, Qt.UserRole, groupInfo) groups.append(ds.group) groupsItems.append(group_item) self.rootItem.addChild(group_item) ds_item = QTreeWidgetItem() ds_item.setData(self.COLUMN_GROUP_DS, Qt.DisplayRole, ds.alias) ds_item.setIcon(self.COLUMN_GROUP_DS, QIcon(ds.icon_path)) ds_item.setData(self.COLUMN_GROUP_DS, Qt.UserRole, ds) ds_item.setData(self.COLUMN_VISIBILITY, Qt.DisplayRole, "") ds_item.setData(self.COLUMN_SOURCE, Qt.DisplayRole, ds.category) ds_check_state = Qt.Checked if ds.id in PluginSettings.get_hide_ds_id_list(): ds_check_state = Qt.Unchecked ds_item.setCheckState(self.COLUMN_VISIBILITY, ds_check_state) if group_item.childCount() != 0 and group_item.checkState( 1) != ds_check_state: group_item.setCheckState(self.COLUMN_VISIBILITY, Qt.PartiallyChecked) else: group_item.setCheckState(self.COLUMN_VISIBILITY, ds_check_state) group_item.addChild(ds_item)
def fillTree(self): self.tree.clear() elements = ProcessingLog.getLogEntries() for category in elements.keys(): groupItem = QTreeWidgetItem() groupItem.setText(0, category) groupItem.setIcon(0, self.groupIcon) for entry in elements[category]: item = TreeLogEntryItem(entry, category == ProcessingLog.LOG_ALGORITHM) item.setIcon(0, self.keyIcon) groupItem.insertChild(0, item) self.tree.addTopLevelItem(groupItem)
def _load_folder(self, folderStructure, folder, parentItem): items = folderStructure[folder] if items[1] is not None: items[1].sort() for _file in items[1]: if _file.startswith("."): continue subfolder = QTreeWidgetItem(parentItem) subfolder.setText(0, _file) subfolder.setToolTip(0, os.path.join(folder, _file)) subfolder.setIcon(0, QIcon(resources.IMAGES["tree-folder"])) self._load_folder(folderStructure, os.path.join(folder, _file), subfolder)
def load_path(self, path, use_history=True): # Obtener archivos y carpetas. items = listdir(unicode(path)) # Eliminar el contenido anterior. self.items.clear() for i in items: # Omitir archivos ocultos. if i.startswith("."): continue filepath = join(path, i) # Obtener informacion del archivo. stats = stat(filepath) # Crear el control ítem. item_widget = QTreeWidgetItem( (i, strftime("%c", localtime(stats.st_mtime)).decode("utf-8"), size(stats.st_size) if isfile(filepath) else "")) # Establecer el ícono correspondiente. item_widget.setIcon( 0, QIcon("images/%s.png" % ("file" if isfile(filepath) else "folder"))) # Añadir elemento. self.items.addTopLevelItem(item_widget) # Ajustar el tamaño de las columnas. for i in range(3): self.items.resizeColumnToContents(i) self.current_path = path self.address.setText(self.current_path) # Añadir al historial. if use_history: self.back_history.append(self.current_path) # Habilitar / dehabilitar botones del historial. if self.back_history and len(self.back_history) > 1: if not self.back.isEnabled(): self.back.setEnabled(True) else: if self.back.isEnabled(): self.forward_history = [] self.back.setEnabled(False) if self.forward_history: if not self.forward.isEnabled(): self.forward.setEnabled(True) else: if self.forward.isEnabled(): self.forward.setEnabled(False)
def _load_folder(self, folderStructure, folder, parentItem): items = folderStructure[folder] if items[1] is not None: items[1].sort() for _file in items[1]: if _file.startswith('.'): continue subfolder = QTreeWidgetItem(parentItem) subfolder.setText(0, _file) subfolder.setToolTip(0, os.path.join(folder, _file)) subfolder.setIcon(0, QIcon(resources.IMAGES['tree-folder'])) self._load_folder(folderStructure, os.path.join(folder, _file), subfolder)
def _load_project(self, folderStructure, folder): if not folder: return name = file_manager.get_basename(folder) item = QTreeWidgetItem(self._tree) item.setText(0, name) item.setToolTip(0, folder) item.setIcon(0, QIcon(resources.IMAGES['tree-folder'])) if folderStructure[folder][1] is not None: folderStructure[folder][1].sort() self._load_folder(folderStructure, folder, item) item.setExpanded(True) self._root = item
def makeTreeItem(self,item):#Overload if needed textString = item.stringList() #add '' to icon place treeItem = None if self.iconplace >= 0: textString.insert(self.iconplace, '') print('makeTreeItem() textString', textString) treeItem = QTreeWidgetItem(self.ui.treeWidget,textString) treeItem.setIcon(self.iconplace,self.getIcon(item.picurePath())) else: print('makeTreeItem() textString', textString) treeItem = QTreeWidgetItem(self.ui.treeWidget,textString) treeItem.setData(0,0,item) return treeItem
def makeTreeItem(self, item): #Overload if needed textString = item.stringList() #add '' to icon place treeItem = None if self.iconplace >= 0: textString.insert(self.iconplace, '') print('makeTreeItem() textString', textString) treeItem = QTreeWidgetItem(self.ui.treeWidget, textString) treeItem.setIcon(self.iconplace, self.getIcon(item.picurePath())) else: print('makeTreeItem() textString', textString) treeItem = QTreeWidgetItem(self.ui.treeWidget, textString) treeItem.setData(0, 0, item) return treeItem
def createMenuItem( self, title ): """ Creates a new menu item with the given title. :param title | <str> :return <QTreeWidgetItem> """ item = QTreeWidgetItem([title]) ico = projexui.resources.find('img/folder.png') item.setIcon(0, QIcon(ico)) item.setSizeHint(0, QSize(120, 20)) item.setData(0, Qt.UserRole, qt.wrapVariant('menu')) return item
def addRow(self, row): """ Add row as a new root item """ root = QTreeWidgetItem(self) root.setIcon( 0, QtGui.QIcon( pulimonitor.Config.root_dir+"/rsrc/graph_32.png" ) ) # self.bold = BoldDelegate(self) # self.standard = StandardDelegate(self) # self.setItemDelegateForColumn(4, self.bold) # self.setItemDelegateForColumn(5, self.standard) self.setItemValues( root, row ) if "items" in row: for item in row["items"]: self.addItem( root, item)
def createMenuItem(self, title): """ Creates a new menu item with the given title. :param title | <str> :return <QTreeWidgetItem> """ item = QTreeWidgetItem([title]) ico = projexui.resources.find('img/folder.png') item.setIcon(0, QIcon(ico)) item.setSizeHint(0, QSize(120, 20)) item.setData(0, Qt.UserRole, qt.wrapVariant('menu')) return item
def fillAlgorithmTreeUsingProviders(self): self.algorithmTree.clear() text = unicode(self.searchBox.text()) allAlgs = ModelerUtils.allAlgs for providerName in allAlgs.keys(): name = 'ACTIVATE_' + providerName.upper().replace(' ', '_') if not ProcessingConfig.getSetting(name): continue groups = {} provider = allAlgs[providerName] algs = provider.values() # Add algorithms for alg in algs: if not alg.showInModeler or alg.allowOnlyOpenedLayers: continue if alg.commandLineName() == self.alg.commandLineName(): continue if text == '' or text.lower() in alg.name.lower(): if alg.group in groups: groupItem = groups[alg.group] else: groupItem = QTreeWidgetItem() name = alg.i18n_group or alg.group groupItem.setText(0, name) groupItem.setToolTip(0, name) groups[alg.group] = groupItem algItem = TreeAlgorithmItem(alg) groupItem.addChild(algItem) if len(groups) > 0: providerItem = QTreeWidgetItem() providerItem.setText(0, ModelerUtils.providers[providerName].getDescription()) providerItem.setToolTip(0, ModelerUtils.providers[providerName].getDescription()) providerItem.setIcon(0, ModelerUtils.providers[providerName].getIcon()) for groupItem in groups.values(): providerItem.addChild(groupItem) self.algorithmTree.addTopLevelItem(providerItem) providerItem.setExpanded(text != '') for groupItem in groups.values(): if text != '': groupItem.setExpanded(True) self.algorithmTree.sortItems(0, Qt.AscendingOrder)
def load_settings(self): w = self.widgets if not self.config: log_warn("config object not available! bailing") return #for font.. appearance = self.config.globals.setdefault("appearance", {}) family = appearance.get("font_family", None) size = appearance.get("font_size", None) color = appearance.get("font_color", None) if family: self.font.setFamily(family) if size: self.font.setPointSize(size) if color: self.color.setNamedColor(color) bold = appearance.get("font_bold", False) italic = appearance.get("font_italic", False) underline = appearance.get("font_underline", False) html_relsize = appearance.get("use_html_relsize", False) show_joinpart = appearance.get("show_joinpart", False) self.font.setBold(bold) self.font.setItalic(italic) self.font.setUnderline(underline) w.html_relsize.setChecked(html_relsize) w.show_joinpart.setChecked(show_joinpart) self.change_formatting() #for the agent... agent = self.config.globals.get("agent_address", None) if agent: w.agent_address.setText(agent) self.change_agent() #for accounts: for a in self.config.accounts: log_warn("got account", a) if a.get("name", None) and a.get("improto", None): #get name and icon name, icon = getProtoIconAndName(getattr(yobotproto, a["improto"], "")) log_debug(icon, name) i = QTreeWidgetItem((a["name"], name)) i.setIcon(1, icon) i.setData(0, ITEM_PLACEHOLDER_ROLE, a) self.account_items[i] = a self.widgets.accounts.addTopLevelItem(i)
def _create_item_from_node(self, node, parent): if "Type" in node: type = node["Type"].get() else: type = "" if "Description" in node: desc = node["Description"].get() else: desc = "" item = QTreeWidgetItem(parent, [node.name, type, desc]) item.node = node item.setExpanded(self.expanded_at_start) if type not in self.__icons_cache: self.__icons_cache[type] = QIcon(":/icons/small/datatypes/{}.png".format(type)) item.setIcon(0, self.__icons_cache[type]) return item
def loadprojects(self, projects): root = self.synctree.invisibleRootItem() for project in projects: providers = list(project.syncprovders()) if not providers: continue projectitem = QTreeWidgetItem(root) projectitem.setText(0, project.name) projectitem.setIcon(0, QIcon(project.splash)) for provider in providers: provideritem = QTreeWidgetItem(projectitem) provideritem.setText(0, provider.name) button = QPushButton() button.pressed.connect(partial(self.run, button, provider)) button.setText(provider.name) self.synctree.setItemWidget(provideritem,0, button) self.synctree.expandAll()
def buildParentItem(self,dcollection,title,rootresource): ''' Builds tree widget items from a dictionary. ''' rtItem = QTreeWidgetItem() rtItem.setText(0,title) rtItem.setIcon(0,QIcon(rootresource)) topLevelItems = [] for k,v in dcollection.iteritems(): parentItem = QTreeWidgetItem() if isinstance(v,dict): parentItem.setText(0,k) for kc,vc in v.iteritems(): child = QTreeWidgetItem() child.setText(0,self._combine(kc, vc)) parentItem.addChild(child) else: parentItem.setText(0,self._combine(k, v)) topLevelItems.append(parentItem) rtItem.addChildren(topLevelItems) rtItem.setExpanded(True) return rtItem
def loadConfiguredBackendsList(self): self.ui.configuredBackendsList.clear() for instance_name, name, params in self.weboob.backends_config.iter_backends(): try: backend = self.weboob.modules_loader.get_or_load_module(name) except ModuleLoadError: backend = None if not backend or self.caps and not backend.has_caps(*self.caps): continue item = QTreeWidgetItem(None, [instance_name, name]) item.setCheckState(0, Qt.Checked if params.get('_enabled', '1').lower() in ('1', 'y', 'true') else Qt.Unchecked) if backend.icon_path: img = QImage(backend.icon_path) item.setIcon(0, QIcon(QPixmap.fromImage(img))) self.ui.configuredBackendsList.addTopLevelItem(item)
def createTreeItem(self, object): icon = object.getIcon() label = object.formatID() tree = QTreeWidgetItem([label]) tree.setData(0, Qt.UserRole, QVariant(object['id'])) tooltip = object.getToolTip() if tooltip: tree.setToolTip(0, tooltip) if icon: tree.setIcon(0, QIcon(icon)) font = tree.font(0) if object['editable']: font.setBold(True) if not object['references']: font.setItalic(True) tree.setFont(0, font) if not object['editable']: unsetFlag(tree, Qt.ItemIsEditable) return tree
def refresh(self): tree = self.uiFilterTREE tree.blockSignals(True) tree.setUpdatesEnabled(False) tree.clear() # create the code color codeClr = tree.palette().color(tree.palette().Base).darker(140) # sort the data hash filters = self._filterOptions.items() filters.sort(lambda x, y: cmp(x[1].get('order', 100000), y[1].get( 'order', 100000))) for key, option in filters: # create the data for this item data = {'code': key} data.update(option) # create the data item item = QTreeWidgetItem( [data.get('name', ''), data.get('code', '')]) item.setIcon(0, resources.icon(data.get('icon', '') % data)) item.setSizeHint(0, QSize(0, 18)) # check the item if its enabled if (self.isCheckable()): enabled = data.get('enabled', False) item.setCheckState(0, Qt.Checked if enabled else Qt.Unchecked) # set some ui data for the code name to hide it a bit item.setTextAlignment(1, Qt.AlignRight | Qt.AlignCenter) item.setForeground(1, codeClr) # add to the tree tree.addTopLevelItem(item) tree.setUpdatesEnabled(True) tree.blockSignals(False)
def __init__(self, statusList, parent=None): QDialog.__init__(self, parent) # Split statuses paths = [] ignoredPaths = [] for status in statusList: if status[1] == IND_IGNORED: ignoredPaths.append(status) else: paths.append(status) self.__createLayout(paths, ignoredPaths) self.setWindowTitle("SVN status") # Fill the lists for item in paths: message = "" if item[2]: message = item[2] newItem = QTreeWidgetItem(["", item[0], STATUS[item[1]], message]) pixmap = getIndicatorPixmap(item[1]) if pixmap: newItem.setIcon(0, QIcon(pixmap)) newItem.setToolTip(1, item[0]) newItem.setToolTip(2, STATUS[item[1]]) if message: newItem.setToolTip(3, message) self.__pathView.addTopLevelItem(newItem) self.__pathView.header().resizeSections(QHeaderView.ResizeToContents) self.__pathView.header().resizeSection(0, 20) self.__pathView.header().setResizeMode(QHeaderView.Fixed) for item in ignoredPaths: newItem = QTreeWidgetItem([item[0], STATUS[item[1]]]) newItem.setToolTip(0, item[0]) newItem.setToolTip(1, STATUS[item[1]]) self.__ignoredPathView.addTopLevelItem(newItem) self.__ignoredPathView.header().resizeSections( QHeaderView.ResizeToContents) return
def __init__( self, statusList, parent = None ): QDialog.__init__( self, parent ) # Split statuses paths = [] ignoredPaths = [] for status in statusList: if status[ 1 ] == IND_IGNORED: ignoredPaths.append( status ) else: paths.append( status ) self.__createLayout( paths, ignoredPaths ) self.setWindowTitle( "SVN status" ) # Fill the lists for item in paths: message = "" if item[ 2 ]: message = item[ 2 ] newItem = QTreeWidgetItem( [ "", item[ 0 ], STATUS[ item[ 1 ] ], message ] ) pixmap = getIndicatorPixmap( item[ 1 ] ) if pixmap: newItem.setIcon( 0, QIcon( pixmap ) ) newItem.setToolTip( 1, item[ 0 ] ) newItem.setToolTip( 2, STATUS[ item[ 1 ] ] ) if message: newItem.setToolTip( 3, message ) self.__pathView.addTopLevelItem( newItem ) self.__pathView.header().resizeSections( QHeaderView.ResizeToContents ) self.__pathView.header().resizeSection( 0, 20 ) self.__pathView.header().setResizeMode( QHeaderView.Fixed ) for item in ignoredPaths: newItem = QTreeWidgetItem( [ item[ 0 ], STATUS[ item[ 1 ] ] ] ) newItem.setToolTip( 0, item[ 0 ] ) newItem.setToolTip( 1, STATUS[ item[ 1 ] ] ) self.__ignoredPathView.addTopLevelItem( newItem ) self.__ignoredPathView.header().resizeSections( QHeaderView.ResizeToContents ) return
def update_destination_view(self): if self.rev_difference is None: return self.destination_view.clear() queue = [(self.rev_difference, self.destination_view.addTopLevelItem)] while len(queue) > 0: baseobj, inserter = queue.pop() for name, data in baseobj.iteritems(): if data[0] == 'dir': child = QTreeWidgetItem(['', name, format_size(data[2])]) child.setIcon(0, QIcon('dir_icon.png')) inserter(child) queue.append((data[1], child.addChild)) elif data[0] == 'file': entry = QTreeWidgetItem(['', name, format_size(data[2])]) entry.setIcon(0, QIcon('file_icon.png')) inserter(entry)
def addIndex(self, index): indexTree = self.applicationWindow.mainWindow.indexes if index.type == 'PRIMARY': name = 'PRIMARY KEY' else: name = index.name indexItem = QTreeWidgetItem() indexItem.setIcon(0, QIcon('../resources/icons/key.png')) indexItem.setText(0, name) indexItem.setText(1, index.type) for column in index.columns: columnItem = QTreeWidgetItem() columnItem.setIcon(0, QIcon('../resources/icons/bullet_black.png')) columnItem.setText(0, column.name) indexItem.addChild(columnItem) indexTree.addTopLevelItem(indexItem)
def setDocuments(self, documents): """Display the specified documents in the list.""" # clear the treewidget for d in self.tree.invisibleRootItem().takeChildren(): for i in d.takeChildren(): i.doc = None # group the documents by directory dirs = {} for d in documents: path = d.url().toLocalFile() if path: dirname, filename = os.path.split(path) dirs.setdefault(dirname, []).append((filename, d)) for dirname in sorted(dirs, key=util.naturalsort): diritem = QTreeWidgetItem() diritem.setText(0, util.homify(dirname)) self.tree.addTopLevelItem(diritem) diritem.setExpanded(True) diritem.setFlags(Qt.ItemIsEnabled) diritem.setIcon(0, icons.get('folder-open')) for filename, document in sorted( dirs[dirname], key=lambda item: util.naturalsort(item[0])): fileitem = QTreeWidgetItem() diritem.addChild(fileitem) if documentwatcher.DocumentWatcher.instance( document).isdeleted(): itemtext = _("[deleted]") icon = "dialog-error" else: itemtext = _("[modified]") icon = "document-edit" fileitem.setIcon(0, icons.get(icon)) fileitem.setText(0, filename) fileitem.setText(1, itemtext) fileitem.doc = document # select the item if there is only one if len(dirs) == 1 and len(list(dirs.values())[0]) == 1: fileitem.setSelected(True) self.tree.resizeColumnToContents(0) self.tree.resizeColumnToContents(1) self.updateButtons()
def addNode(self, parent, icon_, text="", data="", isParent=False, isRoot=False): node = QTreeWidgetItem(parent) node.setText(0, text) node.setCheckState(0, Qt.Unchecked) node.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsSelectable) if isRoot: node.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDropEnabled) if isParent: node.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) node.setData(0, Qt.UserRole, data) node.setIcon(0, icon_) return node
def refresh(self): self.uiStatusTREE.blockSignals(True) self.uiStatusTREE.setUpdatesEnabled(False) self.uiStatusTREE.clear() # collect the data from the prefs ordered = self._statusPrefs.values('order').items() # sort the items by their order ordered.sort(lambda x, y: cmp(x[1], y[1])) # add the statuses to the tree from PyQt4.QtCore import Qt from PyQt4.QtGui import QTreeWidgetItem, QPalette, QIcon for status, order in ordered: # grab info from the hash icon, display_name = self._statusHash.get(status, ('', 'Missing')) item = QTreeWidgetItem([display_name, status]) item.setIcon(0, QIcon(icon)) # check the item if it is enabled enabled = self._statusPrefs.value(status, 'enabled') item.setCheckState(0, Qt.Checked if enabled else Qt.Unchecked) # set some ui options for the status name to hide it a bit item.setTextAlignment(1, Qt.AlignRight | Qt.AlignVCenter) item.setForeground( 1, self.uiStatusTREE.palette().color(QPalette.Base).darker(140)) # add to the tree self.uiStatusTREE.addTopLevelItem(item) self.uiStatusTREE.blockSignals(False) self.uiStatusTREE.setUpdatesEnabled(True)
def setPlugins( self, plugins ): """ Loads the plugins for the inputed dialog. :param plugins | [<XWizardPlugin>, ..] """ langs = {} icons = {} for plugin in plugins: wlang = plugin.wizardType() wgrp = plugin.wizardGroup() langs.setdefault(wlang, {}) langs[wlang].setdefault(wgrp, []) langs[wlang][wgrp].append( plugin ) icons.setdefault(wgrp, plugin.groupIcon(wgrp)) self._plugins = langs self.uiPluginTREE.clear() for wlang in sorted(langs.keys()): langitem = QTreeWidgetItem([wlang]) langitem.setSizeHint(0, QSize(0, 26)) for wgrp in sorted(langs[wlang].keys()): grpitem = QTreeWidgetItem([wgrp]) grpitem.setIcon(0, QIcon(icons[wgrp])) grpitem.setSizeHint(0, QSize(0, 26)) langitem.addChild(grpitem) folder = QIcon(projexui.resources.find('img/folder_32.png')) langitem.setIcon(0, folder) self.uiPluginTREE.addTopLevelItem(langitem) langitem.setExpanded(True)
def populate_methods(self, parent, c_name, methods): """Populate methods""" for lineno, m_name in methods: decorator = m_name.startswith('@') if decorator: m_name = m_name[1:] item = QTreeWidgetItem(parent, [m_name]) self.lines[item] = lineno if m_name.startswith('__'): item.setIcon(0, get_icon('private2.png')) elif m_name.startswith('_'): item.setIcon(0, get_icon('private1.png')) elif decorator: item.setIcon(0, get_icon('decorator.png')) else: item.setIcon(0, get_icon('method.png'))