]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
partage Eric
authorpascale.noyret <pascale.noyret@edf.fr>
Thu, 23 Sep 2021 16:03:21 +0000 (18:03 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Thu, 23 Sep 2021 16:03:21 +0000 (18:03 +0200)
17 files changed:
Editeur/Objecttreeitem.py
Efi2Xsd/AccasXsd.py
InterfaceSsIhm/editorSsIhm.py
InterfaceWeb/browser.py
InterfaceWeb/compojdc.py
InterfaceWeb/compomclist.py
InterfaceWeb/composimp.py
InterfaceWeb/editor.py
Noyau/N_MCFACT.py
Noyau/N_MCSIMP.py
WebTest/cata_essai.py
WebTest/web_tres_simple.comm [new file with mode: 0644]
WebTest/web_tres_simple_avec_2Fact.comm [new file with mode: 0644]
WebTest/web_tres_simple_avec_Bloc.comm [new file with mode: 0644]
WebTest/web_tres_simple_avec_Fact.comm [new file with mode: 0644]
testFlask/cata_essai.py
testFlask/connectEficas.py

index 8b6fbbd6835e944fa51ceb157ef6940b397aa041..e214b2542e9e2a8c0a0591bafa3dbe89e3f8a982 100644 (file)
@@ -28,6 +28,7 @@ try :
 except :
     pass
 import types,os,glob,imp,sys
+import uuid
 from copy import copy,deepcopy
 
 # import du chargeur de composants
@@ -145,8 +146,12 @@ class Delegate(object):
 
 class ObjectTreeItem(TreeItem,Delegate):
     def __init__(self, appliEficas, labeltext, object, setFunction=None):
+        #print (object,'__init__ ObjectTreeItem',labeltext,)
         self.labeltext = labeltext
         self.appliEficas = appliEficas
+        # Attention  appliEficas n est pas appliEficas c est le JDCEditor
+        # utilise par le Web
+        self.editor = appliEficas
         # L'objet delegue est stocke dans l'attribut object
         # L'objet associe a l'item est stocke dans l'attribut _object
         # Il peut etre obtenu par appel a la methode getObject
@@ -161,6 +166,11 @@ class ObjectTreeItem(TreeItem,Delegate):
         self.expandable = 1
         self.sublist=[]
         self.init()
+        # on met le meme id au noeud et a l objet
+        self.idUnique=uuid.uuid1().hex
+        self._object.idUnique=self.idUnique
+        # Ici on teste si Web
+        if hasattr (self.appliEficas,'dicoIdNode') : self.appliEficas.dicoIdNode[self.idUnique]=self
 
     def init(self):
         return
@@ -425,6 +435,17 @@ class ObjectTreeItem(TreeItem,Delegate):
             sublist.append(item)
         return sublist
 
+    def getDicoObjetsPourWeb(self):
+        from collections import OrderedDict
+        monDico=OrderedDict()
+        for mc in self.mcListe :
+            nodeMC=self.editor.dicoIdNode[mc.idUnique]
+            if not mc.isMCList() : monDico[mc.idUnique]=nodeMC.getDicoObjetsPourWeb()
+            else :
+                 for d in nodeMC.getDicoObjetsPourWeb() :
+                     for i,k in d.items() : monDico[i]=k
+        return monDico
+
     # a piori inutile PN 06 11 17
     #def wait_fichier_init(self):
         """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation
@@ -510,3 +531,4 @@ class SequenceTreeItem(ObjectTreeItem):
             if old_obj is None and obj is None:break
             if old_obj is obj: self.sublist.append(item)
         return self.sublist
+
index 0f63f0d2592956393a541eedfff46f4fc59ea7c3..80f61e3b1c894a883cc3319df9dda761cc1f68c1 100755 (executable)
@@ -963,7 +963,7 @@ class X_SIMP (X_definition):
             if self.intoXML and self.into :
                if self.intoXML != self.into :
                   #print ('je passe la pour ', self.nom)
-                  texteAide :texteAide =  texteAide+'\nPossible choices for '+ self.nom + 'at this place : \n'+str(self.into)+'\n'
+                  texteAide =  texteAide+'\nPossible choices for '+ self.nom + 'at this place : \n'+str(self.into)+'\n'
 
             if self.defaut :
                if self.max > 1 or self.max == '**' or self.max ==  float('inf') : 
index 7c12bdda538dc7c3f1743279a68e91da2ed70620..6389a13649218a7cd0af8903eb4a94c102f94bf5 100755 (executable)
@@ -143,7 +143,6 @@ class JDCEditorSsIhm :
             if jdc==None :
                 #print ('PNPN : chgt try en if')
                 try :
-                #if 1 :
                     self.jdc = self.readFile(self.fichier)
                 except :
                     print ("mauvaise lecture du fichier")
@@ -348,6 +347,17 @@ class JDCEditorSsIhm :
             #print (dico)
             return dico
 
+    #--------------------------------#
+    def generDicoPourWeb(self,obj=None):
+    #--------------------------------#
+        if obj==None : obj=self.jdc
+        if 'dico' in generator.plugins:
+            self.generator=generator.plugins['dico']()
+            jdc_formate=self.generator.gener(self.jdc)
+            dico=self.generator.Dico
+            return dico
+
+
     #-----------------------#
     def viewJdcSource(self):
     #-----------------------#
index a6a7833f729f5b4325d512d48bccc75549a6a2ed..58304c940a603302fec17592467c70cf78a86bd4 100644 (file)
@@ -35,51 +35,24 @@ from . import typeNode
 from  Extensions.i18n  import tr
 #from .gereRegles       import GereRegles
 
-class MainPage : pass
 #------------------------------------------
-#class JDCTree( MainPage,GereRegles ):
-class JDCTree( MainPage ):
+class JDCTree():
 #------------------------------------------
 
-    def __init__( self, jdc_item, QWParent):
+    def __init__( self, jdc_item, editor):
     #----------------------------------------
-        self.editor        = QWParent
+        print ('__init__ JDCTree')
+        self.editor        = editor
         self.plie=False
-        #if self.editor.widgetTree !=None  :
-        #    QTreeWidget.__init__(self, self.editor.widgetTree )
-        #    self.editor.verticalLayout_2.addWidget(self)
-        #    if self.editor.enteteQTree=='complet':
-        #        self.headerItem().setText(0, "Commande   ")
-        #        self.headerItem().setText(1, "Concept/Valeur")
-        #    else :
-        #        self.headerItem().setText(0, "Commande   ")
-        #    self.setColumnWidth(0,200)
-        #    self.setExpandsOnDoubleClick(False)
-        #    self.setSelectionMode(3)
-        #else :
-        #    QTreeWidget.__init__(self, None )
         self.item          = jdc_item
         self.tree          = self
         self.appliEficas   = self.editor.appliEficas
-        self.childrenComplete=[]
         self.racine=self.item.itemNode(self,self.item)
-
+        print ('self.racine',self.racine)
         self.itemCourant=None
-
-        #self.itemClicked.connect(self.handleOnItem)
-        #self.itemCollapsed.connect(self.handleCollapsedItem)
-        #self.itemExpanded.connect(self.handleExpandedItem)
-
         self.node_selected = self.racine
         self.inhibeExpand  =  True
-        #self.expandItem(self.racine)
-        #self.inhibeExpand = False
-        #if self.racine.children !=[] :
-        #    if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
-        #    else                                                  : self.racine.children[0].deplieToutEtReaffiche()
-        #    self.racine.children[0].fenetre.donnePremier()
-        #else :
-        #    self.racine.affichePanneau()
+        self.childrenComplete=[]
 
     # def handleContextMenu(self,item,coord):
     #-------------------------------------
@@ -95,11 +68,9 @@ class JDCTree( MainPage ):
 COMMENT     = "COMMENTAIRE"
 PARAMETERS  = "PARAMETRE"
 
-class TreeItem : pass
-#------------------------------------------
-#class JDCNode(TreeItem,GereRegles):
-class JDCNode(TreeItem):
-#------------------------------------------
+#---------------
+class JDCNode():
+#--------------
     def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
     #----------------------------------------------------------------------
         #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, self)
@@ -111,7 +82,6 @@ class JDCNode(TreeItem):
         self.tree        = self.treeParent.tree
         self.editor      = self.treeParent.editor
         self.appliEficas = treeParent.appliEficas
-        self.JESUISOFF   = 0
         self.firstAffiche = True
         self.childrenComplete=[]
 
@@ -134,18 +104,18 @@ class JDCNode(TreeItem):
         #    self.plie                   = False
         #    self.appartientAUnNoeudPlie = False
 
-        if ancien and itemExpand     : self.plie = False
-        if ancien and not itemExpand : self.plie = True
-        if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False
+        #if ancien and itemExpand     : self.plie = False
+        #if ancien and not itemExpand : self.plie = True
+        #if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False
 
-        from . import compobloc
-        from . import compomclist
+        #from . import compobloc
+        #from . import compomclist
 
-        ajoutAuParentduNoeud=0
-        while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) :
-            self.treeParent.childrenComplete.append(self)
-            self.treeParent=self.treeParent.vraiParent
-        self.treeParent.childrenComplete.append(self)
+        #ajoutAuParentduNoeud=0
+        #while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) :
+        #    self.treeParent.childrenComplete.append(self)
+        #    self.treeParent=self.treeParent.vraiParent
+        #self.treeParent.childrenComplete.append(self)
 
 
         #if (isinstance(self,compobloc.Node) or (isinstance(self,compomclist.Node) and self.item.isMCList()) or ( hasattr(self.item.parent,'inhibeValidator') and isinstance(self,compomclist.Node) and self.item.parent.inhibeValidator)) :
@@ -175,12 +145,12 @@ class JDCNode(TreeItem):
 
         self.state=""
         self.fenetre=None
-        try :
-            if self.item.getObject().isBLOC() :
-                self.setExpanded(True)
-                self.plie=False
-        except :
-            pass
+        #try :
+        #    if self.item.getObject().isBLOC() :
+        #        self.setExpanded(True)
+        #        self.plie=False
+        #except :
+        #    pass
 
 
     def buildChildren(self,posInsertion=10000):
@@ -219,12 +189,15 @@ class JDCNode(TreeItem):
         #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
 
 
-    def chercheNoeudCorrespondant(self,objSimp):
+    def getDicoObjetsPourWeb(self):
+        return self.item.getDicoObjetsPourWeb()
+
+    #def chercheNoeudCorrespondant(self,objSimp):
     #-------------------------------------------
-        sublist = self.item._getSubList()
-        for node in self.childrenComplete:
-            if node.item.object==objSimp : return node
-        return None
+    #    sublist = self.item._getSubList()
+    #    for node in self.childrenComplete:
+    #        if node.item.object==objSimp : return node
+    #    return None
     #def afficheCeNiveau(self):
     #-------------------------
     #def getPanelModifie(self):
index 3c9e5a390451963e6ebffd8904acc5053f24793a..3a50a225e699f64be3ef960449c6f35ef063debe 100644 (file)
@@ -66,11 +66,6 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
         else:
             return "ast-red-square"
 
-    #def keys(self):
-    #    if self.object.etapes_niveaux != []:
-    #        return range(len(self.object.etapes_niveaux))
-    #    else:
-    #        return range(len(self.object.etapes))
 
     def addItem(self,name,pos):
         cmd = self._object.addEntite(name,pos)
@@ -130,6 +125,18 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
         listeCmd = self.object.niveau.definition.getListeCmd()
         return listeCmd
 
+    def getValidite(self):
+        return self.object.isValid()
+
+    def getDicoObjetsPourWeb(self):
+        from collections import OrderedDict
+        monDico=OrderedDict()
+        for e in self.object.etapes :
+            nodeEtape=self.editor.dicoIdNode[e.idUnique]
+            monDico[e.idUnique]=nodeEtape.getDicoObjetsPourWeb()
+        return monDico
+      
+
 import Accas
 treeitem =JDCTreeItem
 objet = Accas.JDC
index 5d74def083b7936903b4c02dd7cfec5a951403ad..95af7fd572942afce8525aa2c2dfa100c3762b9a 100644 (file)
@@ -96,6 +96,17 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         else:
             self.setDelegate(self._object.data[0])
 
+    def getDicoObjetsPourWeb(self):
+        listeDict=[]
+        from collections import OrderedDict
+        for i in self._object.data:
+            monDico=OrderedDict()
+            nodeFact=self.appliEficas.dicoIdNode[i.idUnique]
+            monDico[i.idUnique]=nodeFact.getDicoObjetsPourWeb()
+            listeDict.append(monDico)
+        return listeDict 
+
+
     def panel(self,jdcdisplay,pane,node):
         """ Retourne une instance de l'objet panneau associe a l'item (self)
             Si la liste ne contient qu'un mot cle facteur, on utilise le panneau
index 8b0475668c024c5314c63afcac2cbf8a8d0e5e42..7350cfef2c690dbd152069ca7ee4ed0226edb682 100644 (file)
@@ -434,6 +434,9 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
                         liste_param.append(param.nom)
         return liste_param
 
+    def getDicoObjetsPourWeb(self):
+        return self.val 
+
     #--------------------------------------------------
     #
     # Methodes liees a la validite des valeurs saisies
index 18126586df068a5b579106dbeed418d28a2849ac..14b7e10b984b7923752111c9635e80e04b7dff7e 100755 (executable)
@@ -30,6 +30,7 @@ from Extensions.i18n import tr
 from Editeur        import session
 from Editeur        import comploader
 from Editeur        import Objecttreeitem
+from .              import browser
 
 debug = False
 
@@ -38,18 +39,31 @@ from InterfaceSsIhm.editorSsIhm    import JDCEditorSsIhm
 
 
 class JDCWebEditor(JDCEditorSsIhm):
-# ----------------------------------------- #
+# ------------------------------- #
     """
        Editeur de jdc
     """
 
     def __init__ (self,appliEficas,fichier = None, jdc=None ):
-    #------------------------------------------------------------------------------------------------
+    #----------------------------------------------------------
         
         JDCEditorSsIhm.__init__(self,appliEficas,fichier)
+        self.dicoIdNode={}
         comploader.chargerComposants(Ihm='Web')
+        self.tree=None
         if self.jdc:
             self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
+            if self.jdc_item :
+               self.tree = browser.JDCTree( self.jdc_item,  self )
 
-    
 
+    def getNodeById(self,id ):
+    #----------------------------
+        if id in self.dicoIdNode : return self.dicoIdNode[id]
+        else : return None
+
+
+    def getDicoObjetsPourWeb(self,obj) :
+    #-----------------------------------
+        if self.tree == None : return {}
+        return obj.getDicoObjetsPourWeb()
index a1fc0c722b2c66c2384a0a25a9919e7253459b5e..3b43260f15b23abb99ef7c5ce3542727c140876d 100644 (file)
@@ -26,6 +26,7 @@
 
 from __future__ import absolute_import
 from . import N_MCCOMPO
+import uuid
 
 
 class MCFACT(N_MCCOMPO.MCCOMPO):
index 046d2d08b494a20b7b39eb11ab4a785ed7975816..5f70ee8412226d82c1f8c677d10da320073bbef8 100644 (file)
@@ -32,6 +32,7 @@ from Noyau.N_CO import CO
 from . import N_OBJECT
 from .N_CONVERT import ConversionFactory
 from .N_types import forceList, isSequence
+import uuid
 
 
 class MCSIMP(N_OBJECT.OBJECT):
index 2b05627c8ce9cd48020d379621bd84110da3b60c..642cf91a3059115ce2811ceb335766e8e4c57254 100644 (file)
@@ -10,7 +10,11 @@ MonProc = PROC(nom='MonProc',
 )
 MonProc2 = PROC(nom='MonProc2',
     param1 = SIMP(statut='o',typ='R'),
-    param2 = SIMP(statut='o',typ='R'),
-    param3 = SIMP(statut='o',typ='R'),
+    b1     = BLOC (condition = 'param1 == 2',
+        param2 = SIMP(statut='o',typ='R'),
+    ),
+    Fact1  = FACT (statut ='o', max=2,
+        param3 = SIMP(statut='o',typ='R'),
+    ),
 )
 
diff --git a/WebTest/web_tres_simple.comm b/WebTest/web_tres_simple.comm
new file mode 100644 (file)
index 0000000..847e392
--- /dev/null
@@ -0,0 +1,3 @@
+
+MonProc(param1=1.0,);
+#CHECKSUM:b556c522b90166837f3034518e10b4a4  -:FIN CHECKSUM
\ No newline at end of file
diff --git a/WebTest/web_tres_simple_avec_2Fact.comm b/WebTest/web_tres_simple_avec_2Fact.comm
new file mode 100644 (file)
index 0000000..0acc7ea
--- /dev/null
@@ -0,0 +1,5 @@
+
+MonProc2(param1=1.0,
+         Fact1=(_F(param3=43.0,),
+                _F(param3=44.0,),),);
+#CHECKSUM:d9c8c4a30d485f4a75371c76b16999b6  -:FIN CHECKSUM
\ No newline at end of file
diff --git a/WebTest/web_tres_simple_avec_Bloc.comm b/WebTest/web_tres_simple_avec_Bloc.comm
new file mode 100644 (file)
index 0000000..619fe85
--- /dev/null
@@ -0,0 +1,5 @@
+
+MonProc2(param1=2.0,
+         param2=42.0,
+         Fact1=_F(param3=43.0,),);
+#CHECKSUM:aee450b5fd522f0492692beed1341b4d  -:FIN CHECKSUM
\ No newline at end of file
diff --git a/WebTest/web_tres_simple_avec_Fact.comm b/WebTest/web_tres_simple_avec_Fact.comm
new file mode 100644 (file)
index 0000000..98ec1df
--- /dev/null
@@ -0,0 +1,4 @@
+
+MonProc2(param1=1.0,
+         Fact1=_F(param3=2.0,),);
+#CHECKSUM:361a5586857360c9841b2d609b4d97a2  -:FIN CHECKSUM
\ No newline at end of file
index ceaca22d99c1e2b5f817ed58480772f965fef059..47fae4e1dd62895508631d328b2048b26b508d9c 120000 (symlink)
@@ -1 +1 @@
-/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/cata_essai.py
\ No newline at end of file
+../WebTest/cata_essai.py
\ No newline at end of file
index 1ce58d00124a3a3c89abe6ede3b7ebbbbc0ef21b..c707626a4d0c94decb4babc4c87f62b7f534f2d0 100755 (executable)
@@ -28,6 +28,7 @@ import os, sys
 
 sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
 sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../Editeur'))
+from collections import OrderedDict
 
 
 if sys.version_info[0] < 3:
@@ -41,20 +42,44 @@ class accasConnecteur :
         self.code=code
         from InterfaceSsIhm.qtEficasSsIhm import AppliSsIhm
         self.monEficas=AppliSsIhm(code=code, salome=0, multi=False, langue=langue,fichierCata=fichierCata)
+        # Si on permet l ouverture simultanee de plusieurs fichiers il faudra
+        # faire l equivalent du viewmanager
+        self.litFichierComm(fichierComm)
+        # est-ce que id est suffisament unique ?
+        # est-ce que cela ne va pa empecher le gc de faire son job ?
+
+    def litFichierComm(self,fichierComm=None):
         from InterfaceWeb.editor import JDCWebEditor
         self.monEditeur=JDCWebEditor(self.monEficas,fichierComm)
 
     def getListeCommandes(self):
-        print ('getListeCommandes', self.monEditeur.jdc.getListeCmd())
         return (self.monEditeur.jdc.getListeCmd())
 
     def getListeMotsClesFilsPossibles(self,nomCommande):
         # ici il faut programmer getListeMotsClesFilsPossibles dans N_ENTITE
-        # et faire une boucle infinie en jinja 2
+        # Pour l instant on renvoie entites
+        # doit aussi pouvoir etre appele sur FACT et BLOC
         maCommande= getattr(self.monEditeur.jdc.cata,nomCommande)
         laListe=maCommande.entites
-        print (dir(maCommande))
         return laListe
+
+    def generDicoPourWeb(self) :
+        dico=self.monEditeur.generDicoPourWeb()
+        return dico
+
+    def getDicoObjetsPourWeb(self,obj) :
+        dico=self.monEditeur.getDicoObjetsPourWeb(obj)
+        return dico
+        
+    def traiteDico(self,dico):
+        for k,v in dico.items():
+            monNode=self.monEditeur.getNodeById(k)
+            try    : print ('label', monNode.getLabelText())
+            except : print ('monNode', monNode)  # non operationnel pour jdc
+            try : print ('validite :', monNode.isValid())
+            except : pass # non operationnel pour jdc
+            if type(v) is OrderedDict : self.traiteDico(v)
+            else : print ('valeur :', v)
         
 
 if __name__ == "__main__":
@@ -64,6 +89,26 @@ if __name__ == "__main__":
     code=prefs.code
     monEficasConnecteur=accasConnecteur(code, langue='ang')
     print ( 'voici le connecteur', monEficasConnecteur)
-    print ( 'et les commandes', monEficasConnecteur.getListeCommandes())
-    print ( 'et les fils de MonProc2', monEficasConnecteur.getListeMotsClesFils('MonProc2'))
+    print ( 'et les commandes', monEficasConnecteur.getListeCommandes(),'\n')
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple.comm')
+    #monEficasConnecteur.litFichierComm('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
+    #monEficasConnecteur.litFichierComm('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Bloc.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
+    monEficasConnecteur.litFichierComm('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Fact.comm')
+    print (monEficasConnecteur.generDicoPourWeb())
+    monDicoAAfficher = (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    monEficasConnecteur.traiteDico(monDicoAAfficher)
+
+    #monEficasConnecteur.litFichierComm('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Fact.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')