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(QListWidgetItem*)" ), 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=[],alpha=0):
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 if ((len(lChoix) < 10 ) and (hasattr (self,'BAlpha'))) :
86 for valeur in lChoix :
87 self.listBoxVal.addItem( str(valeur) )
89 self.listBoxVal.setCurrentRow(0)
90 self.listBoxVal.item(0).setSelected(1)
95 if self.listBoxASSD.currentItem()== None : return
96 valeurQstring=self.listBoxASSD.currentItem().text()
97 commentaire = QString("Valeur selectionnée : ")
98 commentaire.append(valeurQstring)
99 self.Commentaire.setText(commentaire)
100 valeur=str(valeurQstring)
101 validite,commentaire=self.politique.RecordValeur(valeur)
102 self.Commentaire.setText(QString(commentaire))
103 self.editor.affiche_infos(commentaire)
105 def ClicValeur(self):
106 if self.listBoxVal.currentItem()== None : return
107 valeurQstring=self.listBoxVal.currentItem().text()
108 valeur=str(valeurQstring)
109 validite,commentaire=self.politique.RecordValeur(valeur)
110 #self.Commentaire.setText(QString(commentaire))
111 self.editor.affiche_infos(commentaire)
113 def BOkPressed(self):
114 if self.listBoxVal.currentItem()==None :
115 commentaire = "Pas de valeur selectionnée"
116 self.Commentaire.setText(QString(commentaire))
120 def BOk2Pressed(self):
121 if str(self.lineEditVal.text())== "" :
122 commentaire = "Pas de valeur entrée "
123 self.Commentaire.setText(QString(commentaire))
125 self.LEValeurPressed()
127 def LEValeurPressed(self,valeur=None):
129 nouvelleValeur=str(self.lineEditVal.text())
131 self.lineEditVal.setText(QString(valeur.nom))
132 nouvelleValeur=valeur
133 validite,commentaire=self.politique.RecordValeur(nouvelleValeur)
134 if commentaire != "" :
135 #self.Commentaire.setText(QString(commentaire))
136 self.editor.affiche_infos(commentaire)
139 def TraiteLEValeurTuple(self) :
141 valeurBrute=str(self.LEValeur.text())
142 listeValeursSplit=valeurBrute.split(',')
143 for val in listeValeursSplit :
148 listeValeurs.append(valeur)
151 def TraiteLEValeur(self,valeurTraitee=None) :
152 # lit la chaine entree dans le line edit
153 # et la tranforme en chaine de valeurs
154 # a traiter. renvoie eventuellement des complexes
156 if valeurTraitee == None :
157 valeurBrute=str(self.LEValeur.text())
159 valeurBrute=valeurTraitee
160 if valeurBrute == str("") : return listeValeurs,1
163 valeur=eval(valeurBrute,{})
167 if type(valeur) in (types.ListType,types.TupleType) :
168 if self.node.item.wait_complex() :
170 while (indice < len(valeur)):
173 if (v== 'RI' or v == 'MP'):
175 t=tuple([v,valeur[indice+1],valeur[indice+2]])
176 listeValeurs.append(t)
179 commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
180 self.editor.affiche_infos(commentaire)
181 return listeValeurs,0
184 else : # ce n'est pas un tuple à la mode aster
185 listeValeurs.append(v)
188 else: # on n'attend pas un complexe
189 listeValeurs=valeurBrute.split(',')
191 elif type(valeur) == types.StringType:
192 listeValeurs=valeur.split(',')
194 listeValeurs.append(valeurBrute)
196 return listeValeurs,1
203 def LESDCOReturnPressed(self):
205 Lit le nom donné par l'utilisateur au concept de type CO qui doit être
206 la valeur du MCS courant et stocke cette valeur
208 self.editor.init_modif()
209 anc_val = self.node.item.get_valeur()
211 # il faut egalement propager la destruction de l'ancien concept
212 self.node.item.delete_valeur_co(valeur=anc_val)
213 # et on force le recalcul des concepts de sortie de l'etape
214 self.node.item.object.etape.get_type_produit(force=1)
215 # et le recalcul du contexte
216 self.node.item.object.etape.parent.reset_context()
217 nomConcept = str(self.LESDCO.text())
218 if nomConcept == "" : return
220 test,commentaire=self.node.item.set_valeur_co(nomConcept)
222 commentaire="Valeur du mot-clé enregistree"
223 self.node.update_node_valid()
225 cr = self.node.item.get_cr()
226 commentaire = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
227 self.node.item.set_valeur_co(anc_val)
228 self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))