Salome HOME
*** empty log message ***
[tools/eficas.git] / Sep / configuration_SEP.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 sert pour charger les paramètres de configuration d'EFICAS
23 """
24 # Modules Python
25 import os, sys, string, types, re
26 import traceback
27 from PyQt4.QtGui  import *
28
29 # Modules Eficas
30 from Editeur import utils
31
32 class CONFIG:
33
34   #-----------------------------------
35   def __init__(self,appli,repIni):
36   #-----------------------------------
37
38   # Classe de base permettant de lire, afficher
39   # et sauvegarder les fichiers utilisateurs 
40   # On a deux directories : la directory generale (Repertoire d instal + Nom du code
41   #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
42   # et la directorie de l utilisateur 
43   #                       HOME/.Eficas_SousEp
44   # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement 
45   # par celui de l utilisateur
46   # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
47   # dans le fichier general sinon
48       self.appli   = appli  
49       self.code    = appli.code
50       self.salome  = appli.salome
51       self.repIni = repIni
52       self.fic_prefs ="prefs.py"
53
54       if self.appli: 
55          self.parent=appli.top
56          #self.appli.format_fichier="openturns_study"
57       else:          self.parent=None
58
59
60       self.labels=("rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir")
61
62       # Valeurs par defaut
63       self.rep_user     = os.path.join(os.environ['HOME'],'.Eficas_SousEp')
64       self.path_doc     = self.rep_user
65       self.savedir      = os.environ['HOME']
66       self.initialdir   = os.environ['HOME']
67       self.exec_acrobat = self.rep_user
68  
69       #Lecture des fichiers utilisateurs
70       self.lecture_fichier_ini_standard()
71       self.lecture_fichier_ini_utilisateur()
72       self.lecture_catalogues()
73
74   #--------------------------------------
75   def lecture_fichier_ini_standard(self):
76   #--------------------------------------
77   # Verifie l'existence du fichier "standard"
78   # appelle la lecture de ce fichier
79       self.fic_ini = os.path.join(self.repIni,self.fic_prefs)
80       if not os.path.isfile(self.fic_ini):
81           QMessageBox.critical( None, "Import du fichier de Configuration", 
82                                 "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" )
83           sys.exit(0)
84       import prefs
85       for k in self.labels :
86          try :
87             valeur=getattr(prefs,k)
88             setattr(self,k,valeur)
89          except :
90             pass
91               
92
93   #--------------------------------------
94   def lecture_fichier_ini_utilisateur(self):
95   #--------------------------------------
96   # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
97       self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs)
98       #if not os.path.isfile(self.fic_ini_utilisateur+".py"):
99       if not os.path.isfile(self.fic_ini_utilisateur):
100          return
101       from utils import read_file
102       txt = utils.read_file(self.fic_ini_utilisateur)
103       from styles import style
104       d=locals()
105       try:
106          exec txt in d
107       except :
108          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
109          QMessageBox.critical( None, "Import du fichier de Configuration", 
110                         "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )
111          sys.exit(0)
112       for k in self.labels :
113          try :
114             setattr(self,k,d[k])
115          except :
116             pass
117
118
119
120   #--------------------------------------
121   def lecture_catalogues(self):
122   #--------------------------------------
123       rep_mat=" " # Compatbilite Aster
124       fic_cata  ="catalogues_sep.ini"
125       fic_ini = os.path.join(self.repIni,fic_cata)
126       fic_user= os.path.join(self.rep_user,fic_cata)
127       if  os.path.isfile(fic_user):
128           fichier = fic_user
129       else  :
130           fichier = fic_ini
131           if not os.path.isfile(fic_ini) :
132              QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", 
133                         "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )
134              sys.exit(0)
135
136       print fic_cata
137       from utils import read_file
138       txt = utils.read_file(fichier)
139       d=locals()
140       try:
141          exec txt in d
142          self.catalogues=d["catalogues"]
143       except :
144          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
145          QMessageBox.critical( None, "Import du fichier de Configuration", 
146                         "Erreur à la lecture du fichier de configuration " + fichier )
147          sys.exit(0)
148
149
150
151   #--------------------------------------
152   def save_params(self):
153   #--------------------------------------
154   # sauvegarde
155   # les nouveaux paramètres dans le fichier de configuration utilisateur
156   #
157        print "a ecrire PNPNPN"
158 #      l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc')
159 #      texte=""
160 #      for clef in l_param :
161 #          if hasattr(self,clef):
162 #             valeur=getattr(self,clef)
163 #             texte= texte + clef+"     = " + repr(valeur) +"\n"
164 #
165 #
166 #      # recuperation des repertoires materiaux
167 #      try :
168 #          for item in self.catalogues :
169 #              try :
170 #                  (code,version,cata,format,defaut)=item
171 #              except :
172 #                  (code,version,cata,format)=item
173 #              codeSansPoint=re.sub("\.","",version)
174 #              chaine="rep_mat_"+codeSansPoint
175 #              if hasattr(self,chaine):
176 #                 valeur=getattr(self,chaine)
177 #                 texte= texte + chaine+"       = '" + str(valeur) +"'\n"
178 #      except :
179 #             pass
180 #
181 #      f=open(self.fic_ini_utilisateur,'w+')
182 #      f.write(texte) 
183 #      f.close()
184 #
185
186
187 def make_config(appli,rep):
188     return CONFIG(appli,rep)
189
190 def make_config_style(appli,rep):
191     return None
192
193