1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017 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 from __future__ import absolute_import
22 from __future__ import print_function
24 from builtins import str
29 from PyQt5.QtCore import Qt
30 from PyQt5.QtWidgets import QWidget
34 from Extensions.i18n import tr
36 from .feuille import Feuille
37 from desWidgetRadioButton import Ui_WidgetRadioButton
38 from .politiquesValidation import PolitiqueUnique
39 from .qtSaisie import SaisieValeur
42 class MonWidgetRadioButtonCommun (Feuille):
43 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
45 Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
46 self.politique=PolitiqueUnique(self.node,self.editor)
49 self.setValeursApresBouton()
50 self.parentQt.commandesLayout.insertWidget(-1,self)
51 self.AAfficher=self.radioButton_1
52 self.maCommande.listeAffichageWidget.append(self.radioButton_1)
55 def setValeursApresBouton(self):
56 if self.objSimp.getValeur()==None : return
57 valeur=self.objSimp.getValeur()
58 if not(isinstance(valeur, str)) : valeur = str(valeur)
60 self.dict_bouton[valeur].setChecked(True)
61 self.dict_bouton[valeur].setFocus(True)
65 def determineChoix(self):
66 self.horizontalLayout.setAlignment(Qt.AlignLeft)
68 j=len(self.maListeDeValeur)
70 print ("poumbadaboum")
73 nomBouton="radioButton_"+str(i)
74 bouton=getattr(self,nomBouton)
75 valeur=self.maListeDeValeur[i-1]
76 if not(isinstance(valeur, str)) : valeur = str(valeur)
77 bouton.setText(tr(valeur))
78 self.dict_bouton[valeur]=bouton
79 bouton.clicked.connect(self.boutonclic)
80 bouton.keyPressEvent=self.keyPressEvent
81 setattr(self,nomBouton,bouton)
83 while i < self.maxI +1 :
84 nomBouton="radioButton_"+str(i)
85 bouton=getattr(self,nomBouton)
90 for valeur in self.dict_bouton:
91 if self.dict_bouton[valeur].isChecked():
92 #print "dans boutonclic is checked", valeur, type(valeur)
93 SaisieValeur.LEvaleurPressed(self,valeur)
97 def keyPressEvent(self, event):
98 if event.key() == Qt.Key_Right : self.selectSuivant(); return
99 if event.key() == Qt.Key_Left : self.selectPrecedent(); return
100 if event.key() == Qt.Key_Return or event.key() == Qt.Key_Space : self.checkFocused(); return
101 QWidget.keyPressEvent(self,event)
103 def selectSuivant(self):
104 aLeFocus=self.focusWidget()
105 nom=aLeFocus.objectName()[12:]
107 if i == len(self.maListeDeValeur) +1 : i=1
108 nomBouton="radioButton_"+str(i)
109 courant=getattr(self,nomBouton)
110 courant.setFocus(True)
112 def selectPrecedent(self):
113 aLeFocus=self.focusWidget()
114 nom=aLeFocus.objectName()[12:]
116 if i == 0 : i= len(self.maListeDeValeur)
117 nomBouton="radioButton_"+str(i)
118 courant=getattr(self,nomBouton)
119 courant.setFocus(True)
121 def checkFocused(self):
122 aLeFocus=self.focusWidget()
123 nom=aLeFocus.objectName()[12:]
125 if i > 0 and i <= len(self.maListeDeValeur):
126 nomBouton="radioButton_"+str(i)
127 courant=getattr(self,nomBouton)
128 if not courant.isChecked():
129 courant.setChecked(True)
133 class MonWidgetRadioButton (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun):
134 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
135 #print "MonWidgetRadioButton ", self
136 if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into()
137 else : self.maListeDeValeur=monSimpDef.into
139 MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
145 class MonWidgetRadioButtonSD (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun):
147 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
148 #print "dans le init de MonWidgetRadioButtonSD",self
149 self.maListeDeValeur=node.item.getSdAvantDuBonType()
150 MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)