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 for valeur in listeValeurs:
54 self.LBValeurs.addItem(str(valeur))
55 if listeValeurs != None and listeValeurs != [] :
56 self.LBValeurs.setCurrentRow(len(listeValeurs) - 1)
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) )
65 self.listBoxVal.setCurrentRow(1)
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)
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)
87 if self.listBoxVal.currentItem()==None :
88 commentaire = "Pas de valeur selectionnée"
89 self.Commentaire.setText(QString(commentaire))
93 def BOk2Pressed(self):
94 if str(self.lineEditVal.text())== "" :
95 commentaire = "Pas de valeur entrée "
96 self.Commentaire.setText(QString(commentaire))
98 self.LEValeurPressed()
100 def LEValeurPressed(self,valeur=None):
102 nouvelleValeur=str(self.lineEditVal.text())
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)
112 def TraiteLEValeurTuple(self) :
114 valeurBrute=str(self.LEValeur.text())
115 listeValeursSplit=valeurBrute.split(',')
116 for val in listeValeursSplit :
121 listeValeurs.append(valeur)
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
129 if valeurTraitee == None :
130 valeurBrute=str(self.LEValeur.text())
132 valeurBrute=valeurTraitee
133 if valeurBrute == str("") : return listeValeurs,1
136 valeur=eval(valeurBrute,{})
140 if type(valeur) in (types.ListType,types.TupleType) :
141 if self.node.item.wait_complex() :
143 while (indice < len(valeur)):
146 if (v== 'RI' or v == 'MP'):
148 t=tuple([v,valeur[indice+1],valeur[indice+2]])
149 listeValeurs.append(t)
152 commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
153 self.editor.affiche_infos(commentaire)
154 return listeValeurs,0
157 else : # ce n'est pas un tuple à la mode aster
158 listeValeurs.append(v)
161 else: # on n'attend pas un complexe
162 listeValeurs=valeurBrute.split(',')
164 elif type(valeur) == types.StringType:
165 listeValeurs=valeur.split(',')
167 listeValeurs.append(valeur)
169 return listeValeurs,1
176 def LESDCOReturnPressed(self):
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
181 self.editor.init_modif()
182 anc_val = self.node.item.get_valeur()
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
193 test,commentaire=self.node.item.set_valeur_co(nomConcept)
195 commentaire="Valeur du mot-clé enregistree"
196 self.node.update_node_valid()
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))