Salome HOME
PN Pour les formules
[tools/eficas.git] / Editeur / compoformule.py
index c397f3de6fe19eaff643ca3bf3efdb85c4f91b16..302cf665e8589eeb638ccbb97f26d4c7903e08de 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -27,9 +28,9 @@ d'EFICAS
 from Tkinter import *
 import Pmw
 import string
-import tkMessageBox
 
 # import modules EFICAS
+import widgets
 import panels
 import fontes
 import compooper
@@ -67,19 +68,17 @@ class FORMULEPanel(panels.OngletPanel):
     # affichage du titre du panneau
     self.titre = StringVar()
     self.titre.set("FORMULE "+self.node.item.get_nom())
+
+    self.entry_nom = Entry(self.frame_valeur)
     Label(self.frame_valeur,textvariable=self.titre,font=Fonte_TITRE).place(relx=0.5,rely=0.,anchor='n')
     # création des labels et entries associés aux nom, type retourné, arguments et corps de la FORMULE
+    
     Label(self.frame_valeur,text= 'Nom de la formule : ').place(relx=0.,rely=0.1)
-    self.entry_nom = Entry(self.frame_valeur)
-    Label(self.frame_valeur,text= 'Type retourné : ').place(relx=0.,rely=0.25)
-    self.option_menu_typ = Pmw.OptionMenu(self.frame_valeur,labelpos='w',
-                                          label_text='',
-                                          items = self.node.item.get_liste_types_autorises())
-    self.option_menu_typ.place(relx=0.33,rely=0.23)
     Label(self.frame_valeur,text= 'Arguments : ').place(relx=0.,rely=0.40)
     self.entry_arg = Entry(self.frame_valeur)
-    Label(self.frame_valeur,text= 'Expression : ').place(relx=0.,rely=0.60)
+    Label(self.frame_valeur,text= 'Expression : ').place(relx=0.,rely=0.65)
     self.entry_exp = Entry(self.frame_valeur)
+
     # binding sur les entries
     self.entry_nom.bind("<Return>",self.verif_nom)
     self.entry_arg.bind("<Return>",self.verif_arguments)
@@ -87,18 +86,21 @@ class FORMULEPanel(panels.OngletPanel):
     # affichage des entries
     self.entry_nom.place(relx=0.35,rely=0.10,relwidth=0.2)
     self.entry_arg.place(relx=0.35,rely=0.40,relwidth=0.4)
-    Label(self.frame_valeur,text='Entrer les arguments sous la forme').place(relx=0.35,rely=0.45) 
-    Label(self.frame_valeur,text='TYPE : VARIABLE séparés par des virgules (,)').place(relx=0.35,rely=0.49) 
-    Label(self.frame_valeur,text= 'Exemple REEL:INST,ENTIER:COEF').place(relx=0.35,rely=0.53) 
-    self.entry_exp.place(relx=0.35,rely=0.60,relwidth=0.60)
-    # affichage d'une phrase d'aide
-    aide = """
-    Un retour de chariot dans une zone de saisie vous permet de vérifier si
-    la valeur que vous avez entrée est valide.
-    Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
-    valeurs seront effectivement prises en compte
-    """
-    Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.7,anchor='n')
+
+    # affichage d'une phrase d'aide pour les arguments
+    aide = """Entrer les arguments sous la forme
+de VARIABLES séparées par des virgules (,)
+Exemple X,Y,Z """
+    Label(self.frame_valeur,text=aide, justify="l").place(relx=0.5,rely=0.47,anchor='n') 
+
+    self.entry_exp.place(relx=0.35,rely=0.65,relwidth=0.60)
+    # affichage d'une phrase d'aide pour l'expression
+    aide = """Un retour de chariot dans une zone de saisie vous permet de vérifier si
+la valeur que vous avez entrée est valide.
+Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
+valeurs seront effectivement prises en compte."""
+    Label(self.frame_valeur,text=aide).place(relx=0.5,rely=0.75,anchor='n')
+
     # affichage des nom, type retourné, arguments et corps de la FORMULE
     self.display_valeur()
     # affichage des boutons
@@ -127,9 +129,11 @@ class FORMULEPanel(panels.OngletPanel):
     if self.parent.modified == 'n' : self.parent.init_modif()
     # on récupère les nouveaux nom, type retourné, arguments et corps de la FORMULE
     new_nom = self.entry_nom.get()
-    new_typ = self.option_menu_typ.getcurselection()
+    new_typ="REEL" 
     new_arg = self.entry_arg.get()
     new_exp = self.entry_exp.get()
+    self.verif_arguments
+    self.verif_corps
     # on essaie de les stocker
     test,erreur = self.node.item.save_formule(new_nom,new_typ,new_arg,new_exp)
     if test :
@@ -139,7 +143,7 @@ class FORMULEPanel(panels.OngletPanel):
         self.parent.appli.affiche_infos("FORMULE %s modifiée" %self.node.item.get_nom())
     else:
         # la formule est incorrecte : on affiche les erreurs
-        tkMessageBox.showerror("Formule incorrecte",erreur)
+        widgets.showerror("Formule incorrecte",erreur)
         self.parent.appli.affiche_infos("FORMULE %s non modifiée" %self.node.item.get_nom())
     
   def display_valeur(self):
