Salome HOME
*** empty log message ***
[tools/eficas.git] / InterfaceQT4 / qtSaisie.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 # Modules Python
22 import string,types,os
23 from PyQt4 import *
24 from PyQt4.QtGui import *
25 from PyQt4.QtCore import *
26
27 # Import des panels
28
29 class SaisieValeur:
30   """
31   Classe contenant les méthodes communes aux  panels
32   permettant de choisir des valeurs 
33   """
34   def __init__(self):
35         pass
36
37   def InitListBoxASSD(self):
38        listeNomsSD = self.node.item.get_sd_avant_du_bon_type()
39        for aSD in listeNomsSD:
40             self.listBoxASSD.addItem( aSD)
41             QObject.connect(self.listBoxASSD, SIGNAL("doubleClicked(QListBoxItem*)" ), self.ClicASSD )
42        min,max =  self.node.item.GetMinMax()
43        l= self.node.item.GetListeValeurs()
44        
45        if (min == 1 and min == max and len(listeNomsSD)==1 and (l==[] or l==None)):
46             if ('R' not in self.node.item.get_type()) :
47                self.listBoxASSD.setCurrentRow(0)
48
49
50   def BuildLBValeurs(self):
51         self.LBValeurs.clear()
52         listeValeurs=self.node.item.GetListeValeurs()
53         for valeur in listeValeurs:
54             self.LBValeurs.addItem(str(valeur))
55         if listeValeurs != None and listeValeurs != [] :
56             self.LBValeurs.setCurrentRow(len(listeValeurs) - 1)
57        
58
59   def RemplitPanel(self,listeDejaLa=[]):
60         self.listBoxVal.clear()
61         lChoix=self.node.item.get_liste_possible(listeDejaLa)
62         for valeur in lChoix :
63             self.listBoxVal.addItem( str(valeur) ) 
64         if len(lChoix) == 1 :
65             self.listBoxVal.setCurrentRow(1)
66
67   def ClicASSD(self):
68          if self.listBoxASSD.currentItem()== None : return
69          valeurQstring=self.listBoxASSD.currentItem().text()
70          commentaire = QString("Valeur selectionnée : ") 
71          commentaire.append(valeurQstring)
72          self.Commentaire.setText(commentaire)
73          valeur=str(valeurQstring)
74          validite,commentaire=self.politique.RecordValeur(valeur)
75          self.Commentaire.setText(QString(commentaire))
76          self.editor.affiche_infos(commentaire)
77
78   def ClicValeur(self):
79          if self.listBoxVal.currentItem()== None : return
80          valeurQstring=self.listBoxVal.currentItem().text()
81          valeur=str(valeurQstring)
82          validite,commentaire=self.politique.RecordValeur(valeur)
83          #self.Commentaire.setText(QString(commentaire))
84          self.editor.affiche_infos(commentaire)
85
86   def BOkPressed(self):
87          if self.listBoxVal.currentItem()==None :
88             commentaire = "Pas de valeur selectionnée" 
89             self.Commentaire.setText(QString(commentaire))
90          else :
91             self.ClicValeur()       
92
93   def BOk2Pressed(self):
94          if str(self.lineEditVal.text())== "" :
95             commentaire = "Pas de valeur entrée " 
96             self.Commentaire.setText(QString(commentaire))
97          else :
98             self.LEValeurPressed()       
99
100   def LEValeurPressed(self,valeur=None):
101          if valeur == None :
102             nouvelleValeur=str(self.lineEditVal.text())
103          else :
104             self.lineEditVal.setText(QString(valeur.nom))
105             nouvelleValeur=valeur
106          validite,commentaire=self.politique.RecordValeur(nouvelleValeur)
107          if commentaire != "" :
108             #self.Commentaire.setText(QString(commentaire))
109             self.editor.affiche_infos(commentaire)
110
111
112   def TraiteLEValeurTuple(self) :
113         listeValeurs=[]
114         valeurBrute=str(self.LEValeur.text())
115         listeValeursSplit=valeurBrute.split(',')
116         for val in listeValeursSplit :
117             try :
118                valeur=eval(val,{})        
119             except :
120                valeur=val
121             listeValeurs.append(valeur)
122         return listeValeurs
123
124   def TraiteLEValeur(self,valeurTraitee=None) :
125         # lit la chaine entree dans le line edit
126         # et la tranforme en chaine de valeurs
127         # a traiter. renvoie eventuellement des complexes
128         listeValeurs=[]
129         if valeurTraitee == None :
130            valeurBrute=str(self.LEValeur.text())
131         else :
132            valeurBrute=valeurTraitee
133         if valeurBrute == str("") : return listeValeurs,1
134
135         try :
136             valeur=eval(valeurBrute,{})        
137         except :
138             valeur=valeurBrute
139
140         if type(valeur)  in (types.ListType,types.TupleType) :
141            if self.node.item.wait_complex() :
142               indice = 0
143               while (indice < len(valeur)):
144                  v=valeur[indice]
145
146                  if (v== 'RI' or v == 'MP'):
147                     try :
148                        t=tuple([v,valeur[indice+1],valeur[indice+2]])
149                        listeValeurs.append(t)
150                        indice=indice+3
151                     except :
152                        commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
153                        self.editor.affiche_infos(commentaire)
154                        return listeValeurs,0
155                        
156
157                  else :     # ce n'est pas un tuple à la mode aster
158                     listeValeurs.append(v)
159                     indice = indice + 1
160
161            else:  # on n'attend pas un complexe
162              listeValeurs=valeurBrute.split(',')
163
164         elif type(valeur) == types.StringType:
165              listeValeurs=valeur.split(',')
166         else:
167           listeValeurs.append(valeur)
168
169         return listeValeurs,1
170
171
172 class SaisieSDCO :
173   def __init__(self):
174         pass
175
176   def LESDCOReturnPressed(self):
177         """
178            Lit le nom donné par l'utilisateur au concept de type CO qui doit être
179            la valeur du MCS courant et stocke cette valeur
180         """
181         self.editor.init_modif()
182         anc_val = self.node.item.get_valeur()
183         if anc_val != None:
184           # il faut egalement propager la destruction de l'ancien concept
185           self.node.item.delete_valeur_co(valeur=anc_val)
186           # et on force le recalcul des concepts de sortie de l'etape
187           self.node.item.object.etape.get_type_produit(force=1)
188           # et le recalcul du contexte
189           self.node.item.object.etape.parent.reset_context()
190         nomConcept = str(self.LESDCO.text())
191         if nomConcept == "" : return
192
193         test,commentaire=self.node.item.set_valeur_co(nomConcept)
194         if test:
195            commentaire="Valeur du mot-clé enregistree"
196            self.node.update_node_valid()
197         else :
198            cr = self.node.item.get_cr()
199            commentaire = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
200            self.node.item.set_valeur_co(anc_val)
201         self.Commentaire.setText(QString(commentaire))