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' : [
+ "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"],
+}
+
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():
+
+ 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)
row += 1
hlayout = QHBoxLayout()
- hlayout.addStretch()
- for (action,label) in [('apply','Apply'),
- ('save','Apply && Save')]:
+ def bottom_button (action,label,align):
button=QPushButton(label, self)
button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
- hlayout.addWidget(button, 0, Qt.AlignRight)
+ hlayout.addWidget(button,0,align)
hlayout.addSpacing(10)
self.connect(button, SIGNAL('clicked()'), getattr(self,action))
+ bottom_button ('load','Load Config Dir',Qt.AlignLeft)
+
+ # the config dir edit dialog
+ confdir=QLineEdit (config.get_dirname(),self)
+ self.store_local('config_dirname',confdir)
+ confdir.setAttribute(Qt.WA_MacShowFocusRect, 0)
+ confdir.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Maximum)
+ confdir.setStyleSheet("QLineEdit { width: 200px; }")
+ self.connect(confdir,SIGNAL ('returnPressed()'), self.load)
+ hlayout.addWidget (confdir,0,Qt.AlignLeft)
+ hlayout.addSpacing(10)
+
+ hlayout.addStretch()
+ bottom_button ('createSlice', 'Create New Slice', Qt.AlignRight),
+ bottom_button ('apply','Apply Only',Qt.AlignRight),
+ bottom_button ('save','Apply && Save',Qt.AlignRight)
+
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):
for field in config.fields():
def save(self):
self.apply()
config.save_config()
- self.parent().setStatus("<font color='green'>Configuration saved in %s !</font>"%config.filename(), timeout=5000)
+ self.parent().setStatus("<font color='green'>Configuration saved in %s !</font>"%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):
SfaScreen.__init__(self, parent)
widget = ConfigWidget(self)
- self.init(widget, "Configure", "Configure the OneLab Federation GUI")
+ self.init(widget, "Configure", "Configure the OneLab SFA crawler")