]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/qtSaisie.py
Salome HOME
update version
[tools/eficas.git] / InterfaceQT4 / qtSaisie.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     from builtins import range
25 except : pass
26
27 import types,os
28 from Extensions.i18n import tr
29
30 from PyQt5.QtCore import Qt
31
32
33 # Import des panels
34
35 class SaisieValeur(object):
36     """
37     Classe contenant les methodes communes aux  panels
38     permettant de choisir des valeurs
39     """
40     def __init__(self):
41         pass
42
43
44     def LEvaleurPressed(self,valeur=None):
45         #print('LEvaleurPressed', valeur, type(valeur))
46         if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False
47         if self.inSaisieValeur : return
48         self.inSaisieValeur=True
49
50         if valeur == None :
51             try :
52                 nouvelleValeur=str(self.lineEditVal.text())
53             except UnicodeEncodeError as e :
54                 self.editor.afficheInfos("pb d encoding", Qt.red)
55                 validite,commentaire=self.politique.recordValeur(None)
56                 self.lineEditVal.setText('')
57                 self.setValide()
58                 self.inSaisieValeur=False
59                 return
60         else :
61             try :
62                 # la 1 ligne est tres bizarre. remplacee par le 3nd le 01 10 19
63                 #if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom))
64                 if hasattr(self,"lineEditVal") : self.lineEditVal.setText(tr(valeur))
65             except :
66                 if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur)
67             nouvelleValeur=valeur
68
69         if self.node.item.definition.validators != None :
70             if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 :
71                 commentaire=self.node.item.definition.validators.infoErreurItem()
72                 self.editor.afficheInfos(commentaire,Qt.red)
73                 self.inSaisieValeur=False
74                 return
75
76         nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur)
77         validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat)
78         if commentaire != "" :
79             if validite :
80                 self.editor.afficheCommentaire(commentaire)
81             else :
82                 self.editor.afficheInfos(commentaire,Qt.red)
83         self.inSaisieValeur=False
84         self.setValide()
85
86
87
88     def TraiteLEValeur(self,valeurTraitee=None) :
89         # lit la chaine entree dans le line edit
90         # et la tranforme en chaine de valeurs
91         # a traiter. renvoie eventuellement des complexes
92         listeValeurs=[]
93         if valeurTraitee == None :
94             valeurBrute=str(self.LEValeur.text())
95         else :
96             valeurBrute=valeurTraitee
97         if valeurBrute == str("") : return listeValeurs,1
98
99         try :
100             valeur=eval(valeurBrute,{})
101         except :
102             valeur=valeurBrute
103
104         # pour traiter 11.0 - 30.0 pour le CIST
105         #if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.waitTxm())) :
106         if (valeurTraitee and  isinstance(valeurTraitee, str)  and (self.node.item.waitTxm())) :
107             valeur=str(valeurTraitee)
108
109
110         if type(valeur)  in (list,tuple) :
111             if self.node.item.waitComplex() :
112                 indice = 0
113                 while (indice < len(valeur)):
114                     v=valeur[indice]
115
116                     if (v== 'RI' or v == 'MP'):
117                         try :
118                             t=tuple([v,valeur[indice+1],valeur[indice+2]])
119                             listeValeurs.append(t)
120                             indice=indice+3
121                         except :
122                             commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
123                             self.editor.afficheInfos(commentaire)
124                             return listeValeurs,0
125
126
127                     else :     # ce n'est pas un tuple a la mode aster
128                         listeValeurs.append(v)
129                         indice = indice + 1
130
131             else:  # on n'attend pas un complexe
132                 listeValeurs=valeurBrute.split(',')
133
134         elif type(valeur) == bytes:
135             listeValeurs=valeur.split(',')
136         else:
137             #listeValeurs.append(valeurBrute)
138             listeValeurs.append(valeur)
139
140         return listeValeurs,1
141
142 class SaisieSDCO(object) :
143
144     def LESDCOReturnPressed(self):
145         """
146            Lit le nom donne par l'utilisateur au concept de type CO qui doit être
147            la valeur du MCS courant et stocke cette valeur
148         """
149         self.editor.initModif()
150         anc_val = self.node.item.getValeur()
151         if anc_val != None:
152             # il faut egalement propager la destruction de l'ancien concept
153             self.node.item.deleteValeurCo(valeur=anc_val)
154             # et on force le recalcul des concepts de sortie de l'etape
155             self.node.item.object.etape.getType_produit(force=1)
156             # et le recalcul du contexte
157             self.node.item.object.etape.parent.resetContext()
158         nomConcept = str(self.LESDCO.text())
159         if nomConcept == "" : return
160
161         test,commentaire=self.node.item.setValeurCo(nomConcept)
162         if test:
163             commentaire=tr("Valeur du mot-clef enregistree")
164             self.node.updateNodeValid()
165         else :
166             cr = self.node.item.getCr()
167             commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal()