1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2020 EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 from __future__ import absolute_import
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
34 class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase):
35 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
36 MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
38 self.scrollArea.leaveEvent = self.leaveEventScrollArea
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)
47 def changeValeur(self,changeDePlace=False,oblige=False ):
48 #print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours)
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 == "" :
57 oldValeurUserAssd == True
58 else : enCreation = False
61 oldValeurUserAssd = None
63 if oldValeurUserAssd and oldValeurUserAssd.nom == valeur :
64 self.selectionneNext()
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)
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)
89 # on relit tout pour tenir compte des lignes blanches
90 oldValeur=self.objSimp.valeur
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)
97 self.objSimp.valeur=oldValeur
98 self.objSimp.state='changed'
100 if objASSD : objASSD.supprime(self.objSimp)
101 self.lineEditEnCours.setText(oldValeurUserASSD.nom)
104 validite=self.node.item.isValid()
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)
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)
119 def selectionneDernier(self):
120 index=len(self.listeValeursCourantes)
121 self.listeAffichageWidget[index].setFocus()
123 def leaveEventScrollArea(self,event):
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("")
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)
147 def descendLesLignes(self):
148 self.changeUnLineEdit=False
149 if self.numLineEditEnCours==self.indexDernierLabel : return
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
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
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)
178 self.dictLE[self.indexDernierLabel]=None
180 for i in list(self.dictLE.keys()):
181 if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
183 validite=self.node.item.setValeur(liste)
184 self.listeValeursCourantes=liste