X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Fconfigscreen.py;h=6b8e86b8e94c9618db10ac20f7a1265c22e0d168;hp=7cb6ace82c455479ebc110c81fab25b13e2b00f2;hb=e5eb62ef022ab41be7f2eb0b3ac8723874d1601a;hpb=e545d8ccf099ea9ab890e24234f7e3e5bcd2b41f diff --git a/sface/screens/configscreen.py b/sface/screens/configscreen.py index 7cb6ace..6b8e86b 100644 --- a/sface/screens/configscreen.py +++ b/sface/screens/configscreen.py @@ -1,6 +1,6 @@ from PyQt4.QtCore import SIGNAL, Qt -from PyQt4.QtGui import QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QSizePolicy +from PyQt4.QtGui import QWidget, QLabel, QLineEdit, QPushButton, QCheckBox, QVBoxLayout, QSizePolicy from sface.sficonfig import config from sface.screens.sfascreen import SfaScreen @@ -9,31 +9,45 @@ class ConfigWidget(QWidget): def __init__(self, parent): QWidget.__init__(self, parent) - label1 = QLabel("User HRN:", self) - self.user = QLineEdit(config.getUser(), self) - self.user.setAttribute(Qt.WA_MacShowFocusRect, 0) - label2 = QLabel("Slice HRN:", self) - self.slice = QLineEdit(config.getSlice(), self) - self.slice.setAttribute(Qt.WA_MacShowFocusRect, 0) - apply = QPushButton("Apply", self) - apply.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) - layout = QVBoxLayout() - layout.addWidget(label1) - layout.addWidget(self.user) - layout.addWidget(label2) - layout.addWidget(self.slice) - layout.addWidget(apply, 0, Qt.AlignRight) - layout.addStretch() + for (field,msg) in config.field_labels(): + # label + layout.addWidget(QLabel(msg,self)) + # edit : text or checkbox + default=config.field_default(field) + if isinstance(default,bool): + edit=QCheckBox(msg) + edit.setCheckState(config.get(field)) + else: + edit=QLineEdit(config.get(field), self) + edit.setAttribute(Qt.WA_MacShowFocusRect, 0) + setattr(self,field,edit) + layout.addWidget (edit) + + for (action,label) in [('apply','Apply'), + ('save','Apply & Save')]: + button=QPushButton(label, self) + button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) + layout.addWidget(button, 0, Qt.AlignRight) + layout.addStretch() + self.connect(button, SIGNAL('clicked()'), getattr(self,action)) self.setLayout(layout) - self.connect(apply, SIGNAL('clicked()'), self.apply) def apply(self): - config.setUser("%s" % self.user.text()) - config.setSlice("%s" % self.slice.text()) + for field in config.fields(): + widget=getattr(self,field) + if isinstance(widget,QCheckBox): + config.set(field,widget.checkState()) + else: + config.set(field,str(widget.text())) + self.parent().setStatus("Settings loaded for current session",timeout=5000) + config.display("after apply") + + def save(self): + self.apply() config.save_config() - self.parent().setStatus("Configuration saved!") + self.parent().setStatus("Configuration saved!", timeout=3000) class ConfigScreen(SfaScreen): @@ -41,4 +55,4 @@ class ConfigScreen(SfaScreen): SfaScreen.__init__(self, parent) widget = ConfigWidget(self) - self.init(widget, "Configure", "Configure the PlanetLab Federation GUI") + self.init(widget, "Configure", "Configure the OneLab Federation GUI")