]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
020218-synchro
authorpascale.noyret <pascale.noyret@edf.fr>
Fri, 2 Feb 2018 11:47:59 +0000 (12:47 +0100)
committerpascale.noyret <pascale.noyret@edf.fr>
Fri, 2 Feb 2018 11:47:59 +0000 (12:47 +0100)
Efi2Xsd/readerEfficas.py
Efi2Xsd/writerEfficas.py [new file with mode: 0755]
Ihm/I_ETAPE.py
Ihm/I_JDC.py
InterfaceQT4/readercata.py
InterfaceQT4/readercataXML.py
Noyau/N_JDC.py
UiQT5/desWidgetFactHorizon.ui [deleted file]
UiQT5/makefile

index afd1249786963b3cf15d809430f074ca622e52fb..34a178f5be25f52c2c4bd9b866c80a72284c4d1b 100755 (executable)
@@ -5,36 +5,39 @@ import raw.efficas as efficas
 import types
 
 sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
-sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..','UiQT5')))
 
 
 from Accas import *
 
 
 # Attention pas d heritage possible (cf doc pyxbe)
+# bizarre le comportement de max est different entre les facts et les simps ?
 
 dictSIMPEficasXML= { 'typ'    : 'typeAttendu', 'statut'     : 'statut', 
                      'min_occurs': 'min'        , 'max_occurs' : 'max', 
                      'homo'      : 'homo'       , 'position'   : 'portee', 
                      'validators': 'validators' , 'sug'        : 'valeur_sugg',
-                     'defaut'    : 'ValeurDef'  , 'into'       : ('PlageValeur','into'), 
-                     'val_min'   : ('PlageValeur','borne_inf') , 'val_max'    : ('PlageValeur','borne_sup'),
+                     'defaut'    : 'valeurDef'  , 'into'       : ('plageValeur','into'), 
+                     'val_min'   : ('plageValeur','borne_inf') , 'val_max'    : ('plageValeur','borne_sup'),
                      'ang'       : ('doc','ang')               , 'fr'         : ('doc','fr',)   ,
                      'docu'      : ('doc','docu'),}
  
 dictSIMPXMLEficas = {'doc' : {'fr' : 'fr' , 'ang' : 'ang' , 'docu' : 'docu' },
-                    'PlageValeur' : {'borne_sup' : 'val_max' , 'into' : 'into' , 'borne_inf' : 'val_min' ,},
+                    'plageValeur' : {'borne_sup' : 'val_max' , 'into' : 'into' , 'borne_inf' : 'val_min' ,},
                     'statut' : 'statut' , 'validators' : 'validators' , 'homo' : 'homo' ,
-                    'ValeurDef' : 'defaut' ,  'min' : 'min_occurs' ,
-                    'valeur_sugg' : 'sug' , 'portee' : 'position' , 'max' : 'max_occurs' , }
+                    'valeurDef' : 'defaut' ,  'min_occurs' : 'min' ,
+                    'valeur_sugg' : 'sug' , 'portee' : 'position' , 'max_occurs' : 'max' , }
 
+dictFACTXMLEficas = {'doc' : {'fr' : 'fr' , 'ang' : 'ang' , 'docu' : 'docu' },
+                    'statut' : 'statut' , 'validators' : 'validators' ,
+                    'min_occurs' : 'min' , 'max_occurs' : 'max' , }
 
 # ------------------------------
 class monSIMP (efficas.T_SIMP):
 # ------------------------------
 
-   def explore(self):
-      print "je passe dans  explore pour SIMP ", self.nom
+   def explore(self,cata):
+      #print "je passe dans  explore pour SIMP ", self.nom
       self.dictArgsEficas={}
       self.dictArgsEficas['typ']=self.typeAttendu
       for nomXMLArg in dir(self) :
@@ -42,6 +45,11 @@ class monSIMP (efficas.T_SIMP):
               nomEficasArg=dictSIMPXMLEficas[nomXMLArg]
               argu=getattr(self,nomXMLArg)
               if argu==None : continue
