- def GetSubList(self):
- sublist = []
- for obj in self.object.data:
- def setfunction(value, object=obj):
- object = value
- item = make_objecttreeitem(self.appli, obj.nom + ":", obj, setfunction)
- sublist.append(item)
- return sublist
-
-def gettreeitem(object):
- """
- Cette fonction retourne la classe item associée à l'objet object.
- Cette classe item dépend bien sûr de la nature de object, d'où
- l'interrogation du dictionnaire composants
- """
- if type(object) == types.InstanceType:
- # On cherche d abord dans les composants (plugins)
- try:
- return composants[object.__class__]
- except:
- # On cherche une eventuelle classe heritee (aleatoire car sans ordre)
- for e in composants.keys():
- if isinstance(object,e):return composants[e]
- # On n'a rien trouve dans les composants
- return ObjectTreeItem
-
-def charger_composants():
- """
- Cette fonction a pour but de charger tous les modules composants graphiques
- (fichiers compo*.py dans le même répertoire que ce module )
- et de remplir le dictionnaire composants utilisé par make_objecttreeitem
- """
- composants={}
- repertoire=os.path.dirname(__file__)
- listfich=glob.glob(os.path.join(repertoire, "compo*.py"))
- for fichier in listfich:
- m= os.path.basename(fichier)[:-3]
- module=__import__(m,globals(),locals())
- composants[module.objet]=module.treeitem
- return composants
-
-def make_objecttreeitem(appli,labeltext, object, setfunction=None):
- """
- Cette fonction permet de construire et de retourner un objet
- de type item associé à l'object passé en argument.
- """
- c = gettreeitem(object)
- return c(appli,labeltext, object, setfunction)
-
-# Dictionnaire {object : item} permettant d'associer un item à un object
-# Ce dictionnaire est renseigné par la méthode charger_composants
-composants = charger_composants()
-
+ def getSubList(self):
+ isublist=iter(self.sublist)
+ liste=self._object.data
+ iliste=iter(liste)
+ self.sublist=[]
+
+ while(1):
+ old_obj=obj=None
+ for item in isublist:
+ old_obj=item.getObject()
+ if old_obj in liste:break
+
+ for obj in iliste:
+ if obj is old_obj:break
+ # nouvel objet : on cree un nouvel item
+ def setFunction(value, object=obj):
+ object=value
+ it = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
+ self.sublist.append(it)
+ if old_obj is None and obj is None:break
+ if old_obj is obj: self.sublist.append(item)
+ return self.sublist