]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/configuration.py
Salome HOME
chgt copyright
[tools/eficas.git] / InterfaceQT4 / configuration.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21     Ce module sert pour charger les parametres de configuration d'EFICAS
22 """
23 # Modules Python
24 from __future__ import absolute_import
25 try :
26    from builtins import str
27    from builtins import range
28    from builtins import object
29 except : pass
30
31 import os, sys,  types, re
32 import traceback
33 from PyQt5.QtWidgets import QMessageBox
34 from  Editeur.Eficas_utils import read_file
35 from Extensions.i18n import tr
36
37
38 class configBase(object):
39
40   #-------------------------------
41   def __init__(self,appli,repIni):
42   #-------------------------------
43
44   # Classe de base permettant de lire, afficher
45   # et sauvegarder les fichiers utilisateurs 
46   # On a deux directories : la directory generale (Repertoire d install + Nom du code
47   #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
48   # et la directorie de l utilisateur 
49   #                       HOME/.Eficas_Openturns
50   # Le fichier prefs.py va etre lu dans la directory generale 
51   #         puis surcharge eventuellement par celui contenu dans ${PREFS_CATA_$CODE} 
52   #         par celui de l utilisateur
53   # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
54   # dans le fichier general sinon
55
56       self.appli   = appli  
57       self.code    = appli.code
58       self.salome  = appli.salome
59       if self.salome : self.name="editeur_salome.ini"
60       else           : self.name="editeur.ini"
61       self.rep_mat = None
62       self.repIni  = repIni
63      
64       if self.code == None : self.code=''
65       self.rep_user   = os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
66       #if sys.platform[0:5]=="linux" :
67               #self.rep_user   = os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
68       #else :
69       #        self.rep_user   = os.path.join('C:/','.config/Eficas',self.code)
70
71
72       self.setValeursParDefaut()
73       
74       if self.code != '' :
75          self.lectureFichierIniStandard()
76          self.lectureFichierIniIntegrateur()
77          self.lectureFichierIniUtilisateur()
78
79       if self.boutonDsMenuBar:
80          self.closeAutreCommande = True
81          self.closeFrameRechercheCommande = True
82
83       #Particularite des schemas MAP
84       if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
85
86       #if self.appli: self.parent=appli.top
87       #else:         self.parent=None
88
89       if not os.path.isdir(self.savedir) :
90         self.savedir=os.path.expanduser("~")
91         #if sys.platform[0:5]=="linux" :
92           #self.savedir=os.environ['HOME']
93         #else:
94         #  self.savedir='C:/'
95       
96
97
98   def setValeursParDefaut(self):
99   #-----------------------------
100   
101       # Valeurs par defaut
102       if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user)
103       self.path_doc     = os.path.abspath(os.path.join(self.repIni,'..','Doc'))
104       self.exec_acrobat = 'acroread'
105       nomDir="Eficas_"+self.code
106       self.savedir   = os.path.abspath(os.path.join(os.path.expanduser("~"),nomDir))
107       #if sys.platform[0:5]=="linux" :
108         #self.savedir   = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
109       #else:
110       #  self.savedir = os.path.abspath('C:/')
111       self.modeNouvCommande='initial'
112       self.affiche="alpha"
113       self.closeAutreCommande = False
114       self.closeFrameRechercheCommande = False
115       self.closeEntete = False
116       self.closeArbre = False
117       self.force_langue=False
118       self.suiteTelemac=False
119       self.nombreDeBoutonParLigne=0
120       self.translatorFichier=None
121       self.dicoImages= {}
122       self.dicoIcones= {}
123       self.afficheCommandesPliees = True
124       self.simpleClic= False
125       self.afficheOptionnelVide=False
126       self.afficheListesPliees=True
127       self.boutonDsMenuBar=False
128       self.ficIcones=None
129       self.repIcones=None
130       self.differencieSiDefaut=False
131       self.typeDeCata='Python'
132       self.dumpXSD=False
133       self.withXSD=False
134       self.afficheIhm=True
135       self.closeParenthese=False
136       self.enleverActionStructures=False
137       self.enleverParametres=False
138       self.enleverSupprimer=False
139       self.ajoutExecution=False
140       self.utilParExtensions=False
141       self.rendVisiblesLesCaches=False
142
143
144
145  
146   #--------------------------------------
147   def lectureFichierIniStandard(self):
148   #--------------------------------------
149
150       name='prefs_'+self.appli.code
151       prefsCode=__import__(name)
152       for k in dir(prefsCode):
153           if (k[0:1] != "__" and k[-1:-2] !='__'):
154              valeur=getattr(prefsCode,k)
155              setattr(self,k,valeur)
156        
157
158
159   #--------------------------------------
160   def lectureFichierIniIntegrateur(self):
161   #--------------------------------------
162   # Verifie l'existence du fichier "standard"
163   # appelle la lecture de ce fichier
164       clef="PREFS_CATA_"+self.code
165       try :
166         repIntegrateur=os.path.abspath(os.environ[clef])
167       except :
168         return
169       
170       fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
171       if not os.path.isfile(fic_ini_integrateur): return
172       txt = read_file(fic_ini_integrateur)
173       d=locals()
174       try:
175          exec(txt, d)
176       except :
177          QMessageBox.critical( None, tr("Import du fichier de Configuration"), 
178                         tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
179          return
180       self.labels_eficas.append('rep_aide')
181       for k in self.labels_eficas :
182          try :
183             setattr(self,k,d[k])
184          except :
185             pass
186       #Glut pour les repertoires materiaux
187       #et pour la doc
188       for k in d :
189           if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
190              setattr(self,k,d[k])
191
192
193   #--------------------------------------
194   def lectureFichierIniUtilisateur(self):
195   #--------------------------------------
196   # Surcharge les parametres standards par les parametres utilisateur s'ils existent
197       self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
198       if not os.path.isfile(self.fic_ini_utilisateur): return
199
200       txt = read_file(self.fic_ini_utilisateur)
201       d=locals()
202       try:
203          exec(txt, d)
204       except :
205          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
206          QMessageBox.critical( None, tr("Import du fichier de Configuration"), 
207                         tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
208       for k in self.labels_user :
209          try :
210             setattr(self,k,d[k])
211          except :
212             pass
213       for k in d :
214           if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
215              setattr(self,k,d[k])
216
217   #--------------------------------------
218   def saveParams(self):
219   #--------------------------------------
220   # sauvegarde
221   # les nouveaux parametres dans le fichier de configuration utilisateur
222   #
223       texte=""
224       for clef in self.labels_user :
225           if hasattr(self,clef):
226              valeur=getattr(self,clef)
227              texte= texte + clef+"      = " + repr(valeur) +"\n"
228       #Glut pour les repertoires materiaux
229       #et pour la doc
230       for k in dir(self):
231           if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
232              valeur=getattr(self,k)
233              texte= texte + k+" = " + repr(valeur) +"\n"
234
235       f=open(self.fic_ini_utilisateur,'w+')
236       f.write(texte) 
237       f.close()
238 #
239
240