def set_world(self, world={}): self.clear() parentItem = self.invisibleRootItem() self.setHorizontalHeaderLabels(["World Objects", "Type"]) world_objects = world.keys() for world_object in world_objects: item1 = QtGui.QStandardItem(world_object) objtype = type(world[world_object].obj).__name__ item2 = QtGui.QStandardItem(str(objtype)) parentItem.appendRow([item1, item2])
def refresh(self): self.clear() project = self._project if project is None: return icons = dict( project=QtGui.QIcon(":/images/resources/openalea_icon2.png"), src=QtGui.QIcon(":/images/resources/filenew.png"), control=QtGui.QIcon(":/images/resources/node.png"), world=QtGui.QIcon(":/images/resources/plant.png"), startup=QtGui.QIcon(":/images/resources/editredo.png"), data=QtGui.QIcon(":/images/resources/fileopen.png"), doc=QtGui.QIcon(":/images/resources/book.png"), cache=QtGui.QIcon(":/images/resources/editcopy.png"), model=QtGui.QIcon(":/images/resources/new.png"), lib=QtGui.QIcon(":/images/resources/codefile-red.png"), ) name = project.name parentItem = self.invisibleRootItem() item = QtGui.QStandardItem(name) self._root_item = name item.setIcon(self.project_icon(project)) parentItem.appendRow(item) for category in project.DEFAULT_CATEGORIES: item2 = QtGui.QStandardItem(category) item.appendRow(item2) if category in icons: item2.setIcon(icons[category]) if not hasattr(project, category): continue data_dict = getattr(project, category) names = data_dict.keys() for name in sorted(names): data = data_dict[name] item3 = QtGui.QStandardItem(name) if hasattr(data, 'icon'): data_icon_path = data.icon else: data_icon_path = '' item3.setIcon(QtGui.QIcon(data_icon_path)) item3.setData((category, data)) item2.appendRow(item3)
def refresh(self): self.clear() project = self._project if project is None: return icons = dict( project=QtGui.QIcon(":/images/resources/openalea_icon2.png"), src=QtGui.QIcon(":/images/resources/filenew.png"), control=QtGui.QIcon(":/images/resources/node.png"), world=QtGui.QIcon(":/images/resources/plant.png"), startup=QtGui.QIcon(":/images/resources/editredo.png"), data=qicon("Crystal_Clear_filesystem_folder_grey_open.png"), doc=QtGui.QIcon(":/images/resources/book.png"), cache=QtGui.QIcon(":/images/resources/editcopy.png"), model=qicon("icons/Crystal_Clear_app_kservices.png"), lib=QtGui.QIcon(":/images/resources/codefile-red.png"), ) name = project.name parentItem = self.invisibleRootItem() item = QtGui.QStandardItem(project.label) self._root_item = name item.setIcon(obj_icon(project, default=icons['project'], paths=[project.path])) parentItem.appendRow(item) for category in project.categories: item2 = QtGui.QStandardItem(category) item.appendRow(item2) if category in icons: item2.setIcon(icons[category]) if not hasattr(project, category): continue data_dict = getattr(project, category) names = data_dict.keys() for name in sorted(names): data = data_dict[name] item3 = QtGui.QStandardItem(name) item3.setIcon(obj_icon(data, packages=[openalea.oalab])) item3.setData((category, data)) item2.appendRow(item3)
def __on_data_added(self, proj, doc): newItem = QtGui.QStandardItem(doc.name) newItem.setData(to_qvariant(doc), self.dataRole) icon = doc.icon newItem.setIcon(icon) newItem.setDragEnabled(True) parItem = self.__activeProjItem parItem.appendRow(newItem) self.__docItemMap[doc] = newItem
def __init__(self): QtGui.QStandardItemModel.__init__(self) self._lst = list('abc') for l in self._lst: self.appendRow(QtGui.QStandardItem(l)) # Define all type of data managed by this model add_drag_format(self, "custom/data", icon=":/images/resources/openalealogo.png")
def set_active_project(self, proj, old=None): # -- clear the view (maybe be less radical) -- self.__clear(old) # -- now set active project and reconnect slots to this one -- if proj: self.__activeProj = proj self.__activeProjItem = QtGui.QStandardItem(proj.name) self.__activeProjItem.setData(to_qvariant(proj), self.projectRole) self.appendRow(self.__activeProjItem) self.connect_project(proj) for k, v in proj: self.__on_data_added(proj, v)
def add_package_items(self, pkg, base): dottedPath = pkg.name.split(".") par = base for pkName in dottedPath: #: cpar is the next sub parent cpar = par.children.get(pkName.lower()) if cpar is None: item = QtGui.QStandardItem(pkName) self.decorate_element(pkg, pkName, item, parent=par.item) childrenDict = {} newNode = TrNode(item, childrenDict) par.children[pkName.lower()] = newNode cpar = newNode par = cpar public_values = sorted(pkg.iter_public_values(), lambda x,y:cmp(x.name, y.name)) for fac in public_values: item = par.children.get(fac.name) if not item: item = QtGui.QStandardItem(fac.name) par.children[fac.name] = item self.decorate_element(fac, fac.name, item, par.item)
def _create_control(self, control): args = [QtGui.QStandardItem(a) for a in [control.name, str(control.value)]] self._control_index[control] = self.rowCount() self._index_control[self.rowCount()] = control self.appendRow(args)
def refresh(self): self.clear() self._group = {} items = self._items if items is None: return # Manage groupby info gby_func = self._groupby.get('function', None) gby_criteria = self._groupby.get('criteria', None) gby_label = self._groupby.get('label', None) if gby_func: f_gby_key = gby_func elif gby_criteria: def f_gby_key(item): if hasattr(item, gby_criteria): return getattr(item, gby_criteria) else: return self.undefined_group_label else: f_gby_key = lambda item: self.undefined_group_label if gby_label: f_gby_label = gby_label else: f_gby_label = lambda criterion: str(criterion) _items = [] for item in items: key = f_gby_key(item) if isinstance(key, (list, set, tuple)): if not key: key = [self.undefined_group_label] for k in key: if not k: k = self.undefined_group_label _items.append((k, item)) else: if not key: key = self.undefined_group_label _items.append((key, item)) _items.sort() parent_item = self.invisibleRootItem() groups = groupby(_items, lambda item: item[0]) for key, items in groups: try: label = f_gby_label(key) except: label = str(key) repository_item = QtGui.QStandardItem(label) repository_item.setIcon(qicon(self.default_group_icon)) parent_item.appendRow(repository_item) self._group[repository_item] = [] for _, item in sorted(items, key=lambda args: args[1].label): qitem = QtGui.QStandardItem(item.label) qitem.item = item if hasattr(item, 'path'): paths = [item.path, item.path.parent] else: paths = [] qitem.setIcon( obj_icon(item, default=self.default_item_icon, paths=paths)) repository_item.appendRow(qitem) self._group[repository_item].append(qitem) self.more_item = QtGui.QStandardItem("Add more items") self.more_item.setIcon( qicon("icons/Crystal_Clear_action_edit_add.png")) parent_item.appendRow(self.more_item)