]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monPlusieursIntoPanel.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / InterfaceQT4 / monPlusieursIntoPanel.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 import string,types,os
23
24 # Modules Eficas
25 from PyQt4.QtGui import *
26 from PyQt4.QtCore import *
27
28 from desPlusieursInto import Ui_DPlusInto
29 from qtCommun      import QTPanel
30 from qtSaisie      import SaisieValeur
31 from politiquesValidation import PolitiquePlusieurs
32
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
41        else:
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
47        self.setupUi(self)
48
49 class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
50   """
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
53   discrètes
54   """
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()
65
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)
74
75
76   def BOkPourListePressed(self):
77         if self.listeValeursCourantes == [] :
78            self.editor.affiche_infos("Pas de validation d un groupe vide")
79            return
80         self.node.item.set_valeur(self.listeValeursCourantes)
81         self.editor.affiche_infos("Valeur Acceptée")
82
83   def BSupPressed(self):
84         QTPanel.BSupPressed(self)
85
86   def ViewDoc(self):
87       QTPanel.ViewDoc(self)
88
89   def Sup1Valeur(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)
95         listeVal=[]
96         i=0
97         for valeur in self.listeValeursCourantes :
98                 if i != indexCourant : listeVal.append(valeur)
99                 i = i+1
100         self.listeValeursCourantes=listeVal
101         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
102           
103   def Ajout1Valeur(self):
104         liste=[]
105
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
113         else :
114            index = 0
115         listeVal=[]
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)
120         if not validite :
121                 self.editor.affiche_infos(comm)
122         else:
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)
128                item.setSelected(1)
129                self.LBValeurs.setCurrentItem(item)
130                index=index+1
131            self.listeValeursCourantes=l1+listeRetour+l3
132         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
133
134   def InitCommentaire(self):
135         commentaire=""
136         mc = self.node.item.get_definition()
137         d_aides = { 'TXM' : 'chaînes de caractères',
138                   'R'   : 'réels',
139                   'I'   : 'entiers',
140                   'C'   : 'complexes'}
141         type = mc.type[0]
142         if not d_aides.has_key(type) :
143            if mc.min == mc.max:
144                commentaire="Entrez "+str(mc.min)+" valeurs "
145            else :
146                commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs "
147         else :
148            if mc.min == mc.max:
149                commentaire="Entrez "+str(mc.min)+" "+d_aides[type]
150            else :
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))
155