]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
pourSauvegarde du debut des UserASSD
authorpascale.noyret <pascale.noyret@edf.fr>
Fri, 25 Oct 2019 09:10:43 +0000 (11:10 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Fri, 25 Oct 2019 09:10:43 +0000 (11:10 +0200)
74 files changed:
Accas/A_ASSD.py
Efi2Xsd/MCAccasXsd.py
Extensions/jdc_include.py
Extensions/localisation.py
Extensions/mcnuplet.py
Ihm/I_ASSD.py
Ihm/I_ETAPE.py
Ihm/I_MACRO_ETAPE.py
Ihm/I_OBJECT.py
Ihm/I_PROC_ETAPE.py
InterfaceQT4/browser.py
InterfaceQT4/compobloc.py
InterfaceQT4/compocomm.py
InterfaceQT4/compofact.py
InterfaceQT4/compomacro.py
InterfaceQT4/compomclist.py
InterfaceQT4/composimp.py
InterfaceQT4/editor.py
InterfaceQT4/editorSsIhm.py
InterfaceQT4/eficas_go.py
InterfaceQT4/gereIcones.py
InterfaceQT4/gereListe.py
InterfaceQT4/gereListe_afetrMT.py [new file with mode: 0644]
InterfaceQT4/monBoutonValide.py
InterfaceQT4/monChoixCode.py
InterfaceQT4/monChoixLangue.py
InterfaceQT4/monFonctionPanel.py
InterfaceQT4/monViewTexte.py
InterfaceQT4/monWidgetCommandeDeplie1Niveau.py
InterfaceQT4/monWidgetCreeParam.py
InterfaceQT4/monWidgetCreeUserAssd.py [new file with mode: 0644]
InterfaceQT4/monWidgetFact.py
InterfaceQT4/monWidgetFactPlie.py
InterfaceQT4/monWidgetIntoSug.py
InterfaceQT4/monWidgetMatrice.py
InterfaceQT4/monWidgetParam.py
InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py
InterfaceQT4/monWidgetPlusieursBase.py
InterfaceQT4/monWidgetPlusieursInto.py
InterfaceQT4/monWidgetPlusieursIntoOrdonne.py
InterfaceQT4/monWidgetPlusieursTuple.py
InterfaceQT4/monWidgetSimpBase.py
InterfaceQT4/monWidgetSimpTuple.py
InterfaceQT4/politiquesValidation.py
InterfaceQT4/qtEficas.py
InterfaceQT4/qtEficasSsIhm.py
InterfaceQT4/qtSaisie.py
InterfaceQT4/viewManager.py
InterfaceQT4/viewManagerSsIhm.py
Noyau/N_ASSD.py
Noyau/N_CO.py
Noyau/N_CONVERT.py
Noyau/N_ENTITE.py
Noyau/N_ETAPE.py
Noyau/N_GEOM.py
Noyau/N_JDC.py
Noyau/N_MACRO_ETAPE.py
Noyau/N_MCCOMPO.py
Noyau/N_MCFACT.py
Noyau/N_MCSIMP.py
Noyau/N_OBJECT.py
Noyau/N_SIMP.py
Noyau/N_UserASSD.py [new file with mode: 0644]
Noyau/context.py
Noyau/nommage.py
UiQT5/desVisu.ui
UiQT5/desWidgetFact.ui
UiQT5/desWidgetPlusieursBase.ui
UiQT5/desWidgetPlusieursIntoOrdonne.ui
UiQT5/desWidgetPlusieursTuple.ui
UiQT5/desWidgetTableau.ui
Validation/V_ETAPE.py
Validation/V_MCSIMP.py
Validation/V_PROC_ETAPE.py

index 9b43ab8a469053cfaa2309267007dab4cc4150e8..22c98794c6a0ea28a22379535861f67b41065a15 100644 (file)
@@ -26,6 +26,7 @@ from Noyau import N_ASSD
 from Noyau import N_GEOM 
 from Noyau import N_FONCTION 
 from Noyau import N_CO 
+from Noyau import N_UserASSD 
 
 # On ajoute la classe ASSD dans l'heritage multiple pour recreer 
 # une hierarchie d'heritage identique a celle de Noyau
@@ -35,6 +36,7 @@ from Noyau import N_CO
 class ASSD(I_ASSD.ASSD,N_ASSD.ASSD):pass
 #class LASSD(I_LASSD.LASSD,N_LASSD.LASSD):pass
 class LASSD(I_LASSD.LASSD):pass
+class UserASSD(N_UserASSD.UserASSD,ASSD): pass
 
 class assd(N_ASSD.assd,I_ASSD.assd,ASSD):pass
 
@@ -61,8 +63,4 @@ class GEOM(N_GEOM.GEOM,I_ASSD.GEOM,ASSD):pass
 class geom(N_GEOM.geom,I_ASSD.geom,ASSD):pass
 class CO(N_CO.CO,I_ASSD.CO,ASSD):pass
 
-class UserASSD(ASSD):
-   def __init__(self, nom):
-      ASSD.__init__(self)
-      self.setName(nom)
 
index d346e31dd03f971e32295d4c204ec77aacb3dc5c..84c334dd055d5bf53ef56ba48fd736831600b114 100755 (executable)
@@ -27,7 +27,6 @@ class X_OBJECT:
       if not self.cata.modeleMetier : return
       if self.nom == 'Consigne' : return None
       trouve = False
-      listeArg=[]
       
       if debug : print self.perePyxb.objPyxb.orderedContent()
       if debug : print (map(lambda o:o.value, self.perePyxb.objPyxb.orderedContent()))
index b6fe4fe24cd0ec3fcc026cd81ff55346164f6ca7..98467da904a974de3f2b52cb88c2a33557b5cd5a 100644 (file)
@@ -57,7 +57,7 @@ class JDC_POURSUITE(JDC):
    def o_register(self,sd):
       return self.jdc_pere.o_register(sd)
 
-   def NommerSdprod(self,sd,sdnom,restrict='non'):
+   def nommerSDProd(self,sd,sdnom,restrict='non'):
       """
           Nomme la SD apres avoir verifie que le nommage est possible : nom
           non utilise
@@ -65,7 +65,7 @@ class JDC_POURSUITE(JDC):
           Si le nom est deja utilise, leve une exception
           Met le concept cree dans le contexe global g_context
       """
-      #print "NommerSdprod",sd,sdnom,restrict
+      #print "nommerSDProd",sd,sdnom,restrict
       if self.prefix_include:
           if sdnom != self.prefix_include:sdnom=self.prefix_include+sdnom
 
@@ -90,7 +90,7 @@ class JDC_POURSUITE(JDC):
           sdnom=sd.id[2:]
           pass
 
-      o=self.sds_dict.get(sdnom,None)
+      o=self.sdsDict.get(sdnom,None)
       if isinstance(o,ASSD):
          raise AsException(tr("Nom de concept deja defini : %s" ,sdnom))
 
@@ -104,7 +104,7 @@ class JDC_POURSUITE(JDC):
 
       # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
       # Ajoute a la creation (appel de regSD).
-      self.sds_dict[sdnom]=sd
+      self.sdsDict[sdnom]=sd
       sd.nom=sdnom
 
       # En plus si restrict vaut 'non', on insere le concept dans le contexte du JDC
index c96aa000aa24ab9fb493fc99351d004892f25253..1ef1aa47cd96ca861198aa4b4f16c3456ad068df 100644 (file)
@@ -59,7 +59,6 @@ def localise(application, locale=None,file=None,translatorFichier=None, debug=Fa
     elif debug:
        print ("Unable to load Eficas translator!")
      
-    global code_translator
     if debug : print  ('translatorFichier :' ,translatorFichier)
     if translatorFichier != None :
        if (code_translator.load(translatorFichier)) and debug:
index 81e623d3af8a246e6bfbaa5f0037881f9bef9603..1078fb27455197b59455e6d20e8d57c044eac2b1 100644 (file)
@@ -44,8 +44,8 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
       self.definition=definition
       self.nom=nom
       self.parent = parent
-      # GETVAL affecte la valeur par defaut si necessaire
-      self.valeur=self.GETVAL(self.val)
+      # getValeurEffective affecte la valeur par defaut si necessaire
+      self.valeur=self.getValeurEffective(self.val)
       if parent :
          self.jdc = self.parent.jdc
          self.niveau = self.parent.niveau
index ba384b0ec569bd17fad618da33d87500457e405b..a3359c53d1b8447d61adeceb618fd98a8496f77d 100644 (file)
@@ -27,15 +27,11 @@ from Noyau.N_VALIDATOR import ValError
 
 class ASSD:
    def __repr__(self):
-      return tr("concept %(inst_name)s de type %(class_name)s", \
-                       {'inst_name': self.getName(), \
-                        'class_name': self.__class__.__name__})
+      return "concept " + self.getName() + " type " + self.__class__.__name__
 
    def __str__(self):
       return self.getName() or "<None>"
 
-   #def __del__(self):
-   #   print "__del__",self
 
 class assd(ASSD):
    def __convert__(cls,valeur):
@@ -45,7 +41,7 @@ class assd(ASSD):
 class GEOM(ASSD):
    def __convert__(cls,valeur):
       return valeur
-   __convert__=classmethod(__convert__)
+   __convert__= classmethod(__convert__)
 
 class geom(GEOM):
    pass
index 20ddc1ae59f7bc6d4a8f785af369f9d9bdeb424f..95586d1be0a4a25a4fc496d0310c86de8147fc9c 100644 (file)
@@ -30,7 +30,7 @@ from Extensions.i18n import tr
 from Extensions.eficas_exception import EficasException
 
 # Objet re pour controler les identificateurs Python
-concept_re=re.compile(r'[a-zA-Z_]\w*$')
+conceptRE=re.compile(r'[a-zA-Z_]\w*$')
 
 # import rajoute suite a l'ajout de buildSd --> a resorber
 import traceback
@@ -106,7 +106,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
             - 1 dans le cas contraire
       """
       # Le nom d'un concept doit etre un identificateur Python (toujours vrai ?)
-      if not concept_re.match(nom):
+      if not conceptRE.match(nom):
          return 0, tr("Un nom de concept doit etre un identificateur Python")
 
       # pour eviter que le nom du concept soit le nom de la classe --> souci pour utiliser le concept
index ab284d4ef5ec17b8f1826422c35b314ac30a538b..10639e4816895ae2f899da9bb979edded5b7eae5 100644 (file)
@@ -82,6 +82,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     #print ("getContexteJdc",self,self.nom, text)
     # On recupere l'etape courante
     step=CONTEXT.getCurrentStep()
+    self.text_included_converted=0
     #try:
     if 1 :
        # on essaie de creer un objet JDC auxiliaire avec un contexte initial
@@ -145,6 +146,9 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
                                 old_recorded_units=old_recorded_units,**args)
 
        j.analyse()
+       if not j.cr.estvide(): self.text_included_converted=0
+       else : self.text_included_converted=1
+       self.text_included_error=str(j.cr)
        # On recupere les etapes internes (pour validation)
        self.etapes=j.etapes
        self.jdc_aux=j
@@ -200,14 +204,14 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
     # On remplit le dictionnaire des concepts produits inclus
     # en retirant les concepts presents dans le  contexte initial
-    # On ajoute egalement le concept produit dans le sds_dict du parent
+    # On ajoute egalement le concept produit dans le sdsDict du parent
     # sans verification car on est sur (verification integree) que 
     # le nommage est possible
     self.g_context.clear()
     for k,v in j_context.items():
        if (not k in context_ini) or (context_ini[k] != v):
            self.g_context[k]=v
-           self.parent.sds_dict[k]=v
+           self.parent.sdsDict[k]=v
 
     #Ce traitement n'est realise que dans les cas suivants:
     #     - si convert n'a pas pu convertir le jeu de commandes
@@ -472,7 +476,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.jdc_aux.cr=self.jdc_aux.CR()
     # On remplit le dictionnaire des concepts produits inclus
     # en retirant les concepts presents dans le  contexte initial
-    # On ajoute egalement le concept produit dans le sds_dict du parent
+    # On ajoute egalement le concept produit dans le sdsDict du parent
     # sans verification car on est sur (verification integree) que
     # le nommage est possible
     j_context=self.jdc_aux.getContexteAvant(None)
@@ -481,7 +485,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     for k,v in j_context.items():
        if not k in context_ini or context_ini[k] != v:
            self.g_context[k]=v
-           self.parent.sds_dict[k]=v
+           self.parent.sdsDict[k]=v
     # On recupere le contexte courant
     self.current_context=self.jdc_aux.current_context
     self.index_etape_courante=self.jdc_aux.index_etape_courante
index bc779586baa1897cda288a5e78a83a6f2ee00a8f..921f399085ada2c342e8499d73ddd5c23a294e02 100644 (file)
@@ -23,6 +23,8 @@ from __future__ import absolute_import
 import Noyau
 
 from . import CONNECTOR
+import re
+conceptRE=re.compile(r'[a-zA-Z_]\w*$')
 
 class OBJECT:
   from Noyau.N_CO import CO
@@ -164,5 +166,22 @@ class OBJECT:
   #def __del__(self):
   #   print "__del__",self
 
+  def nommeSd(self):
+  # surcharge dans I_ETAPE.py
+      if ( nom in dir(self.jdc.cata)) : return (0, nom + tr("mot reserve"))
+      if not conceptRE.match(nom):
+         return 0, tr("Un nom de concept doit etre un identificateur Python")
+      self.initModif()
+      #self.getSdProd()
+      #self.sd.nom = nom
+      #self.sdnom=nom
+      #self.parent.updateConceptAfterEtape(self,self.sd)
+      #self.finModif()
+      #return 1, tr("Nommage du concept effectue")
+
+
+
+
+
 class ErrorObj(OBJECT):pass
 
index 4b46b5921159600f29b87cd4718f005aff02b55c..35f55d51b99988507c9546cc3b423587a1360cd3 100644 (file)
@@ -58,6 +58,10 @@ class PROC_ETAPE(I_ETAPE.ETAPE):
           Inputs :
              - sd=concept detruit
       """
+      print ('iiiiiiiiiiiiiiiiiiiii')
+      print (self)
+      import traceback
+      traceback.print_stack()
       for child in self.mcListe :
         child.deleteConcept(sd)
 
index 0cd814d89b3eedc753088bda70057010fb082251..614fe7f8b9e2fc9b6e4df9f40579020b181270d0 100644 (file)
@@ -114,17 +114,17 @@ class JDCTree( QTreeWidget,GereRegles ):
 
     def handleCollapsedItem(self,item):
     #----------------------------------
-        #print ("dans CollapsedItem", self.inhibeExpand  )
+        print ("dans CollapsedItem", self.inhibeExpand  )
         if self.inhibeExpand == True : return
 
         # On traite le cas de l item non selectionne
         self.itemCourant = item
+        itemParent = item
         while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent 
         if self.tree.node_selected != itemParent : 
              item.setExpanded(False)
              return
 
-        itemParent = item
         item.setPlie()
         item.plieToutEtReaffiche()
         item.select()
@@ -528,7 +528,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
           if   pos == 'before': index = index
           elif pos == 'after' : index = index +1
           else:
-              print(six.text_type(pos), tr("  n'est pas un index valide pour appendBrother"))
+              print(pos, tr("  n'est pas un index valide pour appendBrother"))
               return 0
           return self.treeParent.appendChild(name,pos=index,plier=plier)
 
index f41f7c073485cc0cf69ddee4b41c49e4e75fe277..a05c21e8293a1e61719d0feeb138efb8625b55e1 100644 (file)
@@ -48,11 +48,6 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
 class BLOCTreeItem(compofact.FACTTreeItem):
   itemNode=Node
 
-  #def get_objet(self,name) :
-  #    for v in self.object.mcListe:
-  #        if v.nom == name : return v
-  #    return None
-    
   def isCopiable(self):
     return 0
 
index 39ee3602de516270f359317c7ebf24a257df4711..8c501b79784fb8ba6f5198e3a0b733397cff8c6f 100644 (file)
@@ -55,7 +55,6 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
         debComm=self.item.getText()
         self.setText(1,tr(debComm))
 
-
     
 class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
     itemNode=Node    
index 4d3383958fcfea186e3f60b918f851137f5d83ad..57dd1df848df934f1c75f876fe9cf5743c877867 100644 (file)
@@ -30,8 +30,8 @@ import traceback
 
 class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 
-    def getPanelGroupe(self,parentQt,commande,insertIn=-1):
-    # est-ce que ce n est pas toujours le getPanelGroupe de compomclist qui est utilisee
+    def getPanelGroupe(self,parentQt,commande):
+    # ----------------------------------------
         maDefinition=self.item.get_definition()
         monObjet=self.item.object
         monNom=self.item.nom
@@ -40,19 +40,20 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
         else : self.niveau=1
         if  hasattr(self,'plie') and self.plie==True : 
            from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
-           widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+           widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: 
            self.firstAffiche = False
            self.setPlie()
            from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
-           widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+           widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         else:
            from InterfaceQT4.monWidgetFact import MonWidgetFact
-           widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+           widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         return widget
 
 
     def createPopUpMenu(self):
+    # ------------------------
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
@@ -60,12 +61,15 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
   itemNode=Node
   
   def isExpandable(self):
+  # ----------------------
     return 1
 
   def getText(self):
+  # ----------------
       return  ''
 
   def getLabelText(self):
+  # ----------------------
       """ Retourne 3 valeurs :
         - le texte à afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
@@ -76,18 +80,18 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
       return self.object.getLabelText(),None,None
 
   def isValid(self):
+  # ----------------
     return self.object.isValid()
 
   def isCopiable(self):
+  # ----------------
     return 1
 
   def getIconName(self):
-    if self.object.isValid():
-      return "ast-green-los"
-    elif self.object.isOblig():
-      return "ast-red-los"
-    else:
-      return "ast-yel-los"
+  # ----------------
+    if self.object.isValid()  : return "ast-green-los"
+    elif self.object.isOblig(): return "ast-red-los"
+    else                      : return "ast-yel-los"
 
   #PNPN ????
   #def keys(self):
@@ -95,6 +99,7 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
   #  return keys
 
   def getSubList(self):
+  # ----------------
       """
          Reactualise la liste des items fils stockes dans self.sublist
       """
index 010d6d184a4fea671b06298c761558606c6b48fa..9a1fcbb2098bbae26f28a8ae2b9cfbf5c6e277fe 100644 (file)
@@ -41,16 +41,6 @@ class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):
 
     def createPopUpMenu(self):
       typeNode.PopUpMenuNode.createPopUpMenu(self)
-#      if ("AFFE_CARA_ELEM" in self.item.getGenealogie()) and self.editor.salome:
-#           from PyQt5.QtWidgets import QAction
-#           self.ViewElt = QAction(tr('View3D'),self.tree)
-#           self.ViewElt.triggered.connect(self.view3D)
-#           self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
-#           self.menu.addAction(self.ViewElt)
-#           if self.item.isValid() :
-#              self.ViewElt.setEnabled(1)
-#           else:
-#              self.ViewElt.setEnabled(0)
 
 #    def view3D(self) :
 #        from Editeur import TroisDPal
index 5fb722c8b77c59304b669115a7cc8788b0ec3397..c37efb07adec7c42de3f4764bf1c8cd807aa8af6 100644 (file)
@@ -36,7 +36,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
     def createPopUpMenu(self):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
-    def getPanelGroupe(self,parentQt,commande,insertIn=-1):
+    def getPanelGroupe(self,parentQt,commande):
         maDefinition=self.item.get_definition()
         monObjet=self.item.object
         monNom=self.item.nom
@@ -47,15 +47,15 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         if not (monObjet.isMCList()) :
            if  hasattr(self,'plie') and self.plie==True : 
                from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
-               widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+               widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
            elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche:
                self.firstAffiche = False
                self.setPlie()
                from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
-               widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+               widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
            else:
                from InterfaceQT4.monWidgetFact import MonWidgetFact
-               widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
+               widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         else :
            from InterfaceQT4.monWidgetBloc import MonWidgetBloc
            widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
index 13bf8a8a5fa9cb59bfd6b8f6e120489308bb4d46..e5b5c46927cb5406a1f609c9a507b3890d936270 100644 (file)
@@ -135,7 +135,10 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
                from InterfaceQT4.monWidgetSDCOInto import MonWidgetSDCOInto
                widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           elif self.item.waitAssd():
-            if len(self.item.getSdAvantDuBonType()) == 0 :
+            if self.item.waitUserAssdEnCreation() : 
+               from InterfaceQT4.monWidgetCreeUserAssd import MonWidgetCreeUserAssd
+               widget=MonWidgetCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            elif len(self.item.getSdAvantDuBonType()) == 0 :
                from InterfaceQT4.monWidgetVide import MonWidgetVide
                widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             elif len(self.item.getSdAvantDuBonType()) < 4 :
@@ -524,11 +527,11 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
     return text
     
 
-  def setValeurCo(self,nom_co):
+  def setValeurCo(self,nomCo):
       """
       Affecte au MCS pointe par self l'objet de type CO et de nom nom_co
       """
-      ret = self.object.setValeurCo(nom_co)
+      ret = self.object.setValeurCo(nomCo)
       #print "setValeurCo",ret
       return ret
       
@@ -538,7 +541,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       le MCS pointe par self et du type requis par ce MCS
       """
       a=self.object.etape.parent.getSdAvantDuBonType(self.object.etape,self.object.definition.type)
-      
       if self.waitUserAssd() : l=self.jdc.getSdCreeParObjet(self.object.definition.type)
       else :l=[]
       return a+l
index 1fd8aca4fc48dbf6da532615f5d7541860573781..24141467ee29015f37becdc3ba4a26e64f850c06 100755 (executable)
@@ -27,7 +27,6 @@ except : pass
 import types,sys,os, re
 import  subprocess
 import traceback
-import six
 
 
 from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter, QLabel
@@ -789,9 +788,9 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
           if fn == None : return (0, None)
           if fn== '' : return (0, None)
 
-          ulfile = os.path.abspath(six.text_type(fn))
+          ulfile = os.path.abspath(fn)
           self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
-          fn = six.text_type(QDir.toNativeSeparators(fn))
+          fn = QDir.toNativeSeparators(fn)
 
         self.fichierComplet = os.path.splitext(fn)[0]+extension
 
@@ -834,9 +833,9 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
           if fn == None : return (0, None)
           if fn== '' : return (0, None)
 
-          ulfile = os.path.abspath(six.text_type(fn))
+          ulfile = os.path.abspath(fn)
           self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
-          fn = six.text_type(QDir.toNativeSeparators(fn))
+          fn = QDir.toNativeSeparators(fn)
           newName = fn
 
 
@@ -934,7 +933,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
         if not fn : return (0, " ")
         fn=fn[0]
 
-        ulfile = os.path.abspath(six.text_type(fn))
+        ulfile = os.path.abspath(fn)
         self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
 
         # On utilise le convertisseur defini par format_fichier
@@ -953,6 +952,11 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     # ajoute une etape  de JdC a partir d un texte
         CONTEXT.setCurrentStep(etape)
         etape.buildIncludeEtape(texte)
+        if not (etape.text_included_converted) :
+           QMessageBox.information( self,
+                      tr("Impossible d importer le texte"),
+                      etape.text_included_error)
+               
         self.tree.racine.buildChildren()
 
     #-----------------------------------#
index 3895e62d3f34cb4b50a90e093fdfca2d66609230..12423771f6f1ef063dc74fbd4f4cd1edf2cbfb8d 100755 (executable)
@@ -250,12 +250,9 @@ class JDCEditorSsIhm :
         if self.code == "PSEN"    : texte = self._newPSEN()
         if self.code == "PSEN_N1" : texte = self._newPSEN_N1()
 
-        #if hasattr(self.readercata.cata[0],'TEXTE_NEW_JDC') : texte=self.readercata.cata[0].TEXTE_NEW_JDC
         if hasattr(self.readercata.cata,'TEXTE_NEW_JDC') : texte=self.readercata.cata.TEXTE_NEW_JDC
 
 
-        #jdc=self.readercata.cata[0].JdC( procedure =texte,
-        #print (self.readercata.cata)
         jdc=self.readercata.cata.JdC( procedure =texte,
                                          appliEficas=self,
                                          cata=self.readercata.cata,
@@ -267,13 +264,10 @@ class JDCEditorSsIhm :
         if units is not None:
            jdc.recorded_units=units
            jdc.old_recorded_units=units
-        ## PNPN est ce que la ligne suivante est bien utile ?
-        # elle positionne le contexte
+        # chgt le 15/10/19 
+        # Attention positionne  contexte ?
         # est ce qu on ne doit pas changer le format en Accas si on vient d accas ?
-        if self.format == 'xml' : return jdc
-        if texte == "" :
-           jdc.editor=self
-           jdc.analyse()
+        jdc.editor=self
         return jdc
 
    #--------------------------------#
@@ -356,10 +350,14 @@ class JDCEditorSsIhm :
     def viewJdcSource(self):
     #-----------------------#
         if self.fichier == None : return
-        f=open(self.fichier,'r')
-        texteSource=f.read()
-        f.close()
-        self._viewText(texteSource, "JDC_SOURCE")
+        if os.path.isfile(self.fichier):
+           f=open(self.fichier,'r')
+           texteSource=f.read()
+           f.close()
+           self._viewText(texteSource, "JDC_SOURCE")
+        else :
+           self._viewText("file doesn't exist", "JDC_SOURCE")
+
 
     #-----------------------#
     def viewJdcPy(self):
@@ -439,9 +437,10 @@ class JDCEditorSsIhm :
             return 0
 
     #-----------------------------------------------------------#
-    def getTextJDC(self,format,pourRun=0,formatLigne="beautifie"):
+    def getTextJDC(self,format = None,pourRun=0,formatLigne="beautifie"):
     #-----------------------------------------------------------#
       if self.code == "MAP" and not(format in generator.plugins): format = "MAP"
+      if format == None : format = self.format
       if format in generator.plugins:
 
          # Le generateur existe on l'utilise
index a9ad4d76f18978e3ea48aa4b6d8c17672480e3fd..ccc574cffbfcff75adca898751549c16c354cb6c 100755 (executable)
@@ -28,59 +28,62 @@ except : pass
 
 
 import sys,os
-repIni=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),".."))
-ihmQTDir=os.path.join(repIni,"UiQT5")
-editeurDir=os.path.join(repIni,"Editeur")
-ihmDir=os.path.join(repIni,"InterfaceQT4")
+repIni     = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),".."))
+ihmQTDir   = os.path.join(repIni,"UiQT5")
+editeurDir = os.path.join(repIni,"Editeur")
+ihmDir     = os.path.join(repIni,"InterfaceQT4")
 
