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
51 class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
53 Classe définissant le panel associé aux mots-clés qui demandent
54 à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
57 def __init__(self,node, parent = None,name = None,fl = 0):
58 #print "MonPlusieursBasePanel"
59 QTPanel.__init__(self,node,parent)
60 DPlusBase.__init__(self,parent,fl)
61 self.politique=PolitiquePlusieurs(node,parent)
63 self.listeValeursCourantes=self.node.item.GetListeValeurs()
64 self.InitCommentaire()
66 self.connecterSignaux()
68 def connecterSignaux(self) :
69 self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
70 self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
71 self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
72 self.connect(self.bParam,SIGNAL("clicked()"),self.BParametresPressed)
73 self.connect(self.bImport,SIGNAL("clicked()"),self.BImportPressed)
74 self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
75 self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
76 self.connect(self.LEValeur,SIGNAL("returnPressed()"),self.LEValeurPressed)
77 self.connect(self.BSalome,SIGNAL("clicked()"),self.BSalomePressed)
78 self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
80 def detruitBouton(self):
81 mc = self.node.item.get_definition()
83 print self.editor.salome
84 if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
91 def BuildLBValeurs(self):
92 # redefinit en raison de l heritage par monFonctionPanel
93 SaisieValeur.BuildLBValeurs(self)
95 def BOkPourListePressed(self):
96 self.editor.init_modif()
97 if self.listeValeursCourantes == [] :
98 self.editor.affiche_infos("Pas de validation d un groupe vide")
100 self.node.item.set_valeur(self.listeValeursCourantes)
101 self.editor.affiche_infos("Valeur Acceptée")
103 def BSupPressed(self):
104 QTPanel.BSupPressed(self)
106 def BParametresPressed(self):
107 QTPanel.BParametresPressed(self)
109 def LEValeurPressed(self):
112 def Sup1Valeur(self):
113 index=self.LBValeurs.currentRow()
114 if index < 0 : return
115 if self.LBValeurs.isItemSelected(self.LBValeurs.item(index)) == 0 : return
116 self.LEValeur.setText(self.LBValeurs.item(index).text())
117 self.LBValeurs.takeItem(index)
120 for valeur in self.listeValeursCourantes :
121 if i != index : listeVal.append(valeur)
123 self.listeValeursCourantes=listeVal
126 def Ajout1Valeur(self,valeur=None):
127 liste,validite=SaisieValeur.TraiteLEValeur(self,valeur)
128 if validite == 0 : return
129 if liste ==[] : return
131 indexCourant=self.LBValeurs.currentRow()
132 if ( (self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant )) == 0)
133 and (indexCourant > 0 )):
136 index=self.LBValeurs.currentRow() + 1
139 for valeur in self.listeValeursCourantes :
140 listeVal.append(valeur)
141 validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
142 self.Commentaire.setText(comm2)
144 self.editor.affiche_infos(comm)
146 self.LEValeur.setText(QString(""))
147 l1=self.listeValeursCourantes[:index]
148 l3=self.listeValeursCourantes[index:]
149 for valeur in listeRetour:
150 self.LBValeurs.insertItem(index,QString(str(valeur)))
151 item=self.LBValeurs.item(index)
153 self.LBValeurs.setCurrentItem(item)
155 self.listeValeursCourantes=l1+listeRetour+l3
156 self.editor.affiche_infos("Valeurs Ajoutées")
158 def BImportPressed(self):
159 init=QString( self.editor.CONFIGURATION.rep_user)
160 fn = QFileDialog.getOpenFileName(self.node.appliEficas,
161 self.node.appliEficas.trUtf8('Fichier de données'),
163 self.trUtf8('All Files (*)',))
164 if fn == None : return
166 from monSelectVal import MonSelectVal
167 MonSelectVal(file=fn,parent=self).show()
169 def InitCommentaire(self):
171 mc = self.node.item.get_definition()
172 d_aides = { 'TXM' : 'chaînes de caractères',
177 if not d_aides.has_key(type) :
179 commentaire="Entrez "+str(mc.min)+" valeurs "
181 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs "
184 commentaire="Entrez "+str(mc.min)+" "+d_aides[type]
186 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max) +" " + d_aides[type]
187 aideval=self.node.item.aide()
188 commentaire=commentaire + "\n" + aideval
189 self.Commentaire.setText(QString(commentaire))
191 def BSalomePressed(self):
193 genea=self.node.item.get_genealogie()
196 if "GROUP_NO" in e: kwType = "GROUP_NO"
197 if "GROUP_MA" in e: kwType = "GROUP_MA"
199 #print "BkwType",kwType
200 #print "editor", self.editor
201 selection, commentaire = self.editor.parent.appliEficas.selectGroupFromSalome(kwType,editor=self.editor)
202 if commentaire !="" :
203 self.Commentaire.setText(QString(commentaire))
205 if selection == [] : return
206 for geomElt in selection:
208 monTexte= monTexte[0:-1]
209 self.LEValeur.setText(QString(monTexte))
211 def BView2DPressed(self):
212 valeur=self.LEValeur.text()
213 if valeur == QString("") :
214 valeur=self.LBValeurs.currentText()
215 if valeur == QString("") : return
218 ok, msgError = self.editor.parent.appliEficas.displayShape(valeur)
220 self.editor.parent.appli.affiche_infos(msgError)