Example #1
0
 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])
Example #2
0
    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)
Example #3
0
    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
Example #5
0
    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)
Example #7
0
    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)
Example #8
0
 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)
Example #9
0
    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)