-if ihmDir not in sys.path : sys.path.append(ihmDir)
-if ihmQTDir not in sys.path : sys.path.append(ihmQTDir)
-if editeurDir not in sys.path :sys.path.append(editeurDir)
-
-def getEficasSsIhm(code=None,fichier=None,ssCode=None,multi=False,langue='en',versionCode=None, fichierCata=None):
-    if fichierCata != None : fichierCata = os.path.abspath(fichierCata)
-    from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
-    Eficas=AppliSsIhm(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue,versionCode=versionCode, fichierCata=fichierCata)
-    from Editeur  import session
-    options=session.parse(['ssIhm','-k',code,'-v',versionCode])
-    return Eficas
+if ihmDir     not in sys.path : sys.path.append(ihmDir)
+if ihmQTDir   not in sys.path : sys.path.append(ihmQTDir)
+if editeurDir not in sys.path : sys.path.append(editeurDir)
 
 
 def lanceEficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
+#-------------------------------------------------------------------------
     """
-        Lance l'appli EFICAS
+        Lance l'appli EFICAS avec Ihm
     """
-    from PyQt5.QtWidgets import QApplication
-    # Analyse des arguments de la ligne de commande
+    try :
+      from PyQt5.QtWidgets import QApplication
+    except :
+      print('Please, set qt environment')
+      return
+
     from Editeur  import session
-    options=session.parse(sys.argv)
-    if options.code!= None : code=options.code
-    if options.ssCode!= None : ssCode=options.ssCode
+    options = session.parse(sys.argv)
+    if options.code   != None : code=options.code
+    if options.ssCode != None : ssCode=options.ssCode
 
     from InterfaceQT4.qtEficas import Appli
     app = QApplication(sys.argv)
 
-    #import cProfile, pstats, StringIO
-    #pr = cProfile.Profile()
-    #pr.enable()
-
     Eficas=Appli(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue)
-    #pr.disable()
-    #s = StringIO.StringIO()
-    #sortby = 'cumulative'
-    #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
-    #ps.print_stats()
-    #print (s.getValue())
-
     Eficas.show()
 
     res=app.exec_()
     sys.exit(res)
 
+def getEficasSsIhm(code=None,fichier=None,ssCode=None,multi=False,langue='en',versionCode=None, fichierCata=None):
+#----------------------------------------------------------------------------------------------------------------
+    """
+        Lance l'appli EFICAS sans Ihm
+    """
+    from Editeur  import session
+    options = session.parse(sys.argv)
+    if options.code   != None : code=options.code
+    if options.ssCode != None : ssCode=options.ssCode
+    if options.ssCode != None : ssCode=options.ssCode
+    if fichierCata    != None : fichierCata = os.path.abspath(fichierCata)
+
+    from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
+    options=session.parse(['ssIhm','-k',code,'-v',versionCode])
+    Eficas=AppliSsIhm(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue,versionCode=versionCode, fichierCata=fichierCata)
+    return Eficas
+
 def genereXSD(code=None,fichier=None,ssCode=None,multi=False,langue='en',debug=True):
     from Editeur  import session
