]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monWidgetPlusieursCreeUserAssd.py
Salome HOME
bug sur un mesage dans une exception sur un validator (cf JPA)
[tools/eficas.git] / InterfaceQT4 / monWidgetPlusieursCreeUserAssd.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2020   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 import types,os
23
24
25 # Modules Eficas
26 from Extensions.i18n import tr
27 from .monWidgetSimpTxt  import MonWidgetSimpTxt
28 from .monWidgetPlusieursBase import MonWidgetPlusieursBase
29 from copy import copy,deepcopy
30 from PyQt5.QtCore import Qt
31
32
33
34 class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase):
35     def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
36         MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
37         self.etablitOrdre()
38         self.scrollArea.leaveEvent = self.leaveEventScrollArea
39         self.RBHaut.close()
40         self.RBBas.close()
41
42     def ajout1Valeur(self,valeur=None):
43         if not valeur in list(self.dictValeurs.keys()):
44             validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur)
45             MonWidgetPlusieursBase.ajout1Valeur(self,valeur)
46
47     def changeValeur(self,changeDePlace=False,oblige=False ):
48         #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours)
49         #import traceback
50         #traceback.print_stack()
51         self.changeUnLineEdit=False
52         valeur = self.lineEditEnCours.text()
53         if self.numLineEditEnCours in list(self.dictLE.keys()) :
54             oldValeurUserAssd = self.dictLE[self.numLineEditEnCours]
55             if oldValeurUserAssd == None or oldValeurUserAssd == "" :
56                 enCreation = True
57                 oldValeurUserAssd == True
58             else : enCreation = False
59         else                         :
60             enCreation     = True
61             oldValeurUserAssd =  None
62
63         if oldValeurUserAssd  and oldValeurUserAssd.nom == valeur :
64             self.selectionneNext()
65             return
66
67         if valeur != "" :
68             if not enCreation :
69                 validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur)
70                 if commentaire != "" and not validite:
71                     self.editor.afficheInfos(commentaire,Qt.red)
72                     self.lineEditEnCours.setText(oldValeurUserAssd.nom)
73                 nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1)
74                 dernier=getattr(self,nomDernierLineEdit)
75                 dernier.setFocus()
76                 return
77
78             validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur)
79             if commentaire != "" and not validite:
80                 self.editor.afficheInfos(commentaire,Qt.red)
81                 self.lineEditEnCours.setText("")
82                 if objASSD : objASSD.supprime(self.objSimp)
83                 return
84         else:
85             validite = 1
86             objASSD=None
87             commentaire = ""
88
89         # on relit tout pour tenir compte des lignes blanches
90         oldValeur=self.objSimp.valeur
91         liste=[]
92         for i in range (1, self.indexDernierLabel+1):
93             if i == self.numLineEditEnCours  and objASSD : liste.append(objASSD)
94             elif self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
95         validite=self.node.item.setValeur(liste)
96         if not validite :
97             self.objSimp.valeur=oldValeur
98             self.objSimp.state='changed'
99             self.setValide()
100             if objASSD : objASSD.supprime(self.objSimp)
101             self.lineEditEnCours.setText(oldValeurUserASSD.nom)
102             return
103
104         validite=self.node.item.isValid()
105         if validite :
106             self.dictLE[self.numLineEditEnCours] = objASSD
107             self.node.item.rattacheUserASSD(objASSD)
108             if self.indexDernierLabel < len(liste)  : self.ajoutLineEdit()
109             nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1)
110             self.listeValeursCourantes=liste
111             dernier=getattr(self,nomDernierLineEdit)
112             dernier.setFocus()
113         else :
114             self.editor.afficheInfos('ajout impossible' ,Qt.red)
115             if objASSD : objASSD.supprime(self.objSimp)
116             self.lineEditEnCours.setText("")
117         self.parentQt.propageChange(self.objSimp.definition.type[0],self)
118
119     def selectionneDernier(self):
120         index=len(self.listeValeursCourantes)
121         self.listeAffichageWidget[index].setFocus()
122
123     def leaveEventScrollArea(self,event):
124         pass
125
126 #  def echangeDeuxValeurs(self):
127 #    self.changeUnLineEdit=False
128 #    obj1=self.dictLE[self.num1]
129 #    obj2=self.dictLE[self.num2]
130 #    self.dictLE[self.num1]=obj2
131 #    self.dictLE[self.num2]=obj1
132 #    nomLineEdit=self.nomLine+str(self.num1)
133 #    courant=getattr(self,nomLineEdit)
134 #    if self.dictLE[self.num1] != None : courant.setText(self.dictLE[self.num1].nom)
135 #    else : courant.setText("")
136 #    nomLineEdit=self.nomLine+str(self.num2)
137 #    courant=getattr(self,nomLineEdit)
138 #    if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom)
139 #    else : courant.setText("")
140 #    liste=[]
141 #    for i in list(self.dictLE.keys()):
142 #       if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
143 #    validite=self.node.item.setValeur(liste)
144 #    self.listeValeursCourantes=liste
145 #    courant.setFocus(True)
146
147     def descendLesLignes(self):
148         self.changeUnLineEdit=False
149         if self.numLineEditEnCours==self.indexDernierLabel : return
150         nouvelleValeur=None
151         for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
152             valeurAGarder=self.dictLE[i]
153             self.dictLE[i]=nouvelleValeur
154             nomLineEdit=self.nomLine+str(i)
155             courant=getattr(self,nomLineEdit)
156             if nouvelleValeur != None : courant.setText(nouvelleValeur.nom)
157             else : courant.setText("")
158             nouvelleValeur=valeurAGarder
159
160
161     def moinsPushed(self):
162         if self.numLineEditEnCours == 0 : return
163         if self.indexDernierLabel == 0 : return
164         objASSD=self.dictLE[self.numLineEditEnCours]
165         if objASSD : objASSD.supprime(self.objSimp)
166         self.lineEditEnCours.setText("")
167         self.dictLE[self.numLineEditEnCours]=None
168
169         for i in range (self.numLineEditEnCours, self.indexDernierLabel-1):
170             self.dictLE[i]= self.dictLE[i+1]
171             nomLineEdit=self.nomLine+str(i)
172             courant=getattr(self,nomLineEdit)
173             if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom)
174             else : courant.setText("")
175         nomLineEdit=self.nomLine+str(self.indexDernierLabel)
176         courant=getattr(self,nomLineEdit)
177         courant.setText("")
178         self.dictLE[self.indexDernierLabel]=None
179         liste=[]
180         for i in list(self.dictLE.keys()):
181             if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
182         print (liste)
183         validite=self.node.item.setValeur(liste)
184         self.listeValeursCourantes=liste