+              if nomEficasArg == 'defaut' : print (argu); 
+              if nomEficasArg == 'defaut' : print (dir(argu)); 
+              if nomEficasArg == 'defaut' : print (argu.value)
+              #if nomEficasArg == 'defaut' : print (efficas.T_I(argu))
+              if nomEficasArg == 'defaut' : print (argu.content())
               if type(nomEficasArg) == types.DictionaryType:
                  for nomXML in nomEficasArg.keys():
                       arguDecoupe=getattr(argu,nomXML)
@@ -50,47 +58,76 @@ class monSIMP (efficas.T_SIMP):
               else :
                  self.dictArgsEficas[nomEficasArg] = argu
                     
-              #if argNew != None : print argNew
+      if 'min' in self.dictArgsEficas.keys(): self.dictArgsEficas['min']=int(self.dictArgsEficas['min'])
+      if 'max' in self.dictArgsEficas.keys(): 
+            if self.dictArgsEficas['max']== -1   :  self.dictArgsEficas['max']="**"
+            else                                 :  self.dictArgsEficas['max']=int(self.dictArgsEficas['max'])
       self.objAccas=A_SIMP.SIMP(**self.dictArgsEficas)
       self.objAccas.nom=self.nom
+      self.strNomObj=str(self.nom)
      
    def getAccasEquivalent(self):
-       return self.nom, self.objAccas
+       return self.strNomObj, self.objAccas
 
 # ------------------------------
 class monPROC(efficas.T_PROC):
 # ------------------------------
-   def explore(self):
-      print "je passe dans  explore pour PROC ", self.nom
+   def explore(self,cata):
+      #print "je passe dans  explore pour PROC ", self.nom
       self.dictConstruction={}
       self.dictConstruction['nom']=self.nom
-      
-      for obj in self.content(): 
-          if  hasattr(obj,'explore') : obj.explore ()
+      liste=[]
+      for obj in self.content(): liste.append(obj)
+      liste.reverse()
+      for obj in liste: 
+          if  hasattr(obj,'explore') : obj.explore (cata)
           if  hasattr(obj,'getAccasEquivalent') : 
               nom,objetAccas=obj.getAccasEquivalent()
               self.dictConstruction[nom]=objetAccas
       self.dictConstruction['op']=None
       self.objAccas=A_PROC.PROC(**self.dictConstruction)
-      print dir(self.objAccas)
-      print self.objAccas.entites
+      self.strNomObj=str(self.nom)
+      setattr(cata, self.strNomObj,self.objAccas)
 
 
 # ------------------------------
 class monFACT(efficas.T_FACT):
 # ------------------------------
-   def explore(self):
+   def explore(self,cata):
       #print "je passe dans  explore pour FACT ", self.nom
       self.dictConstruction={}
-      for obj in self.content(): 
-          if  hasattr(obj,'explore') : obj.explore 
-          if  hasattr(obj,'creeAccasEquivalent') : 
-              nom,objetAccas=obj.creeAccasEquivalent()
+
+      for nomXMLArg in dir(self) :
+          if nomXMLArg in dictFACTXMLEficas.keys() :
+              nomEficasArg=dictFACTXMLEficas[nomXMLArg]
+              argu=getattr(self,nomXMLArg)
+              if argu==None : continue
+              argu=str(argu)
+              if type(nomEficasArg) == types.DictionaryType:
+                 for nomXML in nomEficasArg.keys():
+                      arguDecoupe=getattr(argu,nomXML)
+                      nomEficasDecoupe=nomEficasArg[nomXML]
+                      self.dictConstruction[nomEficasDecoupe]=arguDecoupe
+              else :
+                 self.dictConstruction[nomEficasArg] = argu
+      if 'min' in self.dictConstruction.keys(): self.dictConstruction['min']=int(self.dictConstruction['min'])
+      if 'max' in self.dictConstruction.keys(): 
+            if self.dictConstruction['max']== '-1' :  self.dictConstruction['max']="**"
+            else                                 :  self.dictConstruction['max']=int(self.dictConstruction['max'])
+      liste=[]
+      for obj in self.content(): liste.append(obj)
+      liste.reverse()
+      for obj in liste: 
+          if  hasattr(obj,'explore') : obj.explore(cata)
+          if  hasattr(obj,'getAccasEquivalent') : 
+              nom,objetAccas=obj.getAccasEquivalent()
               self.dictConstruction[nom]=objetAccas
+      
       self.objAccas=A_FACT.FACT(**self.dictConstruction)
