]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/change_comm.py
Salome HOME
PN : pour perfect
[tools/eficas.git] / Editeur / change_comm.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 """
22     Ce module permet de lancer l'application EFICAS en affichant
23     un ecran Splash pour faire patentier l'utilisateur
24 """
25 # Modules Python
26 import sys
27 import os
28
29 # Modules Eficas
30 import import_code
31 import session
32 import prefs
33 import convert
34 import generator
35 import string
36 from utils import extension_fichier,stripPath, save_in_file
37
38 class DUP :
39
40    def __init__(self,code):
41        """
42        """
43        self.format_fichier="python"
44        self.version_code=None
45        self.code=code
46
47        self.top=None
48        self.test=2
49        import configuration
50        self.CONFIGURATION=configuration.make_config(self,prefs.REPINI)
51
52        self.load_readercata()
53        self.cata=self.readercata.cata
54
55        self.JDC=None
56        self.JDCName=""
57        self.J2=None
58
59    def load_readercata(self):
60        mname='readercata'
61        module=__import__(mname,globals(),locals())
62        factory=getattr(module,mname.upper())
63        appli_composant=factory(self,self.top)
64        setattr(self,mname,appli_composant)
65
66
67    def openJDC(self,fichier):
68       if fichier :
69           self.fichier = fichier
70           e=extension_fichier(fichier)
71           self.JDCName=stripPath(fichier)
72           self.initialdir = os.path.dirname(os.path.abspath(fichier))
73       else :
74           return
75
76       format=self.format_fichier
77       # Il faut convertir le contenu du fichier en fonction du format
78       if convert.plugins.has_key(format):
79          # Le convertisseur existe on l'utilise
80          p=convert.plugins[format]()
81          p.readfile(fichier)
82          text=p.convert('exec',self)
83          if not p.cr.estvide(): 
84             print ("Erreur à la conversion")
85             print str(p.cr)
86             return
87
88       # On se met dans le repertoire ou se trouve le fichier de commandes
89       # pour trouver les eventuels fichiers include ou autres
90       # localises a cote du fichier de commandes
91       os.chdir(self.initialdir)
92       CONTEXT.unset_current_step()
93       J=self.cata[0].JdC(procedure=text,appli=self,
94                          cata=self.cata,cata_ord_dico=self.readercata.cata_ordonne_dico,
95                          nom = self.JDCName,
96                          rep_mat=self.CONFIGURATION.rep_mat,
97                          )
98
99       J.analyse()
100
101       txt_exception = J.cr.get_mess_exception()
102       if txt_exception :
103           # des exceptions ont été levées à la création du JDC 
104           # --> on affiche les erreurs mais pas le JDC
105           self.JDC=J
106           print("Erreur fatale au chargement de %s" %file)
107       else :
108           self.JDC=J
109
110    def modifieJDC(self,texte):
111          if texte == None or texte == "" : return
112          format="python"
113          lignes=string.split(texte,";")
114          textedecoup=""
115          for l in lignes :
116             textedecoup=textedecoup+l+'\n'
117          if convert.plugins.has_key(format):
118             p=convert.plugins[format]()
119             p.settext(textedecoup)
120             text=p.convert('exec',self)
121             print text
122          if not p.cr.estvide(): 
123             print ("Erreur à la conversion")
124             print str(p.cr)
125             return
126          self.J2=self.cata[0].JdC(procedure=text,appli=self,
127                          cata=self.cata,
128                          cata_ord_dico=self.readercata.cata_ordonne_dico,
129                          nom = self.JDCName+"2",
130                          rep_mat=self.CONFIGURATION.rep_mat,
131                          )
132          self.J2.definition.code = "MODIF"
133          self.J2.analyse()
134      
135
136    def saveJDC(self,fichierSortie):
137       """ 
138           Sauvegarde le JDC courant.
139           Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
140       """
141       if not hasattr(self,'JDC') : return 0
142
143       format="Modif"
144
145       if generator.plugins.has_key(format):
146          g=generator.plugins[format]()
147          jdc_formate=g.genermodifparam(self.JDC,self.J2)
148          if not g.cr.estvide():
149             self.affiche_infos("Erreur à la generation")
150             return 0
151       else:
152          self.affiche_infos("Format %s non reconnu" % format)
153          return 0
154
155       self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
156
157       if not save_in_file(fichierSortie,self.jdc_fini) :
158          self.affiche_infos("Problème à la sauvegarde du fichier")
159          return 0
160       else :
161          self.affiche_infos("sauvegarde effectuée")
162          return 1
163
164
165    def affiche_infos(self,mess):
166        print mess
167