Salome HOME
Pour Adao
[tools/eficas.git] / InterfaceQT4 / configuration.py
index f3fa809658de6be2918247fc4643f454b6e28722..a76c76017088ca785407741b481fd629597d5855 100644 (file)
 # -*- coding: utf-8 -*-\r
-#            CONFIGURATION MANAGEMENT OF EDF VERSION\r
-# ======================================================================\r
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG\r
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY\r
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY\r
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR\r
-# (AT YOUR OPTION) ANY LATER VERSION.\r
+# Copyright (C) 2007-2013   EDF R&D\r
 #\r
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT\r
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF\r
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU\r
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.\r
+# This library is free software; you can redistribute it and/or\r
+# modify it under the terms of the GNU Lesser General Public\r
+# License as published by the Free Software Foundation; either\r
+# version 2.1 of the License.\r
 #\r
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE\r
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,\r
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.\r
+# This library is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+# Lesser General Public License for more details.\r
 #\r
+# You should have received a copy of the GNU Lesser General Public\r
+# License along with this library; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
+#\r
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
 #\r
-# ======================================================================\r
 """\r
-    Ce module sert pour charger les paramètres de configuration d'EFICAS\r
+    Ce module sert pour charger les parametres de configuration d'EFICAS\r
 """\r
 # Modules Python\r
 import os, sys, string, types, re\r
 import traceback\r
-from PyQt4.QtGui  import *\r
-from utils import read_file\r
-\r
-# Modules Eficas\r
-from Editeur import utils\r
+from PyQt4.QtGui import QMessageBox\r
+from  Editeur.utils import read_file\r
+from Extensions.i18n import tr\r
 \r
 class CONFIG_BASE:\r
 \r
-  #--------------------------------------\r
-  def __init__(self,appli,repIni,nomDir):\r
-  #--------------------------------------\r
+  #-------------------------------\r
+  def __init__(self,appli,repIni):\r
+  #-------------------------------\r
 \r
   # Classe de base permettant de lire, afficher\r
   # et sauvegarder les fichiers utilisateurs \r
-  # On a deux directories : la directory generale (Repertoire d instal + Nom du code\r
+  # On a deux directories : la directory generale (Repertoire d install + Nom du code\r
   #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper\r
   # et la directorie de l utilisateur \r
   #                      HOME/.Eficas_Openturns\r
-  # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement \r
-  # par celui de l utilisateur\r
+  # Le fichier prefs.py va etre lu dans la directory generale \r
+  #         puis surcharge eventuellement par celui contenu dans ${PREFS_CATA_$CODE} \r
+  #         par celui de l utilisateur\r
   # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite\r
   # dans le fichier general sinon\r
       self.appli   = appli  \r
       self.code    = appli.code\r
       self.salome  = appli.salome\r
+      if self.salome : self.name="editeur_salome.ini"\r
+      else           : self.name="editeur.ini"\r
+      self.rep_mat = None\r
       self.repIni  = repIni\r
-      self.REPINI  = repIni\r
-      self.rep_user   = os.path.join(os.environ['HOME'],nomDir)\r
+      self.rep_user   = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)\r
+      self.mode_nouv_commande='initial'\r
      \r
+\r
+      self.setValeursParDefaut()\r
+      \r
+      self.lecture_fichier_ini_standard()\r
+      self.lecture_fichier_ini_integrateur()\r
+      self.lecture_fichier_ini_utilisateur()\r
+\r
+      #Particularite des schemas MAP\r
+      if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)\r
+\r
       if self.appli: \r
          self.parent=appli.top\r
-         self.appli.mode_nouv_commande='initial'\r
+         self.appli.mode_nouv_commande= self.mode_nouv_commande\r
       else:         self.parent=None\r
+      if not os.path.isdir(self.savedir) : self.savedir=os.environ['HOME']\r
+      \r
 \r
 \r
-\r
-  def setValeurs(self):\r
-  #---------------------\r
+  def setValeursParDefaut(self):\r
+  #-----------------------------\r
   \r
       # Valeurs par defaut\r
-      if not os.path.isdir(self.rep_user) : os.mkdir(self.rep_user)\r
-      self.initialdir   = self.rep_user\r
-      self.path_doc     = self.rep_user\r
-      self.savedir      = self.rep_user\r
-      self.exec_acrobat = self.rep_user\r
+      if not os.path.isdir(self.rep_user) : os.makedirs(self.rep_user)\r
+      self.path_doc     = os.path.abspath(os.path.join(self.repIni,'..','Doc'))\r
+      self.exec_acrobat = 'acroread'\r
+      nomDir="Eficas_"+self.code\r
+      self.savedir   = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))\r
  \r
-      #Lecture des fichiers utilisateurs\r
-      self.lecture_fichier_ini_standard()\r
-      self.lecture_fichier_ini_utilisateur()\r
-      self.lecture_catalogues()\r
-\r
   #--------------------------------------\r
   def lecture_fichier_ini_standard(self):\r
   #--------------------------------------\r