-    options=session.parse(sys.argv)
-    if options.code!= None   : code=options.code
+    options = session.parse(sys.argv)
+    if options.code  != None   : code=options.code
     if options.ssCode!= None : ssCode=options.ssCode
     if options.cata == None : 
        print ('Use -c cata_name.py')
@@ -112,7 +115,7 @@ def genereXML(code=None,fichier=None,ssCode=None,multi=False,langue='en',debug=T
 
 def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
     """
-        Lance l'appli EFICAS pour trouver les noms des groupes
+        Lance l'appli EFICAS SsIhm 
     """
     # Analyse des arguments de la ligne de commande
     from Editeur  import session
@@ -201,10 +204,6 @@ def lanceEficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_
     parameters=getJdcParameters(texte,macro)
     return parameters
 
-#def getEficasSsIhm(code='Adao',versionCode='V0'):
-#    from .qtEficasSsIhm import AppliSsIhm
-#    Eficas=AppliSsIhm(code=code,ssCode=None,salome=0)
-#    return Eficas
 
 def getJdcParameters(jdc,macro):
     """
index 13b31b09a9d7be29acb054295725b40dcfe195b6..26ba38f4d2493f5c77176b207d461ee0f40c6c13 100644 (file)
@@ -27,7 +27,6 @@ except : pass
 
 import types,os,re,sys
 import traceback
-import six
 import inspect
 
 from PyQt5.QtWidgets import QMessageBox, QFileDialog , QMenu, QPushButton, QTreeView ,QListView, QAbstractItemView
@@ -281,7 +280,7 @@ class ContientIcones(object):
 
       fichier=fichier[0]
       if not(fichier == ""):
-         ulfile = os.path.abspath(six.text_type(fichier))
+         ulfile = os.path.abspath(fichier)
          self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
          self.lineEditVal.setText(fichier)
          self.editor.afficheCommentaire(tr("Fichier selectionne"))
@@ -350,7 +349,7 @@ class ContientIcones(object):
             options = QFileDialog.ShowDirsOnly)
 
       if not (directory == "") :
-         absdir = os.path.abspath(six.text_type(directory))
+         absdir = os.path.abspath(directory)
          self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir)
          self.lineEditVal.setText(directory)
          self.LEvaleurPressed()
index de215c01e8675d0e6016d0eeb7b5fd33b27db962..681b6430fb1580619c42f634fead7b244468ff76 100644 (file)
@@ -22,7 +22,6 @@
 from __future__ import absolute_import
 try :
    from builtins import str
-   from builtins import range
    from builtins import object
 except : pass
 
@@ -30,8 +29,6 @@ import types,os
 import traceback
 
 
-import six
-from six.moves import range
 from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog, QMessageBox
 from PyQt5.QtCore    import QEvent, Qt, QTimer
 from PyQt5.QtGui     import QIcon, QPalette
@@ -319,7 +316,7 @@ class GereListe(object):
        fn=fn[0]
        if fn == None : return
        if fn == "" : return
-       ulfile = os.path.abspath(six.text_type(fn))
+       ulfile = os.path.abspath(fn)
        self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
 
        from .monSelectVal import MonSelectVal
@@ -329,8 +326,8 @@ class GereListe(object):
       filtre=str(self.LEFiltre.text())
       for cb in self.listeCbRouge:
           palette = QPalette(Qt.red)
-         palette.setColor(QPalette.WindowText,Qt.black)
-         cb.setPalette(palette)
+          palette.setColor(QPalette.WindowText,Qt.black)
+          cb.setPalette(palette)
           t=cb.text()
           cb.setText(t)
       self.LEFiltre.setText("")
diff --git a/InterfaceQT4/gereListe_afetrMT.py b/InterfaceQT4/gereListe_afetrMT.py
new file mode 100644 (file)
index 0000000..681b643
--- /dev/null
@@ -0,0 +1,360 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2017   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import object
+except : pass
+
+import types,os
+import traceback
+
+
+from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog, QMessageBox
+from PyQt5.QtCore    import QEvent, Qt, QTimer
+from PyQt5.QtGui     import QIcon, QPalette
+
+from Extensions.i18n import tr
+from InterfaceQT4.monViewTexte   import ViewText
+
+
+# ---------------------- #
+class LECustom(QLineEdit):
+# ---------------------- #
+ def __init__(self,parent,parentQt,i):
+        """
+        Constructor
+        """
+        QLineEdit.__init__(self,parent)
+        
+        self.parentQt=parentQt
+        self.num=i
+        self.dansUnTuple=False
+        self.numDsLaListe=-1
+        self.parentTuple=None
+        self.valeur=None
+        self.editingFinished.connect(self.editFinished)
+        self.textEdited.connect(self.edited)
+        self.parentWidgetPlusieurs = parent
+        self.oldValeur=None
+
+ def edited(self,text):
+     #print ('dans textEdited')
+     self.parentQt.changeUnLineEdit=True
+
+ def focusInEvent(self,event):
+     #print ("dans focusInEvent de LECustom")
+     self.parentQt.aEuLeFocus=True
+     self.parentQt.numLineEditEnCours=self.num
+     self.parentQt.textSelected=self.text()
+     self.setStyleSheet("border: 2px solid gray")
+     self.oldValeur=self.text()
+     QLineEdit.focusInEvent(self,event)
+
+ def focusOutEvent(self,event):
+     #print ("dans focusOutEvent de LECustom")
+     self.setStyleSheet("border: 0px")
+     if self.dansUnTuple    : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
+     elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
+     else                   : self.setStyleSheet("background:rgb(235,235,235)")
+     if (self.oldValeur == self.text()): QLineEdit.focusOutEvent(self,event);return
+     self.litValeur()
+     QLineEdit.focusOutEvent(self,event)
+       
+ def editFinished(self):
+     #print ("dans editFinished de LECustom")
+     if (self.oldValeur == self.text()): return
+     self.litValeur()
+    
+ def litValeur(self):
+     #print ("dans litValeur de LECustom")
+     if (self.oldValeur == self.text()): return
+     self.oldValeur = self.text()
+     val=str(self.text())
+
+     # on verifie les ',' 
+     lval=val.split(',')
+     if len (lval) == 2 :
+        msgBox=QMessageBox()
+        msgBox.setText("separator ',' ")
+        msgBox.setInformativeText("Do you want to enter " + '.'.join(lval) + "?")
+        msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel)
+        msgBox.setDefaultButton(QMessageBox.Ok)
+        ret = msgBox.exec_()
+        if ret != 1024 : self.setText("")
+        else : self.setText('.'.join(lval))
+        self.litValeur()
+     if len (lval) > 2 :
+        self.setText("")
+        self.litValeur()
+     if str(val)=="" or val==None : self.valeur=None; return
+     try : valeur=eval(val,{})
+     except :
+       try :
+          d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+          valeur=eval(val,d)
+       except :
+          valeur=val
+     self.valeur=valeur
+     #print ('self.valeur', self.valeur)
+     
+     
+ def clean(self):
+     self.setText("")
+
+ def getValeur(self):
+     #return self.text()
+     return self.valeur
+
+ def setValeur(self,valeur):
+     self.setText(valeur)
+
+
+
+# --------------------------- #
+class LECustomTuple(LECustom):
+# --------------------------- #
+ def __init__(self,parent):
+   #  index sera mis a jour par TupleCustom
+   parentQt=parent.parent().parent().parent()
+   LECustom. __init__(self,parent,parentQt,0)
+   #print (dir(self))
+
+# ---------------------------- #
+class MonLabelListeClic(QLabel):
+# ---------------------------- #
+     def __init__(self,parent):
+        QLabel.__init__(self,parent)
+        self.parent=parent
+
+     def event(self,event) :
+         if event.type() == QEvent.MouseButtonRelease:
+            self.texte=self.text()
+            self.parent.traiteClicSurLabelListe(self.texte)
+         return QLabel.event(self,event)
+
+
+
+
+# ------------- #
+class GereListe(object):
+# ------------- #
+
+   def __init__(self):
+       self.connecterSignaux()
+
+
+   def connecterSignaux(self):
+       if hasattr(self,'RBHaut'):
+          self.RBHaut.clicked.connect(self.hautPushed)
+          self.RBBas.clicked.connect(self.basPushed)
+          self.RBMoins.clicked.connect(self.moinsPushed)
+          self.RBPlus.clicked.connect(self.plusPushed)
+          self.RBVoisListe.clicked.connect(self.voisListePushed)
+       if hasattr(self,'PBAlpha'):
+          self.PBCata.clicked.connect(self.cataPushed)
+          self.PBAlpha.clicked.connect(self.alphaPushed)
+          self.PBFind.clicked.connect(self.findPushed)
+          self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+       if hasattr(self, 'PBValideFeuille'):
+          self.PBValideFeuille.clicked.connect(self.changeValeur)
+
+   def filtreListe(self):
+       l=[]
+       if self.filtre != "" :
+          for i in self.listeAAfficher :
+              if i.find(self.filtre) == 0 :l.append(i)
+          self.listeAAfficher=l
+       if self.alpha : self.listeAAfficher.sort()
+      
+   def LEFiltreReturnPressed(self):
+       self.filtre= self.LEFiltre.text()
+       self.prepareListeResultatFiltre()
+
+   def findPushed(self):
+       self.filtre= self.LEFiltre.text()
+       self.prepareListeResultatFiltre()
+
+   def alphaPushed(self):
+       #print "alphaPushed" ,self.alpha
+       if self.alpha == 1 : return
+       self.alpha=1
+       self.prepareListeResultat()
+
+   def cataPushed(self):
+       if self.alpha == 0 : return
+       self.alpha=0
+       self.prepareListeResultat()
+
+   def hautPushed(self):
+       if self.numLineEditEnCours == 1 : return
+       else : numEchange=self.numLineEditEnCours-1
+       self.echange(self.numLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
+       self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+
+   def basPushed(self):
+       if self.numLineEditEnCours == self.indexDernierLabel : return
+       else : numEchange=self.numLineEditEnCours+1
+       self.echange(self.numLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
+       self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+   def echange(self,num1,num2):
+       # on donne le focus au a celui ou on a bouge
+       # par convention le 2
+       nomLineEdit=self.nomLine+str(num1)
+       #print nomLineEdit
+       courant=getattr(self,nomLineEdit)
+       valeurAGarder=courant.text()
+       nomLineEdit2=self.nomLine+str(num2)
+       #print nomLineEdit2
+       courant2=getattr(self,nomLineEdit2)
+       courant.setText(courant2.text())
+       courant2.setText(valeurAGarder)
+       self.changeValeur(changeDePlace=False)
+       self.numLineEditEnCours=num2
+       self.LineEditEnCours=courant2
+       self.LineEditEnCours.setFocus(True)
+
+   def moinsPushed(self):
+       # on supprime le dernier
+       if self.numLineEditEnCours == 0 : return
+       if self.indexDernierLabel == 0 : return
+       if self.numLineEditEnCours==self.indexDernierLabel : 
+          nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+          courant=getattr(self,nomLineEdit)
+          courant.clean()
+       else :
+         for i in range (self.numLineEditEnCours, self.indexDernierLabel):
+             aRemonter=i+1
+             nomLineEdit=self.nomLine+str(aRemonter)
+             courant=getattr(self,nomLineEdit)
+             valeurARemonter=courant.getValeur()
+             nomLineEdit=self.nomLine+str(i)
+             courant=getattr(self,nomLineEdit)
+             if valeurARemonter != None : courant.setValeur(valeurARemonter)
+             else : courant.clean()
+         nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+         courant=getattr(self,nomLineEdit)
+         courant.clean()
+       self.changeValeur(changeDePlace=False,oblige=True)
+       self.setValide()
+
+   def plusPushed(self):
+       if self.indexDernierLabel == self.monSimpDef.max:
+          if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
+          else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+          return
+       self.ajoutLineEdit()
+       self.descendLesLignes()
+       self.chercheLigneVide()
+       QTimer.singleShot(1, self.rendVisibleLigne)
+
+   def chercheLigneVide(self):
+       for i in range(self.indexDernierLabel) :
+          nomLineEdit=self.nomLine+str(i+1)
+          courant=getattr(self,nomLineEdit)
+          valeur=courant.getValeur()
+          if valeur=="" : 
+             courant.setFocus(True)
+             self.estVisible=courant
+             return
+
+
+   def descendLesLignes(self):
+       if self.numLineEditEnCours==self.indexDernierLabel : return
+       nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
+       courant=getattr(self,nomLineEdit)
+       valeurADescendre=courant.getValeur()
+       courant.clean()
+       for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
+             aDescendre=i+1
+             nomLineEdit=self.nomLine+str(aDescendre)
+             courant=getattr(self,nomLineEdit)
+             valeurAGarder=courant.getValeur()
+             courant.setValeur(valeurADescendre)
+             valeurADescendre=valeurAGarder
+       self.changeValeur(changeDePlace=False)
+       if hasattr (self, 'LineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+   def voisListePushed(self):
+       texteValeurs=""
+       for v in self.node.item.getListeValeurs():
+          texteValeurs+=str(v)+", "
+       entete="Valeurs pour "+self.nom
+       f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
+       f.show()
+
+
+   def selectInFile(self):
+       init=str( self.editor.maConfiguration.savedir)
+       fn = QFileDialog.getOpenFileName(self.node.appliEficas,
+                                         tr("Fichier de donnees"),
+                                         init,
+                                         tr('Tous les  Fichiers (*)',))
+       fn=fn[0]
+       if fn == None : return
+       if fn == "" : return
+       ulfile = os.path.abspath(fn)
+       self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
+
+       from .monSelectVal import MonSelectVal
+       MonSelectVal(file=fn,parent=self).show()
+
+   def noircirResultatFiltre(self):
+      filtre=str(self.LEFiltre.text())
+      for cb in self.listeCbRouge:
+          palette = QPalette(Qt.red)
+          palette.setColor(QPalette.WindowText,Qt.black)
+          cb.setPalette(palette)
+          t=cb.text()
+          cb.setText(t)
+      self.LEFiltre.setText("")
+      self.listeCbRouge = []
+
+  
+# ----------- #
+class GerePlie(object):
+# ----------- #
+
+   def gereIconePlier(self):
+      if not(hasattr(self,'BFermeListe')) : return
+      self.editor.listeDesListesOuvertes.add(self.node.item)
+      repIcon=self.node.editor.appliEficas.repIcon
+      if not (self.editor.afficheListesPliees):
+         fichier=os.path.join(repIcon, 'empty.png')
+         icon = QIcon(fichier)
+         self.BFermeListe.setIcon(icon)
+         return
+      fichier=os.path.join(repIcon, 'minusnode.png')
+      icon = QIcon(fichier)
+      self.BFermeListe.setIcon(icon)
+      self.BFermeListe.clicked.connect( self.selectWidgetPlie)
+
+   def selectWidgetPlie(self):
+      self.editor.listeDesListesOuvertes.remove(self.node.item)
+      self.reaffichePourDeplier()
+
+        
+     
index 335d164453743f3294e8b4fc936b87d62775db18..788647072e6e09b2284e10b4b6bc5570287b93ac 100644 (file)
@@ -21,8 +21,6 @@
 
 from __future__ import absolute_import
 import re
-import six
-
 import os
 
 
@@ -42,7 +40,7 @@ class MonBoutonValide(QToolButton) :
         strAide=self.parent.node.item.object.getFr()
         if hasattr(self.parent.node.item.object.definition, 'defaut') :
                 strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
-        strRapport=six.text_type(self.parent.node.item.object.report())
+        strRapport=str(self.parent.node.item.object.report())
         self.parent.editor._viewText(strAide+"\n"+strRapport, "JDC_RAPPORT")
 
      def mousePressEvent(self, event):
@@ -57,7 +55,7 @@ class MonBoutonValide(QToolButton) :
           QToolTip.showText(event.globalPos(),myToolTip )
        else :
           t=""
-          texte=six.text_type(self.parent.node.item.object.report())
+          texte=self.parent.node.item.object.report().report()
           deb=1
           for l in texte.split('\n')[2:-2]:
               if re.match('^[\t !]*$',l) : continue
index 59fc60989b8901d425890895690d0e1cfaa2cfb6..a5a2ddcca28d8379b8407b06205b245d9adfb4b7 100644 (file)
@@ -40,11 +40,11 @@ class MonChoixCode(Ui_ChoixCode,QDialog):
   a l'utilisateur de choisir une seule valeur parmi une liste de valeurs
   discretes
   """
-  def __init__(self,  parentAppli=None):
-      QDialog.__init__(self,parent=parentAppli,flags=Qt.Window)
+  def __init__(self,  appliEficas=None):
+      QDialog.__init__(self,parent=appliEficas,flags=Qt.Window)
       self.setModal(True)
       self.setupUi(self)
-      self.parentAppli=parentAppli
+      self.appliEficas=appliEficas
       self.verifieInstall()
       self.code=None
       self.buttonBox.accepted.disconnect(self.accept)
@@ -93,14 +93,14 @@ class MonChoixCode(Ui_ChoixCode,QDialog):
               self.groupCodes.addButton(bouton)
           except :
               pass
-      self.parentAppli.listeCode=self.parentAppli.listeCode+listeCodesIntegrateur
+      self.appliEficas.listeCode=self.appliEficas.listeCode+listeCodesIntegrateur
 
   def choisitCode(self):
       bouton=self.groupCodes.checkedButton()
       if bouton==None : return
       code=str(bouton.text())
       codeUpper=code.upper()
-      self.parentAppli.code=codeUpper
+      self.appliEficas.code=codeUpper
       try :
           dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))
           l=os.listdir(dirCode)
