]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/configuration.py
Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[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  Editeur.Eficas_utils import read_file
34 from Extensions.i18n import tr
35
36
37 class configBase(object):
38
39     #-------------------------------
40     def __init__(self,appliEficas,repIni):
41     #-------------------------------
42
43     # Classe de base permettant de lire, afficher
44     # et sauvegarder les fichiers utilisateurs
45     # On a deux directories : la directory generale (Repertoire d install + Nom du code
46     #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
47     # et la directorie de l utilisateur
48     #                       HOME/.Eficas_Openturns
49     # Le fichier prefs.py va etre lu dans la directory generale
50     #         puis surcharge eventuellement par celui contenu dans ${PREFS_CATA_$CODE}
51     #         par celui de l utilisateur
52     # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
53     # dans le fichier general sinon
54
55         self.appliEficas   = appliEficas
56         self.code    = appliEficas.code
57         self.salome  = appliEficas.salome
58         if self.salome : self.name="editeur_salome.ini"
59         else           : self.name="editeur.ini"
60         self.rep_mat = None
61         self.repIni  = repIni
62
63         if self.code == None : self.code=''
64         #if sys.platform[0:5]=="linux" :
65                 #self.rep_user   = os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
66         self.rep_user   = os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
67         #else :
68         #        self.rep_user   = os.path.join('C:/','.config/Eficas',self.code)
69
70
71         self.setValeursParDefaut()
72
73         if self.code != '' :
74             self.lectureFichierIniStandard()
75             self.lectureFichierIniIntegrateur()
76             self.lectureFichierIniUtilisateur()
77
78         if self.boutonDsMenuBar:
79             self.closeAutreCommande = True
80             self.closeFrameRechercheCommande = True
81
82         #Particularite des schemas MAP
83         if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
84
85         #if self.appliEficas: self.parent=appliEficas.top
86         #else:         self.parent=None
87
88         if not os.path.isdir(self.savedir) :
89             if sys.platform[0:5]=="linux" :
90                 #self.savedir=os.environ['HOME']
91                 self.savedir=os.path.expanduser("~")
92             else:
93                 self.savedir='C:/'
94
95
96
97     def setValeursParDefaut(self):
98     #-----------------------------
99
100         # Valeurs par defaut
101         if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user)
102         self.path_doc     = os.path.abspath(os.path.join(self.repIni,'..','Doc'))
103         self.exec_acrobat = 'acroread'
104         nomDir="Eficas_"+self.code
105         #if sys.platform[0:5]=="linux" :
106             #self.savedir   = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
107         self.savedir=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
108         #else:
109         #  self.savedir = os.path.abspath('C:/')
110         self.modeNouvCommande='initial'
111         self.affiche="alpha"
112         self.closeAutreCommande = False
113         self.closeFrameRechercheCommande = False
114         self.closeFrameRechercheCommandeSurPageDesCommandes = False
115         self.closeEntete = False
116         self.closeArbre = False
117         self.demandeLangue=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.afficheFirstPlies =  False
125         self.simpleClic = False
126         self.afficheOptionnelVide=False
127         self.afficheListesPliees=True
128         self.boutonDsMenuBar=False
129         self.ficIcones=None
130         self.repIcones=None
131         self.differencieSiDefaut=False
132         self.typeDeCata='Python'
133         self.closeParenthese=False
134         self.closeOptionnel=False
135         self.afficheFactOptionnel=False
136         self.enleverActionStructures=False
137         self.enleverPoubellePourCommande=False
138         self.enleverParametres=False
139         self.enleverSupprimer=False
140         self.ajoutExecution=False
141         self.utilParExtensions=[]
142         self.rendVisiblesLesCaches=False
143         self.pasDeMCOptionnels=False
144
145         self.dumpXSD=False
146         self.withXSD=False
147         self.afficheIhm=True
148
149
150
151
152     #--------------------------------------
153     def lectureFichierIniStandard(self):
154     #--------------------------------------
155
156         name='prefs_'+self.appliEficas.code
157         try :
158             prefsCode=__import__(name)
159         except :
160             self.catalogues=[]
161             print ('pas de fichier de prefs')
162             return
163         for k in dir(prefsCode):
164             if (k[0:1] != "__" and k[-1:-2] !='__'):
165                 valeur=getattr(prefsCode,k)
166                 setattr(self,k,valeur)
167
168
169
170     #--------------------------------------
171     def lectureFichierIniIntegrateur(self):
172     #--------------------------------------
173     # Verifie l'existence du fichier "standard"
174     # appelle la lecture de ce fichier
175         clef="PREFS_CATA_"+self.code
176         try :
177             repIntegrateur=os.path.abspath(os.environ[clef])
178         except :
179             return
180
181         fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
182         if not os.path.isfile(fic_ini_integrateur): return
183         txt = read_file(fic_ini_integrateur)
184         d=locals()
185         try:
186             exec(txt, d)
187         except :
188             try :
189                 from PyQt5.QtWidgets import QMessageBox
190                 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
191                              tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
192             except :
193                 print("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
194             return
195         self.labels_eficas.append('rep_aide')
196         for k in self.labels_eficas :
197             try :
198                 setattr(self,k,d[k])
199             except :
200                 pass
201         #Glut pour les repertoires materiaux
202         #et pour la doc
203         for k in d :
204             if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
205                 setattr(self,k,d[k])
206
207
208     #--------------------------------------
209     def lectureFichierIniUtilisateur(self):
210     #--------------------------------------
211     # Surcharge les parametres standards par les parametres utilisateur s'ils existent
212         self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
213         if not os.path.isfile(self.fic_ini_utilisateur): return
214
215         txt = read_file(self.fic_ini_utilisateur)
216         d=locals()
217         try:
218             exec(txt, d)
219         except :
220             l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
221             try :
222                 from PyQt5.QtWidgets import QMessageBox
223                 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
224                              tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
225             except :
226                 print ("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
227         for k in self.labels_user :
228             try :
229                 setattr(self,k,d[k])
230             except :
231                 pass
232         for k in d :
233             if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
234                 setattr(self,k,d[k])
235
236     #--------------------------------------
237     def saveParams(self):
238     #--------------------------------------
239     # sauvegarde
240     # les nouveaux parametres dans le fichier de configuration utilisateur
241     #
242         texte=""
243         for clef in self.labels_user :
244             if hasattr(self,clef):
245                 valeur=getattr(self,clef)
246                 texte= texte + clef+"      = " + repr(valeur) +"\n"
247         #Glut pour les repertoires materiaux
248         #et pour la doc
249         for k in dir(self):
250             if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
251                 valeur=getattr(self,k)
252                 texte= texte + k+" = " + repr(valeur) +"\n"
253
254         f=open(self.fic_ini_utilisateur,'w+')
255         f.write(texte)
256         f.close()
257 #
258
259
260 def makeConfig(appliEficas,rep):
261     return configBase(appliEficas,rep)