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 PyQt5.QtWidgets import QMessageBox
34 from Editeur.Eficas_utils import read_file
35 from Extensions.i18n import tr
38 class configBase(object):
40 #-------------------------------
41 def __init__(self,appli,repIni):
42 #-------------------------------
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
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"
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)
69 # self.rep_user = os.path.join('C:/','.config/Eficas',self.code)
72 self.setValeursParDefaut()
75 self.lectureFichierIniStandard()
76 self.lectureFichierIniIntegrateur()
77 self.lectureFichierIniUtilisateur()
79 if self.boutonDsMenuBar:
80 self.closeAutreCommande = True
81 self.closeFrameRechercheCommande = True
83 #Particularite des schemas MAP
84 if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
86 #if self.appli: self.parent=appli.top
87 #else: self.parent=None
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']
98 def setValeursParDefaut(self):
99 #-----------------------------
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))
110 # self.savedir = os.path.abspath('C:/')
111 self.modeNouvCommande='initial'
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
123 self.afficheCommandesPliees = True
124 self.simpleClic= False
125 self.afficheOptionnelVide=False
126 self.afficheListesPliees=True
127 self.boutonDsMenuBar=False
130 self.differencieSiDefaut=False
131 self.typeDeCata='Python'
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
146 #--------------------------------------
147 def lectureFichierIniStandard(self):
148 #--------------------------------------
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)
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
166 repIntegrateur=os.path.abspath(os.environ[clef])
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)
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)))
180 self.labels_eficas.append('rep_aide')
181 for k in self.labels_eficas :
186 #Glut pour les repertoires materiaux
189 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
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
200 txt = read_file(self.fic_ini_utilisateur)
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 :
214 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
217 #--------------------------------------
218 def saveParams(self):
219 #--------------------------------------
221 # les nouveaux parametres dans le fichier de configuration utilisateur
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
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"
235 f=open(self.fic_ini_utilisateur,'w+')