1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021 EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 Ce module sert pour charger les parametres de configuration d'EFICAS
24 from __future__ import absolute_import
26 from builtins import str
27 from builtins import range
28 from builtins import object
31 import os, sys, types, re
33 from Editeur.Eficas_utils import read_file
34 from Extensions.i18n import tr
37 class configBase(object):
39 #-------------------------------
40 def __init__(self,appliEficas,repIni):
41 #-------------------------------
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
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"
63 if self.code == None : self.code=''
64 self.rep_user = os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
66 # self.rep_user = os.path.join('C:/','.config/Eficas',self.code)
69 self.setValeursParDefaut()
72 self.lectureFichierIniStandard()
73 self.lectureFichierIniIntegrateur()
74 self.lectureFichierIniUtilisateur()
76 if self.boutonDsMenuBar:
77 self.closeAutreCommande = True
78 self.closeFrameRechercheCommande = True
80 #Particularite des schemas MAP
81 if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
83 if not os.path.isdir(self.savedir) :
84 self.savedir=os.path.join(os.path.expanduser("~"),'.config/Eficas',self.code)
88 def setValeursParDefaut(self):
89 #-----------------------------
92 if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user)
93 self.path_doc = os.path.abspath(os.path.join(self.repIni,'..','Doc'))
94 self.exec_acrobat = 'acroread'
95 nomDir="Eficas_"+self.code
96 self.savedir = os.path.abspath(os.path.join(os.path.expanduser("~"),nomDir))
97 #if sys.platform[0:5]=="linux" :
98 #self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
100 # self.savedir = os.path.abspath('C:/')
101 self.modeNouvCommande='initial'
103 self.closeAutreCommande = False
104 self.closeFrameRechercheCommande = False
105 self.closeFrameRechercheCommandeSurPageDesCommandes = False
106 self.closeEntete = False
107 self.closeArbre = False
108 self.demandeLangue=False
109 self.suiteTelemac=False
110 self.nombreDeBoutonParLigne=0
111 self.translatorFichier=None
114 self.afficheCommandesPliees = True
115 self.afficheFirstPlies = False
116 self.simpleClic = False
117 self.afficheOptionnelVide=False
118 self.afficheListesPliees=True
119 self.boutonDsMenuBar=False
122 self.differencieSiDefaut=False
123 self.typeDeCata='Python'
124 self.closeParenthese=False
125 self.closeOptionnel=False
126 self.afficheFactOptionnel=False
127 self.enleverActionStructures=False
128 self.enleverPoubellePourCommande=False
129 self.enleverParametres=False
130 self.enleverSupprimer=False
131 self.ajoutExecution=False
132 self.utilParExtensions=[]
133 self.rendVisiblesLesCaches=False
134 self.pasDeMCOptionnels=False
143 #--------------------------------------
144 def lectureFichierIniStandard(self):
145 #--------------------------------------
147 name='prefs_'+self.appliEficas.code
149 prefsCode=__import__(name)
152 print ('pas de fichier de prefs')
154 for k in dir(prefsCode):
155 if (k[0:1] != "__" and k[-1:-2] !='__'):
156 valeur=getattr(prefsCode,k)
157 setattr(self,k,valeur)
161 #--------------------------------------
162 def lectureFichierIniIntegrateur(self):
163 #--------------------------------------
164 # Verifie l'existence du fichier "standard"
165 # appelle la lecture de ce fichier
166 clef="PREFS_CATA_"+self.code
168 repIntegrateur=os.path.abspath(os.environ[clef])
172 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
173 if not os.path.isfile(fic_ini_integrateur): return
174 txt = read_file(fic_ini_integrateur)
180 from PyQt5.QtWidgets import QMessageBox
181 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
182 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
184 print("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
186 self.labels_eficas.append('rep_aide')
187 for k in self.labels_eficas :
192 #Glut pour les repertoires materiaux
195 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
199 #--------------------------------------
200 def lectureFichierIniUtilisateur(self):
201 #--------------------------------------
202 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
203 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
204 if not os.path.isfile(self.fic_ini_utilisateur): return
206 txt = read_file(self.fic_ini_utilisateur)
211 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
213 from PyQt5.QtWidgets import QMessageBox
214 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
215 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
217 print ("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
218 for k in self.labels_user :
224 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
227 #--------------------------------------
228 def saveParams(self):
229 #--------------------------------------
231 # les nouveaux parametres dans le fichier de configuration utilisateur
234 for clef in self.labels_user :
235 if hasattr(self,clef):
236 valeur=getattr(self,clef)
237 texte= texte + clef+" = " + repr(valeur) +"\n"
238 #Glut pour les repertoires materiaux
241 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
242 valeur=getattr(self,k)
243 texte= texte + k+" = " + repr(valeur) +"\n"
245 f=open(self.fic_ini_utilisateur,'w+')
251 def makeConfig(appliEficas,rep):
252 return configBase(appliEficas,rep)