-  # Verifie l'existence du fichier "standard"\r
-  # appelle la lecture de ce fichier\r
-      import prefs\r
-      name='prefs_'+prefs.code\r
+\r
+      name='prefs_'+self.appli.code\r
       prefsCode=__import__(name)\r
-      self.prefsUser=name+".py"\r
-      for k in self.labels_eficas :\r
-         try :\r
-            valeur=getattr(prefsCode,k)\r
-            setattr(self,k,valeur)\r
-         except :\r
-            pass\r
-      if hasattr(self,'map_path') :\r
-         oldPath=self.map_path\r
-              \r
+      for k in dir(prefsCode):\r
+          if (k[0:1] != "__" and k[-1:-2] !='__'):\r
+             valeur=getattr(prefsCode,k)\r
+             setattr(self,k,valeur)\r
+       \r
+\r
 \r
   #--------------------------------------\r
-  def lecture_fichier_ini_utilisateur(self):\r
+  def lecture_fichier_ini_integrateur(self):\r
   #--------------------------------------\r
-  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent\r
-      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.prefsUser)\r
-      if not os.path.isfile(self.fic_ini_utilisateur): return\r
-\r
-      txt = utils.read_file(self.fic_ini_utilisateur)\r
-      from styles import style\r
+  # Verifie l'existence du fichier "standard"\r
+  # appelle la lecture de ce fichier\r
+      clef="PREFS_CATA_"+self.code\r
+      try :\r
+        repIntegrateur=os.path.abspath(os.environ[clef])\r
+      except :\r
+        return\r
+      \r
+      fic_ini_integrateur=os.path.join(repIntegrateur,self.name)\r
+      if not os.path.isfile(fic_ini_integrateur): return\r
+      txt = read_file(fic_ini_integrateur)\r
       d=locals()\r
       try:\r
          exec txt in d\r
       except :\r
-         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
-         QMessageBox.critical( None, "Import du fichier de Configuration", \r
-                       "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )\r
-         sys.exit(0)\r
-      for k in self.labels_user :\r
+         QMessageBox.critical( None, tr("Import du fichier de Configuration"), \r
+                       tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))\r
+         return\r
+      self.labels_eficas.append('rep_aide')\r
+      for k in self.labels_eficas :\r
          try :\r
             setattr(self,k,d[k])\r
          except :\r
             pass\r
+      #Glut pour les repertoires materiaux\r
+      #et pour la doc\r
+      for k in d.keys() :\r
+          if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):\r
+             setattr(self,k,d[k])\r
 \r
 \r
   #--------------------------------------\r
-  def lecture_catalogues(self):\r
+  def lecture_fichier_ini_utilisateur(self):\r
   #--------------------------------------\r
-      rep_mat=" " # Compatibilite Aster\r
-      if hasattr(self,"catalogues") : return\r
\r
-      fic_ini = os.path.join(self.repIni,self.cataFile)\r
-      if not os.path.isfile(fic_ini) :\r
-         QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", \r
-                   "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )\r
-         sys.exit(0)\r
+  # Surcharge les parametres standards par les parametres utilisateur s'ils existent\r
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)\r
+      if not os.path.isfile(self.fic_ini_utilisateur): return\r
 \r
-      txt = utils.read_file(fic_ini)\r
+      txt = read_file(self.fic_ini_utilisateur)\r
       d=locals()\r
       try:\r
          exec txt in d\r
-         self.catalogues=d["catalogues"]\r
       except :\r
          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])\r
-         QMessageBox.critical( None, "Import du fichier de Configuration", \r
-                       "Erreur à la lecture du fichier de configuration " + fic_ini )\r
-         sys.exit(0)\r
-\r
-\r
+         QMessageBox.critical( None, tr("Import du fichier de Configuration"), \r
+                       tr("Erreur a la lecture du fichier de configuration %s " , str(fic_ini_integrateur)))\r
+      for k in self.labels_user :\r
+         try :\r
+            setattr(self,k,d[k])\r
+         except :\r
+            pass\r
+      for k in d.keys() :\r
+          if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):\r
+             setattr(self,k,d[k])\r
 \r
   #--------------------------------------\r
   def save_params(self):\r
   #--------------------------------------\r
   # sauvegarde\r
-  # les nouveaux paramètres dans le fichier de configuration utilisateur\r
+  # les nouveaux parametres dans le fichier de configuration utilisateur\r
   #\r
       texte=""\r
       for clef in self.labels_user :\r
           if hasattr(self,clef):\r
              valeur=getattr(self,clef)\r
              texte= texte + clef+"     = " + repr(valeur) +"\n"\r
+      #Glut pour les repertoires materiaux\r
+      #et pour la doc\r
+      for k in dir(self):\r
+          if (k[0:8]=="rep_mat_") or (k[0:8]=="rep_doc_"):\r
+             valeur=getattr(self,k)\r
+             texte= texte + k+"        = " + repr(valeur) +"\n"\r
+\r
       f=open(self.fic_ini_utilisateur,'w+')\r
-      print self.fic_ini_utilisateur\r
       f.write(texte) \r
       f.close()\r
 #\r