Salome HOME
fin portage python 3
[tools/eficas.git] / InterfaceQT4 / qtSaisie.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   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          if valeur == None :
46             nouvelleValeur=str(self.lineEditVal.text())
47          else :
48             #PN PN PN ???? la 1 ligne est tres bizarre.
49             try : 
50               if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom))
51             except : 
52               if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur)
53             nouvelleValeur=valeur
54          if self.node.item.definition.validators != None :
55           if self.node.item.definition.validators.verif_item(nouvelleValeur) !=1 :
56                 commentaire=self.node.item.definition.validators.info_erreur_item()
57                 self.editor.affiche_infos(commentaire,Qt.red)
58                 return
59          nouvelleValeurFormat=self.politique.GetValeurTexte(nouvelleValeur)
60          validite,commentaire=self.politique.RecordValeur(nouvelleValeurFormat)
61          if commentaire != "" :
62             #PNPNPNP Il faut trouver une solution pour les 2 cas 
63             #   self.editor.affiche_infos(commentaire)
64             #self.Commentaire.setText(tr(commentaire))
65             if validite :
66                 self.editor.affiche_commentaire(commentaire)
67             else :
68                 self.editor.affiche_infos(commentaire,Qt.red)
69          self.setValide()
70
71
72   #def TraiteLEValeurTuple(self,valeurBrute=None) :
73   #      listeValeurs=[]
74   #      if valeurBrute== None :valeurBrute=str(self.LEValeur.text())
75   #      listeValeursSplit=valeurBrute.split(',')
76   #      for val in listeValeursSplit :
77   #          try :
78   #             valeur=eval(val,{})        
79   #          except :
80   #             valeur=val
81   #          listeValeurs.append(valeur)
82   #      return listeValeurs
83
84   def TraiteLEValeur(self,valeurTraitee=None) :
85         # lit la chaine entree dans le line edit
86         # et la tranforme en chaine de valeurs
87         # a traiter. renvoie eventuellement des complexes
88         listeValeurs=[]
89         if valeurTraitee == None :
90            valeurBrute=str(self.LEValeur.text())
91         else :
92            valeurBrute=valeurTraitee
93         if valeurBrute == str("") : return listeValeurs,1
94
95         try :
96             valeur=eval(valeurBrute,{})        
97         except :
98             valeur=valeurBrute
99
100         if type(valeur)  in (list,tuple) :
101            if self.node.item.wait_complex() :
102               indice = 0
103               while (indice < len(valeur)):
104                  v=valeur[indice]
105
106                  if (v== 'RI' or v == 'MP'):
107                     try :
108                        t=tuple([v,valeur[indice+1],valeur[indice+2]])
109                        listeValeurs.append(t)
110                        indice=indice+3
111                     except :
112                        commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
113                        self.editor.affiche_infos(commentaire)
114                        return listeValeurs,0
115                        
116
117                  else :     # ce n'est pas un tuple a la mode aster
118                     listeValeurs.append(v)
119                     indice = indice + 1
120
121            else:  # on n'attend pas un complexe
122              listeValeurs=valeurBrute.split(',')
123
124         elif type(valeur) == bytes:
125              listeValeurs=valeur.split(',')
126         else:
127           listeValeurs.append(valeurBrute)
128
129         return listeValeurs,1
130
131 class SaisieSDCO(object) :
132
133   def LESDCOReturnPressed(self):
134         """
135            Lit le nom donne par l'utilisateur au concept de type CO qui doit ĂȘtre
136            la valeur du MCS courant et stocke cette valeur
137         """
138         self.editor.init_modif()
139         anc_val = self.node.item.get_valeur()
140         if anc_val != None:
141           # il faut egalement propager la destruction de l'ancien concept
142           self.node.item.delete_valeur_co(valeur=anc_val)
143           # et on force le recalcul des concepts de sortie de l'etape
144           self.node.item.object.etape.get_type_produit(force=1)
145           # et le recalcul du contexte
146           self.node.item.object.etape.parent.reset_context()
147         nomConcept = str(self.LESDCO.text())
148         if nomConcept == "" : return
149
150         test,commentaire=self.node.item.set_valeur_co(nomConcept)
151         if test:
152            commentaire=tr("Valeur du mot-clef enregistree")
153            self.node.update_node_valid()
154         else :
155            cr = self.node.item.get_cr()
156            commentaire = tr("Valeur du mot-clef non autorisee :")+cr.get_mess_fatal()
157