]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
importzone pour MT
authorpascale.noyret <pascale.noyret@edf.fr>
Wed, 17 Jan 2018 17:28:31 +0000 (18:28 +0100)
committerpascale.noyret <pascale.noyret@edf.fr>
Wed, 17 Jan 2018 17:28:31 +0000 (18:28 +0100)
Editeur/Objecttreeitem.py
Ihm/I_MACRO_ETAPE.py
Ihm/I_MCCOMPO.py
InterfaceQT4/editor.py
InterfaceQT4/monWidgetCommande.py
InterfaceQT4/monWidgetPlusieursBase.py
InterfaceQT4/qtEficas.py
InterfaceQT4/typeNode.py
InterfaceQT4/viewManager.py
Noyau/nommage.py

index 99da0f395131dd5fa95ed17898bdb10fd1e6ea17..21c2408de15de784e23dc7f1b86999bb6063c242 100644 (file)
@@ -365,7 +365,7 @@ class ObjectTreeItem(TreeItem,Delegate):
     
     def getMcPresents(self):
         """ Retourne le dictionnaire des mots-cles presents de l'objet pointe par self """
-        return self.object.dict_mc_presents()
+        return self.object.dictMcPresents()
 
     def verifConditionRegles(self,l_mc_presents):
         return self.object.verifConditionRegles(l_mc_presents)
index c3491aa89ca79c3479e0017efa4e7e0b69c37b0e..fbb2e8fe6881bbb8e91c7800b5453dad59d27bc5 100644 (file)
@@ -71,7 +71,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       return d.get(nom_sd,None)
     return None
 
-  def getContexteJdc(self,fichier,text):
+  def getContexteJdc(self,fichier,text,doitEtreValide=1):
     """ 
          Interprete text comme un texte de jdc et retourne le contexte final.
 
@@ -83,14 +83,14 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     #print ("getContexteJdc",self,self.nom)
     # On recupere l'etape courante
     step=CONTEXT.getCurrentStep()
-    try:
-    #if 1 :
+    #try:
+    if 1 :
        # on essaie de creer un objet JDC auxiliaire avec un contexte initial
        # Attention getContexteAvant retourne un dictionnaire qui contient
        # le contexte courant. Ce dictionnaire est reactualise regulierement.
        # Si on veut garder l'etat du contexte fige, il faut en faire une copie.
        context_ini = self.parent.getContexteAvant(self).copy()
-       #print "getContexteJdc",context_ini.keys()
+       print ("getContexteJdc",context_ini.keys())
 
        # Indispensable avant de creer un nouveau JDC
        CONTEXT.unsetCurrentStep()
@@ -150,29 +150,31 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.jdc_aux=j
        self.jdc.jdcDict=self.jdc_aux
 
-    except:
-    #else :
+    #except:
+    else :
        traceback.print_exc()
        # On retablit l'etape courante step
        CONTEXT.unsetCurrentStep()
        CONTEXT.setCurrentStep(step)
        return None
 
-    if not j.cr.estvide():
+     
+    if not j.cr.estvide() and doitEtreValide:
        # Erreurs dans l'INCLUDE. On garde la memoire du fichier 
        # mais on n'insere pas les concepts
        # On retablit l'etape courante step
-       #print j.cr
-       #print j.isValid()
+       print (j.cr)
+       print ("valid ",j.isValid())
        CONTEXT.unsetCurrentStep()
        CONTEXT.setCurrentStep(step)
        raise EficasException(tr("Impossible de relire le fichier %s \n ")+ six.text_type(j.cr))
 
 
-    if not j.isValid():
+    if not j.isValid() and doitEtreValide:
        # L'INCLUDE n'est pas valide.
        # on produit un rapport d'erreurs
        cr=j.report()
+       print ('cr', cr)
        # On retablit l'etape courante step
        CONTEXT.unsetCurrentStep()
        CONTEXT.setCurrentStep(step)
@@ -181,6 +183,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
 
     # Si aucune erreur rencontree
+    # ou qu on accepte un jdc incomplet
     # On recupere le contexte de l'include verifie
     try:
        j_context=j.getVerifContexte()
@@ -528,7 +531,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
 
 
-  def buildIncludeEtape(self,text):
+  def buildIncludeEtape(self,text,doitEtreValide):
     import Extensions.jdc_include
     self.JdC_aux=Extensions.jdc_include.JdC_include
     # un include partage la table des unites avec son parent (jdc)
@@ -536,7 +539,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     # Attention fonctionne pour import_Zone de MT
     # a adapter eventuellement
     try :
-       contexte = self.getContexteJdc(None,text)
+       contexte = self.getContexteJdc(None,text,doitEtreValide)
     except EficasException: 
        return 0
      
index 2709f2e0ee1b5db9aed1cc3259e75bad1866ce02..e6675cda6825c2fda336c59445b39e5ad692fbb5 100644 (file)
@@ -163,15 +163,15 @@ class MCCOMPO(I_OBJECT.OBJECT):
           index=index+1
       return index
           
-  def ordonneListeMc(self,liste_mc_a_ordonner,liste_noms_mc_ordonnee):
+  def ordonneListeMc(self,listeMc_a_ordonner,liste_noms_mc_ordonnee):
     """
