Salome HOME
ba6cd4b9c3518206638ed0d5ccdf0b0a33ed042f
[tools/eficas.git] / InterfaceQT4 / monWidgetCreeUserAssd.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 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)
38
39   def LEvaleurPressed(self):
40       try :
41         if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
42       except : pass
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 != "" :
52          if validite : 
53             self.editor.afficheCommentaire(commentaire)
54             self.oldValeurTexte = self.lineEditVal.text()
55          else  : 
56             self.editor.afficheInfos(commentaire,Qt.red)
57             self.lineEditVal.setText("")
58             self.oldValeurTexte=""
59       self.parentQt.propageChange(self.objSimp.definition.type[0])
60       
61        
62 class MonWidgetCreeListeUserAssd ( MonWidgetPlusieursBase):
63   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
64       MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
65       
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)
70
71   def changeValeur(self,changeDePlace=False,oblige=False,numero=None):
72       #print ('dans changeValeur du CreeUserAssd', changeDePlace,numero)
73       self.changeUnLineEdit=False
74       if numero==None : 
75            self.echangeDeuxValeurs()
76            return
77       valeur = self.lineEditEnEdition.text()
78       #print (valeur)
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
83       else                         : 
84          enCreation     = True
85          oldValeurUserAssd =  ""
86       #print ('je traite')
87       if enCreation : validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur)
88       elif oldValeurUserAssd.nom == valeur : return
89       else :  
90          validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur)
91          nomDernierLineEdit="lineEditVal"+str(numero+1)
92          dernier=getattr(self,nomDernierLineEdit)
93          dernier.setFocus()
94          return
95   
96       if commentaire != "" and not validite:
97             self.editor.afficheInfos(commentaire,Qt.red)
98             self.lineEditEnEdition.setText("")
99             return
100       # on relit tout pour tenir compte des lignes blanches 
101       liste=[]
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)
108       self.setValide()
109       validite=self.node.item.isValid()
110       if validite : 
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)
117          dernier.setFocus()
118       else : 
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])
123
124
125   def leaveEventScrollArea(self,event):
126       pass
127
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("")
142       liste=[]
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)
147
148   def descendLesLignes(self):
149       self.changeUnLineEdit=False
150       if self.numlineEditEnCours==self.indexDernierLabel : return
151       nouvelleValeur=None
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
160       
161
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("")
168
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)
178      courant.setText("")
179      self.dictLE[self.indexDernierLabel]=None
180      liste=[]
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)
184