X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Fconfigscreen.py;h=80105a440b4b3f97c58e148e448a41173be4ca06;hp=7cb6ace82c455479ebc110c81fab25b13e2b00f2;hb=a0f7de62e4b4bd1fc2dccf7fa30b07ca1de0ef5b;hpb=e545d8ccf099ea9ab890e24234f7e3e5bcd2b41f diff --git a/sface/screens/configscreen.py b/sface/screens/configscreen.py index 7cb6ace..80105a4 100644 --- a/sface/screens/configscreen.py +++ b/sface/screens/configscreen.py @@ -1,44 +1,76 @@ -from PyQt4.QtCore import SIGNAL, Qt -from PyQt4.QtGui import QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QSizePolicy +from PyQt4.QtCore import * +from PyQt4.QtGui import * -from sface.sficonfig import config +from sface.config import config from sface.screens.sfascreen import SfaScreen 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) - + glayout = QGridLayout() + row = 0 + for (field,msg) in config.field_labels(): + # edit : text or checkbox + default=config.field_default(field) + if isinstance(default,bool): + edit=QCheckBox(msg) + if config.is_true(config.get(field)): + edit.setCheckState(Qt.Checked) + else: + edit=QLineEdit(config.get(field) or "", self) + edit.setAttribute(Qt.WA_MacShowFocusRect, 0) + setattr(self,field,edit) + + glayout.addWidget(QLabel(msg+":",self), row, 0) + glayout.addWidget(edit, row, 1) + + row += 1 + + hlayout = QHBoxLayout() + hlayout.addStretch() + for (action,label) in [('apply','Apply'), + ('save','Apply && Save')]: + button=QPushButton(label, self) + button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) + hlayout.addWidget(button, 0, Qt.AlignRight) + hlayout.addSpacing(10) + self.connect(button, SIGNAL('clicked()'), getattr(self,action)) + layout = QVBoxLayout() - layout.addWidget(label1) - layout.addWidget(self.user) - layout.addWidget(label2) - layout.addWidget(self.slice) - layout.addWidget(apply, 0, Qt.AlignRight) + layout.addLayout(glayout) + layout.addLayout(hlayout) layout.addStretch() 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): + if widget.checkState() == Qt.Checked: + config.set(field, True) + else: + config.set(field, False) + else: + config.set(field, str(widget.text())) + + self.parent().setStatus("Settings loaded for current session", timeout=5000) + config.display("after apply") + + self.parent().signalAll('configurationChanged') + + + def save(self): + self.apply() config.save_config() - self.parent().setStatus("Configuration saved!") - + self.parent().setStatus("Configuration saved in %s !"%config.filename(), timeout=5000) class ConfigScreen(SfaScreen): def __init__(self, parent): 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") +