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