Salome HOME
*** empty log message ***
[tools/eficas.git] / Editeur / composimp.py
index dc64fe519cdf51f492682a51e65df8047adc835a..5a0260c13a8943ee462216e79e56adaf4d925c99 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -88,7 +89,11 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
               elif self.wait_assd():
                   # on attend une SD
                   from uniqueassdpanel import UNIQUE_ASSD_Panel
-                  self.panel = UNIQUE_ASSD_Panel
+                  from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel
+                  if 'R' in self.GetType():
+                    self.panel = UNIQUE_ASSD_Panel_Reel
+                  else :
+                     self.panel = UNIQUE_ASSD_Panel
               else:
                   # on attend une valeur d'un type de base (entier,réel,...)
                   if self.wait_complex():
@@ -111,15 +116,12 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       if  self.appli.salome != 0 :
           import panelsSalome
 
-          self.clef_fonction="SALOME"
-          for i in range(0,len( genea )) :
-             self.clef_fonction=self.clef_fonction+"_"+ genea[i]
-
-          self.select_noeud_maille=0
-          if (self.clef_fonction.find("GROUP_NO") != -1)  :
-             self.select_noeud_maille=1
-          if (self.clef_fonction.find("GROUP_MA") != -1) :
-             self.select_noeud_maille=1
+         self.select_noeud_maille=0
+         self.clef_fonction="SALOME"
+         for i in range(0,len( genea )) :
+            self.clef_fonction=self.clef_fonction+"_"+ genea[i]
+            if genea[i] == "GROUP_NO" or genea[i] == "GROUP_MA":
+               self.select_noeud_maille=1
 
           recherche=panelsSalome.dict_classes_salome[self.panel]
           if hasattr(recherche,self.clef_fonction):
@@ -232,7 +234,25 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
 
   def GetListeValeurs(self) :
       """ Retourne la liste des valeurs de object """
-      return self.object.get_liste_valeurs()
+      valeurs=self.object.get_liste_valeurs()
+      try :
+        if "R" in self.object.definition.type:
+           clef=self.object.GetNomConcept()
+           if self.appli.dict_reels.has_key(clef):
+              if type(valeurs) == types.TupleType:
+                 valeurs_reelles=[]
+                 for val in valeurs :
+                    if self.appli.dict_reels[clef].has_key(val) : 
+                       valeurs_reelles.append(self.appli.dict_reels[clef][val])
+                    else :
+                       valeurs_reelles.append(val)
+              else :
+                 if self.appli.dict_reels[clef].has_key(valeurs):
+                    valeurs_reelles=self.appli.dict_reels[clef][valeurs]
+              valeurs=valeurs_reelles
+      except :
+        pass
+      return valeurs
     
   def get_liste_possible(self,listeActuelle=[]):
       if hasattr(self.definition.validators,'into'):
@@ -261,6 +281,21 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
          listevalideliste=listevalideitem
       return listevalideliste
 
+  def get_liste_param_possible(self):
+  # 
+      liste_param=[]
+      for param in self.object.jdc.params:
+         encorevalide=self.valide_item(param.valeur)
+          if encorevalide:
+            type_param=param.valeur.__class__.__name__
+            for typ in self.definition.type:
+                if typ=='R':
+                    liste_param.append(param)
+                if typ=='I' and type_param=='int':
+                    liste_param.append(param)
+                if typ=='TXM' and type_param=='str':
+                    liste_param.append(repr(param))
+      return liste_param
 
   #--------------------------------------------------
   #
@@ -289,6 +324,13 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       return valide
      
   def valide_liste_partielle(self,item,listecourante):
+      valeur=listecourante
+      valeur.append(item)
+      valeur = tuple(valeur)
+      return self.object.valid_valeur_partielle(valeur)
+
+  def valide_liste_partielle_BAK(self,item,listecourante):
+      raise "OBSOLETE"
       valeuravant=self.object.valeur
       valeur=listecourante
       valeur.append(item)
@@ -308,6 +350,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       return validite 
 
   def valide_liste_complete (self,valeur):
+      return self.object.valid_valeur(valeur)
+
+  def valide_liste_complete_BAK (self,valeur):
+      raise "OBSOLETE"
       valeuravant=self.object.valeur
       retour=self.object.set_valeur(valeur)
       validite=0
@@ -343,7 +389,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
 
   def isvalid(self):
     valide=self.object.isvalid()
-    return self.object.isvalid()
+    return valide
 
   #--------------------------------------------------
   #
@@ -390,7 +436,9 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       """
       Affecte au MCS pointé par self l'objet de type CO et de nom nom_co
       """
-      return self.object.set_valeur_co(nom_co)
+      ret = self.object.set_valeur_co(nom_co)
+      #print "set_valeur_co",ret
+      return ret
       
   def get_sd_avant_du_bon_type(self):
       """
@@ -398,8 +446,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       le MCS pointé par self et du type requis par ce MCS
       """
       a=self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape,self.object.definition.type)
-      return self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape,
-                                                               self.object.definition.type)
+      return a
 
   #def verif(self):
   #    pass
@@ -515,6 +562,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
             selon le type de l objet attendu
           - traite les reels et les parametres 
       """ 
+      #print "eval_valeur_item",valeur
       if valeur==None or valeur == "" :
         return None,0
       validite=1
@@ -525,19 +573,26 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
              valeurretour,validite = valeur,1
       else :
              valeurretour,validite= self.object.eval_valeur(valeur)
+      #print "eval_valeur_item",valeurretour,validite
+
       if validite == 0:
         if type(valeur) == types.StringType and self.object.wait_TXM():
             essai_valeur="'" + valeur + "'"
             valeurretour,validite= self.object.eval_valeur(essai_valeur)
+
       if hasattr(valeurretour,'__class__'):
-         if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+         #if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+         if valeurretour.__class__.__name__ in ('PARAMETRE',):
             validite=1
-      if self.wait_co():
-         try:
-            valeurretour=Accas.CO(valeur)
-         except:
-            valeurretour=None
-            validite=0
+
+      #if self.wait_co():
+         # CCAR : il ne faut pas essayer de creer un concept
+         # il faut simplement en chercher un existant ce qui a du etre fait par self.object.eval_valeur(valeur)
+         #try:
+            #valeurretour=Accas.CO(valeur)
+         #except:
+            #valeurretour=None
+            #validite=0
       # on est dans le cas où on a évalué et où on n'aurait pas du
       if self.object.wait_TXM() :
          if type(valeurretour) != types.StringType:
@@ -588,7 +643,15 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
           if (self.is_param(valeur)):
              return valeur
           else:
-              return valeur+'.'
+             if string.find(valeur,'e') != -1:
+                # Notation scientifique ?
+                try :
+                   r=eval(valeur)
+                   return valeur
+                except :
+                   return None
+             else :
+                 return valeur+'.'
       else:
           return valeur