-        Retourne liste_mc_a_ordonner ordonnee suivant l'ordre 
+        Retourne listeMc_a_ordonner ordonnee suivant l'ordre 
         donne par liste_noms_mc_ordonnee
     """
     liste = []
     # on transforme liste_a_ordonner en un dictionnaire (plus facile a consulter)
     d_mc = {}
-    for mc in liste_mc_a_ordonner:
+    for mc in listeMc_a_ordonner:
       d_mc[mc.nom]=mc
     # on construit la liste des objets ordonnes
     for nom_mc in liste_noms_mc_ordonnee:
index ee7195e88cb67a59ba4356b019df198d371d8c08..be0577d91ea4feeb4ea15b3bb1cea778b63231ca 100755 (executable)
@@ -181,7 +181,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     def informe(self,titre,txt,critique=True):
     #--------------------------------#
        if  critique :
-           self.affiche_infos(tr(txt),Qt.red)
+           self.afficheInfos(tr(txt),Qt.red)
            QMessageBox.critical( self, tr(titre), tr(txt))
        else :
            QMessageBox.warning( self, tr(titre),tr(txt))
@@ -952,6 +952,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     # ajoute une etape  de JdC a partir d un texte
         monItem=itemApres
         etape=monItem.item.object
+         
         CONTEXT.setCurrentStep(etape)
         try :
           ok=etape.buildIncludeEtape(texte)
@@ -964,6 +965,21 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
         self.tree.racine.buildChildren()
         return ok
 
+    #-------------------------------------------#
+    def updateJdcAfterEtape(self, etape,texte):
+    #--------------------------------------------#
+    # ajoute une etape  de JdC a partir d un texte
+        CONTEXT.setCurrentStep(etape)
+        try :
+          ok=etape.buildIncludeEtape(texte,doitEtreValide=0)
+        except :
+          ok=0
+        if not ok :
+           QMessageBox.information( self,
+                      tr("Import texte"),
+                      tr("Impossible d importer le texte"))
+        self.tree.racine.buildChildren()
+        return ok
 
 
     #-------------------------------------#
@@ -1359,6 +1375,13 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
        self.widgetTree.show()
        #self.restoreSplitterSizes(3)
 
+    #-----------------------
+    def getEtapeCourante(self) :
+    #-----------------------
+      print (self.tree.selectedItems())
+      if len(self.tree.selectedItems()) != 1 : return None
+      etape=self.tree.selectedItems()[0].item.object.getEtape()
+      return etape
     #-----------------------------
     def getTreeIndex(self,noeud):
     #----------------------------
index 17aff195d22685529d1ea9c531c6935b8c9ac99f..a06baa90dd6976cda481c924f1f293b27147458f 100644 (file)
@@ -116,8 +116,10 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
         self.editor.ajoutOptionnel()
         self.editor.inhibeSplitter=0
       self.afficheOptionnel()
-      spacerItem = QSpacerItem(21, 20, QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
-      self.commandesLayout.addItem(spacerItem)
+      spacerItem = QSpacerItem(21, 20, QSizePolicy.Expanding, QSizePolicy.Expanding)
+      #spacerItem = QSpacerItem(21, 20, QSizePolicy.Preferred, QSizePolicy.Preferred)
+      #self.commandesLayout.addItem(spacerItem)
+      self.verticalLayoutCommande.addItem(spacerItem)
 
       #self.editor.restoreSplitterSizes()
 
index 3e88fc741674843c00a6b47ffdbff18903419770..b002a4e582efef53f52f2685b73497791cfe9cdb 100644 (file)
@@ -230,7 +230,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
 
         if len(listeComplete) > max : 
            texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
-           self.editor.affiche_infos(texte,Qt.red)
+           self.editor.afficheInfos(texte,Qt.red)
            return
 
         validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
index 74f9584c27ca160d1812c386f3c4144c05a9d77a..b0966b6529638a418d4379d53622c69408f3a215 100755 (executable)
@@ -194,6 +194,7 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
         if self.code.upper() in Appli.__dict__:
           Appli.__dict__[self.code.upper()](self,)
         if self.suiteTelemac : self.lookSuiteTelemac()
+        self.metMenuAJourUtilisateurs()
 
     def initAides(self):
         #print "je passe la"
@@ -321,6 +322,11 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
         self.actionSortieLegere.triggered.connect(self.handleSortieLegere)
 
 
+    def MT(self):
+        self.enlevernewInclude()
+        self.toolBar.addSeparator()
+
+
     def ZCRACKS(self):
         self.enlevernewInclude()
         self.toolBar.addSeparator()
@@ -951,6 +957,25 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
     def handleAjoutEtape(self,nomEtape):
         self.viewmanager.handleAjoutEtape(nomEtape)
      
+    def metMenuAJourUtilisateurs(self):
+        self.lesFonctionsUtilisateurs={}
+        if self.code not in self.mesScripts : return
+        if not hasattr(self.mesScripts[self.code],'dict_menu') : return
+        titre,lesFonctions=self.mesScripts[self.code].dict_menu.items()[0]
+        self.menuOptions = self.menubar.addMenu("menuOptions")
+        self.menuOptions.setTitle(tr(titre))
+        for elt in lesFonctions :
+            laFonctionUtilisateur, label, lesArguments = elt
+            action = QAction(self)
+            action.setText(label)
+            #action.triggered.connect(self.appelleFonctionUtilisateur)
+            self.menuOptions.addAction(action)
+            self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments)
+        self.menuOptions.triggered.connect(self.handleFonctionUtilisateur)
+
+    def handleFonctionUtilisateur(self,action) :
+        (laFonctionUtilisateur, lesArguments)=self.lesFonctionsUtilisateurs[action]
+        self.viewmanager.handleFonctionUtilisateur(laFonctionUtilisateur, lesArguments)
 
 if __name__=='__main__':
 
index c9a2119bc06395e5d51054e77e2690a5f9dbbe8d..920dc511cdf400834fb8b0c1a2e7ed6db6f13358 100644 (file)
@@ -81,6 +81,7 @@ class PopUpMenuNodeMinimal(object) :
     def ajoutScript(self):
 
     # cochon mais je n arrive pas a faire mieux avec le mecanisme de plugin
+    # a revoir avec un menu et un connect sur le triggered sur le menu ?
         if hasattr(self.appliEficas, 'mesScripts'):
             if self.editor.code in  self.editor.appliEficas.mesScripts :
                self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
index 0cc09614c684e473ebf4b17feb9696f0a9980807..7e31db1a2087d17ab68434af19175cdcb69c5e4f 100644 (file)
@@ -410,3 +410,22 @@ class MyViewManager(object):
        if index < 0 : return
        editor=self.dict_editors[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]
+       if editor.getEtapeCourante == None :
+          QMessageBox.information( self,
+                      tr("Selectionner une etape"),
+                      tr("Le texte sera inséré après l étape selectionnée"))
+
+       listeParam = [] 
+       for p in lesArguments:
+          print (p)
+          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)
+
index a80b612f2853828d145afef699df49db37641688..72b4ceed414bb7c7205a6a660d9a4199eb18b90e 100644 (file)
@@ -61,7 +61,7 @@ def _getNomConceptResultat(ope, level=2):
        Cette fonction recherche dans la pile des appels, l'appel à la commande
        qui doit etre situé à 2 niveaux au-dessus (cur_frame(2)).
        On retrouve d'abord la frame d'exécution f. Puis le numéro de la ligne
-       dans le source f.fLineNo et le nom du fichier source (f.f_code.co_filename).
+       dans le source f.f_lineno et le nom du fichier source (f.f_code.co_filename).
        A partir de là, on récupère la ligne de source avec linecache.getline
        et on vérifie que cette ligne correspond véritablement à l'appel.
 
@@ -74,8 +74,8 @@ def _getNomConceptResultat(ope, level=2):
 
     """
     f = N_utils.cur_frame(level)
-    lineno = f.fLineNo     # XXX Too bad if -O is used
-    # lineno = fLineNo(f)  # Ne marche pas toujours
+    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())
     name = co.co_name
@@ -138,7 +138,7 @@ def evalnom(text, d):
     return lll
 
 
-def fLineNo(f):
+def f_lineno(f):
     """
        Calcule le numero de ligne courant
        Devrait marcher meme avec -O
@@ -146,7 +146,7 @@ def fLineNo(f):
     """
     c = f.f_code
     if not hasattr(c, 'co_lnotab'):
-        return f.fLineNo
+        return f.f_lineno
     tab = c.co_lnotab
     line = c.co_firstlineno
     stopat = f.f_lasti