]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monFonctionPanel.py
Salome HOME
4dba067e9e7c9b27b18bbd7e859c67e80f108c04
[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         genea=self.node.item.get_genealogie()
47         if "VALE" in genea:
48             self.nbValeurs=2
49         if "VALE_C" in genea:
50             self.nbValeurs=3
51
52
53   def DecoupeListeValeurs(self,liste):
54         #decoupe la liste des valeurs en n ( les x puis les y)
55         l_valeurs=[]
56         if (len(liste)% self.nbValeurs != 0):
57             message="La cardinalité n'est pas correcte, la dernière valeur est ignorée"
58             #self.Commentaire.setText(QString(commentaire)) 
59             self.editor.affiche_infos(commentaire)
60         for i in range(len(liste)/ self.nbValeurs) :
61             if (self.nbValeurs==2):
62               t=(liste[i*self.nbValeurs], liste[i*self.nbValeurs+1])
63             else:
64               t=(liste[i*self.nbValeurs], liste[i*self.nbValeurs+1], liste[i*self.nbValeurs+2])
65             l_valeurs.append(t)
66         return l_valeurs
67
68   def BuildLBValeurs(self):
69         self.LBValeurs.clear()
70         listeValeurs=self.node.item.GetListeValeurs()
71         for valeur in self.DecoupeListeValeurs(listeValeurs):
72                if (self.nbValeurs==2):
73                     str_valeur=str(valeur[0])+","+str(valeur[1])
74                else:
75                     str_valeur=str(valeur[0])+","+str(valeur[1])+","+str(valeur[2])
76                self.LBValeurs.addItem(str_valeur)
77
78   def  Ajout1Valeur(self,liste=[]):
79         # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
80         if liste == [] :
81            liste,validite=SaisieValeur.TraiteLEValeur(self)
82         else :
83            validite=1
84         if validite == 0 : return
85         if liste ==[]    : return
86
87         if len(liste) != self.nbValeurs :
88             commentaire  = QString(str(liste)) 
89             commentaire += QString(" n est pas un tuple de ") 
90             commentaire += QString(str(self.nbValeurs)) 
91             commentaire += QString(" valeurs")
92             self.LEValeur.setText(QString(str(liste)))
93             self.editor.affiche_infos(commentaire)
94             return
95
96         index=self.LBValeurs.currentRow()
97         if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
98            index=0
99         else :
100            index=self.LBValeurs.currentRow() + 1
101         indexListe=index*self.nbValeurs
102         if index == 0 : 
103            indexListe=len(self.listeValeursCourantes)
104         listeVal=[]
105         for valeur in self.listeValeursCourantes :
106                 listeVal.append(valeur)
107         validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
108         self.Commentaire.setText(comm2)
109         if not validite :
110                 self.editor.affiche_infos(comm)
111         else:
112            self.LEValeur.setText(QString(""))
113            l1=self.listeValeursCourantes[:indexListe]
114            l3=self.listeValeursCourantes[indexListe:]
115            for valeur in  self.DecoupeListeValeurs(listeRetour) :
116                if (self.nbValeurs==2):
117                     str_valeur=str(valeur[0])+","+str(valeur[1])
118                else:
119                     str_valeur=str(valeur[0])+","+str(valeur[1])+","+str(valeur[2])
120                self.LBValeurs.insertItem(index,str_valeur)
121                item=self.LBValeurs.item(index)
122                item.setSelected(1)
123                self.LBValeurs.setCurrentItem(item)
124                index=index+1
125            self.listeValeursCourantes=l1+listeRetour+l3
126
127
128   def AjoutNValeur(self,liste) :
129         if len(liste)%self.nbValeurs != 0 :
130            texte="Nombre de valeur incorrecte"
131            #self.Commentaire.setText(texte)
132            self.editor.affiche_infos(texte)
133            return
134         listeDecoupee=self.DecoupeListeValeurs(liste)
135         for vals in listeDecoupee :
136             self.Ajout1Valeur(vals)
137            
138
139   def Sup1Valeur(self):
140         index=self.LBValeurs.currentRow()
141         if index == None : return
142         self.LBValeurs.takeItem(index)
143         listeVal=[]
144         i=0
145         for valeur in self.listeValeursCourantes :
146                 if self.nbValeurs == 2 :
147                    if (i != index*2 and i != index*2+1 ) : listeVal.append(valeur)
148                 elif self.nbValeurs == 3 :
149                    if (i != index*3 and i != index*3+1 and i != index*3 +2) : listeVal.append(valeur)
150                 else :
151                    print "aiiiiiiiiiiiiiiiiiieeee"
152                 i = i+1
153         self.listeValeursCourantes=listeVal
154         listeValeurs=self.listeValeursCourantes
155