1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021 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 MonWidgetCreeUserAssd ( MonWidgetSimpTxt):
35 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
36 MonWidgetSimpTxt. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
37 #self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
39 def LEvaleurPressed(self):
41 if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
43 valeurEntree = str(self.lineEditVal.text())
44 if valeurEntree == self.oldValeurTexte : return
45 if self.oldValeurTexte == "" : enCreation = True
46 else : enCreation = False
47 if enCreation : validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeurEntree)
48 else : validite,commentaire=self.objSimp.renommeSdCree(valeurEntree)
49 if not enCreation : self.node.updateNodeTexte()
50 #PNPNPN -- signal update sur les fils ou ?
51 if commentaire != "" :
53 self.editor.afficheCommentaire(commentaire)
54 self.oldValeurTexte = self.lineEditVal.text()
56 self.editor.afficheInfos(commentaire,Qt.red)
57 self.lineEditVal.setText("")
58 self.oldValeurTexte=""
59 self.parentQt.propageChange(self.objSimp.definition.type[0])
62 class MonWidgetCreeListeUserAssd ( MonWidgetPlusieursBase):
63 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
64 MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
66 def ajout1Valeur(self,valeur=None):
67 if not valeur in list(self.dictValeurs.keys()):
68 validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur)
69 MonWidgetPlusieursBase.ajout1Valeur(self,valeur)
71 def changeValeur(self,changeDePlace=False,oblige=False,numero=None):
72 #print ('dans changeValeur du CreeUserAssd', changeDePlace,numero)
73 self.changeUnLineEdit=False
75 self.echangeDeuxValeurs()
77 valeur = self.lineEditEnEdition.text()
79 if numero in list(self.dictLE.keys()) :
80 oldValeurUserAssd = self.dictLE[numero]
81 if oldValeurUserAssd == None or oldValeurUserAssd == "" : enCreation = True
82 else : enCreation = False
85 oldValeurUserAssd = ""
87 if enCreation : validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur)
88 elif oldValeurUserAssd.nom == valeur : return
90 validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur)
91 nomDernierLineEdit="lineEditVal"+str(numero+1)
92 dernier=getattr(self,nomDernierLineEdit)
96 if commentaire != "" and not validite:
97 self.editor.afficheInfos(commentaire,Qt.red)
98 self.lineEditEnEdition.setText("")
100 # on relit tout pour tenir compte des lignes blanches
102 for i in range (1, self.indexDernierLabel+1):
103 if i == numero : liste.append(objASSD)
104 if i in list(self.dictLE.keys()) :
105 if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
106 self.node.item.object.state='changed'
107 validite=self.node.item.setValeur(liste)
109 validite=self.node.item.isValid()
111 self.dictLE[numero] = objASSD
112 self.node.item.rattacheUserASSD(objASSD)
113 if self.indexDernierLabel < len(liste) : self.ajoutLineEdit()
114 nomDernierLineEdit="lineEditVal"+str(numero+1)
115 self.listeValeursCourantes=liste
116 dernier=getattr(self,nomDernierLineEdit)
119 self.editor.afficheInfos('ajout impossible' ,Qt.red)
120 if objASSD : objASSD.supprime()
121 self.lineEditEnEdition.setText("")
122 self.parentQt.propageChange(self.objSimp.definition.type[0])
125 def leaveEventScrollArea(self,event):
128 def echangeDeuxValeurs(self):
129 self.changeUnLineEdit=False
130 obj1=self.dictLE[self.num1]
131 obj2=self.dictLE[self.num2]
132 self.dictLE[self.num1]=obj2
133 self.dictLE[self.num2]=obj1
134 nomLineEdit=self.nomLine+str(self.num1)
135 courant=getattr(self,nomLineEdit)
136 if self.dictLE[self.num1] != None : courant.setText(self.dictLE[self.num1].nom)
137 else : courant.setText("")
138 nomLineEdit=self.nomLine+str(self.num2)
139 courant=getattr(self,nomLineEdit)
140 if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom)
141 else : courant.setText("")
143 for i in list(self.dictLE.keys()):
144 if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
145 validite=self.node.item.setValeur(liste)
146 courant.setFocus(True)
148 def descendLesLignes(self):
149 self.changeUnLineEdit=False
150 if self.numlineEditEnCours==self.indexDernierLabel : return
152 for i in range (self.numlineEditEnCours+1, self.indexDernierLabel):
153 valeurAGarder=self.dictLE[i]
154 self.dictLE[i]=nouvelleValeur
155 nomLineEdit=self.nomLine+str(i)
156 courant=getattr(self,nomLineEdit)
157 if nouvelleValeur != None : courant.setText(nouvelleValeur.nom)
158 else : courant.setText("")
159 nouvelleValeur=valeurAGarder
162 def moinsPushed(self):
163 if self.numlineEditEnCours == 0 : return
164 if self.indexDernierLabel == 0 : return
165 objASSD=self.dictLE[self.numlineEditEnCours]
166 if objASSD : objASSD.supprime()
167 self.lineEditEnEdition.setText("")
169 #self.dictLE.pop(self.numlineEditEnCours)
170 for i in range (self.numlineEditEnCours, self.indexDernierLabel-1):
171 self.dictLE[i]= self.dictLE[i+1]
172 nomLineEdit=self.nomLine+str(i)
173 courant=getattr(self,nomLineEdit)
174 if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom)
175 else : courant.setText("")
176 nomLineEdit=self.nomLine+str(self.indexDernierLabel)
177 courant=getattr(self,nomLineEdit)
179 self.dictLE[self.indexDernierLabel]=None
181 for i in list(self.dictLE.keys()):
182 if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i])
183 validite=self.node.item.setValeur(liste)