+      self.strNomObj=str(self.nom)
 
    def getAccasEquivalent(self):
-       return self.nom, self.objAccas
+       return self.strNomObj, self.objAccas
 
 
 # ------------------------------
@@ -98,11 +135,14 @@ class monCata(efficas.T_cata):
 # ------------------------------
    def exploreCata(self):
    # On positionne le contexte ACCAS
+      self.VERSION_CATALOGUE='V1'
       self.JdC = JDC_CATA (code = 'MED', execmodul = None,)
+      self.fromXML=1
       objAExplorer=self.commandes[0]
       for obj in objAExplorer.content(): 
-         if  hasattr(obj,'explore') : obj.explore()
-    
+         if  hasattr(obj,'explore') : obj.explore(self)
+      #print dir(self.JdC)
+      
      
 
 efficas.T_SIMP._SetSupersedingClass(monSIMP)
@@ -118,6 +158,9 @@ if __name__ == "__main__":
    xml = open('Cata_MED_FAM.xml').read()
    SchemaMed = efficas.CreateFromDocument(xml)
    SchemaMed.exploreCata()
+   #print dir(SchemaMed)
+   #print dir(SchemaMed.FAS)
+   #print SchemaMed.FAS
 
    #print dir(efficas.T_SIMP)
    #print dir(efficas.T_SIMP)
