]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
PN Pour les formules
authoreficas <>
Fri, 22 Oct 2004 15:09:09 +0000 (15:09 +0000)
committereficas <>
Fri, 22 Oct 2004 15:09:09 +0000 (15:09 +0000)
12 files changed:
Aster/az.comm
Editeur/appli.py
Editeur/bureau.py
Editeur/compoformule.py
Editeur/composimp.py
Editeur/eficas.py
Editeur/panels.py
Editeur/readercata.py
Extensions/parametre.py
Ihm/I_FORM_ETAPE.py
Validation/V_MACRO_ETAPE.py
generator/generator_python.py

index eb394ff69eb674cbc92f93fd8878e23daa54e04d..578aa5411f75ef64e10a23409841e2e339b92f67 100644 (file)
@@ -3,13 +3,17 @@
 DEBUT();
 P1 = 9.8;
 
-P2 = eeee;
+P2 = 8.8;
 
 P3 = 7;
 
+_param_5 = P3*P1;
+
+_param_4 = 3.0;
+
 #Pas trouve            shellpanel
 
-MAIL=LIRE_MAILLAGE();
+MAIL=LIRE_MAILLAGE(UNITE=P3,);
 
 MAILLA2=LIRE_MAILLAGE(UNITE=20,);
 # 'LIRE_MAILLAGE', 'UNITE'            --> uniquebasepanel
@@ -25,13 +29,22 @@ AFFE1=AFFE_MODELE(MAILLAGE=MAILLA2,
                            PHENOMENE='ACOUSTIQUE',
                            MODELISATION='PLAN',),),);
 
-MOD=AFFE_MODELE(MAILLAGE=MAILLA2,
+MOD=AFFE_MODELE(MAILLAGE=MAIL,
                 AFFE=(_F(GROUP_MA='RESSORT',
                          PHENOMENE='MECANIQUE',
                          MODELISATION='DIS_T',),
                       _F(GROUP_MA='MASSES',
                          PHENOMENE='MECANIQUE',
-                         MODELISATION='DIS_T',),),);
+                         MODELISATION='DIS_T',),
+                      _F(TOUT='OUI',
+                         PHENOMENE='THERMIQUE',
+                         MODELISATION='COQUE',),),);
+
+CARA=AFFE_CARA_ELEM(MODELE=MOD,
+                    POUTRE=(_F(GROUP_MA='MA',
+                               SECTION='CERCLE',
+                               CARA='R',
+                               VALE=1.0,),),);
 # 'AFFE_MODELE', 'MAILLAGE'           --> uniqueassdpanel
 #  AFFE_MODELE', 'AFFE', 'GROUP_MA'   --> plusieursbasepanel 
 # 'AFFE_MODELE', 'AFFE', 'PHENOMENE'  --> uniqueintopanel
@@ -44,12 +57,12 @@ F3=DEFI_FONCTION(NOM_PARA='DRX',
                  VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
 # 'DEFI_FONCTION', 'VALE'             --> fonctionpanel  
 
-MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
-                             NU=0.0,),
-                     ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
-                                       SY_C=200000000.0,
-                                       DT_SIGM_EPSI=0.0,
-                                       SY_T=50000000.0,),);
+MATER2=DEFI_MATERIAU(ELAS=(_F(E=100000000000.0,
+                              NU=0.0,),),
+                     ECRO_ASYM_LINE=(_F(DC_SIGM_EPSI=0.0,
+                                        SY_C=200000000.0,
+                                        DT_SIGM_EPSI=0.0,
+                                        SY_T=50000000.0,),),);
 
 PS1=DEFI_PARA_SENSI(VALE=1.0,);
 
@@ -58,28 +71,28 @@ PS2=DEFI_PARA_SENSI(VALE=1.0,);
 PS3=DEFI_PARA_SENSI(VALE=1.0,);
 
 CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
-                     AFFE=_F(TOUT='OUI',
-                             MATER=MATER2,),);
+                     AFFE=(_F(TOUT='OUI',
+                              MATER=MATER2,),),);
 
 AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
