]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monFonctionPanel.py
Salome HOME
update version
[tools/eficas.git] / InterfaceQT4 / monFonctionPanel.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # Modules Python
21 from __future__ import absolute_import
22 try :
23     from builtins import str
24     from builtins import range
25 except : pass
26
27 import types,os
28 from PyQt5.QtCore import  Qt
29
30
31 # Modules Eficas
32 from .qtSaisie      import SaisieValeur
33 from monPlusieursBasePanel import MonPlusieursBasePanel
34
35 from Extensions.i18n import tr
36
37 # Import des panels
38
39 class MonFonctionPanel(MonPlusieursBasePanel):
40 #  Classe definissant le panel associee aux mots-cles qui demandent
41 #  a l'utilisateur de choisir une seule valeur parmi une liste de valeurs
42 #  discretes
43     def __init__(self,node, parent = None,name = None,fl = 0):
44         #print "MonFonctionPanel"
45         self.node=node
46         self.setNbValeurs()
47         MonPlusieursBasePanel.__init__(self,node,parent,name,fl)
48
49     def setNbValeurs(self):
50         self.nbValeurs = 1
51         if self.node.item.waitTuple()== 1 :
52             for a in self.node.item.definition.type :
53                 try :
54                     self.nbValeurs = a.ntuple
55                     break
56                 except :
57                     pass
58         genea=self.node.item.getGenealogie()
59         self.nbValeursASaisir=self.nbValeurs
60         if "VALE" in genea: self.nbValeurs=2
61         if "VALE_C" in genea: self.nbValeurs=3
62
63
64     def decoupeListeValeurs(self,liste):
65         #decoupe la liste des valeurs en n ( les x puis les y)
66         l_valeurs=[]
67         if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))):
68             message=tr("La cardinalite n'est pas correcte, la derniere valeur est ignoree")
69             self.editor.afficheInfos(message,Qt.red)
70         i=0
71         while ( i < len(liste) ) :
72             try :
73                 t=tuple(liste[i:i+self.nbValeurs])
74                 i=i+self.nbValeurs
75             except:
76                 t=tuple(liste[i:len(liste)])
77             l_valeurs.append(t)
78         return l_valeurs
79
80     def buildLBValeurs(self,listeValeurs=None):
81         self.LBValeurs.clear()
82         if listeValeurs== None :
83             listeValeurs=self.node.item.getListeValeurs()
84         if self.node.item.waitTuple()== 1 :
85             listeATraiter=listeValeurs
86             for valeur in listeATraiter:
87                 str_valeur=str(valeur)
88                 self.LBValeurs.addItem(str_valeur)
89         else :
90             for valeur in self.decoupeListeValeurs(listeValeurs):
91                 if type(valeur) == tuple:
92                     TupleEnTexte="("
93                     for val in valeur :
94                         TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
95                     TupleEnTexte = TupleEnTexte[0:-2] +")"
96                     self.LBValeurs.addItem(TupleEnTexte)
97                 else :
98                     self.LBValeurs.addItem(str(valeur))
99
100
101     def  ajout1Valeur(self,liste=[]):
102         # Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
103         validite=1
104         if liste == [] :
105             if self.node.item.waitTuple()== 1 :
106                 liste=SaisieValeur.TraiteLEValeurTuple(self)
107                 if liste == [''] : return
108             else :
109                 liste,validite=SaisieValeur.TraiteLEValeur(self)
110                 if validite == 0 : return
111         if liste ==[]    : return
112
113         if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs):
114             commentaire  = str(liste)
115             commentaire += tr(" n est pas un tuple de ")
116             commentaire += str(self.nbValeursASaisir)
117             commentaire += tr(" valeurs")
118             self.LEValeur.setText(str(liste))
119             self.editor.afficheInfos(commentaire,Qt.red)
120             return
121
122         if self.node.item.waitTuple()== 1 :
123             liste2=tuple(liste)
124             liste=liste2
125
126         index=self.LBValeurs.currentRow()
127         if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
128             index=0
129         else :
130             index=self.LBValeurs.currentRow() + 1
131         indexListe=index*self.nbValeurs
132         if index == 0 : indexListe=len(self.listeValeursCourantes)
133
134         listeVal=[]
135         for valeur in self.listeValeursCourantes :
136             listeVal.append(valeur)
137         if self.node.item.waitTuple()== 1 :
138             indexListe = index
139             validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal)
140         else :
141             validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal)
142         self.Commentaire.setText(tr(comm2))
143         if not validite :
144             self.editor.afficheInfos(comm,Qt.red)
145         else:
146             self.LEValeur.setText("")
147             l1=self.listeValeursCourantes[:indexListe]
148             l3=self.listeValeursCourantes[indexListe:]
149             if self.node.item.waitTuple()== 1 :
150                 listeATraiter=listeRetour
151             else :
152                 listeATraiter=self.decoupeListeValeurs(listeRetour)
153             for valeur in  listeATraiter :
154                 if type(valeur) == tuple:
155                     TupleEnTexte="("
156                     for val in valeur :
157                         TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
158                     str_valeur = TupleEnTexte[0:-2] +")"
159                 else :
160                     str_valeur=str(valeur)
161                 self.LBValeurs.insertItem(index,str_valeur)
162                 item=self.LBValeurs.item(index)
163                 item.setSelected(1)
164                 self.LBValeurs.setCurrentItem(item)
165                 index=index+1
166             self.listeValeursCourantes=l1+listeRetour+l3
167             self.buildLBValeurs(self.listeValeursCourantes)
168
169
170     def ajoutNValeur(self,liste) :
171         if len(liste)%self.nbValeurs != 0 :
172             texte="Nombre de valeur incorrecte"
173             #self.Commentaire.setText(texte)
174             self.editor.afficheInfos(texte,Qt.red)
175             return
176         listeDecoupee=self.decoupeListeValeurs(liste)
177         for vals in listeDecoupee :
178             self.ajout1Valeur(vals)
179
180     def sup1Valeur(self):
181         index=self.LBValeurs.currentRow()
182         if index == None : return
183         removed_item = self.LBValeurs.takeItem(index)
184         text = removed_item.text()[1:-1] # Remove the parenthesis
185         self.LEValeur.setText(text)
186         listeVal=[]
187         indexInterdit=[]
188         for i in range(self.nbValeurs):
189             indexAOter=index*self.nbValeurs + i
190             indexInterdit.append(indexAOter)
191         if self.node.item.waitTuple()== 1 :
192             indexInterdit=[index]
193
194         i=0
195         for valeur in self.listeValeursCourantes :
196             if not (i in indexInterdit) :
197                 listeVal.append(valeur)
198             i = i+1
199         self.listeValeursCourantes=listeVal
200         listeValeurs=self.listeValeursCourantes