index ed44719f869a83b41e4c2c460eed7acbb17a4b3b..decc00bec370fe8b38978c9224417ae5875b9473 100644 (file)
@@ -37,22 +37,22 @@ class MonChoixLangue(Ui_ChoixLangue,QDialog):
   a l'utilisateur de choisir une seule valeur parmi une liste de valeurs
   discretes
   """
-  def __init__(self,  parentAppli=None):
-      QDialog.__init__(self,parentAppli)
+  def __init__(self,  appliEficas=None):
+      QDialog.__init__(self,appliEficas)
       self.setModal(True)
       self.setupUi(self)
-      self.parentAppli=parentAppli
+      self.appliEficas=appliEficas
       self.installLangue()
       self.code=None
       self.pB_OK.clicked.connect(self.choisitLangue)
 
 
   def installLangue(self):
-      if self.parentAppli.langue == 'fr' : self.rbFrancais.setChecked(True)
+      if self.appliEficas.langue == 'fr' : self.rbFrancais.setChecked(True)
       else : self.rbEnglish.setChecked(True)
 
   def choisitLangue(self):
-      if self.rbFrancais.isChecked() : self.parentAppli.langue='fr'
-      else                           : self.parentAppli.langue ='ang'
+      if self.rbFrancais.isChecked() : self.appliEficas.langue='fr'
+      else                           : self.appliEficas.langue ='ang'
       self.close()
 
index 31cc2245d3f91cc9032b173b6ee965476a612b7f..93dd41026fa4f2d2b45843a2d33c93794fc8b8ce 100644 (file)
@@ -25,7 +25,6 @@ try :
 except : pass
 
 import types,os
-from six.moves import range
 from PyQt5.QtCore import  Qt
 
 
index 0c167c9b377901c640281ee4431c61098522cd9c..c57813abea19d6d3ec09a31907f647abba6bfd51 100644 (file)
@@ -27,7 +27,6 @@ import types,os
 import traceback
 
 from Extensions.i18n import tr
-import six
 
 from PyQt5.QtWidgets import QDialog, QMessageBox, QFileDialog
 from PyQt5.QtCore import QSize
@@ -68,7 +67,7 @@ class ViewText(Ui_dView,QDialog):
         if fn == ""  : return
         if fn == None : return (0, None)
 
-        ulfile = os.path.abspath(six.text_type(fn))
+        ulfile = os.path.abspath(fn)
         if self.editor != None :
            self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
         try:
index 9fa4cbd15c7c82981d71c3f3ac1888b9f45ea274..c03a17c1ed5fb7f75e339077460b1e1861bf920e 100644 (file)
@@ -80,7 +80,7 @@ class MonWidgetCommandeDeplie1Niveau(MonWidgetCommande):
                   c.getPanel              = self.getPanel
                   c.affichePanneau      = self.affichePanneau
                   try :        
-                   c.fenetre.RBDeplie.setCheckable(False)
+                    c.fenetre.RBDeplie.setCheckable(False)
                     c.fenetre.RBDeplie.setEnabled(False)
                     c.fenetre.RBDeplie.setIcon(icon)
                   except :
index a46ebddc6e5b1f4dfe592acefcf69c522562fedb..d53025c1ce3e8f0f8f357a947fed3f713a6e0da4 100644 (file)
@@ -24,7 +24,6 @@ try :
 except : pass
 
 import types,os,re
-from six.moves import range
 pattern_name       = re.compile(r'^[^\d\W]\w*\Z')
 
 # Modules Eficas
diff --git a/InterfaceQT4/monWidgetCreeUserAssd.py b/InterfaceQT4/monWidgetCreeUserAssd.py
new file mode 100644 (file)
index 0000000..9d05785
--- /dev/null
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2020   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+
+# Modules Eficas
+from Extensions.i18n import tr
+from .monWidgetSimpTxt  import MonWidgetSimpTxt
+from PyQt5.QtCore import Qt
+
+
+      
+class MonWidgetCreeUserAssd ( MonWidgetSimpTxt):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+      MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
+
+  def LEvaleurPressed(self):
+      try :
+        if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
+      except : pass
+      valeurEntree = str(self.lineEditVal.text())
+      if valeurEntree == self.oldValeurTexte : return
+      if self.oldValeurTexte == ""  : enCreation = True
+      else                           : enCreation = False
+      if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree)
+      else           : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree)
+      if not enCreation : self.node.updateNodeTexte()
+      #PNPNPN -- signal update sur les fils ou ?
+      if commentaire != "" :
+         if validite : 
+            self.editor.afficheCommentaire(commentaire)
+            self.oldValeurTexte = self.lineEditVal.text()
+         else  : 
+            self.editor.afficheInfos(commentaire,Qt.red)
+            self.lineEditVal.setText("")
+      
+       
+      
index d1086240e8c47cace265a5c5fed513d47148fa3a..06ff2fed687a6c61caee48bbe06f8faa56a9d85c 100644 (file)
@@ -33,13 +33,13 @@ from Extensions.i18n import tr
 class MonWidgetFactCommun(Groupe):
   """
   """
-  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
       #print "fact : ",node.item.nom
       Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
       labeltext,fonte,couleur = self.node.item.getLabelText()
       self.GroupBox.setText(tr(labeltext))
       self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse)
-      self.parentQt.commandesLayout.insertWidget(insertIn,self)
+      self.parentQt.commandesLayout.insertWidget(-1,self)
       self.doitAfficherOptionnel=False
       min,max=obj.getMinMax()
       if max < 2 and  hasattr(self, 'RBPlus') : self.RBPlus.close() 
@@ -78,12 +78,14 @@ class MonWidgetFactCommun(Groupe):
 
 
 class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun):
-  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
-      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
+  #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
+  #    MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
+      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
 
-#class MonWidgetFactTableau(Ui_WidgetFactTableau,MonWidgetFactCommun):
 class MonWidgetFactTableau(Ui_WidgetFact,MonWidgetFactCommun):
-  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
-      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
-      #print ('je passe dans FactTableau')
+  #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
+  #    MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
+      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
       MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
index 17d79b58b44f2fd587d1b2a5334dae81e06f0c84..e479f312c6c80632b141963e3c605db51e638d49 100644 (file)
@@ -28,12 +28,13 @@ from Extensions.i18n import tr
 class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe):
   """
   """
-  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
+  #def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
       #print "fact plie : ",node.item.nom
       node.fenetreAAfficher=self
       Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
       self.groupBox.setText(self.node.item.getLabelText()[0])
-      self.parentQt.commandesLayout.insertWidget(insertIn,self)
+      self.parentQt.commandesLayout.insertWidget(-1,self)
 
   def traiteClicSurLabel(self,texte):
       return
index afb8f74a3c39acf757fe4e799ef46a110869b0fa..42c72358985bf4e4b6f38285cb896ebc3381ec83 100644 (file)
@@ -27,7 +27,6 @@ except : pass
 import types,os
 
 # Modules Eficas
-from six.moves import range
 from PyQt5.QtWidgets  import QCheckBox, QScrollBar, QFrame, QApplication, QLabel
 from PyQt5.QtWidgets  import QSizePolicy,QSpacerItem
 from PyQt5.QtGui  import QPalette, QFont
index 53c87c3509400ee2b863c1543cd92ca1fe6677c2..843da9aa270787e01f9e2ec02b411e9c56f771bf 100644 (file)
@@ -34,7 +34,6 @@ from .feuille         import Feuille
 
 from desWidgetMatrice  import Ui_desWidgetMatrice 
 
-from six.moves import range
 from PyQt5.QtCore import QSize, Qt
 from PyQt5.QtWidgets import QTableWidgetItem
 from PyQt5.QtGui import QIcon
index 287e5ee15ce308e624465d07ab29c3e2b9209a1f..cb799fe523fed98204dbeba028891909257ebffc 100644 (file)
@@ -26,7 +26,6 @@ except : pass
 
 from desWidgetParam import Ui_WidgetParam
 from InterfaceQT4.gereIcones import FacultatifOuOptionnel
-import six
 from PyQt5.QtWidgets import QWidget, QMessageBox
 from PyQt5.QtGui import QIcon
 
@@ -131,7 +130,7 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
         try :
           exec(monTexte, contexte)
         except (ValueError,TypeError, NameError,RuntimeError,ZeroDivisionError) as  exc:
-          self.LECommentaire.setText(tr("Valeur incorrecte: ")+six.text_type (exc))
+          self.LECommentaire.setText(tr("Valeur incorrecte: ")+str(exc))
           return False
         except :
           self.LECommentaire.setText(tr("Valeur incorrecte "))
index 6d7c045215aa8e737a49df718247977c63d79260..172a5cf64b677bf6de4f9020b1e60c97129e3da4 100644 (file)
@@ -31,7 +31,6 @@ from Extensions.i18n import tr
 from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne 
 from .politiquesValidation          import PolitiquePlusieurs
 
-from six.moves import range
 from PyQt5.QtWidgets  import  QScrollBar
 
 
index d00e22df23ab68165b0d3be3b0986a00c3ec353e..8086a28f336d6c8232711845641e311615a85104 100644 (file)
@@ -27,7 +27,6 @@ except : pass
 
 import types,os,sys
 
-from six.moves import range
 from PyQt5.QtGui     import QIcon 
 from PyQt5.QtWidgets import QApplication, QMessageBox, QScrollArea
 from PyQt5.QtCore    import QTimer, QSize, Qt
index 16c3fbdd949b44f8e06b0a72ab102af69a84ccaf..76cd5bde18220246566fe21a85f36b29053baaad 100644 (file)
@@ -27,7 +27,6 @@ except : pass
 import types,os
 
 # Modules Eficas
-from six.moves import range
 from PyQt5.QtWidgets  import QCheckBox, QScrollBar, QFrame, QApplication, QLabel
 from PyQt5.QtWidgets  import QSizePolicy,QSpacerItem
 from PyQt5.QtGui  import QPalette, QFont
index a79317e1f852a50af2ccf86b56b84f4945039082..c7d778c3893cec94a41c7105ce17f0752d31923a 100644 (file)
@@ -37,7 +37,6 @@ from .gereListe              import LECustom
 from .gereListe              import MonLabelListeClic
 from Extensions.i18n import tr
 
-from six.moves import range
 from PyQt5.QtWidgets  import   QFrame, QApplication, QScrollBar
 from PyQt5.QtCore import QTimer, QSize, Qt
 from PyQt5.QtGui  import QIcon, QPalette
index 531f0a4357a25438ff37f57b3d5da412a08f0956..e31a8d313aeacf4384e1fe37479b799817e5d56d 100644 (file)
@@ -27,7 +27,6 @@ except : pass
 
 import types,os,sys
 
-from six.moves import range
 from PyQt5.QtWidgets  import QFrame,QApplication, QFrame, QWidget
 from PyQt5.QtGui      import QIcon
 from PyQt5.QtCore     import QSize, Qt, QTimer
index 9f2a20b96459cbcf9d17be0fd662fcd0267c3d3c..d1252feb5a02807b1a65ff748590e0182a7ebd74 100644 (file)
@@ -61,12 +61,6 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
          self.LEvaleurPressed()
       QLineEdit.focusOutEvent(self.lineEditVal,event)
 
-  #def showEvent(self, event):
-  #    if self.prendLeFocus==1 :
-  #       self.activateWindow()
-  #       self.lineEditVal.setFocus()
-  #       self.prendLeFocus=0
-  #    QWidget.showEvent(self,event)
 
   def setValeurs(self):
        #print ("dans setValeurs")
@@ -119,8 +113,4 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
       self.setValeurs()
       self.reaffiche()
       
-      #if self.objSimp.parent.nom == "MODEL" :
-      #   if self.objSimp.isValid():
-      #      self.objSimp.parent.change_fichier="1"
-            #self.node.item.parent.buildInclude(None,"")
 
index b75a5676b74c1061f9a9c60fcb03d168e15bf5ec..792df7d93a198e9a60f63786771b45502a05a036 100644 (file)
@@ -26,7 +26,6 @@ except : pass
 
 import types,os
 
-from six.moves import range
 from PyQt5.QtCore import Qt
 
 # Modules Eficas
index 274a9f823a50241741b4db27ac123cb24d9f96a9..01acd986395fa7b9959e327c3cfc15fe236b847b 100644 (file)
@@ -38,7 +38,8 @@ class Validation(object)  :
 
   def testeUneValeur(self,valeurentree):
          commentaire = None
-         #print ('testeUneValeur', valeurentree)
+         #import traceback
+         #traceback.print_stack()
          valeur,validite=self.node.item.evalValeur(valeurentree)
          if not validite :
                   commentaire = "impossible d'evaluer : %s " %repr(valeurentree)
index a50d5109fc7e21a3bfc21e0dce152145c5702e59..4b3fd8afdeb22a75ed4a84f680c471535c9c1f5c 100755 (executable)
@@ -26,7 +26,6 @@ try :
 except : pass
 
 import os, sys
-import six
 
 
 from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QBoxLayout, QMenu, QAction, QMessageBox
@@ -846,7 +845,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
         try:
             self.viewmanager.newEditor()
         except EficasException as exc:
-            msg = six.text_type(exc)
+            msg = str(exc)
             if msg != "": QMessageBox.warning(self, tr(u"Erreur"), msg)
 
     def openProcess(self):
@@ -867,7 +866,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
         try:
             self.viewmanager.handleOpen()
         except EficasException as exc:
-            msg = six.text_type(exc)
+            msg = str(exc)
             if msg != "":
                 QMessageBox.warning(self, tr(u"Erreur"), msg)
 
index c16a0c0fa4e02d2d1092d910abe92b2d96633cc6..77df76a88d0570f880714c611a1769d2acce73ca 100755 (executable)
@@ -18,6 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
+
 from __future__ import absolute_import
 from __future__ import print_function
 try :
@@ -25,7 +26,6 @@ try :
 except : pass
 
 import os, sys
-import six
 
 from Extensions.eficas_exception import EficasException
 from Extensions import param2
@@ -132,8 +132,7 @@ class AppliSsIhm:
     def initEditor(self,fichier = None,jdc = None, units = None,include=0):
         if (hasattr(self, 'editor')) and self.editor != None : 
            print ('un seul editeur par application')
-           sys.Exit()
-        #self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
+           sys.exit()
         self.editor = self.viewmanager.getNewEditorNormal()
         
     def initEditorNormal(self,fichier = None,jdc = None, units = None,include=0):
@@ -153,7 +152,7 @@ class AppliSsIhm:
         return self.editor
 
     def fileOpen(self,fichier):
-        fichierIn = os.path.abspath(six.text_type(fichier))
+        fichierIn = os.path.abspath(fichier)
         try:
             monEditor=self.viewmanager.handleOpen(fichierIn)
         except EficasException as exc:
index b674b031d6d3b9fd2a95c80f75be2d21720d9618..f6f227a71b2f252b28290561cdef1877e7a1146c 100644 (file)
@@ -46,6 +46,7 @@ class SaisieValeur(object):
          if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False
          if self.inSaisieValeur : return
          self.inSaisieValeur=True
+
          if valeur == None :
             try :
               nouvelleValeur=str(self.lineEditVal.text())
@@ -57,24 +58,24 @@ class SaisieValeur(object):
                self.inSaisieValeur=False
                return
          else :
-            #PN PN PN ???? la 1 ligne est tres bizarre.
             try : 
-              if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom))
+              # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19
+              #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom))
+              if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur))
             except : 
               if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur)
             nouvelleValeur=valeur
+
          if self.node.item.definition.validators != None :
-          if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 :
+            if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 :
                 commentaire=self.node.item.definition.validators.infoErreurItem()
                 self.editor.afficheInfos(commentaire,Qt.red)
                 self.inSaisieValeur=False
                 return
+
          nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur)
          validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat)
          if commentaire != "" :
-            #PNPNPNP Il faut trouver une solution pour les 2 cas 
-            #   self.editor.afficheInfos(commentaire)
-            #self.Commentaire.setText(tr(commentaire))
             if validite :
                 self.editor.afficheCommentaire(commentaire)
             else :
index 3d6f7d6ba6cadcf98574aeafc9614213f050f8d3..e92a2bfa60f9d23661d92413968695a5937f1c69 100644 (file)
@@ -26,7 +26,6 @@ except : pass
 
 import os
 from Extensions.i18n import tr
-import six
 from  PyQt5.QtWidgets  import QFileDialog, QMessageBox
 from  PyQt5.QtCore     import QFileInfo
 
@@ -39,19 +38,21 @@ class MyViewManager(object):
        self.mesIndexes = {}
        self.appliEficas=appliEficas
        self.editors = []
-       self.dict_editors={}
+       self.dictEditors={}
        self.untitledCount = 0
        self.doubles = {}
 
        self.myQtab = self.appliEficas.myQtab
-
        self.myQtab.currentChanged.connect(self.indexChanged)
        self.myQtab.tabCloseRequested.connect(self.closeTab)
         
    def indexChanged(self):
        index=self.myQtab.currentIndex()
-       if index in self.dict_editors:
-           editor=self.dict_editors[index]
+       if index in self.dictEditors:
+           editor=self.dictEditors[index]
+           if editor.jdc !=None : 
+              CONTEXT.unsetCurrentJdC()
+              CONTEXT.setCurrentJdC(editor.jdc)
            self.appliEficas.maConfiguration=editor.maConfiguration
            self.appliEficas.code=editor.maConfiguration.code
            self.appliEficas.setWindowTitle(editor.titre)
@@ -74,14 +75,14 @@ class MyViewManager(object):
             fichier = QFileDialog.getOpenFileName(self.appliEficas,
                         tr('Ouvrir Fichier'),
                         self.appliEficas.maConfiguration.savedir,
-                         extensions)
+                        extensions)
             fichier=fichier[0]
-       fichier = os.path.abspath(six.text_type(fichier))
-       ulfile = os.path.abspath(six.text_type(fichier))
+       fichier = os.path.abspath(fichier)
+       ulfile = os.path.abspath(fichier)
        self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
        self.appliEficas.addToRecentList(fichier)
-       maPage=self.getEditor( fichier,units=units)
-       if maPage: result = maPage
+       maPage = self.getEditor( fichier,units=units)
+       if maPage : result = maPage
        if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier))
        return result
 
@@ -90,18 +91,18 @@ class MyViewManager(object):
 
    def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None):
        if doitSauverRecent : self.appliEficas.sauveRecents()
-       if indexAFermer == None :index=self.myQtab.currentIndex()
+       if indexAFermer == None : index=self.myQtab.currentIndex()
        else : index = indexAFermer
        if index < 0 : return
-       res=self.checkDirty(self.dict_editors[index],texte)
+       res=self.checkDirty(self.dictEditors[index],texte)
        if res == 2 : return 2             # l utilisateur a annule
        idx=index
-       while idx < len(self.dict_editors) -1 :
-             self.dict_editors[idx]=self.dict_editors[idx+1]
+       while idx < len(self.dictEditors) -1 :
+             self.dictEditors[idx]=self.dictEditors[idx+1]
              idx = idx + 1
-       del self.dict_editors[len (self.dict_editors) -1]
+       del self.dictEditors[len (self.dictEditors) -1]
        try :
-           del self.doubles[self.dict_editors[index]]
+           del self.doubles[self.dictEditors[index]]
        except :
            pass
        self.myQtab.removeTab(index)
@@ -111,19 +112,19 @@ class MyViewManager(object):
    def run(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.run()
 
    def saveRun(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.saveRun()
 
    def handleCloseAll(self,texte=tr('Quitter')):
        res=0
        self.appliEficas.sauveRecents()
-       while len(self.dict_editors) > 0 :
+       while len(self.dictEditors) > 0 :
              self.myQtab.setCurrentIndex(0)
              res=self.handleClose(0,texte)
              if res==2 : return res   # l utilsateur a annule
@@ -133,53 +134,53 @@ class MyViewManager(object):
        #print "passage dans handleRechercher"
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleRechercher()
 
    def handleRechercherDsCatalogue(self):
        #print "passage dans handleRechercher"
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleRechercherDsCatalogue()
 
    def handleDeplier(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleDeplier()
    
    def handleEditCopy(self):
        #print "passage dans handleEditCopy"
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleEditCopy()
 
    def handleEditCut(self):
        #print "passage dans handleEditCut"
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleEditCut()
 
    def handleEditPaste(self):
        #print "passage dans handleEditPaste"
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleEditPaste()
 
    def handleSupprimer(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleSupprimer()
 
    def handleAjoutEtape(self,nomEtape):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleAjoutEtape(nomEtape)
 
 
@@ -195,50 +196,50 @@ class MyViewManager(object):
    def handleViewJdcFichierSource(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].viewJdcSource()
+       self.dictEditors[index].viewJdcSource()
 
    def ouvreArbre(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].ouvreArbre()
+       self.dictEditors[index].ouvreArbre()
 
    def fermeArbre(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].fermeArbre()
+       self.dictEditors[index].fermeArbre()
 
    def ajoutCommentaire(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.ajoutCommentaire()
 
    def handleViewJdcRegles(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].viewJdcRegles()
+       self.dictEditors[index].viewJdcRegles()
 
    def handleGestionParam(self):
        index=self.myQtab.currentIndex()
        if index < 0 : 
           QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
           return
-       self.dict_editors[index].gestionParam()
+       self.dictEditors[index].gestionParam()
 
    def handleViewJdcRapport(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].viewJdcRapport()
+       self.dictEditors[index].viewJdcRapport()
 
    def handleViewJdcPy(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       self.dict_editors[index].viewJdcPy()
+       self.dictEditors[index].viewJdcPy()
 
    def saveCurrentEditor(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        if editor in self.doubles :
            QMessageBox.warning(
                      None,
@@ -247,21 +248,21 @@ class MyViewManager(object):
            return
        ok, newName = editor.saveFile()
        if ok :
-           fileName=os.path.basename(six.text_type(newName))
+           fileName=os.path.basename(newName)
            self.myQtab.setTabText(index,fileName)
        return ok
 
    def saveCompleteCurrentEditor(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        ok, newName = editor.saveCompleteFile()
        return ok
 
    def sauveLigneCurrentEditor(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        if editor in self.doubles :
            QMessageBox.warning(
                      None,
@@ -270,18 +271,17 @@ class MyViewManager(object):
            return
        ok, newName = editor.sauveLigneFile()
        if ok :
-           fileName=os.path.basename(six.text_type(newName))
+           fileName=os.path.basename(newName)
            self.myQtab.setTabText(index,fileName)
        return ok
 
-
    def saveAsCurrentEditor(self):
        index=self.myQtab.currentIndex()
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        oldName=editor.fichier
        ok,newName = editor.saveFileAs()
        if ok :
-           fileName=os.path.basename(six.text_type(newName))
+           fileName=os.path.basename(newName)
            self.myQtab.setTabText(index,fileName)
        if editor in self.doubles :
           if oldName != newName :
@@ -303,8 +303,8 @@ class MyViewManager(object):
        newWin = 0
        double = None
        indexEditor=0
-       for indexEditor in self.dict_editors :
-           editor=self.dict_editors[indexEditor]
+       for indexEditor in self.dictEditors :
+           editor=self.dictEditors[indexEditor]
            if self.samePath(fichier, editor.getFileName()):
               msgBox = QMessageBox()
               msgBox.setWindowTitle(tr("Fichier"))
@@ -332,7 +332,7 @@ class MyViewManager(object):
 
        index=self.myQtab.currentIndex()
        if index != -1 :
-          self.dict_editors[index]=editor
+          self.dictEditors[index]=editor
        return editor
 
    def addView(self, win, fichier=None):
@@ -399,7 +399,7 @@ class MyViewManager(object):
             if res == 0:
                 (ok, newName) = editor.saveFile()
                 if ok:
-                    fileName=os.path.basename(six.text_type(newName))
+                    fileName=os.path.basename(newName)
                     index=self.myQtab.currentIndex()
                     self.myQtab.setTabText(index,fileName)
                 return ok
@@ -408,14 +408,14 @@ class MyViewManager(object):
    def handleAjoutGroup(self,listeGroup):
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        editor.handleAjoutGroup(listeGroup)
   
    def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments):
        # Peut-etre a blinder un peu plus sur le nb d argument
        index=self.myQtab.currentIndex()
        if index < 0 : return
-       editor=self.dict_editors[index]
+       editor=self.dictEditors[index]
        if editor.getEtapeCourante() == None :
           QMessageBox.information( self.appliEficas,
                       tr("Selectionner une etape"),
@@ -428,5 +428,5 @@ class MyViewManager(object):
           if hasattr(editor,p): listeParam.append(getattr(editor,p))
           if p=="editor"      : listeParam.append(editor)
           if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante())
-       apply(laFonctionUtilisateur,listeParam)
+       laFonctionUtilisateur(*listeParam)
 
index 93af86e203754e21ec1661844a0251d347974444..030f86a86088919376d9c3d559fc025183bfc839 100644 (file)
@@ -79,7 +79,7 @@ class MyViewManagerSsIhm(object):
 #--------------------------------
 # Symetrique de ViewManager mais pas d heritage entre les 2
 # dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille
-# ici en revanche.... c est moins sur
+# ici en revanche.... c est moins sur . voir avec le fichier 
 
 #  --------------------------------
    def __init__(self,appliEficas):
@@ -111,6 +111,10 @@ class MyViewManagerSsIhm(object):
 #  ----------------------------------------------------------------------
    def getNewEditor(self,fichier = None,jdc = None, units = None,include=0):
 #  ----------------------------------------------------------------------
+# il faudrait decider entre e handler ou non
+# le cas d usage n est pas tout a fait identique  :
+# avec handler pour les utilisateurs avance
+# sans pour les utilisateurs encore plus ancvances et les tests
 
        from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
        editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include)
@@ -235,187 +239,3 @@ class MyViewManagerSsIhm(object):
         self.dictEditors[handler].saveFileLegerAs(fileName)
 
 
-#   def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter')):
-#       if doitSauverRecent : self.appliEficas.sauveRecents()
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       res=self.checkDirty(self.dict_editors[index],texte)
-#       if res == 2 : return 2             # l utilisateur a annule
-#       index=self.myQtab.currentIndex()
-#       idx=index
-#       while idx < len(self.dict_editors) -1 :
-#             self.dict_editors[idx]=self.dict_editors[idx+1]
-#             idx = idx + 1
-#       del self.dict_editors[len (self.dict_editors) -1]
-#       try :
-#           del self.doubles[self.dict_editors[index]]
-#       except :
-#           pass
-#       self.myQtab.removeTab(index)
-#       return res
-#       
-
-#
-#   def handleCloseAll(self,texte=tr('Quitter')):
-#       res=0
-#       self.appliEficas.sauveRecents()
-#       while len(self.dict_editors) > 0 :
-#             self.myQtab.setCurrentIndex(0)
-#             res=self.handleClose(0,texte)
-#             if res==2 : return res   # l utilsateur a annule
-#       return res
-#        
-#
-#
-#   def newEditor(self,include=0):
-#       if self.appliEficas.demande==True : 
-#           self.appliEficas.definitCode(None,None)
-#           if self.appliEficas.code == None:return
-#       maPage=self.getEditor(include=include)
-#
-
-#
-#   def handleViewJdcRegles(self):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       self.dict_editors[index].viewJdcRegles()
-#
-#   def handleGestionParam(self):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : 
-#          QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
-#          return
-#       self.dict_editors[index].gestionParam()
-#
-#
-#
-#   def saveCurrentEditor(self):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       editor=self.dict_editors[index]
-#       if editor in self.doubles :
-#           QMessageBox.warning(
-#                     None,
-#                     tr("Fichier Duplique"),
-#                     tr("Le fichier ne sera pas sauvegarde."),)
-#           return
-#       ok, newName = editor.saveFile()
-#       if ok :
-#           fileName=os.path.basename(six.text_type(newName))
-#           self.myQtab.setTabText(index,fileName)
-#       return ok
-#
-#   def saveLegerCurrentEditor(self):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       editor=self.dict_editors[index]
-#       ok, newName = editor.saveFileLeger()
-#       return ok
-#
-#   def sauveLigneCurrentEditor(self):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       editor=self.dict_editors[index]
-#       if editor in self.doubles :
-#           QMessageBox.warning(
-#                     None,
-#                     tr("Fichier Duplique"),
-#                     tr("Le fichier ne sera pas sauvegarde."),)
-#           return
-#       ok, newName = editor.sauveLigneFile()
-#       if ok :
-#           fileName=os.path.basename(six.text_type(newName))
-#           self.myQtab.setTabText(index,fileName)
-#       return ok
-#
-#
-#   def saveAsCurrentEditor(self):
-#       index=self.myQtab.currentIndex()
-#       editor=self.dict_editors[index]
-#       oldName=editor.fichier
-#       ok,newName = editor.saveFileAs()
-#       if ok :
-#           fileName=os.path.basename(six.text_type(newName))
-#           self.myQtab.setTabText(index,fileName)
-#       if editor in self.doubles :
-#          if oldName != newName :
-#             del self.doubles[editor]
-#       return ok
-#
-#   def displayJDC(self,jdc,fn=None):
-#        """
-#        Public slot to display a file in an editor.
-#        @param fn name of file to be opened
-#        # insert filename into list of recently opened files
-#        """
-#        titre=None
-#        if fn != None : titre=fn.split("/")[-1]
-#        editor = self.getEditor(fichier= fn, jdc = jdc ,include=1)
-#
-
-##PNPNPNPN --> a affiner
-#        if fichier is None:
-#            self.untitledCount += 1
-#            self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
-#            #self.myQtab.addTab(win, str(self.appliEficas.code))
-#        else:
-#            liste=fichier.split('/')
-#            txt =  liste[-1]
-#            if not QFileInfo(fichier).isWritable():
-#                txt = '%s (ro)' % txt
-#            self.myQtab.addTab(win,txt )
-#        self.myQtab.setCurrentWidget(win)
-#        self.currentEditor=win
-#        win.setFocus()
-#
-#   def getOpenStartDir(self) :
-#       #PN --> Les Preferences
-#        try :
-#            userDir=os.path.expanduser("~/Eficas_install/")
-#            return userDir
-#        except :
-#            return ""
-#
-#
-#   def checkDirty(self, editor,texte):
-#        """
-#        Private method to check dirty status and open a message window.
-#        
-#        @param editor editor window to check
-#        @return flag indicating successful reset of the dirty flag (boolean)
-#        """        
-#        res=1 
-#        if (editor.modified) and (editor in self.doubles) :
-#            msgBox = QMessageBox(None)
-#            msgBox.setWindowTitle(tr("Fichier Duplique"))
-#            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
-#            msgBox.addButton(texte,0)
-#            msgBox.addButton(tr("&Annuler"),1)
-#            res=msgBox.exec_()
-#            if res == 0 : return 1
-#            return 2
-#        if editor.modified:
-#            fn = editor.getFileName()
-#            if fn is None: fn = tr('Noname')
-#            msgBox = QMessageBox(None)
-#            msgBox.setWindowTitle(tr("Fichier Modifie"))
-#            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
-#            msgBox.addButton(tr("&Sauvegarder"),1)
-#            msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
-#            msgBox.addButton(tr("&Annuler"),2)
-#            res=msgBox.exec_()
-#            if res == 2 : return res
-#            if res == 0:
-#                (ok, newName) = editor.saveFile()
-#                if ok:
-#                    fileName=os.path.basename(six.text_type(newName))
-#                    index=self.myQtab.currentIndex()
-#                    self.myQtab.setTabText(index,fileName)
-#                return ok
-#        return res
-#
-#   def handleAjoutGroup(self,listeGroup):
-#       index=self.myQtab.currentIndex()
-#       if index < 0 : return
-#       editor=self.dict_editors[index]
-#       editor.handleAjoutGroup(listeGroup)
index a7fae98121cc158834d12a3c9c3cdfd35a1fafb8..cf1185f7b88f32d02c23dc2de00b47ebc033c670 100644 (file)
@@ -33,6 +33,7 @@ class ASSD(object):
     """
        Classe de base pour definir des types de structures de donnees ASTER
        equivalent d un concept ASTER
+       Doit_on garder tout ce qui concerne jeveux ?
     """
     idracine = "SD"
 