-                    TEMP_IMPO=_F(TOUT='OUI',
-                                 TEMP=0.0,),);
+                    TEMP_IMPO=(_F(TOUT='OUI',
+                                  TEMP=0.0,),),);
 
 TH1=THER_LINEAIRE(MODELE=AFFE1,
                   CHAM_MATER=CHMAT2,
-                  EXCIT=_F(CHARGE=AAAZ,),
+                  EXCIT=(_F(CHARGE=AAAZ,),),
                   SENSIBILITE=(PS1,PS2,),);
 # 'THER_LINEAIRE', 'SENSIBILITE'       --> plusieursassdpanel
 
 ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
-                    PRES_IMPO=_F(TOUT='OUI',
-                                 PRES=('RI',3.0,3.0,),),);
+                    PRES_IMPO=(_F(TOUT='OUI',
+                                  PRES=('RI',3.0,3.0,),),),);
 # 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
 
 MACRO_MATR_ASSE(MODELE=AFFE1,
                 NUME_DDL=CO('DDL1'),
-                MATR_ASSE=_F(MATRICE=CO('MAT1'),
-                             OPTION='RIGI_THER',),);
+                MATR_ASSE=(_F(MATRICE=CO('MAT1'),
+                              OPTION='RIGI_THER',),),);
 # 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE'  --> uniquesdcopanel
 
 FIN();
index 0a03c2550294f71d8e8bd8edd6950593666013ae..8e843ac12705a49fda3be36c7bda905908c301f4 100644 (file)
@@ -44,7 +44,7 @@ from Misc import MakeNomComplet
 VERSION="EFICAS v1.6"
 
 class APPLI: 
-  def __init__ (self,master,code='ASTER',fichier=None) :
+  def __init__ (self,master,code='ASTER',fichier=None,test=0) :
       self.top=master
       self.code=code
       self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS)
@@ -53,14 +53,16 @@ class APPLI:
       self.top.title(VERSION + ' pour '+self.code)
       self.top.withdraw()
       self.initializeTk(master)
+      self.test=test
       Pmw.initialise(master)
       self.lecture_parametres()
       self.format_fichier = Tkinter.StringVar()
       self.message=''
       self.cree_composants_graphiques()
       self.load_appli_composants()                     # Creation du BUREAU
-      splash.fini_splash()
-      self.affiche_FAQ()
+      if (self.test == 0):
+           splash.fini_splash()
+           self.affiche_FAQ()
       # AY : cas ou le nom du fichier a été passé en argument
       if fichier :
            fich=str(MakeNomComplet.FILENAME(fichier))
@@ -88,7 +90,8 @@ class APPLI:
       """
           Active la lecture des paramètres standards et utilisateur
       """
-      splash._splash.configure(text = "Chargement des paramètres utilisateur")
+      if (self.test == 0):
+         splash._splash.configure(text = "Chargement des paramètres utilisateur")
       import configuration
       self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
 
@@ -100,19 +103,23 @@ class APPLI:
            - bureau
            - statusbar
       """
-      splash._splash.configure(text = "Chargement de l'IHM")
-      splash._splash.configure(text = "Chargement de la menubar")
+      if (self.test == 0):
+         splash._splash.configure(text = "Chargement de l'IHM")
+         splash._splash.configure(text = "Chargement de la menubar")
       import menubar
       self.menubar=menubar.MENUBAR(self,self.top)
-      splash._splash.configure(text = "Chargement de la toolbar")
+      if (self.test == 0):
+         splash._splash.configure(text = "Chargement de la toolbar")
       import toolbar
       self.toolbar=toolbar.TOOLBAR(self,self.top)
-      splash._splash.configure(text = "Chargement de la statusbar")
+      if (self.test == 0):
+         splash._splash.configure(text = "Chargement de la statusbar")
       import statusbar
       self.statusbar=statusbar.STATUSBAR(self.top)
 
   def load_appli_composants(self):
-      splash._splash.configure(text = "Chargement des appli_composants")
+      if (self.test == 0):
+         splash._splash.configure(text = "Chargement des appli_composants")
       for mname in self.appli_composants:
          self.load_appli_composant(mname)
 
@@ -126,7 +133,7 @@ class APPLI:
 
   def affiche_FAQ(self):
       import faq
-      faq.affiche(self.top)
+      #faq.affiche(self.top)
 
   def affiche_infos(self,message):
       self.statusbar.affiche_infos(message)
index 0fc27dd557b944fffb2b4c1b07a3a97f239ecedf..f4292648680b87f99b1fb998ba252a487dccbde3 100644 (file)
@@ -96,7 +96,8 @@ class BUREAU:
    def __init__(self,appli,parent):
       self.parent=parent
       self.appli=appli
-      splash._splash.configure(text = "Création du bureau")
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Création du bureau")
       self.nb = Pmw.NoteBook(self.parent,raisecommand=self.selectJDC)
       self.nb.pack(fill='both',expand=1)
       self.JDCDisplay_courant=None
index 3aaa488e5ae0635bec260941303782ce64024a3b..302cf665e8589eeb638ccbb97f26d4c7903e08de 100644 (file)
@@ -68,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.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)
@@ -91,8 +89,8 @@ class FORMULEPanel(panels.OngletPanel):
 
     # affichage d'une phrase d'aide pour les arguments
     aide = """Entrer les arguments sous la forme
-TYPE : VARIABLE séparés par des virgules (,)
-Exemple REEL:INST,ENTIER:COEF """
+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)
@@ -131,9 +129,11 @@ valeurs seront effectivement prises en compte."""
     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 :
@@ -161,9 +161,6 @@ valeurs seront effectivement prises en compte."""
     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)
@@ -212,13 +209,13 @@ valeurs seront effectivement prises en compte."""
         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:
             widgets.showerror("Corps de FORMULE invalide",erreur)
@@ -257,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:
@@ -297,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):
       """
@@ -325,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
 
 # ---------------------------------------------------------------------------
@@ -354,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
index 353082a2e5f0009afa453950d882e51408b7e909..25f494a8764cebc70049dd468521ab2a89012f47 100644 (file)
@@ -546,7 +546,8 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
             essai_valeur="'" + valeur + "'"
             valeurretour,validite= self.object.eval_valeur(essai_valeur)
       if hasattr(valeurretour,'__class__'):
-         if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+         #if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
+         if valeurretour.__class__.__name__ in ('PARAMETRE',):
             validite=1
       if self.wait_co():
          try:
index 76a09c78b51dba58c1453de18ea394d60aa0e143..2845e036cc87c84f94f964913df1f961b2227c11 100644 (file)
@@ -50,6 +50,9 @@ class EFICAS(appli.APPLI):
   def exitEFICAS(self):
      self.bureau.exitEFICAS()
 
+  def getBureau(self):
+      return self.bureau
+      
   def browse(self,result):
       if result == 'Browse':
         self.ulfile = askopenfilename(title="Choix fichier :")
index 3e0af3cd54c332e76a74403005151ebd734c1f62..843ccc42bfb6b3519b623c8a3bde47a86e5fe14b 100644 (file)
@@ -63,7 +63,7 @@ class Panel(Frame) :
       self.bouton_doc=None
       self.bouton_com=None
       self.bouton_sup=None
-      self.frame_eval=None
+      #self.frame_eval=None
       self.label=None
       self.frame_boutons=None
       self.frame_comment=None
@@ -156,21 +156,21 @@ class Panel(Frame) :
       if self.parent.modified == 'n' : self.parent.init_modif()
       return self.node.append_child("PARAMETRE",'first')
 
-  def ajout_parametre_eval(self,ind='after'):
-      """
-      Ajoute un paramètre EVAL à l'intérieur du JDC :
-      - si ind='after'  : l'ajoute après l'objet courant
-      - si ind='before' : l'ajoute avant.
-      """
-      if self.parent.modified == 'n' : self.parent.init_modif()
-      return self.node.append_brother("PARAMETRE_EVAL",ind)
+#  def ajout_parametre_eval(self,ind='after'):
+#      """
+#      Ajoute un paramètre EVAL à l'intérieur du JDC :
+#      - si ind='after'  : l'ajoute après l'objet courant
+#      - si ind='before' : l'ajoute avant.
+#      """
+#      if self.parent.modified == 'n' : self.parent.init_modif()
+#      return self.node.append_brother("PARAMETRE_EVAL",ind)
     