diff --git a/Efi2Xsd/writerEfficas.py b/Efi2Xsd/writerEfficas.py
new file mode 100755 (executable)
index 0000000..0a1cc1e
--- /dev/null
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import raw.efficas as efficas
+import types
+
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+
+from Accas import *
+
+
+# Attention pas d heritage possible (cf doc pyxbe)
+# bizarre le comportement de max est different entre les facts et les simps ?
+
+dictSIMPEficasXML= { 'typ'    : 'typeAttendu', 'statut'     : 'statut', 
+                     'min_occurs': 'min'        , 'max_occurs' : 'max', 
+                     'homo'      : 'homo'       , 'position'   : 'portee', 
+                     'validators': 'validators' , 'sug'        : 'valeur_sugg',
+                     'defaut'    : 'valeurDef'  , 'into'       : ('plageValeur','into'), 
+                     'val_min'   : ('plageValeur','borne_inf') , 'val_max'    : ('plageValeur','borne_sup'),
+                     'ang'       : ('doc','ang')               , 'fr'         : ('doc','fr',)   ,
+                     'docu'      : ('doc','docu'),}
+dictSIMPXMLEficas = {'doc' : {'fr' : 'fr' , 'ang' : 'ang' , 'docu' : 'docu' },
+                    'plageValeur' : {'borne_sup' : 'val_max' , 'into' : 'into' , 'borne_inf' : 'val_min' ,},
+                    'statut' : 'statut' , 'validators' : 'validators' , 'homo' : 'homo' ,
+                    'valeurDef' : 'defaut' ,  'min_occurs' : 'min' ,
+                    'valeur_sugg' : 'sug' , 'portee' : 'position' , 'max_occurs' : 'max' , }
+
+dictFACTXMLEficas = {'doc' : {'fr' : 'fr' , 'ang' : 'ang' , 'docu' : 'docu' },
+                    'statut' : 'statut' , 'validators' : 'validators' ,
+                    'min_occurs' : 'min' , 'max_occurs' : 'max' , }
+
+## ------------------------------
+#class monSIMP (efficas.T_SIMP):
+## ------------------------------
+#
+#   def explore(self,cata):
+#      #print "je passe dans  explore pour SIMP ", self.nom
+#      self.dictArgsEficas={}
+#      self.dictArgsEficas['typ']=self.typeAttendu
+#      for nomXMLArg in dir(self) :
+#          if nomXMLArg in dictSIMPXMLEficas.keys() :
+#              nomEficasArg=dictSIMPXMLEficas[nomXMLArg]
+#              argu=getattr(self,nomXMLArg)
+#              if argu==None : continue
+#              if nomEficasArg == 'defaut' : print (argu); 
+#              if nomEficasArg == 'defaut' : print (dir(argu)); 
+#              if nomEficasArg == 'defaut' : print (argu.value)
+#              #if nomEficasArg == 'defaut' : print (efficas.T_I(argu))
+#              if nomEficasArg == 'defaut' : print (argu.content())
+#              if type(nomEficasArg) == types.DictionaryType:
+#                 for nomXML in nomEficasArg.keys():
+#                      arguDecoupe=getattr(argu,nomXML)
+#                      nomEficasDecoupe=nomEficasArg[nomXML]
+#                      self.dictArgsEficas[nomEficasDecoupe]=arguDecoupe
+#              else :
+#                 self.dictArgsEficas[nomEficasArg] = argu
+#                    
+#      if 'min' in self.dictArgsEficas.keys(): self.dictArgsEficas['min']=int(self.dictArgsEficas['min'])
+#      if 'max' in self.dictArgsEficas.keys(): 
+#            if self.dictArgsEficas['max']== -1   :  self.dictArgsEficas['max']="**"
+#            else                                 :  self.dictArgsEficas['max']=int(self.dictArgsEficas['max'])
+#      self.objAccas=A_SIMP.SIMP(**self.dictArgsEficas)
+#      self.objAccas.nom=self.nom
+#      self.strNomObj=str(self.nom)
+#     
+#   def getAccasEquivalent(self):
+#       return self.strNomObj, self.objAccas
+#
+## ------------------------------
+#class monPROC(efficas.T_PROC):
+## ------------------------------
+#   def explore(self,cata):
+#      #print "je passe dans  explore pour PROC ", self.nom
+#      self.dictConstruction={}
+#      self.dictConstruction['nom']=self.nom
+#      liste=[]
+#      for obj in self.content(): liste.append(obj)
+#      liste.reverse()
+#      for obj in liste: 
+#          if  hasattr(obj,'explore') : obj.explore (cata)
+#          if  hasattr(obj,'getAccasEquivalent') : 
+#              nom,objetAccas=obj.getAccasEquivalent()
+#              self.dictConstruction[nom]=objetAccas
+#      self.dictConstruction['op']=None
+#      self.objAccas=A_PROC.PROC(**self.dictConstruction)
+#      self.strNomObj=str(self.nom)
+#      setattr(cata, self.strNomObj,self.objAccas)
+#
+#
+## ------------------------------
+#class monFACT(efficas.T_FACT):
+## ------------------------------
+#   def explore(self,cata):
+#      #print "je passe dans  explore pour FACT ", self.nom
+#      self.dictConstruction={}
+#
+#      for nomXMLArg in dir(self) :
+#          if nomXMLArg in dictFACTXMLEficas.keys() :
+#              nomEficasArg=dictFACTXMLEficas[nomXMLArg]
+#              argu=getattr(self,nomXMLArg)
+#              if argu==None : continue
+#              argu=str(argu)
+#              if type(nomEficasArg) == types.DictionaryType:
+#                 for nomXML in nomEficasArg.keys():
+#                      arguDecoupe=getattr(argu,nomXML)
+#                      nomEficasDecoupe=nomEficasArg[nomXML]
+#                      self.dictConstruction[nomEficasDecoupe]=arguDecoupe
+#              else :
+#                 self.dictConstruction[nomEficasArg] = argu
+#      if 'min' in self.dictConstruction.keys(): self.dictConstruction['min']=int(self.dictConstruction['min'])
+#      if 'max' in self.dictConstruction.keys(): 
+#            if self.dictConstruction['max']== '-1' :  self.dictConstruction['max']="**"
+#            else                                 :  self.dictConstruction['max']=int(self.dictConstruction['max'])
+#      liste=[]
+#      for obj in self.content(): liste.append(obj)
+#      liste.reverse()
+#      for obj in liste: 
+#          if  hasattr(obj,'explore') : obj.explore(cata)
+#          if  hasattr(obj,'getAccasEquivalent') : 
+#              nom,objetAccas=obj.getAccasEquivalent()
+#              self.dictConstruction[nom]=objetAccas
+#      
+#      self.objAccas=A_FACT.FACT(**self.dictConstruction)
+#      self.strNomObj=str(self.nom)
+#
+#   def getAccasEquivalent(self):
+#       return self.strNomObj, self.objAccas
+#
+#
+## ------------------------------
+#class monCata(efficas.T_cata):
+## ------------------------------
+#   def exploreCata(self):
+#   # On positionne le contexte ACCAS
+#      self.VERSION_CATALOGUE='V1'
+#      self.JdC = JDC_CATA (code = 'MED', execmodul = None,)
+#      self.fromXML=1
+#      objAExplorer=self.commandes[0]
+#      for obj in objAExplorer.content(): 
+#         if  hasattr(obj,'explore') : obj.explore(self)
+#      #print dir(self.JdC)
+#      
+#     
+#
+#efficas.T_SIMP._SetSupersedingClass(monSIMP)
+#efficas.T_FACT._SetSupersedingClass(monFACT)
+#efficas.T_PROC._SetSupersedingClass(monPROC)
+#efficas.T_cata._SetSupersedingClass(monCata)
+#
+if __name__ == "__main__":
+
+   xml = open('Cata_MED_FAM.xml').read()
+   SchemaMed = efficas.CreateFromDocument(xml)
+   SchemaMed.exploreCata()
index 1ed37544c9c449382b8250b9e0b07dbbf0d3112a..11439079fb749b3ff73387ad45fdf7cf03e8bdae 100644 (file)
@@ -111,7 +111,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
 
       # pour eviter que le nom du concept soit le nom de la classe --> souci pour utiliser le concept
       if (nom == self.definition.nom) : return  (0, tr("un concept de type ")+ nom + tr(" ne peut pas se nommer ") +  nom)
