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 #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)
68 # self.rep_user = os.path.join('C:/','.config/Eficas',self.code)
71 self.setValeursParDefaut()
74 self.lectureFichierIniStandard()
75 self.lectureFichierIniIntegrateur()
76 self.lectureFichierIniUtilisateur()
78 if self.boutonDsMenuBar:
79 self.closeAutreCommande = True
80 self.closeFrameRechercheCommande = True
82 #Particularite des schemas MAP
83 if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
85 #if self.appliEficas: self.parent=appliEficas.top
86 #else: self.parent=None
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("~")
97 def setValeursParDefaut(self):
98 #-----------------------------
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)
109 # self.savedir = os.path.abspath('C:/')
110 self.modeNouvCommande='initial'
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
123 self.afficheCommandesPliees = True
124 self.afficheFirstPlies = False
125 self.simpleClic = False
126 self.afficheOptionnelVide=False
127 self.afficheListesPliees=True
128 self.boutonDsMenuBar=False
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
152 #--------------------------------------
153 def lectureFichierIniStandard(self):
154 #--------------------------------------
156 name='prefs_'+self.appliEficas.code
158 prefsCode=__import__(name)
161 print ('pas de fichier de prefs')
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)
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
177 repIntegrateur=os.path.abspath(os.environ[clef])
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)
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)))
193 print("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
195 self.labels_eficas.append('rep_aide')
196 for k in self.labels_eficas :
201 #Glut pour les repertoires materiaux
204 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
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
215 txt = read_file(self.fic_ini_utilisateur)
220 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
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)))
226 print ("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur))
227 for k in self.labels_user :
233 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
236 #--------------------------------------
237 def saveParams(self):
238 #--------------------------------------
240 # les nouveaux parametres dans le fichier de configuration utilisateur
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
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"
254 f=open(self.fic_ini_utilisateur,'w+')
260 def makeConfig(appliEficas,rep):
261 return configBase(appliEficas,rep)