]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monFonctionPanel.py
Salome HOME
5c3558fbf424ce8f6527f144e1910c94ce95e1e5
[tools/eficas.git] / InterfaceQT4 / monFonctionPanel.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 qtSaisie      import SaisieValeur
26 from monPlusieursBasePanel import MonPlusieursBasePanel
27
28 from PyQt4.QtGui  import *
29 from PyQt4.QtCore import *
30
31 # Import des panels
32
33 class MonFonctionPanel(MonPlusieursBasePanel):
34   """
35   Classe définissant le panel associé aux mots-clés qui demandent
36   à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
37   discrètes
38   """
39   def __init__(self,node, parent = None,name = None,fl = 0):
40         #print "MonFonctionPanel"
41         self.node=node
42         self.SetNbValeurs()
43         MonPlusieursBasePanel.__init__(self,node,parent,name,fl)
44
45   def SetNbValeurs(self):
46         self.nbValeurs = 1
47         if self.node.item.wait_tuple()== 1 :
48            for a in self.node.item.definition.type :
49                try :
50                    self.nbValeurs = a.ntuple
51                    break
52                except :
53                    pass
54         genea=self.node.item.get_genealogie()
55         if "VALE" in genea:
56             self.nbValeurs=2
57         if "VALE_C" in genea:
58             self.nbValeurs=3
59
60
61   def DecoupeListeValeurs(self,liste):
62         #decoupe la liste des valeurs en n ( les x puis les y)
63         l_valeurs=[]
64         if (len(liste)% self.nbValeurs != 0):
65             message="La cardinalité n'est pas correcte, la dernière valeur est ignorée"
66             #self.Commentaire.setText(QString(commentaire)) 
67             self.editor.affiche_infos(message,Qt.red)
68         i=0
69         while ( i < (len(liste) - self.nbValeurs + 1)) :
70             t=tuple(liste[i:i+self.nbValeurs])
71             l_valeurs.append(t)
72             i=i+self.nbValeurs
73         return l_valeurs
74
75   def BuildLBValeurs(self):
76         self.LBValeurs.clear()
77         listeValeurs=self.node.item.GetListeValeurs()
78         if self.node.item.wait_tuple()== 1 :
79               listeATraiter=listeValeurs
80               for valeur in listeATraiter:
81                   str_valeur=str(valeur)
82                   self.LBValeurs.addItem(str_valeur)
83         else : 
84               for valeur in self.DecoupeListeValeurs(listeValeurs):
85                    if type(valeur) == types.TupleType:
86                        TupleEnTexte="("
87                        for val in valeur :
88                            TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
89                        TupleEnTexte = TupleEnTexte[0:-2] +")"
90                        self.LBValeurs.addItem(TupleEnTexte)
91                    else :
92                        self.LBValeurs.addItem(QString(str(valeur)))
93
94
95   def  Ajout1Valeur(self,liste=[]):
96         # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
97         validite=1
98         if liste == [] :
99            if self.node.item.wait_tuple()== 1 :
100               liste=SaisieValeur.TraiteLEValeurTuple(self)
101               if liste == [''] : return
102            else :
103               liste,validite=SaisieValeur.TraiteLEValeur(self)
104               if validite == 0 : return
105         if liste ==[]    : return
106
107         if len(liste) != self.nbValeurs :
108             commentaire  = QString(str(liste)) 
109             commentaire += QString(" n est pas un tuple de ") 
110             commentaire += QString(str(self.nbValeurs)) 
111             commentaire += QString(" valeurs")
112             self.LEValeur.setText(QString(str(liste)))
113             self.editor.affiche_infos(commentaire,Qt.red)
114             return
115
116         if self.node.item.wait_tuple()== 1 :
117               liste2=tuple(liste)
118               liste=liste2
119
120         index=self.LBValeurs.currentRow()
121         if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
122            index=0
123         else :
124            index=self.LBValeurs.currentRow() + 1
125         indexListe=index*self.nbValeurs
126         if index == 0 : indexListe=len(self.listeValeursCourantes)
127
128         listeVal=[]
129         for valeur in self.listeValeursCourantes :
130                 listeVal.append(valeur)
131         if self.node.item.wait_tuple()== 1 :
132              indexListe = index
133              validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
134         else :
135              validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
136         self.Commentaire.setText(QString.fromUtf8(QString(comm2)))
137         if not validite :
138                 self.editor.affiche_infos(comm,Qt.red)
139         else:
140            self.LEValeur.setText(QString(""))
141            l1=self.listeValeursCourantes[:indexListe]
142            l3=self.listeValeursCourantes[indexListe:]
143            if self.node.item.wait_tuple()== 1 :
144               listeATraiter=listeRetour
145            else : 
146               listeATraiter=self.DecoupeListeValeurs(listeRetour)
147            for valeur in  listeATraiter :
148                if type(valeur) == types.TupleType:
149                   TupleEnTexte="("
150                   for val in valeur :
151                       TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
152                   str_valeur = TupleEnTexte[0:-2] +")"
153                else :
154                   str_valeur=str(valeur)
155                self.LBValeurs.insertItem(index,str_valeur)
156                item=self.LBValeurs.item(index)
157                item.setSelected(1)
158                self.LBValeurs.setCurrentItem(item)
159                index=index+1
160            self.listeValeursCourantes=l1+listeRetour+l3
161
162
163   def AjoutNValeur(self,liste) :
164         if len(liste)%self.nbValeurs != 0 :
165            texte="Nombre de valeur incorrecte"
166            #self.Commentaire.setText(texte)
167            self.editor.affiche_infos(texte,Qt.red)
168            return
169         listeDecoupee=self.DecoupeListeValeurs(liste)
170         for vals in listeDecoupee :
171             self.Ajout1Valeur(vals)
172            
173   def Sup1Valeur(self):
174         index=self.LBValeurs.currentRow()
175         if index == None : return
176         removed_item = self.LBValeurs.takeItem(index)
177         text = removed_item.text()[1:-1] # Remove the parenthesis
178         self.LEValeur.setText(text)
179         listeVal=[]
180         indexInterdit=[]
181         for i in range(self.nbValeurs):
182             indexAOter=index*self.nbValeurs + i
183             indexInterdit.append(indexAOter)
184         if self.node.item.wait_tuple()== 1 :
185            indexInterdit=[index]
186
187         i=0
188         for valeur in self.listeValeursCourantes :
189             if not (i in indexInterdit) : 
190                 listeVal.append(valeur)
191             i = i+1
192         self.listeValeursCourantes=listeVal
193         listeValeurs=self.listeValeursCourantes
194
195