-      if ( nom in dir(self.jdc.cata[0])) : return (0, nom + tr("est un not reserve"))
+      if ( nom in dir(self.jdc.cata)) : return (0, nom + tr("est un not reserve"))
       #if (not isinstance(nom,str)) : return (0, tr("Le nom ") + nom + tr(" est un mot reserve"))
       #if len(nom) > 8 and self.jdc.definition.code == 'ASTER':
       #  return 0, tr("Nom de concept trop long (maxi 8 caracteres)")
index 92a6f38355ede6931b80262fba2a2c8bcbf81e34..a8aaebc12f6b7120c3be540b7f8362ff08e8eb40 100644 (file)
@@ -135,7 +135,7 @@ class JDC(I_OBJECT.OBJECT):
    def recalculeValiditeApresChangementGlobalJdc(self):
         #print "je passe dans recalculeValiditeApresChangementGlobalJdc"
         try :
-          liste=self.getJdcRoot().cata[0].liste_condition
+          liste=self.getJdcRoot().cata.liste_condition
         except :
           liste=()
         for etapeTraitee in self.etapes :
@@ -165,7 +165,7 @@ class JDC(I_OBJECT.OBJECT):
       d=self.getContexteAvant(etape)
       l=[]
       try :
-         typeverif=self.cata[0].__dict__[type]
+         typeverif=self.cata.__dict__[type]
       except :
          return l
       for k,v in d.items():
index f3cd73b574fd1c9e9d0d4056432efe9cc6151366..ccb66f9f09c2e0d001a0a2bb7e65bd496f857027 100644 (file)
@@ -178,7 +178,6 @@ class READERCATA(object):
       #
       # traitement des clefs documentaires
       #
-      self.cata=(self.cata,)
 
       self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fic_cata)
       if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre)
@@ -285,8 +284,8 @@ class READERCATA(object):
    def creeDicoInverse(self):
         self.dicoInverse={}
         self.dicoMC={} 
-        listeEtapes=self.cata[0].JdC.commandes
-        for e in self.cata[0].JdC.commandes:
+        listeEtapes=self.cata.JdC.commandes
+        for e in self.cata.JdC.commandes:
             self.traiteEntite(e)
 
    
@@ -326,4 +325,12 @@ class READERCATA(object):
            #else : print (niveau+1)*"   ", nom
 
         
+   def dumpToXml(self):
+       from Efi2Xsd import readerEfficas
+       print ('in dumpToXml')
+       #newSchema=   xml = open('Cata_MED_FAM.xml').read()
+       #SchemaMed = efficas.CreateFromDocument(xml)
+       #SchemaMed.alimenteCata(self.cata)
+
           
+   
index 5a737dc6200094b02b1657825cc786c4b2e2a636..fbdcd64e273f6d5ceada8012f5b109fd2b9262de 100644 (file)
@@ -63,13 +63,18 @@ class READERCATA:
 
       self.fic_cata = 'Cata_MED_FAM.xml'
       