-  def ajout_parametre_eval_first(self):
-      """
-      Ajoute un paramètre EVAL en début de JDC
-      """
-      if self.parent.modified == 'n' : self.parent.init_modif()
-      return self.node.append_child("PARAMETRE_EVAL",'first')
+#  def ajout_parametre_eval_first(self):
+#      """
+#      Ajoute un paramètre EVAL en début de JDC
+#      """
+#      if self.parent.modified == 'n' : self.parent.init_modif()
+#      return self.node.append_child("PARAMETRE_EVAL",'first')
     
 # ------------------------------------------------------------------------
    
@@ -426,11 +426,11 @@ class OngletPanel(Panel) :
       # les frame ...
       self.frame_comment = Frame(page,bd=1,relief='raised')
       self.frame_param   = Frame(page,bd=1,relief='raised')
-      self.frame_eval    = Frame(page,bd=1,relief='raised')
+      #self.frame_eval    = Frame(page,bd=1,relief='raised')
       self.frame_boutons = Frame(page,bd=1,relief='raised')
-      self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.28)
-      self.frame_param.place(relx=0,rely=0.28,relwidth=1,relheight=0.28)
-      self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28)
+      self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.40)
+      self.frame_param.place(relx=0,rely=0.40,relwidth=1,relheight=0.40)
+      #self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28)
       self.frame_boutons.place(relx=0,rely=0.84,relwidth=1,relheight=0.16)
       # remplissage de la frame commentaire
       Label(self.frame_comment,text = "Insérer un commentaire :").place(relx=0.1,rely=0.5,anchor='w')
@@ -453,16 +453,16 @@ class OngletPanel(Panel) :
       but_param_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3)
       but_param_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3)
       # remplissage de la frame eval
-      Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w')
+      #Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w')
           #Label(self.frame_eval,text='Non encore disponible').place(relx=0.6,rely=0.5,anchor='w')
