1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013 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.utils import read_file
35 from Extensions.i18n import tr
37 class CONFIG_BASE(object):
39 #-------------------------------
40 def __init__(self,appli,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.code = appli.code
56 self.salome = appli.salome
57 if self.salome : self.name="editeur_salome.ini"
58 else : self.name="editeur.ini"
61 if sys.platform[0:5]=="linux" :
62 self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)
64 self.rep_user = os.path.join('C:/','.config/Eficas',appli.code)
68 self.setValeursParDefaut()
70 self.lecture_fichier_ini_standard()
71 self.lecture_fichier_ini_integrateur()
72 self.lecture_fichier_ini_utilisateur()
74 #Particularite des schemas MAP
75 if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
77 if self.appli: self.parent=appli.top
78 else: self.parent=None
80 if not os.path.isdir(self.savedir) :
81 if sys.platform[0:5]=="linux" :
82 self.savedir=os.environ['HOME']
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 if sys.platform[0:5]=="linux" :
97 self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
99 self.savedir = os.path.abspath('C:/')
100 self.mode_nouv_commande='initial'
102 self.closeAutreCommande = False
103 self.closeFrameRechercheCommande = False
104 self.closeEntete = False
105 self.closeArbre = False
106 self.force_langue=False
107 self.suiteTelemac=False
108 self.nombreDeBoutonParLigne=0
109 self.translatorFichier=None
111 self.simpleClic= False
114 #--------------------------------------
115 def lecture_fichier_ini_standard(self):
116 #--------------------------------------
118 name='prefs_'+self.appli.code
119 prefsCode=__import__(name)
120 for k in dir(prefsCode):
121 if (k[0:1] != "__" and k[-1:-2] !='__'):
122 valeur=getattr(prefsCode,k)
123 setattr(self,k,valeur)
127 #--------------------------------------
128 def lecture_fichier_ini_integrateur(self):
129 #--------------------------------------
130 # Verifie l'existence du fichier "standard"
131 # appelle la lecture de ce fichier
132 clef="PREFS_CATA_"+self.code
134 repIntegrateur=os.path.abspath(os.environ[clef])
138 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
139 if not os.path.isfile(fic_ini_integrateur): return
140 txt = read_file(fic_ini_integrateur)
145 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
146 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
148 self.labels_eficas.append('rep_aide')
149 for k in self.labels_eficas :
154 #Glut pour les repertoires materiaux
157 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
161 #--------------------------------------
162 def lecture_fichier_ini_utilisateur(self):
163 #--------------------------------------
164 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
165 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
166 if not os.path.isfile(self.fic_ini_utilisateur): return
168 txt = read_file(self.fic_ini_utilisateur)
173 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
174 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
175 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
176 for k in self.labels_user :
182 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
185 #--------------------------------------
186 def save_params(self):
187 #--------------------------------------
189 # les nouveaux parametres dans le fichier de configuration utilisateur
192 for clef in self.labels_user :
193 if hasattr(self,clef):
194 valeur=getattr(self,clef)
195 texte= texte + clef+" = " + repr(valeur) +"\n"
196 #Glut pour les repertoires materiaux
199 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
200 valeur=getattr(self,k)
201 texte= texte + k+" = " + repr(valeur) +"\n"
203 f=open(self.fic_ini_utilisateur,'w+')