Salome HOME
sauve du 9 mai
[tools/eficas.git] / InterfaceQT4 / monChoixCode.py
index 0a81b985110277dcc93049ed3242da05e78d297c..34ef7c28446c3324d642384ba6f593b41274dd6e 100644 (file)
@@ -1,31 +1,35 @@
 # -*- coding: utf-8 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
+# Copyright (C) 2007-2013   EDF R&D
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
 #
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-# ======================================================================
 # Modules Python
 # Modules Eficas
 
-import os,sys
+import os,sys,re
 from desChoixCode import Ui_ChoixCode
-from PyQt4.QtGui import * 
-from PyQt4.QtCore import * 
-
+from determine import monEnvQT5
+if monEnvQT5:
+    from PyQt5.QtWidgets import QDialog, QRadioButton
+    from PyQt5.QtGui import QPalette
+    from PyQt5.QtCore import QProcess, QFileInfo, Qt, QSize
+else :
+    from PyQt4.QtGui  import *
+    from PyQt4.QtCore import *
 
     
 # Import des panels
@@ -43,26 +47,79 @@ class MonChoixCode(Ui_ChoixCode,QDialog):
       self.parentAppli=parentAppli
       self.verifieInstall()
       self.code=None
-      self.connect(self.pB_OK,SIGNAL("clicked()"),self.choisitCode)
+      if monEnvQT5:
+         self.pB_OK.clicked.connect(self.choisitCode)
+         self.pB_cancel.clicked.connect(self.sortie)
+      else :
+         self.connect(self.pB_OK,SIGNAL("clicked()"),self.choisitCode)
+         self.connect(self.pB_cancel,SIGNAL("clicked()"),self.sortie)
+
+  def sortie(self):
+      QDialog.reject(self)
 
   def verifieInstall(self):
-      self.groupCodes=QButtonGroup(self)
-      for code in ('Aster','Cuve2dg','Openturns_Study','Openturns_Wrapper','Carmel3D'):
+      self.groupCodes=QButtonGroup(self.groupBox)
+      vars=os.environ.items()
+      listeCode=('Aster','Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','Telemac','ZCracks',)
+      i=1
+      for code in listeCode:
           nom='rB_'+code
-          bouton=getattr(self,nom)
           dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))
-          print dirCode
           try :
              l=os.listdir(dirCode)
+             bouton=QRadioButton(self)
+             bouton.setMinimumSize(QSize(0, 30))
+             bouton.setText(code)
+             bouton.setGeometry(QRect(10,20+30*i, 300, 30))
+             bouton.show()
              self.groupCodes.addButton(bouton)
+             i=i+1
           except :
-             bouton.close()
-          
+             clef="PREFS_CATA_"+code
+             try :
+                repIntegrateur=os.path.abspath(os.environ[clef])
+                l=os.listdir(repIntegrateur)
+                bouton=QRadioButton(self)
+                bouton.setGeometry(QRect(10,20+30*i, 300, 30))
+                bouton.setMinimumSize(QSize(0, 30))
+                bouton.setText(code)
+                bouton.show()
+                i=i+1
+                self.groupCodes.addButton(bouton)
+             except :
+                pass
+      listeCodesIntegrateur=[]
+      for k,v in vars:
+          if re.search('^PREFS_CATA_',k) != None and k[11:] not in listeCode:
+             listeCodesIntegrateur.append(k[11:])
+      for code in listeCodesIntegrateur:
+          try :
+              clef="PREFS_CATA_"+code
+              repIntegrateur=os.path.abspath(os.environ[clef])
+              l=os.listdir(repIntegrateur)
+              bouton=QRadioButton(self)
+              bouton.setGeometry(QRect(10,20+30*i, 300, 30))
+              i=i+1
+              bouton.setMinimumSize(QSize(0, 30))
+              bouton.setText(code)
+              bouton.show()
+              self.groupCodes.addButton(bouton)
+          except :
+              pass
+      self.parentAppli.ListeCode=self.parentAppli.ListeCode+listeCodesIntegrateur
 
   def choisitCode(self):
       bouton=self.groupCodes.checkedButton()
       code=str(bouton.text())
       codeUpper=code.upper()
       self.parentAppli.code=codeUpper
-      sys.path.insert(0,os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)))
+      try :
+          dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))
+          l=os.listdir(dirCode)
+          sys.path.insert(0,dirCode)
+      except :
+          clef="PREFS_CATA_"+code
+          repIntegrateur=os.path.abspath(os.environ[clef])
+          l=os.listdir(repIntegrateur)
+          sys.path.insert(0,repIntegrateur)
       self.close()