Salome HOME
Modif V6_4_°
[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.rep_user   = os.path.join(os.environ['HOME'],nomDir)\r
54      \r
55       if self.appli: \r
56          self.parent=appli.top\r
57          self.appli.mode_nouv_commande='initial'\r
58       else:          self.parent=None\r
59 \r
60 \r
61 \r
62   def setValeurs(self):\r
63   #---------------------\r
64   \r
65       # Valeurs par defaut\r
66       if not os.path.isdir(self.rep_user) : os.mkdir(self.rep_user)\r
67       self.initialdir   = self.rep_user\r
68       self.path_doc     = self.rep_user\r
69       self.savedir      = self.rep_user\r
70       self.exec_acrobat = self.rep_user\r
71  \r
72       #Lecture des fichiers utilisateurs\r
73       self.lecture_fichier_ini_standard()\r
74       if hasattr(self,'make_ssCode'):\r
75          self.make_ssCode(self.ssCode)\r
76       self.lecture_fichier_ini_utilisateur()\r
77       self.lecture_catalogues()\r
78 \r
79   #--------------------------------------\r
80   def lecture_fichier_ini_standard(self):\r
81   #--------------------------------------\r
82   # Verifie l'existence du fichier "standard"\r
83   # appelle la lecture de ce fichier\r
84       name='prefs_'+self.appli.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 \r
94   #--------------------------------------\r
95   def lecture_fichier_ini_utilisateur(self):\r
96   #--------------------------------------\r
97   # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent\r
98       self.fic_ini_utilisateur = os.path.join(self.rep_user,self.prefsUser)\r
99       if not os.path.isfile(self.fic_ini_utilisateur): return\r
100 \r
101       txt = utils.read_file(self.fic_ini_utilisateur)\r
102       from styles import style\r
103       d=locals()\r
104       try:\r
105          exec txt in d\r
106       except :\r
107          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
108          QMessageBox.critical( None, "Import du fichier de Configuration", \r
109                         "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )\r
110          sys.exit(0)\r
111       for k in self.labels_user :\r
112          try :\r
113             setattr(self,k,d[k])\r
114          except :\r
115             pass\r
116 \r
117 \r
118   #--------------------------------------\r
119   def lecture_catalogues(self):\r
120   #--------------------------------------\r
121       rep_mat=" " # Compatibilite Aster\r
122       if hasattr(self,"catalogues") : return\r
123  \r
124       fic_ini = os.path.join(self.repIni,self.cataFile)\r
125       if not os.path.isfile(fic_ini) :\r
126          QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", \r
127                     "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )\r
128          sys.exit(0)\r
129 \r
130       txt = utils.read_file(fic_ini)\r
131       d=locals()\r
132       try:\r
133          exec txt in d\r
134          self.catalogues=d["catalogues"]\r
135       except :\r
136          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
137          QMessageBox.critical( None, "Import du fichier de Configuration", \r
138                         "Erreur à la lecture du fichier de configuration " + fic_ini )\r
139          sys.exit(0)\r
140 \r
141 \r
142 \r
143   #--------------------------------------\r
144   def save_params(self):\r
145   #--------------------------------------\r
146   # sauvegarde\r
147   # les nouveaux paramètres dans le fichier de configuration utilisateur\r
148   #\r
149       texte=""\r
150       for clef in self.labels_user :\r
151           if hasattr(self,clef):\r
152              valeur=getattr(self,clef)\r
153              texte= texte + clef+"      = " + repr(valeur) +"\n"\r
154       f=open(self.fic_ini_utilisateur,'w+')\r
155       f.write(texte) \r
156       f.close()\r
157 #\r
158 \r