-      but_eval_avant = Button(self.frame_eval,
-                              text = "AVANT "+self.node.item.get_nom(),
-                              command = lambda s=self :s.ajout_parametre_eval(ind = 'before'))
-      but_eval_apres = Button(self.frame_eval,
-                              text = "APRES "+self.node.item.get_nom(),
-                              command = self.ajout_parametre_eval)
-      but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3)
-      but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3)      
+      #but_eval_avant = Button(self.frame_eval,
+      #                        text = "AVANT "+self.node.item.get_nom(),
+      #                        command = lambda s=self :s.ajout_parametre_eval(ind = 'before'))
+      #but_eval_apres = Button(self.frame_eval,
+      #                        text = "APRES "+self.node.item.get_nom(),
+      #                        command = self.ajout_parametre_eval)
+      #but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3)
+      #but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3)      
       # remplissage de la frame boutons
       Button(self.frame_boutons,
              text="Commentariser toute la commande",
index 6ee8fe3076d68118ea064c1a25f1b420f0d86eee..0a0db7cbcf4c71eeb0ce602395c655e8c6a2b58d 100644 (file)
@@ -69,7 +69,8 @@ class READERCATA:
           dans le répertoire Cata 
       """
       message1 = "Compilation des fichiers Eficas \n\n Veuillez patienter ..."
-      splash._splash.configure(text = message1)
+      if self.appli.test == 0 :
+         splash._splash.configure(text = message1)
       self.configure_barre(4)
       liste_cata_possibles=[]
       for catalogue in self.appli.CONFIGURATION.catalogues:
@@ -102,31 +103,37 @@ class READERCATA:
       self.fic_cata_c = self.fic_cata + 'c'
       self.fic_cata_p = os.path.splitext(self.fic_cata)[0]+'_pickled.py'
 
-      splash._splash.configure(text = "Debut compil cata: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Debut compil cata: %d s" % time.clock())
       # compilation éventuelle du catalogue
       test = self.compile_cata(self.fic_cata,self.fic_cata_c)
       self.update_barre()
-      splash._splash.configure(text = "Fin compil cata: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Fin compil cata: %d s" % time.clock())
       if not test : showerror("Compilation catalogue","Impossible de compiler le catalogue %s" %self.fic_cata)
 
       # import du catalogue
-      splash._splash.configure(text = "Debut import_cata: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Debut import_cata: %d s" % time.clock())
       self.cata = self.import_cata(self.fic_cata)
       self.update_barre()
-      splash._splash.configure(text = "Fin import_cata: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Fin import_cata: %d s" % time.clock())
       if not self.cata : showerror("Import du catalogue","Impossible d'importer le catalogue %s" %self.fic_cata)
 
       #
       # analyse du catalogue (ordre des mots-clés)
       #
-      splash._splash.configure(text = "Debut Retrouve_Ordre: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Debut Retrouve_Ordre: %d s" % time.clock())
       # Retrouve_Ordre_Cata_Standard fait une analyse textuelle du catalogue
       # remplacé par Retrouve_Ordre_Cata_Standard_autre qui utilise une numerotation
       # des mots clés à la création
       #self.Retrouve_Ordre_Cata_Standard()
       self.Retrouve_Ordre_Cata_Standard_autre()
       self.update_barre()
-      splash._splash.configure(text = "Fin Retrouve_Ordre: %d s" % time.clock())
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Fin Retrouve_Ordre: %d s" % time.clock())
       #
       # analyse des données liées à l'IHM : UIinfo
       #
@@ -165,7 +172,8 @@ class READERCATA:
           Réalise l'import du catalogue dont le chemin d'accès est donné par cata
       """
       import imp
-      splash._splash.configure(text = "Chargement du catalogue")
+      if self.appli.test == 0 :
+         splash._splash.configure(text = "Chargement du catalogue")
       nom_cata = os.path.splitext(os.path.basename(cata))[0]
       rep_cata = os.path.dirname(cata)
       sys.path[:0] = [rep_cata]
@@ -217,7 +225,8 @@ class READERCATA:
       if self.code != 'ASTER' : return
       fic_cata = os.path.join(self.appli.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
       message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev
-      splash._splash.configure(text = message,barre='oui')
+      if self.appli.test == 0 :
+         splash._splash.configure(text = message,barre='oui')
       cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata)
       self.cata_dev_ordonne_cr = cata_dev_ordonne.cr
       cata_dev_ordonne_dico = cata_dev_ordonne.entites
@@ -233,7 +242,8 @@ class READERCATA:
       """
       if self.code != 'ASTER' : return
       message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev
-      splash._splash.configure(text = message,barre='oui')
+      if self.appli.test == 0 :
+         splash._splash.configure(text = message,barre='oui')
       cata_dev_ordonne_dico = autre_analyse_cata.analyse_catalogue(self.cata_dev)
       self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
       self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
@@ -248,7 +258,8 @@ class READERCATA:
           try:
               f = open(self.fic_cata_p)
               u = cPickle.Unpickler(f)
-              splash._splash.configure(text = "Analyse du catalogue")
+              if self.appli.test == 0 :
+                 splash._splash.configure(text = "Analyse du catalogue")
               self.cata_ordonne_dico = u.load()
               f.close()
           except :
@@ -256,7 +267,8 @@ class READERCATA:
               # ou (le plus probable) s'il a été créé sous un autre OS
               self.Get_Ordre_Cata(mode='cata')
       elif mode == 'cata':
-          splash._splash.configure(text = "Analyse du catalogue",barre='oui')
+          if self.appli.test == 0 :
+              splash._splash.configure(text = "Analyse du catalogue",barre='oui')
           cata_ordonne = analyse_catalogue.analyse_catalogue(self,self.fic_cata)
           self.cata_ordonne_cr = cata_ordonne.cr
           self.cata_ordonne_dico = cata_ordonne.entites
@@ -344,7 +356,8 @@ class READERCATA:
       if time1 > time2:
           try:
               # le catalogue doit être recompilé avant d'être importé
-              splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...")
+              if self.appli.test == 0 :
+                 splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...")
               py_compile.compile(cata)
           except:
               return 0
@@ -359,14 +372,16 @@ class READERCATA:
       """ Configure la barre de progression en lui passant comme paramètre le
           nombre de commandes du catalogue qui lui sert à déterminer la longueur de son incrément """
       try:
-          splash._splash.configure(barre='oui',ratio = nbcommandes)
+          if self.appli.test == 0 :
+             splash._splash.configure(barre='oui',ratio = nbcommandes)
       except:
           pass
 
    def update_barre(self):
       """ Update la position de la barre de progression : la fait progresser de son incrément """
       try:
-          splash._splash.update_barre()
+          if self.appli.test == 0 :
+             splash._splash.update_barre()
       except:
           pass
 
index c62b43b72daeee3124edb050b8f460b3f79a4b81..3bb7d1052092574b7732fcf79eed5bb91bec8fa0 100644 (file)
@@ -101,10 +101,11 @@ class PARAMETRE :
                         return val
                 l_new_val.append(v)
             return tuple(l_new_val)
-        else:
+       # PN : commente le print
+        #else:
             # on a réussi à évaluer val en autre chose qu'un tuple ...
-            print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
-            print 'on trouve : ',str(valeur),' de type : ',type(valeur)
+            #print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
+            #print 'on trouve : ',str(valeur),' de type : ',type(valeur)
     # on retourne val comme une string car on n'a pas su l'interpréter
     return val
 
index dbc6b1a0eb5006bd0c56eabf83d7ff2a8e3e038d..516fb97c0c230069b2eff8a63bc2650d72606947 100644 (file)
@@ -42,6 +42,7 @@ class FORM_ETAPE(MACRO_ETAPE):
         # il faut pour les FORMULE décortiquer l'expression ...
         self.type_retourne,self.arguments,self.corps = self.analyse_formule()
 
+
     def analyse_formule(self):
         """
         Cette méthode décortique l'expression de la FORMULE.
@@ -109,20 +110,21 @@ class FORM_ETAPE(MACRO_ETAPE):
         test = 1
         arguments = arguments[1:-1] # on enlève les parenthèses ouvrante et fermante
         l_arguments = string.split(arguments,',')
-        for argument in l_arguments:
-            argument = string.strip(argument)
-            try:
-                typ,nom = string.split(argument,':')
-                # pas de vérification sur le nom de l'argument
-                # vérification du type de l'argument
-                typ = string.strip(typ)
-                if typ not in self.l_types_autorises :
-                    test = 0
-                    erreur = erreur + "Le type "+typ+" n'est pas un type permis pour "+nom+'\n'
-            except:
-                # l'argument ne respecte pas la syntaxe : typ_arg : nom_arg
-                test = 0
-                erreur = erreur+"Syntaxe argument non valide : "+argument+'\n'
+        #for argument in l_arguments:
+        #    argument = string.strip(argument)
+        #    try:
+       #       nom=argument
+        #        typ,nom = string.split(argument,':')
+        #        #pas de vérification sur le nom de l'argument
+        #        #vérification du type de l'argument
+        #        typ = string.strip(typ)
+        #        if typ not in self.l_types_autorises :
+        #            test = 0
+        #            erreur = erreur + "Le type "+typ+" n'est pas un type permis pour "+nom+'\n'
+        #    except:
+        #        # l'argument ne respecte pas la syntaxe : typ_arg : nom_arg
+        #        test = 0
+        #        erreur = erreur+"Syntaxe argument non valide : "+argument+'\n'
         return test,erreur
 
     def verif_corps(self,corps=None,arguments=None):
@@ -165,6 +167,8 @@ class FORM_ETAPE(MACRO_ETAPE):
             return 0,"Pas de nom donné à la FORMULE"
         if len(nom) > 8 :
             return 0,"Un nom de FORMULE ne peut dépasser 8 caractères"
+       if nom[0] > "0" and nom[0] < "9" :
+           return 0,"Un nom de FORMULE ne peut pas commencer par un chiffre"
         sd = self.parent.get_sd_autour_etape(nom,self)
         if sd :
             return 0,"Un concept de nom %s existe déjà !" %nom
@@ -214,6 +218,36 @@ class FORM_ETAPE(MACRO_ETAPE):
                 erreur = erreur+(len(mess) > 0)*'\n'+mess
         return test,erreur
 
+    def verif_formule_python(self,formule=None):
+        """
+       Pour l instant ne fait qu un compile python
+       il serait possible d ajouter des tests sur les arguments
+       ou le type retourne mais ...
+       """
+        if not formule :
+            formule = (None,None,None,None)
+        test_nom,erreur_nom = self.verif_nom(formule[0])
+        if formule[2]:
+            args = '('+formule[2]+')'
+        else:
+            args = None
+        test_arguments,erreur_arguments = self.verif_arguments(args)
+       corps=formule[3]
+       erreur_formule= ''
+       test_formule=1
+       try :
+           compile(corps,'<string>','eval')
+       except :
+           erreur_formule= "le corps de la formule n'est pas une formule python valide"
+           test_formule=0
+        erreur = ''
+        test = test_nom*test_arguments*test_formule
+        if not test :
+            for mess in (erreur_nom,erreur_arguments,erreur_formule):
+                erreur = erreur+(len(mess) > 0)*'\n'+mess
+        return test,erreur
+
+
     def update(self,formule):
         """
         Méthode externe.
@@ -221,7 +255,6 @@ class FORM_ETAPE(MACRO_ETAPE):
         par les nouvelles valeurs passées dans le tuple formule.
         On stocke les valeurs SANS vérifications.
         """
-        self.init_modif()
         self.type_retourne = formule[1]
         self.arguments = '('+formule[2]+')'
         self.corps = formule[3]
@@ -235,6 +268,34 @@ class FORM_ETAPE(MACRO_ETAPE):
         if sd:
             sd.nom = formule[0]
 
+    # bidouille PN 
+    # Il faut que formule soit constitue de 
+    # nom de la formule
+    # type retourne
+    # parametres
+    # corps de la fonction
+    def update_formule_python(self,formule):
+        self.build_mc()
+        self.mc_liste=[]
+        if len(formule) < 4 :
+          return O
+       i=1
+       for k,v in self.definition.entites.items():
+           child=self.definition.entites[k](None,nom=k,parent=self)
+           new_valeur=formule[i+1]
+           child.valeur = new_valeur
+           child.state = 'modified'
+           self.mc_liste.append(child)
+           i=i+1
+        self.arguments = formule[3]
+        self.corps = formule[2]
+        self.type_retourne = formule[1]
+       sd = self.get_sd_prod()
+        if sd:
+            sd.nom = formule[0]
+        self.init_modif()
+       return 1
+
     def active(self):
         """
         Rend l'etape courante active.
index f5811f60be9420f1ffdcea269a1fd5924296ebf4..2778ea71e72ea97019a16988ff90b374886bc5a7 100644 (file)
@@ -95,7 +95,6 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
             break
 
         self.set_valid(valid)
-
         return self.valid
 
    def update_sdprod(self,cr='non'):
index a0fbbf7ba6deb121e9462210cc04f73c1c26df4e..4008021570f8f7016a925c4e348de89627437787 100644 (file)
@@ -296,13 +296,11 @@ class PythonGenerator:
         l=[]
         nom = obj.get_nom()
         if nom == '' : nom = 'sansnom'
-        if len(obj.mc_liste)>0:
-            l.append(nom + ' = FORMULE(')
-            s=obj.type_retourne + ' = ' + "'''" + obj.arguments + ' = ' + obj.corps+"'''"
-            l.append(s)
-            l.append(');')
-        else:
-            l.append(nom+' = FORMULE();')
+        l.append(nom + ' = FORMULE(')
+        for v in obj.mc_liste:
+           text=self.generator(v)
+           l.append(v.nom+'='+text)
+        l.append(');')
         return l
 
    def generMACRO_ETAPE(self,obj):