Salome HOME
c2f5d3835d2c7bda07c283b4479511b84ef6222e
[tools/eficas.git] / InterfaceTK / 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 from Editeur import import_code
31 from Editeur import session
32 import prefs
33 name='prefs_'+prefs.code
34 prefsCode=__import__(name)
35 import convert
36 import generator
37 import string
38 from Editeur.utils import extension_fichier,stripPath, save_in_file
39
40 class DUP :
41
42    def __init__(self,code):
43        """
44        """
45        self.format_fichier="python"
46        self.version_code=None
47        self.code=code
48
49        self.top=None
50        self.test=2
51        import configuration_ASTER
52
53        self.CONFIGURATION=configuration_ASTER.make_config(self,prefsCode.repIni)
54
55        self.load_readercata()
56        self.cata=self.readercata.cata
57
58        self.JDC=None
59        self.JDCName=""
60        self.J2=None
61
62    def load_readercata(self):
63        mname='readercata'
64        module=__import__(mname,globals(),locals())
65        factory=getattr(module,mname.upper())
66        appli_composant=factory(self,self.top)
67        setattr(self,mname,appli_composant)
68
69
70    def openJDC(self,fichier):
71       if fichier :
72           self.fichier = fichier
73           e=extension_fichier(fichier)
74           self.JDCName=stripPath(fichier)
75           self.savedir = os.path.dirname(os.path.abspath(fichier))
76       else :
77           return
78
79       format=self.format_fichier
80       # Il faut convertir le contenu du fichier en fonction du format
81       if convert.plugins.has_key(format):
82          # Le convertisseur existe on l'utilise
83          p=convert.plugins[format]()
84          p.readfile(fichier)
85          text=p.convert('exec',self)
86          if not p.cr.estvide(): 
87             print ("Erreur à la conversion")
88             print str(p.cr)
89             return
90
91       # On se met dans le repertoire ou se trouve le fichier de commandes
92       # pour trouver les eventuels fichiers include ou autres
93       # localises a cote du fichier de commandes
94       os.chdir(self.savedir)
95       CONTEXT.unset_current_step()
96       J=self.cata[0].JdC(procedure=text,appli=self,
97                          cata=self.cata,cata_ord_dico=self.readercata.cata_ordonne_dico,
98                          nom = self.JDCName,
99                          rep_mat=self.CONFIGURATION.rep_mat,
100                          )
101
102       J.analyse()
103
104       txt_exception = J.cr.get_mess_exception()
105       if txt_exception :
106           # des exceptions ont été levées à la création du JDC 
107           # --> on affiche les erreurs mais pas le JDC
108           self.JDC=J
109           print("Erreur fatale au chargement de %s" %file)
110       else :
111           self.JDC=J
112
113    def modifieJDC(self,texte):
114          if texte == None or texte == "" : return
115          format="python"
116          lignes=string.split(texte,";")
117          textedecoup=""
118          for l in lignes :
119             textedecoup=textedecoup+l+'\n'
120          if convert.plugins.has_key(format):
121             p=convert.plugins[format]()
122             p.settext(textedecoup)
123             text=p.convert('exec',self)
124          if not p.cr.estvide(): 
125             print ("Erreur à la conversion")
126             print str(p.cr)
127             return
128          self.J2=self.cata[0].JdC(procedure=text,appli=self,
129                          cata=self.cata,
130                          cata_ord_dico=self.readercata.cata_ordonne_dico,
131                          nom = self.JDCName+"2",
132                          rep_mat=self.CONFIGURATION.rep_mat,
133                          )
134          self.J2.definition.code = "MODIF"
135          self.J2.analyse()
136      
137
138    def saveJDC(self,fichierSortie):
139       """ 
140           Sauvegarde le JDC courant.
141           Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
142       """
143       if not hasattr(self,'JDC') : return 0
144
145       format="Modif"
146
147       if generator.plugins.has_key(format):
148          g=generator.plugins[format]()
149          jdc_formate=g.genermodifparam(self.JDC,self.J2)
150          if not g.cr.estvide():
151             self.affiche_infos("Erreur à la generation")
152             return 0
153       else:
154          self.affiche_infos("Format %s non reconnu" % format)
155          return 0
156
157       self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
158
159       if not save_in_file(fichierSortie,self.jdc_fini) :
160          self.affiche_infos("Problème à la sauvegarde du fichier")
161          return 0
162       else :
163          self.affiche_infos("sauvegarde effectuée")
164          return 1
165
166
167    def affiche_infos(self,mess):
168        print mess
169