def groups(self): groups = OrderedDict() for compo in self.components: if getattr(compo, 'menu_group', None): groups.setdefault(compo.menu_group, {}).setdefault('components', []).append(compo) groups[compo.menu_group]['icon'] = getattr(compo, 'icon', None) groups[compo.menu_group]['type'] = 'group' group_name = compo.menu_group if type(compo.menu_group) is tuple: group_name, groups[compo.menu_group]['selection'] = group_name groups[compo.menu_group]['name'] = group_name else: groups.setdefault(compo.cid, {}).setdefault('components', []).append(compo) groups[compo.cid]['type'] = 'entry' return groups.values()