1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 import string,types,os
23 from PyQt4.QtGui import *
24 from PyQt4.QtCore import *
25 from Extensions.i18n import tr
32 Classe contenant les méthodes communes aux panels
33 permettant de choisir des valeurs
38 def InitListBoxASSD(self):
39 listeNomsSD = self.node.item.get_sd_avant_du_bon_type()
40 for aSD in listeNomsSD:
41 self.listBoxASSD.addItem( aSD)
42 QObject.connect(self.listBoxASSD, SIGNAL("doubleClicked(QListWidgetItem*)" ), self.ClicASSD )
43 min,max = self.node.item.GetMinMax()
44 l= self.node.item.GetListeValeurs()
46 if (min == 1 and min == max and len(listeNomsSD)==1 and (l==[] or l==None)):
47 if ('R' not in self.node.item.get_type()) :
48 self.listBoxASSD.setCurrentRow(0)
51 def BuildLBValeurs(self):
52 self.LBValeurs.clear()
53 listeValeurs=self.node.item.GetListeValeurs()
54 #print self.node.item.definition.validators
55 for valeur in listeValeurs:
57 val=self.politique.GetValeurTexte(valeur)
60 self.LBValeurs.addItem(str(val))
61 if listeValeurs != None and listeValeurs != [] :
62 self.LBValeurs.setCurrentRow(len(listeValeurs) - 1)
65 def RemplitPanel(self,listeDejaLa=[],alpha=0):
66 self.listBoxVal.clear()
67 # Traitement particulier pour le validator VerifExistence
68 # dont les valeurs possibles peuvent changer : into variable
69 if hasattr(self.node.item.definition.validators,'set_MCSimp'):
70 obj=self.node.item.getObject()
71 self.node.item.definition.validators.set_MCSimp(obj)
72 if self.node.item.isvalid() == 0 :
74 for item in listeDejaLa:
75 if self.node.item.definition.validators.verif_item(item)==1:
77 self.node.item.set_valeur(liste)
79 self.listeValeursCourantes=liste
80 self.editor.affiche_infos(tr("Attention, valeurs modifiees"), Qt.red)
82 lChoix=self.node.item.get_liste_possible(listeDejaLa)
83 if ((len(lChoix) < 10 ) and (hasattr (self,'BAlpha'))) : self.BAlpha.close()
84 if alpha==1 : lChoix.sort()
85 for valeur in lChoix :
86 self.listBoxVal.addItem( str(valeur) )
88 self.listBoxVal.setCurrentRow(0)
89 self.listBoxVal.item(0).setSelected(1)
94 if self.listBoxASSD.currentItem()== None : return
95 valeurQstring=self.listBoxASSD.currentItem().text()
96 commentaire = tr("Valeur selectionnee : ")
97 commentaire+=valeurQstring
98 self.Commentaire.setText(commentaire)
99 valeur=str(valeurQstring)
100 validite,commentaire=self.politique.RecordValeur(valeur)
101 self.Commentaire.setText(QString(commentaire))
102 self.editor.affiche_infos(commentaire)
104 def ClicValeur(self):
105 if self.listBoxVal.currentItem()== None : return
106 valeurQstring=self.listBoxVal.currentItem().text()
107 valeur=str(valeurQstring)
108 validite,commentaire=self.politique.RecordValeur(valeur)
109 #self.Commentaire.setText(QString(commentaire))
110 self.editor.affiche_infos(commentaire)
112 def BOkPressed(self):
113 if self.listBoxVal.currentItem()==None :
114 commentaire = tr("Pas de valeur selectionnee" )
115 self.Commentaire.setText(QString(commentaire))
119 def BOk2Pressed(self):
120 if str(self.lineEditVal.text())== "" :
121 commentaire = tr("Pas de valeur entree" )
122 self.Commentaire.setText(QString(commentaire))
124 self.LEValeurPressed()
126 def LEValeurPressed(self,valeur=None):
128 nouvelleValeur=str(self.lineEditVal.text())
130 if hasattr(self,"lineEditVal"):self.lineEditVal.setText(QString(valeur.nom))
131 nouvelleValeur=valeur
132 validite,commentaire=self.politique.RecordValeur(nouvelleValeur)
133 if commentaire != "" :
134 #PNPNPNP Il faut trouver une solution pour les 2 cas
135 # self.editor.affiche_infos(commentaire)
136 #self.Commentaire.setText(QString(commentaire))
138 self.editor.affiche_infos(commentaire)
140 self.editor.affiche_infos(commentaire,Qt.red)
144 def TraiteLEValeurTuple(self) :
146 valeurBrute=str(self.LEValeur.text())
147 listeValeursSplit=valeurBrute.split(',')
148 for val in listeValeursSplit :
153 listeValeurs.append(valeur)
156 def TraiteLEValeur(self,valeurTraitee=None) :
157 # lit la chaine entree dans le line edit
158 # et la tranforme en chaine de valeurs
159 # a traiter. renvoie eventuellement des complexes
161 if valeurTraitee == None :
162 valeurBrute=str(self.LEValeur.text())
164 valeurBrute=valeurTraitee
165 if valeurBrute == str("") : return listeValeurs,1
168 valeur=eval(valeurBrute,{})
172 if type(valeur) in (types.ListType,types.TupleType) :
173 if self.node.item.wait_complex() :
175 while (indice < len(valeur)):
178 if (v== 'RI' or v == 'MP'):
180 t=tuple([v,valeur[indice+1],valeur[indice+2]])
181 listeValeurs.append(t)
184 commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
185 self.editor.affiche_infos(commentaire)
186 return listeValeurs,0
189 else : # ce n'est pas un tuple a la mode aster
190 listeValeurs.append(v)
193 else: # on n'attend pas un complexe
194 listeValeurs=valeurBrute.split(',')
196 elif type(valeur) == types.StringType:
197 listeValeurs=valeur.split(',')
199 listeValeurs.append(valeurBrute)
201 return listeValeurs,1
208 def LESDCOReturnPressed(self):
210 Lit le nom donné par l'utilisateur au concept de type CO qui doit être
211 la valeur du MCS courant et stocke cette valeur
213 self.editor.init_modif()
214 anc_val = self.node.item.get_valeur()
216 # il faut egalement propager la destruction de l'ancien concept
217 self.node.item.delete_valeur_co(valeur=anc_val)
218 # et on force le recalcul des concepts de sortie de l'etape
219 self.node.item.object.etape.get_type_produit(force=1)
220 # et le recalcul du contexte
221 self.node.item.object.etape.parent.reset_context()
222 nomConcept = str(self.LESDCO.text())
223 if nomConcept == "" : return
225 test,commentaire=self.node.item.set_valeur_co(nomConcept)
227 commentaire=tr("Valeur du mot-clef enregistree")
228 self.node.update_node_valid()
230 cr = self.node.item.get_cr()
231 commentaire = tr("Valeur du mot-clef non autorisee :")+cr.get_mess_fatal()
232 self.node.item.set_valeur_co(anc_val)
233 self.Commentaire.setText(QString.fromUtf8(QString(commentaire)))