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
25 from PyQt4.QtGui import *
26 from PyQt4.QtCore import *
28 from desMatrice import Ui_desMatrice
31 class MonMatricePanel(Ui_desMatrice,QDialog):
33 Classe définissant le panel Matrice
34 Attention n herite pas de QtPanel
36 def __init__(self,node, parent = None,name = None,fl = 0):
37 QDialog.__init__(self,parent)
42 self.monType= self.node.item.object.definition.type[0]
43 if hasattr(parent,"leLayout"):
44 parent.leLayout.removeWidget(parent.leLayout.widgetActive)
45 parent.leLayout.widgetActive.close()
46 parent.leLayout.addWidget(self)
47 parent.leLayout.widgetActive=self
49 parent.partieDroite=QWidget()
50 parent.leLayout=QGridLayout(parent.partieDroite)
51 parent.leLayout.addWidget(self)
52 parent.addWidget(parent.partieDroite)
53 parent.leLayout.widgetActive=self
57 self.connecterSignaux()
58 if self.node.item.get_valeur()== None:
59 self.initialSsValeur()
64 self.initialSsValeur()
69 def connecterSignaux(self) :
70 self.connect(self.TBMatrice,SIGNAL("itemChanged(QTableWidgetItem *)"),self.itemChanged)
71 self.connect(self.BOk,SIGNAL("clicked()"),self.acceptVal)
73 def itemChanged(self):
74 monItem=self.TBMatrice.currentItem()
75 if monItem==None : return
78 val,ok=texte.toDouble()
80 self.editor.affiche_infos("Entrer un float SVP",Qt.red)
83 if self.monType.valSup != None :
84 if val > self.monType.valSup :
85 self.editor.affiche_infos("Entrer un float inférieur à " + repr(self.monType.valSup),Qt.red)
88 if self.monType.valMin != None :
89 if val < self.monType.valMin :
90 self.editor.affiche_infos("Entrer un float superieur à " + repr(self.monType.valMin),Qt.red)
93 self.editor.affiche_infos("")
94 if self.monType.structure != None:
95 apply (MonMatricePanel.__dict__[self.monType.structure],(self,))
99 monItem=self.TBMatrice.currentItem()
101 if monItem.row() != monItem.column():
102 monItemSym=self.TBMatrice.item(monItem.column(), monItem.row())
103 monItemSym.setText(texte)
105 def creeColonnes(self):
106 if self.monType.methodeCalculTaille != None :
109 apply (MonMatricePanel.__dict__[self.monType.methodeCalculTaille],(self,))
112 QMessageBox.critical( self, "Mauvaise execution ", "impossible d executer la méthode " + monType.methodeCalculTaille )
115 self.nbLigs=self.monType.nbLigs
116 self.nbCols=self.monType.nbCols
119 def NbDeVariables(self):
120 jdc=self.node.item.object.jdc
121 etape=self.node.item.object.etape
122 self.listeVariables=jdc.get_variables(etape)
123 if self.listeVariables == [] :
124 QMessageBox.critical( self, "Mauvaise Commande ", "Aucune variable connue")
126 self.TBMatrice.setColumnCount(len(self.listeVariables))
127 self.TBMatrice.setRowCount(len(self.listeVariables))
128 self.nbLigs=len(self.listeVariables)
129 self.nbCols=len(self.listeVariables)
131 def initialSsValeur(self):
132 for row in range(self.nbLigs):
133 for column in range(self.nbCols):
138 self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat)))
140 for var in self.listeVariables :
142 self.TBMatrice.setVerticalHeaderLabels(header)
143 self.TBMatrice.setHorizontalHeaderLabels(header)
145 def initialValeur(self):
146 liste=self.node.item.get_valeur()
148 if (len(liste)) != self.nbLigs +1 :
149 QMessageBox.critical( self, "Mauvaise dimension de matrice", "le nombre de ligne n est pas egal a " + str(self.nbLigs))
151 for i in range(self.nbLigs):
153 if (len(inter)) != self.nbCols and (dejaAffiche == 0 ) :
154 QMessageBox.critical( self, "Mauvaise dimension de matrice", "le nombre de colonne n est pas egal a " + str(self.nbCols))
156 for j in range(self.nbCols):
157 self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i+1][j])))
161 self.TBMatrice.setVerticalHeaderLabels(header)
162 self.TBMatrice.setHorizontalHeaderLabels(header)
166 liste.append(self.listeVariables)
167 if self.TBMatrice.rowCount() != self.nbLigs :
168 QMessageBox.critical( self, "Mauvaise dimension de matrice", "le nombre de ligne n est pas egal a " + str(self.nbLigs))
169 if self.TBMatrice.columnCount() != self.nbCols :
170 QMessageBox.critical( self, "Mauvaise dimension de matrice", "le nombre de colonne n est pas egal a " + str(self.nbCols))
171 for i in range(self.nbLigs):
173 for j in range(self.nbCols):
174 monItem=self.TBMatrice.item(i,j)
176 val,ok=texte.toDouble()
178 QMessageBox.critical( self, "Mauvaise Valeur", "l element " + str(i) + "," +str(j) +"n est pas correct")
180 liste.append(listeCol)
181 # on ajoute l ordre des variables aux valeurs
182 self.node.item.set_valeur(liste)