@@ -157,9 +161,6 @@ class FORMULEPanel(panels.OngletPanel):
     nom = self.node.item.get_nom()
     if nom != '':
         self.entry_nom.insert(END,nom)
-    type = self.node.item.get_type()
-    if type :
-        self.option_menu_typ.invoke(type)
     args = self.node.item.get_args()
     if args:
         self.entry_arg.insert(END,args)
@@ -171,13 +172,13 @@ class FORMULEPanel(panels.OngletPanel):
         """
         Lance la vérification du nom présent dans entry_nom
         """
-        nom = self.entry_nom.get()\r
-        if nom == '':\r
-            test,erreur = 0,"Aucun nom fourni !"\r
+        nom = self.entry_nom.get()
+        if nom == '':
+            test,erreur = 0,"Aucun nom fourni !"
         else:
             test,erreur = self.node.item.verif_nom(nom)
         if not test:
-            tkMessageBox.showerror("Nom invalide",erreur)
+            widgets.showerror("Nom invalide",erreur)
             self.entry_nom.focus()
             self.entry_nom.selection_range(0,END)
             self.parent.appli.affiche_infos("%s n'est pas un nom valide pour une FORMULE" %nom)
@@ -189,13 +190,13 @@ class FORMULEPanel(panels.OngletPanel):
         """
         Lance la vérification des arguments présents dans entry_arg
         """
-        arguments = self.entry_arg.get()\r
-        if arguments == '' :\r
-            test,erreur = 0,"Aucun argument fourni"\r
+        arguments = self.entry_arg.get()
+        if arguments == '' :
+            test,erreur = 0,"Aucun argument fourni"
         else:
             test,erreur = self.node.item.verif_arguments(arguments)
         if not test:
-            tkMessageBox.showerror("Argument(s) invalide(s)",erreur)
+            widgets.showerror("Argument(s) invalide(s)",erreur)
             self.entry_arg.focus()
             self.entry_arg.selection_range(0,END)
             self.parent.appli.affiche_infos("Argument(s) invalide(s) pour une FORMULE")
@@ -208,16 +209,16 @@ class FORMULEPanel(panels.OngletPanel):
         Lance la vérification du corps de formule présent dans entry_exp
         """
        new_nom = self.entry_nom.get()
-        new_typ = self.option_menu_typ.getcurselection()
+       new_typ="REEL"
         new_arg = self.entry_arg.get()
         new_exp = self.entry_exp.get()
         if new_exp == '':
             test,erreur = 0,"Aucune expression fournie !"
         else:
-            test,erreur = self.node.item.verif_formule((new_nom,new_typ,new_arg,new_exp))
+            test,erreur = self.node.item.verif_formule_python((new_nom,new_typ,new_arg,new_exp))
  
         if not test:
-            tkMessageBox.showerror("Corps de FORMULE invalide",erreur)
+            widgets.showerror("Corps de FORMULE invalide",erreur)
             self.entry_exp.focus()
             self.entry_exp.selection_range(0,END)
             self.parent.appli.affiche_infos("Corps de FORMULE invalide")
@@ -253,6 +254,7 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
       Ce nom dépend de la validité de l'objet
       """
       if self.object.isactif():
+       self.object.state="modified"
         if self.object.isvalid():
           return "ast-green-square"
         else:
@@ -293,17 +295,27 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
       """
       Retourne les arguments de la FORMULE
       """
-      args = self.object.arguments
+      args=""
+      for mot in self.object.mc_liste:
+         if mot.nom == 'NOM_PARA':
+            args=mot.valeur
+            break
       if args :
-          return self.object.arguments[1:-1] #on enlève les parenthèses ouvrante et fermante
-      else:
-          return None
+          if args[0] == "(" and args[-1] ==")":
+            args=args[1:-1]
+      return args
 
     def get_corps(self):
       """
       Retourne le corps de la FORMULE
       """
-      return self.object.corps
+      corps=""
+      for mot in self.object.mc_liste:
+         if mot.nom == 'VALE':
+            corps=mot.valeur
+            break
+      return corps
+
 
     def get_liste_types_autorises(self):
       """
@@ -321,11 +333,11 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
           - si non, laisse les paramètres anciens de la FORMULE inchangés et 
             retourne 0
       """
-      test,erreur = self.object.verif_formule(formule=(new_nom,new_typ,new_arg,
+      test,erreur = self.object.verif_formule_python(formule=(new_nom,new_typ,new_arg,
                                                        new_exp))
       if test :
           # la formule est bien correcte : on sauve les nouveaux paramètres
-          self.object.update(formule=(new_nom,new_typ,new_arg,new_exp))
+          test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
       return test,erreur
 
 # ---------------------------------------------------------------------------
@@ -350,6 +362,13 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
         """
        return self.object.verif_formule(formule=formule)
 
+
+    def verif_formule_python(self,formule):
+        """
+        Lance la vérification de FORMULE passée en argument
+        """
+       return self.object.verif_formule_python(formule=formule)
+
 import Accas
 treeitem =FORMULETreeItem
 objet = Accas.FORM_ETAPE