Salome HOME
chgt Copyrigth
[tools/eficas.git] / InterfaceQT4 / monWidgetSDCOInto.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 except : pass
25
26 import types,os
27
28 # Modules Eficas
29 from PyQt5.QtWidgets import QLineEdit
30 from PyQt5.QtCore import Qt
31 from Extensions.i18n import tr
32
33 from .feuille               import Feuille
34 from desWidgetSDCOInto     import Ui_WidgetSDCOInto 
35 from .qtSaisie              import SaisieSDCO
36 from .politiquesValidation  import PolitiqueUnique
37
38
39
40 class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO):
41
42   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
43         #print "MonWidgetSDCOInto init"
44         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
45         self.politique=PolitiqueUnique(self.node,self.editor)
46         self.parentQt.commandesLayout.insertWidget(-1,self)
47         self.maCommande.listeAffichageWidget.append(self.LESDCO)
48         self.AAficher=self.LESDCO
49         self.initLBSDCO()
50        
51         self.LESDCO.returnPressed.connect(self.LESDCOReturnPressed)
52         self.LBSDCO.itemDoubleClicked.connect(self.LBSDCODoubleClicked )
53
54   def LESDCOReturnPressed(self) :
55         self.LBSDCO.clearSelection()
56         SaisieSDCO.LESDCOReturnPressed(self)
57
58
59   def initLBSDCO(self):
60         listeNomsSDCO = self.node.item.getSdAvantDuBonType()
61         for aSDCO in listeNomsSDCO:
62             self.LBSDCO.insertItem( 1,aSDCO)
63         valeur = self.node.item.getValeur()
64         if valeur  != "" and valeur != None :
65            self.LESDCO.setText(str(valeur.nom))
66
67
68   def LBSDCODoubleClicked(self):
69         """
70          Teste si la valeur fournie par l'utilisateur est une valeur permise :
71           - si oui, l'enregistre
72           - si non, restaure l'ancienne valeur
73         """
74         nomConcept=str(self.LBSDCO.currentItem().text())
75         self.LESDCO.clear()
76         self.editor.initModif()
77         anc_val = self.node.item.getValeur()
78         test_CO=self.node.item.isCO(anc_val)
79
80         valeur,validite=self.node.item.evalValeur(nomConcept)
81         test = self.node.item.setValeur(valeur)
82         if not test :
83           commentaire = tr("impossible d'evaluer : ") +  valeur
84         elif validite:
85           commentaire = tr("Valeur du mot-clef enregistree")
86           if test_CO:
87              # il faut egalement propager la destruction de l'ancien concept
88              self.node.item.deleteValeurCo(valeur=anc_val)
89              self.node.item.object.etape.getType_produit(force=1)
90              self.node.item.object.etape.parent.resetContext()
91              self.LESDCO.setText(nomConcept)
92         else :
93           commentaire = self.node.item.getCr()
94           self.reset_old_valeur(anc_val,mess=mess)
95           self.editor.afficheInfos(commentaire,Qt.red)
96         self.Commentaire.setText(tr(commentaire))
97
98