Salome HOME
mse a jour du 07/03/2016 pour sauvegarde
[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 import string,types,os
22 from Extensions.i18n import tr
23
24 from determine import monEnvQT5
25 if monEnvQT5:
26     from PyQt5.QtCore import Qt
27 else :
28     from PyQt4.QtGui  import *
29     from PyQt4.QtCore import *
30
31
32 # Import des panels
33
34 class SaisieValeur:
35   """
36   Classe contenant les méthodes communes aux  panels
37   permettant de choisir des valeurs 
38   """
39   def __init__(self):
40        pass
41
42
43   def LEValeurPressed(self,valeur=None):
44          if valeur == None :
45             nouvelleValeur=str(self.lineEditVal.text())
46          else :
47             if hasattr(self,"lineEditVal"):self.lineEditVal.setText(tr(valeur.nom))
48             nouvelleValeur=valeur
49          nouvelleValeurFormat=self.politique.GetValeurTexte(nouvelleValeur)
50          validite,commentaire=self.politique.RecordValeur(nouvelleValeurFormat)
51          if commentaire != "" :
52             #PNPNPNP Il faut trouver une solution pour les 2 cas 
53             #   self.editor.affiche_infos(commentaire)
54             #self.Commentaire.setText(tr(commentaire))
55             if validite :
56                 self.editor.affiche_commentaire(commentaire)
57             else :
58                 self.editor.affiche_infos(commentaire,Qt.red)
59          self.setValide()
60
61
62   #def TraiteLEValeurTuple(self,valeurBrute=None) :
63   #      listeValeurs=[]
64   #      if valeurBrute== None :valeurBrute=str(self.LEValeur.text())
65   #      listeValeursSplit=valeurBrute.split(',')
66   #      for val in listeValeursSplit :
67   #          try :
68   #             valeur=eval(val,{})        
69   #          except :
70   #             valeur=val
71   #          listeValeurs.append(valeur)
72   #      return listeValeurs
73
74   def TraiteLEValeur(self,valeurTraitee=None) :
75         # lit la chaine entree dans le line edit
76         # et la tranforme en chaine de valeurs
77         # a traiter. renvoie eventuellement des complexes
78         listeValeurs=[]
79         if valeurTraitee == None :
80            valeurBrute=str(self.LEValeur.text())
81         else :
82            valeurBrute=valeurTraitee
83         if valeurBrute == str("") : return listeValeurs,1
84
85         try :
86             valeur=eval(valeurBrute,{})        
87         except :
88             valeur=valeurBrute
89
90         if type(valeur)  in (types.ListType,types.TupleType) :
91            if self.node.item.wait_complex() :
92               indice = 0
93               while (indice < len(valeur)):
94                  v=valeur[indice]
95
96                  if (v== 'RI' or v == 'MP'):
97                     try :
98                        t=tuple([v,valeur[indice+1],valeur[indice+2]])
99                        listeValeurs.append(t)
100                        indice=indice+3
101                     except :
102                        commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
103                        self.editor.affiche_infos(commentaire)
104                        return listeValeurs,0
105                        
106
107                  else :     # ce n'est pas un tuple a la mode aster
108                     listeValeurs.append(v)
109                     indice = indice + 1
110
111            else:  # on n'attend pas un complexe
112              listeValeurs=valeurBrute.split(',')
113
114         elif type(valeur) == types.StringType:
115              listeValeurs=valeur.split(',')
116         else:
117           listeValeurs.append(valeurBrute)
118
119         return listeValeurs,1
120
121 class SaisieSDCO :
122
123   def LESDCOReturnPressed(self):
124         """
125            Lit le nom donné par l'utilisateur au concept de type CO qui doit être
126            la valeur du MCS courant et stocke cette valeur
127         """
128         self.editor.init_modif()
129         anc_val = self.node.item.get_valeur()
130         if anc_val != None:
131           # il faut egalement propager la destruction de l'ancien concept
132           self.node.item.delete_valeur_co(valeur=anc_val)
133           # et on force le recalcul des concepts de sortie de l'etape
134           self.node.item.object.etape.get_type_produit(force=1)
135           # et le recalcul du contexte
136           self.node.item.object.etape.parent.reset_context()
137         nomConcept = str(self.LESDCO.text())
138         if nomConcept == "" : return
139
140         test,commentaire=self.node.item.set_valeur_co(nomConcept)
141         if test:
142            commentaire=tr("Valeur du mot-clef enregistree")
143            self.node.update_node_valid()
144         else :
145            cr = self.node.item.get_cr()
146            commentaire = tr("Valeur du mot-clef non autorisee :")+cr.get_mess_fatal()
147