]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/monPlusieursBasePanel.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / InterfaceQT4 / monPlusieursBasePanel.py
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.
9 #
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.
14 #
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.
18 #
19 #
20 # ======================================================================
21 # Modules Python
22 import string,types,os
23
24 # Modules Eficas
25 from PyQt4.QtGui import *
26 from PyQt4.QtCore import *
27
28 from desPlusieursBase import Ui_DPlusBase
29 from qtCommun      import QTPanel
30 from qtSaisie      import SaisieValeur
31 from politiquesValidation import PolitiquePlusieurs
32
33 class DPlusBase (Ui_DPlusBase,QDialog):
34    def __init__(self,parent ,modal ) :
35        QDialog.__init__(self,parent)
36        if hasattr(parent,"leLayout"):
37           parent.leLayout.removeWidget(parent.leLayout.widgetActive)
38           parent.leLayout.widgetActive.close()
39           parent.leLayout.addWidget(self)
40           parent.leLayout.widgetActive=self
41        else:
42           parent.partieDroite=QWidget()
43           parent.leLayout=QGridLayout(parent.partieDroite)
44           parent.leLayout.addWidget(self)
45           parent.addWidget(parent.partieDroite)
46           parent.leLayout.widgetActive=self
47        self.setupUi(self)
48
49 # Import des panels
50
51 class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
52   """
53   Classe définissant le panel associé aux mots-clés qui demandent
54   à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
55   discrètes
56   """
57   def __init__(self,node, parent = None,name = None,fl = 0):
58         #print "MonPlusieursBasePanel"
59         QTPanel.__init__(self,node,parent)
60         DPlusBase.__init__(self,parent,fl)
61         self.politique=PolitiquePlusieurs(node,parent)
62         self.BuildLBValeurs()
63         self.listeValeursCourantes=self.node.item.GetListeValeurs()
64         self.InitCommentaire()
65         self.detruitBouton()
66         self.connecterSignaux()
67
68   def connecterSignaux(self) :
69         self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
70         self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
71         self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
72         self.connect(self.bParam,SIGNAL("clicked()"),self.BParametresPressed)
73         self.connect(self.bImport,SIGNAL("clicked()"),self.BImportPressed)
74         self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
75         self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
76         self.connect(self.LEValeur,SIGNAL("returnPressed()"),self.LEValeurPressed)
77         self.connect(self.BSalome,SIGNAL("clicked()"),self.BSalomePressed)
78         self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
79
80   def detruitBouton(self):
81         mc = self.node.item.get_definition()
82         type = mc.type[0]
83         print self.editor.salome
84         if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
85            self.BSalome.close()
86            self.BView2D.close()
87
88   def ViewDoc(self):
89         QTPanel.ViewDoc(self)
90
91   def BuildLBValeurs(self):
92        # redefinit en raison de l heritage par monFonctionPanel
93         SaisieValeur.BuildLBValeurs(self)
94
95   def BOkPourListePressed(self):
96         self.editor.init_modif()
97         if self.listeValeursCourantes == [] :
98            self.editor.affiche_infos("Pas de validation d un groupe vide")
99            return
100         self.node.item.set_valeur(self.listeValeursCourantes)
101         self.editor.affiche_infos("Valeur Acceptée")
102
103   def BSupPressed(self):
104         QTPanel.BSupPressed(self)
105
106   def BParametresPressed(self):
107         QTPanel.BParametresPressed(self)
108
109   def LEValeurPressed(self):
110         self.Ajout1Valeur()
111
112   def Sup1Valeur(self):
113         index=self.LBValeurs.currentRow()
114         if index < 0 : return
115         if self.LBValeurs.isItemSelected(self.LBValeurs.item(index)) == 0 : return
116         self.LEValeur.setText(self.LBValeurs.item(index).text())
117         self.LBValeurs.takeItem(index)
118         listeVal=[]
119         i=0
120         for valeur in self.listeValeursCourantes :
121                 if i != index : listeVal.append(valeur)
122                 i = i+1
123         self.listeValeursCourantes=listeVal
124           
125
126   def Ajout1Valeur(self,valeur=None):
127         liste,validite=SaisieValeur.TraiteLEValeur(self,valeur)
128         if validite == 0 : return
129         if liste ==[]    : return
130
131         indexCourant=self.LBValeurs.currentRow()
132         if ( (self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant )) == 0) 
133            and (indexCourant > 0 )):
134            index=0
135         else :
136            index=self.LBValeurs.currentRow() + 1
137
138         listeVal=[]
139         for valeur in self.listeValeursCourantes :
140                 listeVal.append(valeur)
141         validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal) 
142         self.Commentaire.setText(comm2)
143         if not validite :
144                 self.editor.affiche_infos(comm)
145         else:
146            self.LEValeur.setText(QString(""))
147            l1=self.listeValeursCourantes[:index]
148            l3=self.listeValeursCourantes[index:]
149            for valeur in listeRetour:
150                self.LBValeurs.insertItem(index,QString(str(valeur)))
151                item=self.LBValeurs.item(index)
152                item.setSelected(1)
153                self.LBValeurs.setCurrentItem(item)
154                index=index+1
155            self.listeValeursCourantes=l1+listeRetour+l3
156            self.editor.affiche_infos("Valeurs Ajoutées")
157
158   def BImportPressed(self):
159         init=QString( self.editor.CONFIGURATION.rep_user)
160         fn = QFileDialog.getOpenFileName(self.node.appliEficas, 
161                                          self.node.appliEficas.trUtf8('Fichier de données'), 
162                                          QString(),
163                                          self.trUtf8('All Files (*)',))
164         if fn == None : return
165         if fn == "" : return
166         from monSelectVal import MonSelectVal
167         MonSelectVal(file=fn,parent=self).show()
168
169   def InitCommentaire(self):
170         commentaire=""
171         mc = self.node.item.get_definition()
172         d_aides = { 'TXM' : 'chaînes de caractères',
173                   'R'   : 'réels',
174                   'I'   : 'entiers',
175                   'C'   : 'complexes'}
176         type = mc.type[0]
177         if not d_aides.has_key(type) :
178            if mc.min == mc.max:
179                commentaire="Entrez "+str(mc.min)+" valeurs "
180            else :
181                commentaire="Entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs "
182         else :
183            if mc.min == mc.max:
184                commentaire="Entrez "+str(mc.min)+" "+d_aides[type]
185            else :
186                commentaire="Entrez entre "+str(mc.min)+" et  "+str(mc.max) +" " + d_aides[type]
187         aideval=self.node.item.aide()
188         commentaire=commentaire + "\n" + aideval
189         self.Commentaire.setText(QString(commentaire))
190
191   def BSalomePressed(self):
192
193         genea=self.node.item.get_genealogie()
194         kwType = None
195         for e in genea:
196             if "GROUP_NO" in e: kwType = "GROUP_NO"
197             if "GROUP_MA" in e: kwType = "GROUP_MA"
198
199         #print "BkwType",kwType
200         #print "editor", self.editor
201         selection, commentaire = self.editor.parent.appliEficas.selectGroupFromSalome(kwType,editor=self.editor)
202         if commentaire !="" :
203             self.Commentaire.setText(QString(commentaire))
204         monTexte=""
205         if selection == [] : return
206         for geomElt in selection: 
207             monTexte=geomElt+","
208         monTexte= monTexte[0:-1]
209         self.LEValeur.setText(QString(monTexte))
210
211   def BView2DPressed(self):
212         valeur=self.LEValeur.text()
213         if valeur == QString("") :
214            valeur=self.LBValeurs.currentText()
215         if valeur == QString("") : return
216         valeur = str(valeur)
217         if valeur :
218            ok, msgError = self.editor.parent.appliEficas.displayShape(valeur)
219            if not ok:
220               self.editor.parent.appli.affiche_infos(msgError)
221