]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monIncludePanel.py
Salome HOME
142f9d3daf39affbdae8f0a2d362d31915376793
[tools/eficas.git] / InterfaceQT4 / monIncludePanel.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 # Modules Python
22 # Modules Eficas
23
24 import os,traceback,sys
25 from qtCommun import QTPanel
26 from qtCommun import QTPanelTBW1
27 from qtCommun import QTPanelTBW2
28 from qtCommun import QTPanelTBW3
29 from PyQt4.QtGui import *
30 from PyQt4.QtCore import *
31
32 from  desInclude import Ui_DInc1
33 import convert
34
35 class DInc(Ui_DInc1,QDialog):
36    def __init__(self,parent ,modal ) :
37        QDialog.__init__(self,parent)
38        if hasattr(parent,"leLayout"):
39           parent.leLayout.removeWidget(parent.leLayout.widgetActive)
40           parent.leLayout.widgetActive.close()
41           parent.leLayout.addWidget(self)
42           parent.leLayout.widgetActive=self
43        else:
44           parent.partieDroite=QWidget()
45           parent.leLayout=QGridLayout(parent.partieDroite)
46           parent.leLayout.addWidget(self)
47           parent.addWidget(parent.partieDroite)
48           parent.leLayout.widgetActive=self
49        self.setupUi(self)
50
51
52
53 # Import des panels
54
55 class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
56   """
57   Classe définissant le panel associé aux mots-clés qui demandent
58   à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
59   discrètes
60   """
61   def __init__(self,node, parent = None,name = None,fl = 0):
62         #print "MonIncludePanel"
63         DInc.__init__(self,parent,fl)
64         QTPanel.__init__(self,node,parent)
65         QTPanelTBW2.__init__(self,node,parent)
66         QTPanelTBW1.__init__(self,node,parent)
67         self.connecterSignaux()
68
69         self.node=node
70         if not hasattr(self.node.item.object,'fichier_unite'):
71            self.pageBad()
72         else:
73            self.pageOk()
74
75   def pageOk(self):
76         self.TWChoix.removeTab(3)
77         self.TWChoix.setCurrentIndex(2)
78         self.LENomFichier.setText(self.node.item.object.fichier_ini)
79
80
81   def pageBad(self) :
82         self.TWChoix.removeTab(2)
83         self.TWChoix.setCurrentIndex(2)
84
85   def BBrowsePressed(self):
86       self.node.makeEdit()
87
88   def BOkIncPressed (self):
89       self.LENomFichReturnPressed()
90
91   def LENomFichReturnPressed(self):
92         nomFichier=str(self.LENomFichier.text())
93         if not os.path.isfile(nomFichier) :
94            commentaire = "Fichier introuvable"
95            self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
96            self.editor.affiche_infos(commentaire,Qt.red)
97            return
98
99         text=self.convert_file(nomFichier)
100
101         # Si probleme a la lecture-conversion on arrete le traitement
102         if not text:
103            return
104
105         self.editor.init_modif()
106
107         try :
108            self.node.item.object.change_fichier_init(nomFichier,text)
109            commentaire = "Fichier modifie  : " + self.node.item.get_nom()
110            self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
111            self.editor.affiche_infos(commentaire)
112         except: 
113            l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
114            QMessageBox.critical( self, "Erreur fatale au chargement du fichier Include", l[0])
115            commentaire = "Fichier invalide" 
116            self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
117            self.editor.affiche_infos(commentaire,Qt.red)
118            return
119
120
121   def convert_file(self,file):
122        """
123          Methode pour convertir le fichier file dans le format courant
124        """
125        format=self.editor.format
126        text=None
127        if convert.plugins.has_key(format):
128           # Le convertisseur existe on l'utilise
129           p=convert.plugins[format]()
130           p.readfile(file)
131           text=p.convert('execnoparseur')
132        else :
133            commentaire = "Impossible de lire le fichier : Format inconnu"
134            self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
135            self.editor.affiche_infos(commentaire,Qt.red)
136        return text
137
138
139   def BChangeFilePressed(self):
140       userDir=self.node.appliEficas.CONFIGURATION.savedir
141       fn = QFileDialog.getOpenFileName(self.node.appliEficas,
142                 self.node.appliEficas.trUtf8('Fichier Include'),
143                 userDir,
144                 self.node.appliEficas.trUtf8('All Files (*);;''JDC Files (*.comm);;'))
145
146       if fn.isNull():
147          return
148
149       fn = os.path.abspath((unicode(fn)))
150       ulfile = os.path.abspath(unicode(fn))
151       self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
152       self.LENomFichier.setText(fn)
153       self.LENomFichReturnPressed()
154
155   def connecterSignaux(self):
156         self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
157         self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
158         self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
159         self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
160         self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommandChanged)
161         self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommandChanged)
162         self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed)
163         self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
164         try :
165            self.connect(self.BChangeFile,SIGNAL("clicked()"),self.BChangeFilePressed)
166            self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed)
167         except :
168            pass
169
170
171   def BOkPressed(self):
172       QTPanel.BOkPressed(self)
173
174   def BNextPressed(self):
175       QTPanelTBW2.BNextPressed(self)
176
177   def BuildTabCommandChanged(self):
178       QTPanelTBW2.BuildLBNouvCommandChanged(self)
179
180   def LEFiltreTextChanged(self):
181       QTPanelTBW2.LEFiltreTextChanged(self)
182
183   def LEfiltreReturnPressed(self):
184       QTPanelTBW2.LEfiltreReturnPressed(self)
185
186   def LBNouvCommandeClicked(self):
187       QTPanelTBW2.LBNouvCommandeClicked(self)
188
189   def LENomConceptReturnPressed(self):
190       QTPanelTBW3.LENomConceptReturnPressed(self)
191