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.
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.
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.
20 # ======================================================================
22 import string,types,os
24 from PyQt4.QtGui import *
25 from PyQt4.QtCore import *
31 Classe contenant les méthodes communes aux panels
32 permettant de choisir des valeurs
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()
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)
50 def BuildLBValeurs(self):
51 self.LBValeurs.clear()
52 listeValeurs=self.node.item.GetListeValeurs()
53 #print self.node.item.definition.validators
54 for valeur in listeValeurs:
56 val=self.politique.GetValeurTexte(valeur)
59 self.LBValeurs.addItem(str(val))
60 if listeValeurs != None and listeValeurs != [] :
61 self.LBValeurs.setCurrentRow(len(listeValeurs) - 1)
64 def RemplitPanel(self,listeDejaLa=[]):
65 self.listBoxVal.clear()
66 # Traitement particulier pour le validator VerifExistence
67 # dont les valeurs possibles peuvent changer : into variable
68 if hasattr(self.node.item.definition.validators,'set_MCSimp'):
69 obj=self.node.item.getObject()
70 self.node.item.definition.validators.set_MCSimp(obj)
71 if self.node.item.isvalid() == 0 :
73 for item in listeDejaLa:
74 if self.node.item.definition.validators.verif_item(item)==1:
76 self.node.item.set_valeur(liste)
78 self.listeValeursCourantes=liste
79 self.editor.affiche_infos("Attention, valeurs modifiees", Qt.red)
81 lChoix=self.node.item.get_liste_possible(listeDejaLa)
82 for valeur in lChoix :
83 self.listBoxVal.addItem( str(valeur) )
85 self.listBoxVal.setCurrentRow(0)
86 self.listBoxVal.item(0).setSelected(1)
90 if self.listBoxASSD.currentItem()== None : return
91 valeurQstring=self.listBoxASSD.currentItem().text()
92 commentaire = QString("Valeur selectionnée : ")
93 commentaire.append(valeurQstring)
94 self.Commentaire.setText(commentaire)
95 valeur=str(valeurQstring)
96 validite,commentaire=self.politique.RecordValeur(valeur)
97 self.Commentaire.setText(QString(commentaire))
98 self.editor.affiche_infos(commentaire)
100 def ClicValeur(self):
101 if self.listBoxVal.currentItem()== None : return
102 valeurQstring=self.listBoxVal.currentItem().text()
103 valeur=str(valeurQstring)
104 validite,commentaire=self.politique.RecordValeur(valeur)
105 #self.Commentaire.setText(QString(commentaire))
106 self.editor.affiche_infos(commentaire)
108 def BOkPressed(self):
109 if self.listBoxVal.currentItem()==None :
110 commentaire = "Pas de valeur selectionnée"
111 self.Commentaire.setText(QString(commentaire))
115 def BOk2Pressed(self):
116 if str(self.lineEditVal.text())== "" :
117 commentaire = "Pas de valeur entrée "
118 self.Commentaire.setText(QString(commentaire))
120 self.LEValeurPressed()
122 def LEValeurPressed(self,valeur=None):
124 nouvelleValeur=str(self.lineEditVal.text())
126 self.lineEditVal.setText(QString(valeur.nom))
127 nouvelleValeur=valeur
128 validite,commentaire=self.politique.RecordValeur(nouvelleValeur)
129 if commentaire != "" :
130 #self.Commentaire.setText(QString(commentaire))
131 self.editor.affiche_infos(commentaire)
134 def TraiteLEValeurTuple(self) :
136 valeurBrute=str(self.LEValeur.text())
137 listeValeursSplit=valeurBrute.split(',')
138 for val in listeValeursSplit :
143 listeValeurs.append(valeur)
146 def TraiteLEValeur(self,valeurTraitee=None) :
147 # lit la chaine entree dans le line edit
148 # et la tranforme en chaine de valeurs
149 # a traiter. renvoie eventuellement des complexes
151 if valeurTraitee == None :
152 valeurBrute=str(self.LEValeur.text())
154 valeurBrute=valeurTraitee
155 if valeurBrute == str("") : return listeValeurs,1
158 valeur=eval(valeurBrute,{})
162 if type(valeur) in (types.ListType,types.TupleType) :
163 if self.node.item.wait_complex() :
165 while (indice < len(valeur)):
168 if (v== 'RI' or v == 'MP'):
170 t=tuple([v,valeur[indice+1],valeur[indice+2]])
171 listeValeurs.append(t)
174 commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
175 self.editor.affiche_infos(commentaire)
176 return listeValeurs,0
179 else : # ce n'est pas un tuple à la mode aster
180 listeValeurs.append(v)
183 else: # on n'attend pas un complexe
184 listeValeurs=valeurBrute.split(',')
186 elif type(valeur) == types.StringType:
187 listeValeurs=valeur.split(',')
189 listeValeurs.append(valeurBrute)
191 return listeValeurs,1
198 def LESDCOReturnPressed(self):
200 Lit le nom donné par l'utilisateur au concept de type CO qui doit être
201 la valeur du MCS courant et stocke cette valeur
203 self.editor.init_modif()
204 anc_val = self.node.item.get_valeur()
206 # il faut egalement propager la destruction de l'ancien concept
207 self.node.item.delete_valeur_co(valeur=anc_val)
208 # et on force le recalcul des concepts de sortie de l'etape
209 self.node.item.object.etape.get_type_produit(force=1)
210 # et le recalcul du contexte
211 self.node.item.object.etape.parent.reset_context()
212 nomConcept = str(self.LESDCO.text())
213 if nomConcept == "" : return
215 test,commentaire=self.node.item.set_valeur_co(nomConcept)
217 commentaire="Valeur du mot-clé enregistree"
218 self.node.update_node_valid()
220 cr = self.node.item.get_cr()
221 commentaire = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
222 self.node.item.set_valeur_co(anc_val)
223 self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))