-      xml = open('/home/A96028/QT5GitEficasTravail/Med/Cata_MED_FAM.xml').read()
+      xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read()
       SchemaMed = readerEfficas.efficas.CreateFromDocument(xml)
       SchemaMed.exploreCata() 
-      self.cata=(SchemaMed,)
-      uiinfo.traite_UIinfo(self.cata[0])
+      #self.cata=(SchemaMed,)
+      self.cata=SchemaMed
+      #uiinfo.traite_UIinfo(self.cata[0])
+      uiinfo.traite_UIinfo(self.cata)
       self.Commandes_Ordre_Catalogue=[]
-      self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata[0])
+      #self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata[0])
+      self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata)
       self.liste_groupes=None
 
-
+   def dumpToXml(self):
+      # pour compatibilite
+       pass
index d73d8ab26277ae0cc7560b6e88d50ced3b87c545..85eb6b70b3b0fab6a5b0070672a9a51eb04469d4 100644 (file)
@@ -92,8 +92,9 @@ NONE = None
         self.procedure = procedure
         self.definition = definition
         self.cata = cata
-        if type(self.cata) != tuple and cata != None:
-            self.cata = (self.cata,)
+        # PN pourquoi ?
+        #if type(self.cata) != tuple and cata != None:
+        #    self.cata = (self.cata,)
         self._build_reserved_kw_list()
         self.cata_ordonne_dico = cata_ord_dico
         self.nom = nom
@@ -191,7 +192,7 @@ Causes possibles :
         linecache.cache[self.nom] = 0, 0, self.procedure.split('\n'), self.nom
         try:
             exec(self.exec_init, self.g_context)
-            for obj_cata in self.cata:
+            for obj_cata in (self.cata,):
                 if type(obj_cata) == types.ModuleType:
                     init2 = "from " + obj_cata.__name__ + " import *"
                     exec(init2, self.g_context)
