X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=sface%2Fscreens%2Fconfigscreen.py;h=37db423899f1cba6e41ace739d835da8a7537bdc;hb=9e2f22b81278e64392071fffe4724be8787827e6;hp=ef732f52502efc19844995950d5c55575e9a9be4;hpb=936ef36d61a7be0937c213249517111fdd5b8a54;p=sface.git
diff --git a/sface/screens/configscreen.py b/sface/screens/configscreen.py
index ef732f5..37db423 100644
--- a/sface/screens/configscreen.py
+++ b/sface/screens/configscreen.py
@@ -6,9 +6,15 @@ from sface.config import config
from sface.screens.sfascreen import SfaScreen
from sfa.util.version import version_core
+from sface.version import version_dict
+
+from sface.sficreate import CreateWindow
static_labels = {
- 'slice' : "local SFA version : %s" % version_core()['code_tag'],
+ 'slice' : [
+ "Sface : %s (%s)" % (version_dict()['code_tag'], version_dict()['code_url']),
+ "with (local) SFA libs : %s (%s)" % (version_core()['code_tag'],version_core()['code_url']),
+ ] ,
'registry': "usual port for registry: 12345",
'slicemgr': ["usual port for slice manager: 12347","usual port for aggregate: 12346"],
}
@@ -16,24 +22,48 @@ static_labels = {
class ConfigWidget(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
+ # init can be called several times for when the config dir is changed
+ self.inited=False
+ self.init ()
+
+ def store_local (self, name, value):
+ setattr (self, 'widget_'+name, value)
+ def retrieve_local (self, name):
+ return getattr (self, 'widget_'+name, None)
+
+ def init (self):
+ # if already inited we just need to set the values
+ if self.inited:
+ for (field,msg) in config.field_labels():
+ edit = self.retrieve_local(field)
+ if isinstance (edit,QCheckBox):
+ if config.is_true(config.get(field)): edit.setCheckState (Qt.Checked)
+ else: edit.setCheckState (Qt.Unchecked)
+ else:
+ edit.setText (config.get(field) or "")
+ return
+ # otherwise we need to build the whole thing up
glayout = QGridLayout()
row = 0
for (field,msg) in config.field_labels():
- # edit : text or checkbox
- default=config.field_default(field)
+
if static_labels.has_key(field):
labels=static_labels[field]
if not isinstance(labels,list): labels = [ labels, ]
for label in labels:
glayout.addWidget(QLabel(label),row,1)
row+=1
+ # edit : text or checkbox
+ default=config.field_default(field)
if isinstance(default,bool):
edit=QCheckBox(msg)
+ self.store_local (field, edit)
if config.is_true(config.get(field)):
edit.setCheckState(Qt.Checked)
else:
edit=QLineEdit(config.get(field) or "", self)
+ self.store_local (field, edit)
edit.setAttribute(Qt.WA_MacShowFocusRect, 0)
setattr(self,field,edit)
@@ -44,22 +74,44 @@ class ConfigWidget(QWidget):
hlayout = QHBoxLayout()
hlayout.addStretch()
- for (action,label) in [('apply','Apply'),
- ('save','Apply && Save')]:
+ def conf_button (action,label):
button=QPushButton(label, self)
button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
- hlayout.addWidget(button, 0, Qt.AlignRight)
+ hlayout.addWidget(button)
hlayout.addSpacing(10)
self.connect(button, SIGNAL('clicked()'), getattr(self,action))
+ conf_button ('load','Load Conf. Dir')
+
+ # the config dir edit dialog
+ edit=QLineEdit (config.get_dirname(),self)
+ self.store_local('config_dirname',edit)
+ edit.setAttribute(Qt.WA_MacShowFocusRect, 0)
+ edit.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Maximum)
+ self.connect(edit,SIGNAL ('returnPressed()'), self.load)
+ hlayout.addWidget (edit)
+ hlayout.addSpacing(10)
+
+ conf_button ('createSlice', 'Create New Slice'),
+ conf_button ('apply','Apply Only'),
+ conf_button ('save','Apply && Save')
+
layout = QVBoxLayout()
layout.addLayout(glayout)
layout.addLayout(hlayout)
layout.addStretch()
self.setLayout(layout)
+ self.inited=True
+ def createSlice(self):
+ dlg = CreateWindow(parent=self)
+ dlg.exec_()
+ if (dlg.sliceWasCreated):
+ self.slice.setText(dlg.getHrn())
+ self.save()
def apply(self):
+ print 'applying'
for field in config.fields():
widget=getattr(self,field)
if isinstance(widget,QCheckBox):
@@ -79,7 +131,20 @@ class ConfigWidget(QWidget):
def save(self):
self.apply()
config.save_config()
- self.parent().setStatus("Configuration saved in %s !"%config.filename(), timeout=5000)
+ self.parent().setStatus("Configuration saved in %s !"%config.config_file(), timeout=5000)
+
+ # switch to another config dir
+ def load(self):
+ # obtain new dor somehow
+
+ edit=self.retrieve_local('config_dirname')
+ newdir=str(edit.text())
+ newdir+='/'
+ print 'installing',newdir
+ config.set_dirname (newdir)
+ self.init()
+ self.parent().signalAll('configurationChanged')
+
class ConfigScreen(SfaScreen):
def __init__(self, parent):