X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2FObjecttreeitem.py;h=bdf6ea6778c297d7567afe5bd1a39bb8de029afe;hb=00716f6f8593bb9029e0d43793f75880a2775b60;hp=7e9ff7db0f9c00b48af2539b031e00551467ff13;hpb=fcd054a825fbe171652108194c0204f8e3fd955a;p=tools%2Feficas.git diff --git a/Editeur/Objecttreeitem.py b/Editeur/Objecttreeitem.py index 7e9ff7db..bdf6ea67 100644 --- a/Editeur/Objecttreeitem.py +++ b/Editeur/Objecttreeitem.py @@ -1,3 +1,23 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== """ """ # import généraux @@ -5,6 +25,10 @@ import types,string,os,glob,imp,sys from repr import Repr from copy import copy,deepcopy +# import du chargeur de composants +from comploader import gettreeitem,make_objecttreeitem +import treewidget + myrepr = Repr() myrepr.maxstring = 100 myrepr.maxother = 100 @@ -17,6 +41,16 @@ class TreeItem: is used. """ + # itemNode est une factory qui doit retourner un objet de la classe Node + # ou dérivé de cette classe. + # Le widget arbre utilisera cet objet comme noeud associé au tree item. + # Par defaut, utilise la classe Node de base + # La signature de la factory est la suivante : + # itemNode(treeOrNode,item,command,rmenu) + # ou treeOrNode est le noeud parent, item est l'item associé + # command est une fonction python appelée sur sélection graphique + # du noeud et rmenu est une fonction python appelée sur click droit sur le noeud + itemNode=treewidget.Node def __init__(self): """Constructor. Do whatever you need to do.""" @@ -103,7 +137,9 @@ class ObjectTreeItem(TreeItem,Delegate): self.labeltext = labeltext self.appli = appli Delegate.__init__(self,object) - #self.object = object + # On cache l'objet initial (pour destruction eventuelle + # ultérieure) + self._object = object self.setfunction = setfunction self.expandable = 1 self.init() @@ -111,11 +147,14 @@ class ObjectTreeItem(TreeItem,Delegate): def init(self): return + def getObject(self): + return self._object + def copy(self): """ Crée un item copie de self """ - object = self.object.copy() + object = self._object.copy() appli = copy(self.appli) labeltext = copy(self.labeltext) fonction = deepcopy(self.setfunction) @@ -137,13 +176,6 @@ class ObjectTreeItem(TreeItem,Delegate): # None --> fonte et couleur par défaut return self.labeltext,None,None - #def get_attribut(self,nom_attribut) : - # """ - # Retourne l'attribut de nom nom_attribut de l'objet sur lequel - # pointe self s'il existe, None sinon - # """ - # return self.object.get_attribut(nom_attribut) - def get_nature(self) : """ Retourne la nature de l'item et de l'objet @@ -230,7 +262,6 @@ class ObjectTreeItem(TreeItem,Delegate): def get_jdc(self): """ Retourne le jdc auquel appartient l'objet pointé par self """ return self.object.jdc - #return self.object.get_attribut('jdc') def get_valeur(self): """ Retourne la valeur de l'objet pointé par self """ @@ -246,6 +277,7 @@ class ObjectTreeItem(TreeItem,Delegate): représentatif de self.object --> à surcharger par les différents items """ + raise Exception("MESSAGE AU DEVELOPPEUR : il faut surcharger la methode get_objet_commentarise() pour la classe "+self.__class__.__name__) pass def isvalid(self): @@ -259,32 +291,6 @@ class ObjectTreeItem(TreeItem,Delegate): """ return 0 - def isMCList(self): - """ Retourne 1 si l'objet pointé par self est une MClist, 0 sinon""" - #if isinstance(self.object,MCList) : - if self.object.__class__.__name__ == 'MCList': - return 1 - else : - return 0 - - def isCommande(self): - """ - Retourne 1 si l'objet pointé par self est une Commande, 0 sinon - """ - return 0 - - def isJdc(self): - """ - Retourne 1 si l'objet pointé par self est un JDC, 0 sinon - """ - return 0 - - def isMCFact(self): - """ - Retourne 1 si l'objet pointé par self est un MCFact, 0 sinon - """ - return 0 - def get_mc_presents(self): """ Retourne le dictionnaire des mots-clés présents de l'objet pointé par self """ return self.object.dict_mc_presents() @@ -294,18 +300,15 @@ class ObjectTreeItem(TreeItem,Delegate): def get_fr(self): """ Retourne le fr de l'objet pointé par self """ - try: - return self.object.get_fr() - except: - return '' + return self.object.get_fr() def get_docu(self): """ Retourne la clé de doc de l'objet pointé par self """ return self.object.get_docu() - def set_valeur(self,new_valeur,evaluation='oui'): + def set_valeur(self,new_valeur): """ Remplace la valeur de l'objet pointé par self par new_valeur """ - return self.object.set_valeur(new_valeur,evaluation=evaluation) + return self.object.set_valeur(new_valeur) def GetText(self): return myrepr.repr(self.object) @@ -367,38 +370,42 @@ class AtomicObjectTreeItem(ObjectTreeItem): class SequenceTreeItem(ObjectTreeItem): def IsExpandable(self): - return len(self.object) > 0 + return len(self._object) > 0 def __len__(self) : - return len(self.object) + return len(self._object) def keys(self): - return range(len(self.object)) + return range(len(self._object)) def GetIconName(self): - if self.object.isvalid(): + if self._object.isvalid(): return "ast-green-los" - elif self.object.isoblig(): + elif self._object.isoblig(): return "ast-red-los" else: return "ast-yel-los" def ajout_possible(self): - return self.object.ajout_possible() + return self._object.ajout_possible() def get_index(self,child): """ Retourne le numéro de child dans la liste des enfants de self """ - return self.object.get_index(child.object) + return self._object.get_index(child.getObject()) def GetText(self): return " " + def additem(self,obj,pos): + self._object.insert(pos,obj) + item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj) + return item + def suppitem(self,item): - if not self.object.isMCList():return 1 try : - self.object.remove(item.object) + self._object.remove(item.getObject()) # la liste peut être retournée vide ! - message = "Mot-clé " + item.object.nom + " supprimé" + message = "Mot-clé " + item.getObject().nom + " supprimé" self.appli.affiche_infos(message) return 1 except: @@ -406,54 +413,9 @@ class SequenceTreeItem(ObjectTreeItem): def GetSubList(self): sublist = [] - for obj in self.object.data: + 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() -