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.Eficas_utils import read_file
35 from Extensions.i18n import tr
38 class CONFIG_BASE(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
56 self.code = appli.code
57 self.salome = appli.salome
58 if self.salome : self.name="editeur_salome.ini"
59 else : self.name="editeur.ini"
62 if sys.platform[0:5]=="linux" :
63 self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)
65 self.rep_user = os.path.join('C:/','.config/Eficas',appli.code)
69 self.setValeursParDefaut()
71 self.lecture_fichier_ini_standard()
72 self.lecture_fichier_ini_integrateur()
73 self.lecture_fichier_ini_utilisateur()
75 #Particularite des schemas MAP
76 if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
78 if self.appli: self.parent=appli.top
79 else: self.parent=None
81 if not os.path.isdir(self.savedir) :
82 if sys.platform[0:5]=="linux" :
83 self.savedir=os.environ['HOME']
89 def setValeursParDefaut(self):
90 #-----------------------------
93 if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user)
94 self.path_doc = os.path.abspath(os.path.join(self.repIni,'..','Doc'))
95 self.exec_acrobat = 'acroread'
96 nomDir="Eficas_"+self.code
97 if sys.platform[0:5]=="linux" :
98 self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
100 self.savedir = os.path.abspath('C:/')
101 self.mode_nouv_commande='initial'
103 self.closeAutreCommande = False
104 self.closeFrameRechercheCommande = False
105 self.closeEntete = False
106 self.closeArbre = False
107 self.force_langue=False
108 self.suiteTelemac=False
109 self.nombreDeBoutonParLigne=0
110 self.translatorFichier=None
112 self.simpleClic= False
113 self.afficheOptionnelVide=False
116 #--------------------------------------
117 def lecture_fichier_ini_standard(self):
118 #--------------------------------------
120 name='prefs_'+self.appli.code
121 prefsCode=__import__(name)
122 for k in dir(prefsCode):
123 if (k[0:1] != "__" and k[-1:-2] !='__'):
124 valeur=getattr(prefsCode,k)
125 setattr(self,k,valeur)
129 #--------------------------------------
130 def lecture_fichier_ini_integrateur(self):
131 #--------------------------------------
132 # Verifie l'existence du fichier "standard"
133 # appelle la lecture de ce fichier
134 clef="PREFS_CATA_"+self.code
136 repIntegrateur=os.path.abspath(os.environ[clef])
140 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
141 if not os.path.isfile(fic_ini_integrateur): return
142 txt = read_file(fic_ini_integrateur)
147 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
148 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
150 self.labels_eficas.append('rep_aide')
151 for k in self.labels_eficas :
156 #Glut pour les repertoires materiaux
159 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
163 #--------------------------------------
164 def lecture_fichier_ini_utilisateur(self):
165 #--------------------------------------
166 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
167 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
168 if not os.path.isfile(self.fic_ini_utilisateur): return
170 txt = read_file(self.fic_ini_utilisateur)
175 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
176 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
177 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
178 for k in self.labels_user :
184 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
187 #--------------------------------------
188 def save_params(self):
189 #--------------------------------------
191 # les nouveaux parametres dans le fichier de configuration utilisateur
194 for clef in self.labels_user :
195 if hasattr(self,clef):
196 valeur=getattr(self,clef)
197 texte= texte + clef+" = " + repr(valeur) +"\n"
198 #Glut pour les repertoires materiaux
201 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
202 valeur=getattr(self,k)
203 texte= texte + k+" = " + repr(valeur) +"\n"
205 f=open(self.fic_ini_utilisateur,'w+')