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.
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.
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.
20 # ======================================================================
22 import string,types,os
25 from PyQt4.QtGui import *
26 from PyQt4.QtCore import *
28 from desPlusieursBase import Ui_DPlusBase
29 from qtCommun import QTPanel
30 from qtSaisie import SaisieValeur
31 from politiquesValidation import PolitiquePlusieurs
33 class DPlusBase (Ui_DPlusBase,QDialog):
34 def __init__(self,parent ,modal ) :
35 QDialog.__init__(self,parent)
36 if hasattr(parent,"leLayout"):
37 parent.leLayout.removeWidget(parent.leLayout.widgetActive)
38 parent.leLayout.widgetActive.close()
39 parent.leLayout.addWidget(self)
40 parent.leLayout.widgetActive=self
42 parent.partieDroite=QWidget()
43 parent.leLayout=QGridLayout(parent.partieDroite)
44 parent.leLayout.addWidget(self)
45 parent.addWidget(parent.partieDroite)
46 parent.leLayout.widgetActive=self
48 self.appliEficas=parent.appliEficas
49 self.RepIcon=parent.appliEficas.RepIcon
50 icon = QIcon(self.RepIcon+"/arrow_left.png")
51 self.BAjout1Val.setIcon(icon)
52 icon2 = QIcon(self.RepIcon+"/arrow_right.png")
53 self.BSup1Val.setIcon(icon2)
57 class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
59 Classe définissant le panel associé aux mots-clés qui demandent
60 à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
63 def __init__(self,node, parent = None,name = None,fl = 0):
64 #print "MonPlusieursBasePanel"
65 QTPanel.__init__(self,node,parent)
66 DPlusBase.__init__(self,parent,fl)
67 self.politique=PolitiquePlusieurs(node,parent)
69 self.listeValeursCourantes=self.node.item.GetListeValeurs()
70 self.InitCommentaire()
72 self.connecterSignaux()
74 def connecterSignaux(self) :
75 self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
76 self.connect(self.bParam,SIGNAL("clicked()"),self.BParametresPressed)
77 self.connect(self.bImport,SIGNAL("clicked()"),self.BImportPressed)
78 self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
79 self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
80 self.connect(self.LEValeur,SIGNAL("returnPressed()"),self.LEValeurPressed)
81 self.connect(self.BSalome,SIGNAL("clicked()"),self.BSalomePressed)
82 self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
85 def detruitBouton(self):
86 icon3 = QIcon(self.RepIcon+"/image240.png")
87 self.BSalome.setIcon(icon3)
88 mc = self.node.item.get_definition()
90 if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
95 def BuildLBValeurs(self):
96 # redefinit en raison de l heritage par monFonctionPanel
97 SaisieValeur.BuildLBValeurs(self)
99 def BOkPourListePressed(self):
100 self.editor.init_modif()
101 if self.listeValeursCourantes == [] :
102 self.editor.affiche_infos("Aucune Valeur",Qt.red)
104 self.node.item.set_valeur(self.listeValeursCourantes)
105 self.editor.affiche_infos("Valeur Acceptée")
108 def BParametresPressed(self):
109 QTPanel.BParametresPressed(self)
111 def LEValeurPressed(self):
114 def Sup1Valeur(self):
115 index=self.LBValeurs.currentRow()
116 if index < 0 : return
117 if self.LBValeurs.isItemSelected(self.LBValeurs.item(index)) == 0 : return
118 self.LEValeur.setText(self.LBValeurs.item(index).text())
119 self.LBValeurs.takeItem(index)
122 for valeur in self.listeValeursCourantes :
123 if i != index : listeVal.append(valeur)
125 self.LBValeurs.setCurrentItem(self.LBValeurs.item(index -1))
126 self.listeValeursCourantes=listeVal
129 def Ajout1Valeur(self,valeur=None):
131 valeur=str(self.LEValeur.text())
133 liste,validite=SaisieValeur.TraiteLEValeur(self,valeur)
134 if validite == 0 : return
135 if liste ==[] : return
137 indexCourant=self.LBValeurs.currentRow()
138 if ( (self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant )) == 0)
139 and (indexCourant > 0 )):
142 index=self.LBValeurs.currentRow() + 1
145 for valeur in self.listeValeursCourantes :
146 listeVal.append(valeur)
147 validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
148 self.Commentaire.setText(comm2)
150 self.editor.affiche_infos(comm,Qt.red)
152 self.LEValeur.setText(QString(""))
153 l1=self.listeValeursCourantes[:index]
154 l3=self.listeValeursCourantes[index:]
155 for valeur in listeRetour:
156 val=self.politique.GetValeurTexte(valeur)
157 self.LBValeurs.insertItem(index,QString(str(val)))
158 item=self.LBValeurs.item(index)
160 self.LBValeurs.setCurrentItem(item)
162 self.listeValeursCourantes=l1+listeRetour+l3
163 self.editor.affiche_infos("Valeurs Ajoutées")
165 def AjoutNValeur(self,liste) :
167 self.Ajout1Valeur(val)
169 def BImportPressed(self):
170 init=QString( self.editor.CONFIGURATION.savedir)
171 fn = QFileDialog.getOpenFileName(self.node.appliEficas,
172 #self.node.appliEficas.trUtf8('Fichier de données'),
173 QApplication.translate('Eficas','Fichier de donnees',None, QApplication.UnicodeUTF8),
175 self.trUtf8('All Files (*)',))
176 if fn == None : return
178 ulfile = os.path.abspath(unicode(fn))
179 self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0]
181 from monSelectVal import MonSelectVal
182 MonSelectVal(file=fn,parent=self).show()
184 def InitCommentaire(self):
186 mc = self.node.item.get_definition()
187 d_aides = { 'TXM' : 'chaînes de caractères',
192 if not d_aides.has_key(type) :
194 commentaire="Entrez "+str(mc.min)+" valeurs "
196 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs "
199 commentaire="Entrez "+str(mc.min)+" "+d_aides[type]
201 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max) +" " + d_aides[type]
202 aideval=self.node.item.aide()
203 commentaire=commentaire + "\n" + QString.toUtf8(QString(aideval))
204 self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
206 def BSalomePressed(self):
208 self.LEValeur.setText(QString(""))
209 self.Commentaire.setText(QString(""))
210 genea=self.node.item.get_genealogie()
213 if "GROUP_NO" in e: kwType = "GROUP_NO"
214 if "GROUP_MA" in e: kwType = "GROUP_MA"
216 #print "BkwType",kwType
217 selection, commentaire = self.appliEficas.selectGroupFromSalome(kwType,editor=self.editor)
218 if commentaire !="" :
219 self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))
221 if selection == [] : return
222 for geomElt in selection:
224 monTexte= monTexte[0:-1]
225 self.LEValeur.setText(QString(monTexte))
227 def BView2DPressed(self):
228 valeur=self.LEValeur.text()
229 if valeur == QString("") :
230 if self.LBValeurs.currentItem() != None :
231 valeur=self.LBValeurs.currentItem().text()
232 if valeur == QString("") : return
235 ok, msgError = self.appliEficas.displayShape(valeur)
237 self.editor.affiche_infos(msgError,Qt.red)