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
112 self.afficheOptionnelVide=False
115 #--------------------------------------
116 def lecture_fichier_ini_standard(self):
117 #--------------------------------------
119 name='prefs_'+self.appli.code
120 prefsCode=__import__(name)
121 for k in dir(prefsCode):
122 if (k[0:1] != "__" and k[-1:-2] !='__'):
123 valeur=getattr(prefsCode,k)
124 setattr(self,k,valeur)
128 #--------------------------------------
129 def lecture_fichier_ini_integrateur(self):
130 #--------------------------------------
131 # Verifie l'existence du fichier "standard"
132 # appelle la lecture de ce fichier
133 clef="PREFS_CATA_"+self.code
135 repIntegrateur=os.path.abspath(os.environ[clef])
139 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
140 if not os.path.isfile(fic_ini_integrateur): return
141 txt = read_file(fic_ini_integrateur)
146 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
147 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
149 self.labels_eficas.append('rep_aide')
150 for k in self.labels_eficas :
155 #Glut pour les repertoires materiaux
158 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
162 #--------------------------------------
163 def lecture_fichier_ini_utilisateur(self):
164 #--------------------------------------
165 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
166 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
167 if not os.path.isfile(self.fic_ini_utilisateur): return
169 txt = read_file(self.fic_ini_utilisateur)
174 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
175 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
176 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
177 for k in self.labels_user :
183 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
186 #--------------------------------------
187 def save_params(self):
188 #--------------------------------------
190 # les nouveaux parametres dans le fichier de configuration utilisateur
193 for clef in self.labels_user :
194 if hasattr(self,clef):
195 valeur=getattr(self,clef)
196 texte= texte + clef+" = " + repr(valeur) +"\n"
197 #Glut pour les repertoires materiaux
200 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
201 valeur=getattr(self,k)
202 texte= texte + k+" = " + repr(valeur) +"\n"
204 f=open(self.fic_ini_utilisateur,'w+')