]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monFonctionPanel.py
Salome HOME
*** empty log message ***
[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)
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         else : 
81               listeATraiter=self.DecoupeListeValeurs(listeValeurs)
82         for valeur in listeATraiter:
83             str_valeur=str(valeur)
84             self.LBValeurs.addItem(str_valeur)
85
86   def  Ajout1Valeur(self,liste=[]):
87         # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
88         if liste == [] :
89            if self.node.item.wait_tuple()== 1 :
90               liste=SaisieValeur.TraiteLEValeurTuple(self)
91               if liste == [''] : return
92               validite=1
93            else :
94               liste,validite=SaisieValeur.TraiteLEValeur(self)
95         else :
96            validite=1
97         if validite == 0 : return
98         if liste ==[]    : return
99
100         if len(liste) != self.nbValeurs :
101             commentaire  = QString(str(liste)) 
102             commentaire += QString(" n est pas un tuple de ") 
103             commentaire += QString(str(self.nbValeurs)) 
104             commentaire += QString(" valeurs")
105             self.LEValeur.setText(QString(str(liste)))
106             self.editor.affiche_infos(commentaire)
107             return
108
109         if self.node.item.wait_tuple()== 1 :
110               liste2=tuple(liste)
111               liste=liste2
112         index=self.LBValeurs.currentRow()
113         if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
114            index=0
115         else :
116            index=self.LBValeurs.currentRow() + 1
117         indexListe=index*self.nbValeurs
118         if index == 0 : 
119            indexListe=len(self.listeValeursCourantes)
120         listeVal=[]
121         for valeur in self.listeValeursCourantes :
122                 listeVal.append(valeur)
123         if self.node.item.wait_tuple()== 1 :
124              indexListe = index
125              validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
126         else :
127              validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
128         self.Commentaire.setText(comm2)
129         if not validite :
130                 self.editor.affiche_infos(comm)
131         else:
132            self.LEValeur.setText(QString(""))
133            l1=self.listeValeursCourantes[:indexListe]
134            l3=self.listeValeursCourantes[indexListe:]
135            if self.node.item.wait_tuple()== 1 :
136               listeATraiter=listeRetour
137            else : 
138               listeATraiter=self.DecoupeListeValeurs(listeRetour)
139            for valeur in  listeATraiter :
140                str_valeur=str(valeur)
141                self.LBValeurs.insertItem(index,str_valeur)
142                item=self.LBValeurs.item(index)
143                item.setSelected(1)
144                self.LBValeurs.setCurrentItem(item)
145                index=index+1
146            self.listeValeursCourantes=l1+listeRetour+l3
147
148
149   def AjoutNValeur(self,liste) :
150         if len(liste)%self.nbValeurs != 0 :
151            texte="Nombre de valeur incorrecte"
152            #self.Commentaire.setText(texte)
153            self.editor.affiche_infos(texte)
154            return
155         listeDecoupee=self.DecoupeListeValeurs(liste)
156         for vals in listeDecoupee :
157             self.Ajout1Valeur(vals)
158            
159   def Sup1Valeur(self):
160         index=self.LBValeurs.currentRow()
161         if index == None : return
162         self.LBValeurs.takeItem(index)
163         listeVal=[]
164         indexInterdit=[]
165         for i in range(self.nbValeurs):
166             indexAOter=index*self.nbValeurs + i
167             indexInterdit.append(indexAOter)
168         if self.node.item.wait_tuple()== 1 :
169            indexInterdit=[index]
170
171         i=0
172         for valeur in self.listeValeursCourantes :
173             if not (i in indexInterdit) : 
174                 listeVal.append(valeur)
175             i = i+1
176         self.listeValeursCourantes=listeVal
177         listeValeurs=self.listeValeursCourantes
178
179