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
112 #--------------------------------------
113 def lecture_fichier_ini_standard(self):
114 #--------------------------------------
116 name='prefs_'+self.appli.code
117 prefsCode=__import__(name)
118 for k in dir(prefsCode):
119 if (k[0:1] != "__" and k[-1:-2] !='__'):
120 valeur=getattr(prefsCode,k)
121 setattr(self,k,valeur)
125 #--------------------------------------
126 def lecture_fichier_ini_integrateur(self):
127 #--------------------------------------
128 # Verifie l'existence du fichier "standard"
129 # appelle la lecture de ce fichier
130 clef="PREFS_CATA_"+self.code
132 repIntegrateur=os.path.abspath(os.environ[clef])
136 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
137 if not os.path.isfile(fic_ini_integrateur): return
138 txt = read_file(fic_ini_integrateur)
143 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
144 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
146 self.labels_eficas.append('rep_aide')
147 for k in self.labels_eficas :
152 #Glut pour les repertoires materiaux
155 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
159 #--------------------------------------
160 def lecture_fichier_ini_utilisateur(self):
161 #--------------------------------------
162 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
163 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
164 if not os.path.isfile(self.fic_ini_utilisateur): return
166 txt = read_file(self.fic_ini_utilisateur)
171 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
172 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
173 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
174 for k in self.labels_user :
180 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
183 #--------------------------------------
184 def save_params(self):
185 #--------------------------------------
187 # les nouveaux parametres dans le fichier de configuration utilisateur
190 for clef in self.labels_user :
191 if hasattr(self,clef):
192 valeur=getattr(self,clef)
193 texte= texte + clef+" = " + repr(valeur) +"\n"
194 #Glut pour les repertoires materiaux
197 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
198 valeur=getattr(self,k)
199 texte= texte + k+" = " + repr(valeur) +"\n"
201 f=open(self.fic_ini_utilisateur,'w+')