]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/configuration.py
Salome HOME
*** empty log message ***
[tools/eficas.git] / InterfaceQT4 / configuration.py
1 # -*- coding: utf-8 -*-\r
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION\r
3 # ======================================================================\r
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG\r
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY\r
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY\r
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR\r
8 # (AT YOUR OPTION) ANY LATER VERSION.\r
9 #\r
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT\r
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF\r
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU\r
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.\r
14 #\r
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE\r
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,\r
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.\r
18 #\r
19 #\r
20 # ======================================================================\r
21 """\r
22     Ce module sert pour charger les paramètres de configuration d'EFICAS\r
23 """\r
24 # Modules Python\r
25 import os, sys, string, types, re\r
26 import traceback\r
27 from PyQt4.QtGui  import *\r
28 from utils import read_file\r
29 \r
30 # Modules Eficas\r
31 from Editeur import utils\r
32 \r
33 class CONFIG_BASE:\r
34 \r
35   #--------------------------------------\r
36   def __init__(self,appli,repIni,nomDir):\r
37   #--------------------------------------\r
38 \r
39   # Classe de base permettant de lire, afficher\r
40   # et sauvegarder les fichiers utilisateurs \r
41   # On a deux directories : la directory generale (Repertoire d instal + Nom du code\r
42   #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper\r
43   # et la directorie de l utilisateur \r
44   #                       HOME/.Eficas_Openturns\r
45   # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement \r
46   # par celui de l utilisateur\r
47   # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite\r
48   # dans le fichier general sinon\r
49       self.appli   = appli  \r
50       self.code    = appli.code\r
51       self.salome  = appli.salome\r
52       self.repIni  = repIni\r
53       self.REPINI  = repIni\r
54       self.rep_user   = os.path.join(os.environ['HOME'],nomDir)\r
55      \r
56       if self.appli: \r
57          self.parent=appli.top\r
58          self.appli.mode_nouv_commande='initial'\r
59       else:          self.parent=None\r
60 \r
61 \r
62 \r
63   def setValeurs(self):\r
64   #---------------------\r
65   \r
66       # Valeurs par defaut\r
67       if not os.path.isdir(self.rep_user) : os.mkdir(self.rep_user)\r
68       self.initialdir   = self.rep_user\r
69       self.path_doc     = self.rep_user\r
70       self.savedir      = self.rep_user\r
71       self.exec_acrobat = self.rep_user\r
72  \r
73       #Lecture des fichiers utilisateurs\r
74       self.lecture_fichier_ini_standard()\r
75       self.lecture_fichier_ini_utilisateur()\r
76       self.lecture_catalogues()\r
77 \r
78   #--------------------------------------\r
79   def lecture_fichier_ini_standard(self):\r
80   #--------------------------------------\r
81   # Verifie l'existence du fichier "standard"\r
82   # appelle la lecture de ce fichier\r
83       import prefs\r
84       name='prefs_'+prefs.code\r
85       prefsCode=__import__(name)\r
86       self.prefsUser=name+".py"\r
87       for k in self.labels_eficas :\r
88          try :\r
89             valeur=getattr(prefsCode,k)\r
90             setattr(self,k,valeur)\r
91          except :\r
92             pass\r
93       if hasattr(self,'map_path') :\r
94          oldPath=self.map_path\r
95               \r
96 \r
97   #--------------------------------------\r
98   def lecture_fichier_ini_utilisateur(self):\r
99   #--------------------------------------\r
100   # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent\r
101       self.fic_ini_utilisateur = os.path.join(self.rep_user,self.prefsUser)\r
102       if not os.path.isfile(self.fic_ini_utilisateur): return\r
103 \r
104       txt = utils.read_file(self.fic_ini_utilisateur)\r
105       from styles import style\r
106       d=locals()\r
107       try:\r
108          exec txt in d\r
109       except :\r
110          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
111          QMessageBox.critical( None, "Import du fichier de Configuration", \r
112                         "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )\r
113          sys.exit(0)\r
114       for k in self.labels_user :\r
115          try :\r
116             setattr(self,k,d[k])\r
117          except :\r
118             pass\r
119 \r
120 \r
121   #--------------------------------------\r
122   def lecture_catalogues(self):\r
123   #--------------------------------------\r
124       rep_mat=" " # Compatibilite Aster\r
125       if hasattr(self,"catalogues") : return\r
126  \r
127       fic_ini = os.path.join(self.repIni,self.cataFile)\r
128       if not os.path.isfile(fic_ini) :\r
129          QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", \r
130                     "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )\r
131          sys.exit(0)\r
132 \r
133       txt = utils.read_file(fic_ini)\r
134       d=locals()\r
135       try:\r
136          exec txt in d\r
137          self.catalogues=d["catalogues"]\r
138       except :\r
139          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
140          QMessageBox.critical( None, "Import du fichier de Configuration", \r
141                         "Erreur à la lecture du fichier de configuration " + fic_ini )\r
142          sys.exit(0)\r
143 \r
144 \r
145 \r
146   #--------------------------------------\r
147   def save_params(self):\r
148   #--------------------------------------\r
149   # sauvegarde\r
150   # les nouveaux paramètres dans le fichier de configuration utilisateur\r
151   #\r
152       texte=""\r
153       for clef in self.labels_user :\r
154           if hasattr(self,clef):\r
155              valeur=getattr(self,clef)\r
156              texte= texte + clef+"      = " + repr(valeur) +"\n"\r
157       f=open(self.fic_ini_utilisateur,'w+')\r
158       print self.fic_ini_utilisateur\r
159       f.write(texte) \r
160       f.close()\r
161 #\r
162 \r