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 desPlusieursInto import Ui_DPlusInto
29 from qtCommun import QTPanel
30 from qtSaisie import SaisieValeur
31 from politiquesValidation import PolitiquePlusieurs
33 class DPlusInto(Ui_DPlusInto,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
49 class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
51 Classe définissant le panel associé aux mots-clés qui demandent
52 à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
55 def __init__(self,node, parent = None,name = None,fl = 0):
56 #print "MonPlusieursIntoPanel"
57 QTPanel.__init__(self,node,parent)
58 DPlusInto.__init__(self,parent,fl)
59 self.politique=PolitiquePlusieurs(node,parent)
60 SaisieValeur.BuildLBValeurs(self)
61 self.listeValeursCourantes=self.node.item.GetListeValeurs()
62 SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
63 self.InitCommentaire()
64 self.connecterSignaux()
66 def connecterSignaux(self) :
67 self.connect(self.listBoxVal, SIGNAL("itemDoubleClicked(QListWidgetItem*)" ), self.Ajout1Valeur )
68 self.connect(self.LBValeurs,SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.Sup1Valeur)
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.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
73 self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
76 def BOkPourListePressed(self):
77 if self.listeValeursCourantes == [] :
78 self.editor.affiche_infos("Pas de validation d un groupe vide")
80 self.node.item.set_valeur(self.listeValeursCourantes)
81 self.editor.affiche_infos("Valeur Acceptée")
83 def BSupPressed(self):
84 QTPanel.BSupPressed(self)
90 indexCourant=self.LBValeurs.currentRow()
91 if indexCourant == None : return
92 if self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant))== 0 : return
93 if self.LBValeurs.item(indexCourant).text()==QString("") : return
94 self.LBValeurs.takeItem(indexCourant)
97 for valeur in self.listeValeursCourantes :
98 if i != indexCourant : listeVal.append(valeur)
100 self.listeValeursCourantes=listeVal
101 SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
103 def Ajout1Valeur(self):
106 indexCourant=self.listBoxVal.currentRow()
107 if indexCourant == None : return
108 if self.listBoxVal.isItemSelected(self.listBoxVal.item(indexCourant))== 0 : return
109 if self.listBoxVal.item(indexCourant).text()==QString("") : return
110 liste.append(str(self.listBoxVal.item(indexCourant).text()))
111 if self.LBValeurs.currentItem() != None :
112 index= self.LBValeurs.currentRow()+ 1
116 for valeur in self.listeValeursCourantes :
117 listeVal.append(valeur)
118 validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
119 self.Commentaire.setText(comm2)
121 self.editor.affiche_infos(comm)
123 l1=self.listeValeursCourantes[:index]
124 l3=self.listeValeursCourantes[index:]
125 for valeur in listeRetour:
126 self.LBValeurs.insertItem(index,QString(str(valeur)))
127 item=self.LBValeurs.item(index)
129 self.LBValeurs.setCurrentItem(item)
131 self.listeValeursCourantes=l1+listeRetour+l3
132 SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
134 def InitCommentaire(self):
136 mc = self.node.item.get_definition()
137 d_aides = { 'TXM' : 'chaînes de caractères',
142 if not d_aides.has_key(type) :
144 commentaire="Entrez "+str(mc.min)+" valeurs "
146 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs "
149 commentaire="Entrez "+str(mc.min)+" "+d_aides[type]
151 commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" "+d_aides[type]
152 aideval=self.node.item.aide()
153 commentaire=commentaire + "\n" + aideval
154 self.Commentaire.setText(QString(commentaire))