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.setCurrentItem(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 TraiteLEValeur(self,valeurTraitee=None) :
113 # lit la chaine entree dans le line edit
114 # et la tranforme en chaine de valeurs
115 # a traiter. renvoie eventuellement des complexes
117 if valeurTraitee == None :
118 valeurBrute=str(self.LEValeur.text())
120 valeurBrute=valeurTraitee
121 if valeurBrute == str("") : return listeValeurs,1
124 valeur=eval(valeurBrute,{})
128 if type(valeur) in (types.ListType,types.TupleType) :
129 if self.node.item.wait_complex() :
131 while (indice < len(valeur)):
134 if (v== 'RI' or v == 'MP'):
136 t=tuple([v,valeur[indice+1],valeur[indice+2]])
137 listeValeurs.append(t)
140 commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
141 self.editor.affiche_infos(commentaire)
142 return listeValeurs,0
145 else : # ce n'est pas un tuple à la mode aster
146 listeValeurs.append(v)
149 else: # on n'attend pas un complexe
150 listeValeurs=valeurBrute.split(',')
152 elif type(valeur) == types.StringType:
153 listeValeurs=valeur.split(',')
155 listeValeurs.append(valeur)
157 return listeValeurs,1
164 def LESDCOReturnPressed(self):
166 Lit le nom donné par l'utilisateur au concept de type CO qui doit être
167 la valeur du MCS courant et stocke cette valeur
169 self.editor.init_modif()
170 anc_val = self.node.item.get_valeur()
172 # il faut egalement propager la destruction de l'ancien concept
173 self.node.item.delete_valeur_co(valeur=anc_val)
174 # et on force le recalcul des concepts de sortie de l'etape
175 self.node.item.object.etape.get_type_produit(force=1)
176 # et le recalcul du contexte
177 self.node.item.object.etape.parent.reset_context()
178 nomConcept = str(self.LESDCO.text())
179 if nomConcept == "" : return
181 test,commentaire=self.node.item.set_valeur_co(nomConcept)
183 commentaire="Valeur du mot-clé enregistree"
184 self.node.update_node_valid()
186 cr = self.node.item.get_cr()
187 commentaire = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
188 self.node.item.set_valeur_co(anc_val)
189 self.Commentaire.setText(QString(commentaire))