@@ -608,7 +609,7 @@ Causes possibles :
             donnee par son nom dans les catalogues declares
             au niveau du jdc
         """
-        for cata in self.cata:
+        for cata in (self.cata,):
             if hasattr(cata, nomcmd):
                 return getattr(cata, nomcmd)
 
@@ -633,8 +634,9 @@ Causes possibles :
         """Construit la liste des mots-cles reserves (interdits pour le
         nommage des concepts)."""
         self._reserved_kw = set()
-        for cat in self.cata:
-            self._reserved_kw.update(
+        #for cat in self.cata:
+        cat=self.cata
+        self._reserved_kw.update(
                 [kw for kw in dir(cat) if len(kw) <= 8 and kw == kw.upper()])
         self._reserved_kw.difference_update(
             ['OPER', 'MACRO', 'BLOC', 'SIMP', 'FACT', 'FORM',
diff --git a/UiQT5/desWidgetFactHorizon.ui b/UiQT5/desWidgetFactHorizon.ui
deleted file mode 100644 (file)
index 0ccdf54..0000000
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>WidgetFactHorizon</class>
- <widget class="QWidget" name="WidgetFactHorizon">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>949</width>
-    <height>53</height>
-   </rect>
-  </property>
-  <property name="focusPolicy">
-   <enum>Qt::StrongFocus</enum>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <property name="styleSheet">
-   <string notr="true"> QGroupBox {
-     border: 1px solid gray;
-     border-radius: 5px;
-     margin-top: 1ex; /* leave space at the top for the title */
- }
-
- QGroupBox::title {
-     padding: 0 3px;
- }</string>
-  </property>
-  <layout class="QHBoxLayout" name="horizontalLayout_3">
-   <property name="spacing">
-    <number>0</number>
-   </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>2</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
-    <number>0</number>
-   </property>
-   <item>
-    <layout class="QVBoxLayout" name="verticalLayout">
-     <property name="spacing">
-      <number>0</number>
-     </property>
-     <item>
-      <spacer name="verticalSpacer">
-       <property name="orientation">
-        <enum>Qt::Vertical</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Fixed</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>20</width>
-         <height>5</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QToolButton" name="RBPlie">
-       <property name="minimumSize">
-        <size>
-         <width>21</width>
-         <height>15</height>
-        </size>
-       </property>
-       <property name="maximumSize">
-        <size>
-         <width>21</width>
-         <height>21</height>
-        </size>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">border : 0px</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>../Editeur/icons/minusnode.png</normaloff>../Editeur/icons/minusnode.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>21</width>
-         <height>21</height>
-        </size>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <layout class="QHBoxLayout" name="horizontalLayout_4">
-       <item>
-        <widget class="Line" name="line_7">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QGridLayout" name="gridLayout">
-     <property name="horizontalSpacing">
-      <number>0</number>
-     </property>
-     <item row="0" column="0">
-      <widget class="MonBoutonValide" name="RBValide">
-       <property name="minimumSize">
-        <size>
-         <width>17</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="maximumSize">
-        <size>
-         <width>21</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">border : 0px</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>21</width>
-         <height>25</height>
-        </size>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <property name="spacing">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="MonLabelClic" name="GroupBox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize">
-          <size>
-           <width>0</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>12121213</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="text">
-          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>13</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="Line" name="line_4">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize">
-          <size>
-           <width>200</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>1500</width>
-           <height>16</height>
-          </size>
-         </property>
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>13</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
-         <property name="spacing">
-          <number>0</number>
-         </property>
-         <property name="sizeConstraint">
-          <enum>QLayout::SetFixedSize</enum>
-         </property>
-         <item>
-          <widget class="QToolButton" name="RBRun">
-           <property name="minimumSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="focusPolicy">
-            <enum>Qt::ClickFocus</enum>
-           </property>
-           <property name="toolTip">
-            <string>Lance un script associé à la commande</string>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
-           </property>
-           <property name="text">
-            <string>...</string>
-           </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
-           </property>
-           <property name="iconSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QToolButton" name="RBInfo">
-           <property name="minimumSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
-           </property>
-           <property name="text">
-            <string>...</string>
-           </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
-           </property>
-           <property name="iconSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QToolButton" name="RBRegle">
-           <property name="minimumSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
-           </property>
-           <property name="text">
-            <string>...</string>
-           </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
-           </property>
-           <property name="iconSize">
-            <size>
-             <width>21</width>
-             <height>25</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_2">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>13</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QToolButton" name="RBPoubelle">
-         <property name="minimumSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border : 0px</string>
-         </property>
-         <property name="text">
-          <string>...</string>
-         </property>
-         <property name="icon">
-          <iconset>
-           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
-         </property>
-         <property name="iconSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item row="1" column="1">
-      <layout class="QHBoxLayout" name="commandesLayout">
-       <property name="spacing">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>2</number>
-       </property>
-      </layout>
-     </item>
-    </layout>
-   </item>
-  </layout>
-  <zorder></zorder>
-  <zorder></zorder>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>MonBoutonValide</class>
-   <extends>QToolButton</extends>
-   <header>monBoutonValide.h</header>
-  </customwidget>
-  <customwidget>
-   <class>MonLabelClic</class>
-   <extends>QLabel</extends>
-   <header>monLabelClic.h</header>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
index 7e3fb80c57386b9d26fb8decd3333c4a2e365471..e2d48126d764cacaabaebf80b43c5bcc5220fdde 100644 (file)
@@ -9,7 +9,7 @@ PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCo
        desSelectVal.py desViewTexte.py desViewRegles.py desVisu.py desWidgetCreeParam.py desWidgetCommande.py \
        desWidgetOptionnel.py desWidgetOptionnelMC.py Tuple2.py Tuple3.py  \
        desWidgetBloc.py desWidgetCB.py desWidgetCBIntoSug.py desWidgetCommentaire.py desWidgetDate.py \
-       desWidgetFact.py desWidgetFactPlie.py desWidgetFormule.py desGroupeOptionnel.py \
+       desWidgetFact.py desWidgetFactPlie.py desWidgetFactTableau.py desWidgetFormule.py desGroupeOptionnel.py \
        desWidgetHeure.py  desWidgetInformation.py desWidgetIntoSug.py desWidgetInactif.py \
        desWidgetMatrice.py desWidgetParam.py desWidgetPlusieursBase.py desWidgetPlusieursInto.py \
        desWidgetPlusieursIntoOrdonne.py desWidgetPlusieursTuple.py desWidgetRadioButton.py \