index c46cd58dddd7c523dbd5269997b9da5bfe76ec55..998922e69ae341e4584ed6a30e623379171f97c4 100644 (file)
@@ -38,7 +38,7 @@ class CO(ASSD) :
         #
         if self.parent:
             try:
-                self.parent.NommerSdprod(self, nom)
+                self.parent.nommerSDProd(self, nom)
             except AsException as e:
                 appel = N_utils.calleeWhere(niveau=2)
                 raise AsException(
index 3a89a528c055298ab8dd250fab51843edde21d44..c5a490e7698f961a2c0ef467508acba43f0966d8 100644 (file)
@@ -40,9 +40,9 @@ class Conversion(object):
     """Conversion de type.
     """
 
-    def __init__(self, name, typ):
+    def __init__(self, name, typeACreer):
         self.name = name
-        self.typ = typ
+        self.typeACreer = typeACreer
 
     def convert(self, obj):
         """Filtre liste
@@ -68,11 +68,11 @@ class Conversion(object):
 
 class TypeConversion(Conversion):
 
-    """Conversion de type
+    """Conversion de typeACreer
     """
 
-    def __init__(self, typ):
-        Conversion.__init__(self, 'type', typ)
+    def __init__(self, typeACreer):
+        Conversion.__init__(self, 'type', typeACreer)
 
 
 class IntConversion(TypeConversion):
@@ -103,14 +103,28 @@ class FloatConversion(TypeConversion):
         return o
 
 
+class UserASSDConversion(TypeConversion):
+    def __init__(self, classUser):
+        TypeConversion.__init__(self, classUser)
+
+    def function(self, o):
+        import traceback
+        print ('je convertis : ', o, 'en ', self.typeACreer )
+        traceback.print_stack()
+        print ('__________________________________________________________ UserASSDConversion')
+        if o == None : return None
+        nouvelObj=self.typeACreer(o)
+        return nouvelObj
+
 _convertI = IntConversion()
 _convertR = FloatConversion()
 
 
 def ConversionFactory(name, typ):
     if name == 'type':
-        if 'I' in typ:
-            return _convertI
-        elif 'R' in typ:
-            return _convertR
+        if 'I' in typ   : return _convertI
+        elif 'R' in typ : return _convertR
+    if name == 'UserASSD':
+       #print(typ)
+       return (UserASSDConversion(typ))
     return None
index 9a7eed9814ce6c7807152e91ec98b479594b0239..a6ab02bb446370e629aa75b37576ebede3856ac0 100644 (file)
@@ -67,7 +67,7 @@ class ENTITE(object):
             self.validators = self.factories['validator'](validators)
         else:
             self.validators = validators
-        self.doitSenregistrerComme = None
+        #self.doitSenregistrerComme = None
         self.txtNomComplet=''
         self.redefinit=False
 
index 5a185e203f336cc0a3e6fed3a857012f2453474f..dd3f493e32c7c1c751da1d87a9f70809c7f4c4d8 100644 (file)
@@ -430,7 +430,7 @@ Causes possibles :
             new_sd = self.sd.__class__(etape=new_etape)
             new_etape.sd = new_sd
             if self.reuse == None:
-                new_etape.parent.NommerSdprod(new_sd, self.sd.nom)
+                new_etape.parent.nommerSDProd(new_sd, self.sd.nom)
             else:
                 new_sd.setName(self.sd.nom)
         new_etape.copyIntern(self)
@@ -441,7 +441,7 @@ Causes possibles :
            Reinitialise le nommage du concept de l'etape lors d'un changement de jdc
         """
         if self.sd and self.reuse == None:
-            self.parent.NommerSdprod(self.sd, self.sd.nom)
+            self.parent.nommerSDProd(self.sd, self.sd.nom)
 
     def isInclude(self):
         """Permet savoir si on a affaire a la commande INCLUDE
index 2bde47a3ba3439be2e00486c9901f69bce345247..816fd4226518b74e1357ab1c851b16b3716fbb96 100644 (file)
@@ -23,7 +23,9 @@
 """
 from __future__ import absolute_import
 from .N_ASSD import ASSD
-import six
+try:basestring
+except NameError: basestring = str
+
 
 
 class GEOM(ASSD):
@@ -58,7 +60,7 @@ class GEOM(ASSD):
         return self.nom
 
     def __convert__(cls, valeur):
-        if isinstance(valeur, (str, six.text_type)) and len(valeur.strip()) <= 8:
+        if isinstance(valeur, basestring) and len(valeur.strip()) <= 8:
             return valeur.strip()
         raise ValueError(
             _(u'On attend une chaine de caractères (de longueur <= 8).'))
index 575f55121a1c2f9859b7aa82d6467819e0af3d84..9f74b90a97dc2e87299846af4ac02a6e977f145f 100644 (file)
@@ -89,6 +89,7 @@ NONE = None
                  cata_ord_dico=None, parent=None,
                  nom='SansNom', appliEficas=None, context_ini=None, **args):
         self.procedure = procedure
+        print (self.procedure)
         self.definition = definition
         self.cata = cata
         # PN pourquoi ?
@@ -127,14 +128,15 @@ NONE = None
         # on met le jdc lui-meme dans le context global pour l'avoir sous
         # l'etiquette "jdc" dans le fichier de commandes
         self.g_context = {'jdc': self}
+        CONTEXT.unsetCurrentJdC()
+        CONTEXT.setCurrentJdC(self)
         # Dictionnaire pour stocker tous les concepts du JDC (acces rapide par
         # le nom)
-        self.sds_dict = {}
-        self.utilise_un_sds_dict = {}
+        self.sdsDict = {}
         self.etapes = []
         self.index_etapes = {}
         self.mc_globaux = {}
-        self.current_context = {}
+        self.currentContext = {}
         self.condition_context = {}
         self.index_etape_courante = 0
         self.UserError = "UserError"
@@ -187,6 +189,7 @@ Causes possibles :
            Cette methode execute le jeu de commandes compile dans le contexte
            self.g_context de l'objet JDC
         """
+      
         CONTEXT.setCurrentStep(self)
         # Le module nommage utilise le module linecache pour acceder
         # au source des commandes du jeu de commandes.
@@ -196,6 +199,7 @@ Causes possibles :
         import linecache
         linecache.cache[self.nom] = 0, 0, self.procedure.split('\n'), self.nom
         try:
+        #if 1 :
             exec(self.exec_init, self.g_context)
             for obj_cata in (self.cata,):
                 if type(obj_cata) == types.ModuleType:
@@ -218,7 +222,7 @@ Causes possibles :
                 # Update du dictionnaire des concepts
                 for sdnom, sd in list(self.context_ini.items()):
                     if isinstance(sd, ASSD):
-                        self.sds_dict[sdnom] = sd
+                        self.sdsDict[sdnom] = sd
 
             #if self.appliEficas != None:
             #    self.appliEficas.afficheInfos(
@@ -235,6 +239,8 @@ Causes possibles :
             if self.appliEficas != None:
                 self.appliEficas.afficheInfos('')
 
+        #try :
+        #   print ('PNPN')
         except InterruptParsingError:
             # interrupt the command file parsing used by FIN to ignore the end
             # of the file
@@ -327,8 +333,6 @@ Causes possibles :
            Cette methode ajoute etape dans la liste des etapes : self.etapes
            et retourne un numero d'enregistrement
         """
-        import traceback
-        traceback.print_stack()
         self.etapes.append(etape)
         self.index_etapes[etape] = len(self.etapes) - 1
         return self.gRegister(etape)
@@ -374,17 +378,17 @@ Causes possibles :
         if sd != None and (etape.definition.reentrant == 'n' or etape.reuse is None):
             # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation
             # d un concept. Commande non reentrante ou reuse absent.
-            self.NommerSdprod(sd, nomsd)
+            self.nommerSDProd(sd, nomsd)
         return sd
 
-    def NommerSdprod(self, sd, sdnom, restrict='non'):
+    def nommerSDProd(self, sd, sdnom, restrict='non'):
         """
             Nomme la SD apres avoir verifie que le nommage est possible : nom
             non utilise
             Si le nom est deja utilise, leve une exception
             Met le concept cree dans le concept global g_context
         """
-        o = self.sds_dict.get(sdnom, None)
+        o = self.sdsDict.get(sdnom, None)
         if isinstance(o, ASSD):
             raise AsException("Nom de concept deja defini : %s" % sdnom)
         if sdnom in self._reserved_kw:
@@ -392,7 +396,7 @@ Causes possibles :
                 "Nom de concept invalide. '%s' est un mot-cle reserve." % sdnom)
 
         # Ajoute a la creation (appel de regSD).
-        self.sds_dict[sdnom] = sd
+        self.sdsDict[sdnom] = sd
         sd.setName(sdnom)
 
         # En plus si restrict vaut 'non', on insere le concept dans le contexte
@@ -400,6 +404,14 @@ Causes possibles :
         if restrict == 'non':
             self.g_context[sdnom] = sd
 
+    def regUserSD(self,sd):
+    # utilisee pour creer les references
+    # se contente d appeler la methode equivalente sur le jdc
+      id=self.regSD(sd)
+      self.nommerSDProd(sd,sd.nom)
+      return id
+
+
     def regSD(self, sd):
         """
             Methode appelee dans l __init__ d un ASSD lors de sa creation
@@ -528,9 +540,9 @@ Causes possibles :
         # courante pendant le processus de construction des etapes.
         # Si on insère des commandes (par ex, dans EFICAS), il faut prealablement
         # remettre ce pointeur a 0
-        # self.current_context.items() if isinstance(v, ASSD)])
+        # self.currentContext.items() if isinstance(v, ASSD)])
         if self.parLot_user == 'NON':
-            d = self.current_context = self.g_context.copy()
+            d = self.currentContext = self.g_context.copy()
             if etape is None:
                 return d
             # retirer les sd produites par 'etape'
@@ -551,12 +563,12 @@ Causes possibles :
             index_etape = len(self.etapes)
         if index_etape >= self.index_etape_courante:
             # On calcule le contexte en partant du contexte existant
-            d = self.current_context
+            d = self.currentContext
             if self.index_etape_courante == 0 and self.context_ini:
                 d.update(self.context_ini)
             liste_etapes = self.etapes[self.index_etape_courante:index_etape]
         else:
-            d = self.current_context = {}
+            d = self.currentContext = {}
             if self.context_ini:
                 d.update(self.context_ini)
             liste_etapes = self.etapes
@@ -609,13 +621,13 @@ Causes possibles :
         co.executed = 1
         return co
 
-    def del_concept(self, nomsd):
+    def delConcept(self, nomsd):
         """
-           Methode pour supprimer la reference d'un concept dans le sds_dict.
+           Methode pour supprimer la reference d'un concept dans le sdsDict.
            Ne detruire pas le concept (different de supprime).
         """
         try:
-            del self.sds_dict[nomsd.strip()]
+            del self.sdsDict[nomsd.strip()]
         except:
             pass
 
index 793fe07e1261e2308b6ae6f0895856879fd61168..5cb81706cf66e28f1cb22d04a316ea4fae52b112 100644 (file)
@@ -250,6 +250,7 @@ Causes possibles :
         # L'etape courante pour laquelle le contexte a ete calcule est
         # memorisee dans self.index_etape_courante
         # self.current_context.items() if isinstance(v, ASSD)])
+        print ('hjhj')
         d = self.current_context = self.g_context.copy()
         if etape is None:
             return d
@@ -503,10 +504,10 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             # On est dans le cas de la creation d'un nouveau concept
             sd = etape.getSdProd()
             if sd != None:
-                self.NommerSdprod(sd, nomsd)
+                self.nommerSDProd(sd, nomsd)
         return sd
 
-    def NommerSdprod(self, sd, sdnom, restrict='non'):
+    def nommerSDProd(self, sd, sdnom, restrict='non'):
         """
           Cette methode est appelee par les etapes internes de la macro.
           La macro appelle le JDC pour valider le nommage.
@@ -552,14 +553,14 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         if restrict == 'non':
             # On demande le nommage au parent mais sans ajout du concept dans le contexte du parent
             # car on va l'ajouter dans le contexte de la macro
-            self.parent.NommerSdprod(sd, sdnom, restrict='oui')
+            self.parent.nommerSDProd(sd, sdnom, restrict='oui')
             # On ajoute dans le contexte de la macro les concepts nommes
             # Ceci est indispensable pour les CO (macro) dans un INCLUDE
             self.g_context[sdnom] = sd
         else:
             # La demande de nommage vient probablement d'une macro qui a mis
             # le concept dans son contexte. On ne traite plus que le nommage (restrict="oui")
-            self.parent.NommerSdprod(sd, sdnom, restrict='oui')
+            self.parent.nommerSDProd(sd, sdnom, restrict='oui')
 
     def deleteConceptAfterEtape(self, etape, sd):
         """
@@ -719,7 +720,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
                 if etp.reuse:
                     new_sd.setName(etp.sd.nom)
                 else:
-                    self.NommerSdprod(new_sd, etp.sd.nom)
+                    self.nommerSDProd(new_sd, etp.sd.nom)
             new_etp.copyIntern(etp)
             self.etapes.append(new_etp)
             self.index_etapes[new_etp] = len(self.etapes) - 1
@@ -729,9 +730,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
            Reinitialise l'etape avec un nouveau jdc parent new_jdc
         """
         if self.sd and self.reuse == None:
-            self.parent.NommerSdprod(self.sd, self.sd.nom)
+            self.parent.nommerSDProd(self.sd, self.sd.nom)
         for concept in self.sdprods:
-            self.parent.NommerSdprod(concept, concept.nom)
+            self.parent.nommerSDProd(concept, concept.nom)
 
     def reparent(self, parent):
         """
index c4d641fd3adca053071278b7921d00bb7ae9a5fe..03d2a38ca1b1fdb83c713db418d972bd9aba008e 100644 (file)
@@ -482,6 +482,7 @@ class MCCOMPO(N_OBJECT.OBJECT):
         return l
 
 
+
 def intersection_vide(dict1, dict2):
     """Verification qu'il n'y a pas de clé commune entre 'dict1' et 'dict2'."""
     sk1 = set(dict1)
index 52be431306d321b9e7ce88d3dc5b54abe2f01cf4..38234f62926e073d81b8ad21806b1a9e949400e2 100644 (file)
@@ -56,7 +56,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
         self.nom = nom
         self.val = val
         self.parent = parent
-        self.valeur = self.GETVAL(self.val)
+        self.valeur = self.getValeurEffective(self.val)
         if parent:
             self.jdc = self.parent.jdc
             self.niveau = self.parent.niveau
@@ -68,7 +68,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
             self.etape = None
         self.mcListe = self.buildMc()
 
-    def GETVAL(self, val):
+    def getValeurEffective(self, val):
         """
             Retourne la valeur effective du mot-clé en fonction
             de la valeur donnée. Defaut si val == None
index e4d510c0f4e9b01f047e89597cdffe310c009b16..c00b06efb19d4f822efbf8da8052ead630a5e1f6 100644 (file)
@@ -54,17 +54,12 @@ class MCSIMP(N_OBJECT.OBJECT):
             - valeur : valeur du mot-clé simple en tenant compte de la valeur par défaut
 
         """
-        #print ("MCSIMP, ------------------------")
-        #print (self, val, definition, nom, parent)
-        #print ("MCSIMP, ------------------------")
+        print ("MCSIMP, ------------------------")
+        print (self, val, definition, nom, parent)
         self.definition = definition
         self.nom = nom
         self.val = val
         self.parent = parent
-        self.convProto = ConversionFactory('type', typ=self.definition.type)
-        self.valeur = self.GETVAL(self.val)
-        self.objPyxbDeConstruction = objPyxbDeConstruction
-        self.listeNomsObjsCrees = []
         if parent:
             self.jdc = self.parent.jdc
             if self.jdc : self.cata = self.jdc.cata
@@ -76,27 +71,50 @@ class MCSIMP(N_OBJECT.OBJECT):
             # Le mot cle simple a été créé sans parent
             # est-ce possible ?
             print ('je suis dans le else sans parent du build')
+            print (poum)
             self.jdc    = None
             self.cata   = None
             self.niveau = None
             self.etape  = None
-        if self.definition.doitSenregistrerComme != None : 
-           if self.definition.doitSenregistrerComme in list(self.jdc.utilise_un_sds_dict.keys()):
-              self.jdc.utilise_un_sds_dict[self.definition.doitSenregistrerComme].append(self)
-           else :
-              self.jdc.utilise_un_sds_dict[self.definition.doitSenregistrerComme] = [self,]
+        print (self,val)
+        if self.definition.creeDesObjets : 
+           self.convProto = ConversionFactory('UserASSD', self.definition.creeDesObjetsDeType)
+           # isinstance(val, self.definition.creeDesObjetsDeType) ne fonctionne pas car il y a un avec cata devant et l autre non
+        else : 
+           self.convProto = ConversionFactory('type', typ=self.definition.type)
+        self.valeur = self.getValeurEffective(self.val)
+        print (self,val)
+        self.objPyxbDeConstruction = objPyxbDeConstruction
+        self.listeNomsObjsCrees = []
 
-    def GETVAL(self, val):
+    def getValeurEffective(self, val):
         """
             Retourne la valeur effective du mot-clé en fonction
             de la valeur donnée. Defaut si val == None
         """
         if (val is None and hasattr(self.definition, 'defaut')):
             val = self.definition.defaut
+        if val in self.jdc.sdsDict.keys():
+            return self.jdc.sdsDict[val]
+         # dans le cas de lecture de .comm, il est possible que l objet est deja ete cree
+         # peut-etre devrait on aussi verifier que val est de type string ?
+        if self.definition.creeDesObjets : 
+           if val != None and (not(val.__class__.__name__ == self.definition.creeDesObjetsDeType.__name__)) : val=self.convProto.convert(val)
+           return val
         if self.convProto:
-            val = self.convProto.convert(val)
+           val = self.convProto.convert(val)
         return val
 
+    def creeUserASSDetSetValeur(self, val):
+        self.state='changed'
+        nomVal=val
+        if nomVal in self.jdc.sdsDict.keys():
+           if isinstance(self.jdc.sdsDict[nomVal],self.definition.creeDesObjetsDeType): return (1, 'concept deja reference')
+           else : return (0, 'concept d un autre type existe deja')
+        if self.convProto:
+            objVal = self.convProto.convert(nomVal)
+        return (self.setValeur(objVal), 'reference cree')
+      
     def getValeur(self):
         """
             Retourne la "valeur" d'un mot-clé simple.
index dce2d5287f258826d81b7b30325f1aeb8af9afb7..1d0f2a1a9b6bbadf8dd4d660687636096fcc7f06 100644 (file)
@@ -1,4 +1,4 @@
-# coding=utf-8
+## coding=utf-8
 # Copyright (C) 2007-2017   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
@@ -83,7 +83,7 @@ class OBJECT(object):
         else:
             return self
 
-    def GETVAL(self, val):
+    def getValeurEffective(self, val):
         """
             Retourne la valeur effective du mot-clé en fonction
             de la valeur donnée. Defaut si val == None
@@ -110,74 +110,6 @@ class OBJECT(object):
     def longueurDsArbre(self):
       return 1
 
-    def creeObjetClasse(self, classeACreer):
-    # lors de la lecture du .comm, 1ere phase, les objets n existent pas
-    # mais il ne faut pas mettre la valeur des MC utilisant la classe a None
-    # sinon, le siValide ne peut rien faire
-    # c est pourquoi il faut gerer listeDesValeursSupprimees
-    # et une liste des valeurs qui peut contenir un melange objet/nom selon 
-    # la creation des objets dans le .comm
-
-      if not hasattr(self,'listeNomsObjsCrees') :  self.listeNomsObjsCrees  = []
-      newlisteNomsObjsCrees = []
-      listeSupprimees = []
-      change=False
-      if not isinstance(self.valeur,(list, tuple)) : valTraitee =  (self.valeur,)
-      else : valTraitee = self.valeur
-  
-      for v in valTraitee:
-       if not (v in self.listeNomsObjsCrees):
-          change=True
-          newObj=classeACreer(v)
-          if v in list(self.jdc.sds_dict.keys()):
-             if not isinstance (self.jdc.sds_dict[v], classeACreer):
-                if not type(self.valeur) in (list, tuple) :self.Valeur=None
-                else : self.valeur.remove(v)
-                self.valeur=None
-                self.state = 'undetermined'
-                self.isValid()
-                return
-          self.jdc.sds_dict[v] = newObj
-          newObj.sdnom = v
-          newlisteNomsObjsCrees.append(v)
-
-      for oldv in  self.listeNomsObjsCrees :
-          if oldv not in valTraitee :
-              change=True
-              listeSupprimees.append(self.jdc.sds_dict[oldv])
-              self.jdc.sds_dict.pop(oldv)
-              self.listeNomsObjsCrees.remove(oldv)
-
-      for v in newlisteNomsObjsCrees :
-         self.listeNomsObjsCrees.append(v)
-
-      if not change : return
-
-      if classeACreer in list(self.jdc.utilise_un_sds_dict.keys()):
-        for MC in self.jdc.utilise_un_sds_dict[classeACreer] :
-           if MC.valeur == None : return
-           if MC.definition.max == 1 :
-              if isinstance(MC.valeur, str) and MC.valeur in list(self.jdc.sds_dict.keys()): 
-                 MC.valeur=self.jdc.sds_dict[MC.valeur]
-           else :
-              newVal=[]
-              for val in MC.valeur : 
-                 if isinstance(val, str) and val in list(self.jdc.sds_dict.keys()): 
-                    newVal.append(self.jdc.sds_dict[val])
-                 else:  
-                    newVal.append(val)
-              MC.valeur=newVal
-
-           if MC.definition.max == 1 :
-              if MC.valeur  in listeSupprimees:
-                 MC.valeur=None
-           else : 
-              for val in MC.valeur : 
-                 if val  in listeSupprimees:
-                    MC.valeur=remove(val)
-
-           MC.state = 'undetermined'
-           MC.isValid()
 
 
 class ErrorObj(OBJECT):
index c8710876f67fba3d27ec85e6b0bba893d30731cc..b7a324f94a10de3c77b9e1977ecac242a252f70e 100644 (file)
@@ -80,16 +80,16 @@ class SIMP(N_ENTITE.ENTITE):
         #print (self)
         N_ENTITE.ENTITE.__init__(self, validators)
         # Initialisation des attributs
+        self.creeDesObjets = False
         if type(typ) == tuple:
             self.type = typ
         else:
             self.type = (typ,)
         for t in (self.type) :
-            if isinstance(t,str): continue
-            if isinstance(t,Accas.A_TUPLE.Tuple): continue
-            try :
-              if issubclass(t, Accas.UserASSD) : self.doitSenregistrerComme= t 
+            try :   
+              if issubclass(t,Accas.UserASSD) : creeDesObjetsDeType = t 
             except : pass
+            if t == 'createObject' : self.creeDesObjets=True
         self.fr = fr
         self.statut = statut
         self.into = into
@@ -111,7 +111,8 @@ class SIMP(N_ENTITE.ENTITE):
         if self.val_min == '**' : self.val_min = float('-inf')
         self.fenetreIhm=fenetreIhm
         self.attribut = attribut
-        self.creeDesObjetsDeType = creeDesObjetsDeType
+        if self.creeDesObjets : self.creeDesObjetsDeType = creeDesObjetsDeType
+        else                  : self.creeDesObjetsDeType = None
         self.nomXML = nomXML
         self.sortie=sortie
 
diff --git a/Noyau/N_UserASSD.py b/Noyau/N_UserASSD.py
new file mode 100644 (file)
index 0000000..6b94ea9
--- /dev/null
@@ -0,0 +1,68 @@
+# coding=utf-8
+# Copyright (C) 2007-2017   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+"""
+
+"""
+
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+  from builtins import object
+except : pass
+import traceback
+
+from .N_ASSD import ASSD
+
+class UserASSD(ASSD):
+    """
+       Classe de base pour definir des types de structures de donnees definie par 
+       l utilisateur
+       equivalent d un concept ASSD pour un SIMP ou un FACT
+       Attention : le parent est le JDC et non le MC createur que l on ne connait pas
+    """
+
+    def __init__(self,nom='sansNom'):
+       print ('dans l init de UserASSD', nom, type(nom))
+       #import traceback
+       #traceback.print_stack()
+       self.nom = nom
+       self.jdc = CONTEXT.getCurrentJdC()
+       self.parent = self.jdc
+       self.id = self.parent.regUserSD(self)
+       self.utilisePar=set()
+
+
+    def initialiseNom(self,nom):
+       print ('je passe par la pour', nom)
+       self.nom = nom
+
+    def ajoutUtilisePar(self,mc):
+       self.utilisePar.add(mc)
+
+    def enleveUtilisePar(self,mc):
+       try : self.utilisePar.remove(mc)
+       except : pass
+
+    def renomme(self,nouveauNom):
+       self.parent.delConcept(self.nom)
+       self.parent.sdsDict[nouveauNom] = self
+       self.setName(nouveauNom)
+
+
index 4e0833e034cde375684a340fca870fe97bf60e22..0101982f8e0e965537ceefab8c5f81f0e33cd091 100644 (file)
@@ -21,6 +21,7 @@
 from __future__ import absolute_import
 _root = None
 _cata = None
+_jdc  = None
 debug = 0
 
 # Le "current step" est l'etape courante.
@@ -78,3 +79,26 @@ def unsetCurrentCata():
     """
     global _cata
     _cata = None
+
+
+def getCurrentJdC():
+    """
+       Fonction qui retourne l'objet JDC courant
+    """
+    return _jdc
+
+def setCurrentJdC(jdc):
+    """
+       Fonction qui permet de changer l'objet JDC courant
+    """
+    global _jdc
+    if _jdc:
+        raise Exception("Impossible d'affecter _jdc. Il devrait valoir None")
+    _jdc = jdc
+
+def unsetCurrentJdC():
+    """
+       Fonction qui permet de remettre a None le JDC courant
+    """
+    global _jdc
+    _jdc = None
index 72b4ceed414bb7c7205a6a660d9a4199eb18b90e..e8a24ee22778177210806e9f672067022b84d4ac 100644 (file)
@@ -42,6 +42,7 @@ except :
    pass
 import re
 import linecache
+import sys
 from functools import partial
 
 # Modules EFICAS
@@ -77,7 +78,10 @@ def _getNomConceptResultat(ope, level=2):
     lineno = f.f_lineno     # XXX Too bad if -O is used
     # lineno = f_lineno(f)  # Ne marche pas toujours
     co = f.f_code
-    filename = six.text_type(co.co_filename, getEncoding())
+    if sys.version_info >= (3,0) :
+       filename = co.co_filename
+    else : 
+       filename = six.text_type(co.co_filename, getEncoding())
     name = co.co_name
     # pattern pour identifier le debut de la commande
     pattern_oper = re.compile(regex1 % ope)
index 6f25807aceb62d450fc820d4d0f3efe9b347c89d..9c013397a413ad9217358788c646c04c8db92c8a 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
  <class>DVisu</class>
- <widget class="QWidget" name="DVisu">
+ <widget class="QDialog" name="DVisu">
   <property name="geometry">
    <rect>
     <x>0</x>
index 9a0d006f5adfe454c86ec70d1ee90595b715eaaf..c7f86cb3ed5dac856697173a90e92361a39d2d95 100644 (file)
           <string>...</string>
          </property>
          <property name="icon">
-          <iconset>
-           <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+          <iconset theme="add"/>
          </property>
          <property name="iconSize">
           <size>
   </layout>
   <zorder></zorder>
   <zorder></zorder>
-  <zorder>verticalSpacer_2</zorder>
-  <zorder>line_7</zorder>
   <zorder></zorder>
  </widget>
  <customwidgets>
index d9457a4003940bf47f6f391202c7f7fbdf2a7512..b4d801dc97329ed612754e5f7c296c190d8469b7 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1122</width>
-    <height>163</height>
+    <width>1002</width>
+    <height>91</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -28,7 +28,7 @@
   <property name="styleSheet">
    <string notr="true"/>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout_2">
+  <layout class="QHBoxLayout" name="horizontalLayout_5">
    <property name="spacing">
     <number>0</number>
    </property>
     <number>2</number>
    </property>
    <property name="rightMargin">
-    <number>2</number>
+    <number>0</number>
    </property>
    <property name="bottomMargin">
-    <number>0</number>
+    <number>2</number>
    </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_3">
           <x>0</x>
           <y>0</y>
           <width>300</width>
-          <height>111</height>
+          <height>60</height>
          </rect>
         </property>
         <property name="sizePolicy">
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
-     <property name="spacing">
-      <number>0</number>
-     </property>
      <item>
       <widget class="QScrollArea" name="scrollArea">
        <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        <property name="minimumSize">
         <size>
          <width>400</width>
-         <height>50</height>
+         <height>20</height>
         </size>
        </property>
        <property name="styleSheet">
-        <string notr="true">
-
-</string>
+        <string notr="true"/>
        </property>
        <property name="frameShape">
-        <enum>QFrame::Box</enum>
+        <enum>QFrame::NoFrame</enum>
        </property>
        <property name="frameShadow">
         <enum>QFrame::Plain</enum>
          <rect>
           <x>0</x>
           <y>0</y>
-          <width>705</width>
-          <height>122</height>
+          <width>589</width>
+          <height>44</height>
          </rect>
         </property>
         <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <layout class="QVBoxLayout" name="verticalLayoutLE">
          <property name="spacing">
-          <number>2</number>
+          <number>0</number>
          </property>
          <property name="leftMargin">
           <number>2</number>
           <number>0</number>
          </property>
          <item>
-          <spacer name="verticalSpacer_2">
+          <spacer name="verticalSpacer_3">
            <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>40</height>
+             <height>1</height>
             </size>
            </property>
           </spacer>
       </widget>
      </item>
      <item>
-      <widget class="QFrame" name="frame">
-       <property name="frameShape">
-        <enum>QFrame::Box</enum>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
        </property>
-       <layout class="QHBoxLayout" name="horizontalLayout_6">
-        <property name="leftMargin">
-         <number>0</number>
-        </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <spacer name="horizontalSpacer_5">
-          <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>
+       <item>
+        <widget class="QFrame" name="frame2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="frameShape">
+          <enum>QFrame::Box</enum>
+         </property>
          <layout class="QHBoxLayout" name="horizontalLayout_4">
           <property name="spacing">
            <number>0</number>
           <property name="sizeConstraint">
            <enum>QLayout::SetFixedSize</enum>
           </property>
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
           <item>
-           <widget class="QToolButton" name="RBHaut">
+           <widget class="QToolButton" name="RBBas">
             <property name="minimumSize">
              <size>
               <width>21</width>
              <enum>Qt::ClickFocus</enum>
             </property>
             <property name="toolTip">
-             <string>Remonte la ligne</string>
+             <string>Descend la ligne</string>
             </property>
             <property name="styleSheet">
              <string notr="true">border : 0px</string>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset theme="go-up">
+             <iconset theme="go-down">
               <normaloff>.</normaloff>.</iconset>
             </property>
             <property name="iconSize">
            </widget>
           </item>
           <item>
-           <widget class="QToolButton" name="RBBas">
+           <widget class="QToolButton" name="RBHaut">
             <property name="minimumSize">
              <size>
               <width>21</width>
              <enum>Qt::ClickFocus</enum>
             </property>
             <property name="toolTip">
-             <string>Descend la ligne</string>
+             <string>Remonte la ligne</string>
             </property>
             <property name="styleSheet">
              <string notr="true">border : 0px</string>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset theme="go-down">
+             <iconset theme="go-up">
               <normaloff>.</normaloff>.</iconset>
             </property>
             <property name="iconSize">
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
+             <iconset theme="remove"/>
             </property>
             <property name="iconSize">
              <size>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+             <iconset theme="add"/>
             </property>
             <property name="iconSize">
              <size>
             </property>
            </widget>
           </item>
-         </layout>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_2">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeType">
-           <enum>QSizePolicy::Minimum</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QToolButton" name="RBVoisListe">
-          <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>Montre l'ensemble des valeurs</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/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_4">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeType">
-           <enum>QSizePolicy::Minimum</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <layout class="QHBoxLayout" name="horizontalLayout_5">
-          <property name="spacing">
-           <number>0</number>
-          </property>
-          <property name="sizeConstraint">
-           <enum>QLayout::SetFixedSize</enum>
-          </property>
           <item>
-           <widget class="QToolButton" name="RBSalome">
+           <widget class="QToolButton" name="RBVoisListe">
             <property name="minimumSize">
              <size>
               <width>21</width>
              <enum>Qt::ClickFocus</enum>
             </property>
             <property name="toolTip">
-             <string>Sélectionne depuis Salome</string>
+             <string>Montre l'ensemble des valeurs</string>
             </property>
             <property name="styleSheet">
              <string notr="true">border : 0px</string>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/flecheSalome.png</normaloff>../Editeur/icons/flecheSalome.png</iconset>
+             <iconset theme="find"/>
             </property>
             <property name="iconSize">
              <size>
             </property>
            </widget>
           </item>
+          <item>
+           <widget class="QToolButton" name="RBSalome">
+            <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>Sélectionne depuis Salome</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/flecheSalome.png</normaloff>../Editeur/icons/flecheSalome.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>32</width>
+              <height>32</height>
+             </size>
+            </property>
+           </widget>
+          </item>
          </layout>
-        </item>
-       </layout>
-      </widget>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
      </item>
     </layout>
    </item>
   </customwidget>
  </customwidgets>
  <tabstops>
-  <tabstop>scrollArea</tabstop>
-  <tabstop>RBHaut</tabstop>
-  <tabstop>RBBas</tabstop>
   <tabstop>RBMoins</tabstop>
-  <tabstop>RBVoisListe</tabstop>
-  <tabstop>RBSalome</tabstop>
-  <tabstop>RBSalomeVue</tabstop>
   <tabstop>BSelectFichier</tabstop>
   <tabstop>RBPoubelle</tabstop>
  </tabstops>
index a893b65ece32db26c1b4a1c747423c2fad7ad92b..832a917657787aaa1b85cf4b25274ecdabfbd2a5 100644 (file)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1013</width>
+    <width>1386</width>
     <height>538</height>
    </rect>
   </property>
           <x>0</x>
           <y>0</y>
           <width>18</width>
-          <height>174</height>
+          <height>189</height>
          </rect>
         </property>
         <property name="sizePolicy">
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>300</width>
+        <width>425</width>
         <height>519</height>
        </rect>
       </property>
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>297</width>
+            <width>421</width>
             <height>474</height>
            </rect>
           </property>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
+             <iconset theme="remove">
+              <normaloff>.</normaloff>.</iconset>
             </property>
             <property name="iconSize">
              <size>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+             <iconset theme="add">
+              <normaloff>.</normaloff>.</iconset>
             </property>
             <property name="iconSize">
              <size>
            <string>...</string>
           </property>
           <property name="icon">
-           <iconset>
-            <normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
+           <iconset theme="find">
+            <normaloff>.</normaloff>.</iconset>
           </property>
           <property name="iconSize">
            <size>
index bbb59be76dcb7f10d0b1968617dfd63719fb418a..1b4ccfbf7531c5969ef1e7d6649900a497a2316c 100644 (file)
             <rect>
              <x>0</x>
              <y>0</y>
-             <width>265</width>
+             <width>270</width>
              <height>307</height>
             </rect>
            </property>
              <string notr="true">border : 0px</string>
             </property>
             <property name="icon">
-             <iconset>
+             <iconset theme="remove">
               <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
             </property>
             <property name="iconSize">
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
+             <iconset theme="add">
               <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
             </property>
             <property name="iconSize">
            <string>...</string>
           </property>
           <property name="icon">
-           <iconset>
-            <normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
+           <iconset theme="find"/>
           </property>
           <property name="iconSize">
            <size>
index ecb561420a2e5e333efed3bc9278ec496643287b..30e2f41c72f92212ab8ecd440fa8c16f3d5bb3b3 100644 (file)
            <string>...</string>
           </property>
           <property name="icon">
-           <iconset>
-            <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+           <iconset theme="add"/>
           </property>
           <property name="iconSize">
            <size>
            <string notr="true">border : 0px</string>
           </property>
           <property name="icon">
-           <iconset>
-            <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
+           <iconset theme="remove"/>
           </property>
           <property name="iconSize">
            <size>
            <string>...</string>
           </property>
           <property name="icon">
-           <iconset>
-            <normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
+           <iconset theme="find"/>
           </property>
           <property name="iconSize">
            <size>
index 75479958a197bf571a56b3dd9c7470c3e32e3691..2b8b1ee9cbd42b335153f41d2312fdba82b4c7e4 100644 (file)
@@ -115,7 +115,9 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
 
         """
         if CONTEXT.debug:
-            print(("ETAPE.isValid ", self.nom))
+           print(("ETAPE.isValid ", self.nom, self.state))
+           import traceback
+           traceback.print_stack()
         if self.state == 'unchanged':
             return self.valid
         else:
index 00694c950c523af446f8165b0b0996a1dff8fb1f..5eeed4ab721f4214e5cdd33da71caf34f49faab8 100644 (file)
@@ -46,7 +46,6 @@ from Extensions.i18n import tr
 class MCSIMP(object):
 
     """
-       COMMENTAIRE CCAR:
        Cette classe est quasiment identique a la classe originale d'EFICAS
        a part quelques changements cosmetiques et des chagements pour la
        faire fonctionner de facon plus autonome par rapport a l'environnement
index edd5b1388e773a894cc0b6cd6b91aa9cc17a6e42..facf03dda3cc63f0d5cf20009a15012e674f7773 100644 (file)
@@ -57,8 +57,9 @@ class PROC_ETAPE(V_ETAPE.ETAPE):
 
             - propager l'eventuel changement d'etat au parent
         """
-        if CONTEXT.debug:
-            print(("ETAPE.isValid ", self.nom))
+        #print ("ETAPE.isValid ", self.nom, self.state)
+        #import traceback
+        #traceback.print_stack()
         if self.state == 'unchanged':
             return self.valid
         else: