Salome HOME
numero de version
[tools/eficas.git] / InterfaceQT4 / composimp.py
index 3ab7af47c69113f738966f89e6e99e9a11bcf113..6a53e99ddd575cbe42c0da955c0f6805cf6513ba 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: iso-8859-1 -*-
 # Copyright (C) 2007-2013   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
@@ -31,156 +31,169 @@ from Noyau.N_CR   import justify_text
 from Accas        import SalomeEntry
     
 class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):    
-    def getPanel(self):
-        """        
-        """
-        klass = None 
-        
-        # Attention l ordre des if est important        
-
-        if self.item.wait_matrice ():
-               from monMatricePanel import MonMatricePanel
-                klass=MonMatricePanel
-        # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs
-        elif self.item.has_into():
-            if self.item.is_list() :
-                from monPlusieursIntoPanel import MonPlusieursIntoPanel
-                klass = MonPlusieursIntoPanel
-            else:
-                from monUniqueIntoPanel import MonUniqueIntoPanel
-                klass = MonUniqueIntoPanel
-
-        # l'objet prend une ou des valeurs a priori quelconques
-        else:
-            # on attend une liste de valeurs 
-            if self.item.is_list() :
-                # on attend une liste de SD
-                if self.item.wait_tuple() :
-                    from monFonctionPanel import MonFonctionPanel
-                    klass = MonFonctionPanel
-                elif self.item.wait_assd():
-                    from monPlusieursASSDPanel import MonPlusieursASSDPanel 
-                    klass = MonPlusieursASSDPanel
-                else:
-                    # on attend une liste de valeurs de types debase (entiers, réels,...)
-                    from monPlusieursBasePanel import MonPlusieursBasePanel 
-                    klass = MonPlusieursBasePanel
-            # on n'attend qu'une seule valeur 
-            else:
-                # on attend une SD ou un objet de la classe CO (qui n'existe pas encore)
-                if self.item.wait_co():
-                    if len(self.item.get_sd_avant_du_bon_type()) != 0 :
-                       from monUniqueSDCOIntoPanel import MonUniqueSDCOIntoPanel
-                       klass = MonUniqueSDCOIntoPanel
-                    else :
-                       from monUniqueSDCOPanel import MonUniqueSDCOPanel
-                       klass = MonUniqueSDCOPanel
-
-                # on attend une SD
-                elif self.item.wait_assd():
-                    if 'R' in self.item.GetType():
-                        from monUniqueASSDPanel import MonUniqueASSDReelPanel
-                        klass = MonUniqueASSDReelPanel
-                    else :
-                        from monUniqueASSDPanel import MonUniqueASSDPanel
-                        klass = MonUniqueASSDPanel
-
-                # on attend une valeur d'un type de base (entier,reel,...)
-                else:
-                        # on attend un complexe
-                     if self.item.wait_complex():
-                        from monUniqueCompPanel import MonUniqueCompPanel
-                        klass = MonUniqueCompPanel
-                     elif self.item.wait_bool() :
-                        from monUniqueBoolPanel import MonUniqueBoolPanel
-                        klass = MonUniqueBoolPanel
-                     else :
-                        from monUniqueBasePanel import MonUniqueBasePanel
-                        klass = MonUniqueBasePanel
-                        
-        # cas particulier des fonctions
-        genea = self.item.get_genealogie()
-        if "VALE" in genea or "VALE_C" in genea:
-            if "DEFI_FONCTION" in genea :
-                from monFonctionPanel import MonFonctionPanel
-                klass = MonFonctionPanel
-
-        if not klass:
-            return None
-        return klass( self, self.editor )
-        
 
     def createPopUpMenu(self):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
-    def getPanelGroupe(self,parentQt):
+    def getPanelGroupe(self,parentQt,maCommande):
         maDefinition=self.item.get_definition()
         monObjet=self.item.object
         monNom=self.item.nom
 
+        # label informatif 
+        if monObjet.isInformation():
+          from monWidgetInfo import MonWidgetInfo
+          widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          self.widget=widget
+          return widget
+
+
       # Attention l ordre des if est important
       # Attention il faut gerer les blocs et les facteurs 
       # a gerer comme dans composimp
-      # Gerer les matrices --> Actuellement pas dans ce type de panneau
-
+      # Gestion des matrices
+        if self.item.wait_matrice ():
+         from monWidgetMatrice import MonWidgetMatrice
+          widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          self.widget=widget
+          return widget
+
+        #print "____________________________", monNom, self.item.wait_co() 
+        #print "____________________________", monNom, self.item.wait_assd() 
+        # Gestion d'une seule valeur (eventuellement un tuple ou un complexe)
         if maDefinition.max == 1 :
+
+        # A verifier
           if maDefinition.into != [] and maDefinition.into != None:
-          # a revoir
             if len(maDefinition.into) < 4 :
               from monWidgetRadioButton import MonWidgetRadioButton
-              widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt)
+              widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             elif len(maDefinition.into) < 7 :
               from monWidget4a6RadioButton import MonWidget4a6RadioButton
-              widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt)
+              widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :
               from monWidgetCB import MonWidgetCB
-              widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt)
+              widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           elif self.item.wait_bool() :
             from monWidgetSimpBool import MonWidgetSimpBool
-            widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt)
-
+            widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           elif self.item.wait_fichier():
             from monWidgetSimpFichier import MonWidgetSimpFichier
-            widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt)
+            widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+          # PNPNPN - a faire
+          elif self.item.wait_date():
+            from monWidgetDate import MonWidgetDate
+            widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          elif self.item.wait_heure():
+            from monWidgetHeure import MonWidgetHeure
+            widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           elif self.item.wait_tuple() :
-          # Pas fait
-            from monWidgetSimpTuple import MonWidgetSimpTuple
-            widget=MonWidgetSimpTuple(self,maDefinition,monNom,monObjet,parentQt)
+            if self.item.object.definition.type[0].ntuple == 2:
+               from monWidgetSimpTuple2 import MonWidgetSimpTuple2
+               widget=MonWidgetSimpTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            elif self.item.object.definition.type[0].ntuple == 3 :
+               from monWidgetSimpTuple3 import MonWidgetSimpTuple3
+               widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :
+               print "Pas de Tuple de longueur > 3"
+               print "Prevenir la maintenance "
 
           elif self.item.wait_complex():
-          # Pas fait
             from monWidgetSimpComplexe import MonWidgetSimpComplexe
-            widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt)
+            widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           elif self.item.wait_co():
-          # Pas fait
-            from monWidgetSimpASSD import MonWidgetSimpASSD
-            widget=MonWidgetSimpASSD(self,maDefinition,monNom,monObjet,parentQt)
+            if len(self.item.get_sd_avant_du_bon_type()) == 0 :
+               from monWidgetUniqueSDCO import MonWidgetUniqueSDCO
+               widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :      
+               from monWidgetSDCOInto import MonWidgetSDCOInto
+               widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          elif self.item.wait_assd():
+            if len(self.item.get_sd_avant_du_bon_type()) == 0 :
+               from monWidgetVide import MonWidgetVide
+               widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            if len(self.item.get_sd_avant_du_bon_type()) < 4 :
+              from monWidgetRadioButton import MonWidgetRadioButtonSD
+              widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            elif len(self.item.get_sd_avant_du_bon_type()) < 7 :
+              from monWidget4a6RadioButton import MonWidget4a6RadioButtonSD
+              widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :
+              from monWidgetCB import MonWidgetCBSD
+              widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           
           elif  self.item.wait_Salome() and self.editor.salome:
           # Pas fait
             from monWidgetSimpSalome import MonWidgetSimpSalome
-            widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt)
+            widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           elif self.item.wait_TXM():
-          # Pas fait
             from monWidgetSimpTxt import MonWidgetSimpTxt
-            widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt)
+            widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           else :
             from monWidgetSimpBase import MonWidgetSimpBase
-            widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt)
+            widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
+        # Gestion des listes
         else :
-          if maDefinition.into != [] and maDefinition.into != None:
-             #Pas encore traité
-            from monWidgetPlusieursInto import MonWidgetPlusieursInto
-            widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt)
+          #if maDefinition.into != [] and maDefinition.into != None:
+          # Attention pas fini --> on attend une liste de ASSD avec ordre
+          if self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon():
+               #if self.item.is_list_Chargement():
+                #from monWidgetPlusieursTuple2AvecChargement import MonWidgetPlusieursTuple2AvecChargement
+                #widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+                # pass
+               #else :
+               from monWidgetPlusieursInto import MonWidgetPlusieursInto
+               widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          elif self.item.wait_assd() :
+               from monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne
+               widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          elif self.item.wait_tuple() :
+            if self.item.object.definition.type[0].ntuple == 2:
+               from monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2
+               widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            elif self.item.object.definition.type[0].ntuple == 3 :
+               from monWidgetPlusieursTuple3 import MonWidgetPlusieursTuple3
+               widget=MonWidgetPlusieursTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :
+               print "Pas de Tuple de longueur > 3"
+               print "Prevenir la maintenance "
+          elif self.item.has_into():
+            if self.item.is_list_SansOrdreNiDoublon():
+               #print (self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees)  )
+               #print ( not(self.editor.afficheListesPliees)  )
+               #print (self.editor.afficheListesPliees)  
+               
+               if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
+                  from monWidgetPlusieursInto import MonWidgetPlusieursInto
+                  widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+               else :
+                  from monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+                  widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :
+# tres vite pour le tag mais devra etre gere dans configuration
+               if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
+                  from monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne
+                  widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+               else :
+                  from monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+                  widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           else :
-            from monWidgetPlusieursBase import MonWidgetPlusieursBase
-            widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt)
+            #print 8
+            if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees)  : 
+               from monWidgetPlusieursBase import MonWidgetPlusieursBase
+               widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else :
+               from monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+               widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+        self.widget=widget
         return widget
          
     
@@ -232,6 +245,13 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
          is_a_list= self.definition.validators.is_list() * is_a_list
       return is_a_list 
 
+  def is_list_SansOrdreNiDoublon(self):
+      if self.definition.homo=="SansOrdreNiDoublon" : return 1
+      return 0 
+
+  def is_list_Chargement(self):
+      if  self.definition.docu != "" :  return 1
+      return 0 
 
   def has_into(self):
       """
@@ -300,6 +320,8 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else:
          valeurspossibles = self.get_definition().into
 
+      if listeActuelle==[] : return valeurspossibles
+
       #On ne garde que les items valides
       listevalideitem=[]
       if type(valeurspossibles) in (types.ListType,types.TupleType) :
@@ -317,6 +339,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
           encorevalide=self.valide_liste_partielle(item,listeActuelle)
           if encorevalide :
               listevalideliste.append(item)
+      #print listevalideliste
       return listevalideliste
 
   def get_liste_param_possible(self):
@@ -355,9 +378,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       """
         La validation est realisee directement par l'objet
       """
-      print self.object
-      print item
-      print self.object.valide_item
       return self.object.valide_item(item)
      
   def valide_liste_partielle(self,item,listecourante):
@@ -420,7 +440,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       return "ast-red-ball"
     else:
       return "ast-yel-ball"
-    print "invalide"
 
   def GetText(self):
     """
@@ -500,6 +519,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       attend un objet GEOM, 0 sinon
       """
       return self.object.wait_geom()
+
+  def wait_TXM(self):
+     return self.object.wait_TXM()
+
     
   def wait_complex(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
@@ -516,6 +539,24 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
           return 1
       else:
           return 0
+
+  def wait_date(self):
+      """ Méthode booléenne qui retourne 1 si l'objet pointé par self
+      attend un réel, 0 sinon """
+      if 'DateHHMMAAAA' in self.object.definition.type:
+          return 1
+      else:
+          return 0
+        
+  def wait_heure(self):
+      """ Méthode booléenne qui retourne 1 si l'objet pointé par self
+      attend un réel, 0 sinon """
+      if 'HeureHHMMSS' in self.object.definition.type:
+          return 1
+      else:
+          return 0
+        
+        
         
   def wait_tuple(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self