1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017 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
114 self.afficheListesPliees=True
117 #--------------------------------------
118 def lecture_fichier_ini_standard(self):
119 #--------------------------------------
121 name='prefs_'+self.appli.code
122 prefsCode=__import__(name)
123 for k in dir(prefsCode):
124 if (k[0:1] != "__" and k[-1:-2] !='__'):
125 valeur=getattr(prefsCode,k)
126 setattr(self,k,valeur)
130 #--------------------------------------
131 def lecture_fichier_ini_integrateur(self):
132 #--------------------------------------
133 # Verifie l'existence du fichier "standard"
134 # appelle la lecture de ce fichier
135 clef="PREFS_CATA_"+self.code
137 repIntegrateur=os.path.abspath(os.environ[clef])
141 fic_ini_integrateur=os.path.join(repIntegrateur,self.name)
142 if not os.path.isfile(fic_ini_integrateur): return
143 txt = read_file(fic_ini_integrateur)
148 QMessageBox.critical( None, tr("Import du fichier de Configuration"),
149 tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))
151 self.labels_eficas.append('rep_aide')
152 for k in self.labels_eficas :
157 #Glut pour les repertoires materiaux
160 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
164 #--------------------------------------
165 def lecture_fichier_ini_utilisateur(self):
166 #--------------------------------------
167 # Surcharge les parametres standards par les parametres utilisateur s'ils existent
168 self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
169 if not os.path.isfile(self.fic_ini_utilisateur): return
171 txt = read_file(self.fic_ini_utilisateur)
176 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
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)))
179 for k in self.labels_user :
185 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
188 #--------------------------------------
189 def save_params(self):
190 #--------------------------------------
192 # les nouveaux parametres dans le fichier de configuration utilisateur
195 for clef in self.labels_user :
196 if hasattr(self,clef):
197 valeur=getattr(self,clef)
198 texte= texte + clef+" = " + repr(valeur) +"\n"
199 #Glut pour les repertoires materiaux
202 if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):
203 valeur=getattr(self,k)
204 texte= texte + k+" = " + repr(valeur) +"\n"
206 f=open(self.fic_ini_utilisateur,'w+')