From a66b375ceca1b5c2567659a5b2da806e9b9598ea Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Fri, 10 Sep 2010 17:51:09 +0200 Subject: [PATCH] renamed sficonfig into just config --- sface.py | 2 +- sface/{sficonfig.py => config.py} | 48 ++++++++++++++++++++----------- sface/screens/configscreen.py | 9 +++--- sface/screens/mainscreen.py | 2 +- sface/sfawindow.py | 2 +- sface/sfiprocess.py | 2 +- 6 files changed, 39 insertions(+), 26 deletions(-) rename sface/{sficonfig.py => config.py} (76%) diff --git a/sface.py b/sface.py index ad91372..67f82ea 100644 --- a/sface.py +++ b/sface.py @@ -6,7 +6,7 @@ from optparse import OptionParser from PyQt4.QtGui import * from sface.sfawindow import SfaWindow -from sface.sficonfig import config +from sface.config import config def main(args): app = QApplication(args) diff --git a/sface/sficonfig.py b/sface/config.py similarity index 76% rename from sface/sficonfig.py rename to sface/config.py index 542734e..cb29cbb 100644 --- a/sface/sficonfig.py +++ b/sface/config.py @@ -5,10 +5,11 @@ ### import os +import types from optparse import OptionParser -class SfiConfig: +class Config: d_registry= "http://www.planet-lab.org:12345" d_slicemgr= "http://www.planet-lab.org:12347" @@ -27,35 +28,35 @@ class SfiConfig: ] def fields (self): - return [ tup[0] for tup in SfiConfig.supported ] + return [ tup[0] for tup in Config.supported ] def field_labels (self): - return [ (tup[0],tup[5]) for tup in SfiConfig.supported ] + return [ (tup[0],tup[5]) for tup in Config.supported ] def sfi_field (self, sfi): - for tuple in SfiConfig.supported: + for tuple in Config.supported: if tuple[1]==sfi: return tuple[0] return None def field_default (self, field): - for tuple in SfiConfig.supported: + for tuple in Config.supported: if tuple[0]==field: return tuple[2] return None # xxx todo - need for validators - not even sure this is still useful def define_accessors (self): - for (field,sfi,default,_,__,___) in SfiConfig.supported: + for (field,sfi,default,_,__,___) in Config.supported: self.define_accessor (field,sfi,default) def define_accessor (self,field,sfi,default): get_name="get" + field.capitalize(); - if not hasattr(SfiConfig,get_name): + if not hasattr(Config,get_name): def get_call (self): return getattr(self,field) - setattr (SfiConfig, get_name, get_call) + setattr (Config, get_name, get_call) set_name="set" + field.capitalize(); - if not hasattr(SfiConfig,set_name): + if not hasattr(Config,set_name): def set_call (self, newvalue): setattr (self, field, newvalue) - setattr (SfiConfig, set_name, set_call) + setattr (Config, set_name, set_call) # the generic form of accessors def get(self,field): return getattr(self,field) @@ -74,7 +75,7 @@ class SfiConfig: except: print "Warning - no config file found %s"%self.filename() pass - for (field,sfi,default,_,__,___) in SfiConfig.supported: + for (field,sfi,default,_,__,___) in Config.supported: if tmp.has_key(sfi):setattr(self,field,tmp[sfi]) else: setattr(self,field,default) self.display("After reading config from %s"%self.filename()) @@ -100,7 +101,9 @@ class SfiConfig: val = val.strip() field=self.sfi_field(sfi) if field: - line = "%s = '%s'\n" % (sfi, getattr(self, field)) + newval=getattr(self,field) + if not self.is_bool_field(field): newval="'%s'"%newval + line = "%s = %s\n" % (sfi, newval) except: if self.debug: import traceback @@ -111,9 +114,20 @@ class SfiConfig: os.unlink(configfile) os.rename(tmpfile, configfile) + # check if a field is a boolean field + def is_bool_field(self, field): + for (f,_,default,__,___,____) in Config.supported: + if field==f: return isinstance(default,bool) + return None + + # to accept strings as bools + def is_true(self,value): + if value==True: return True + if isinstance(value,types.StringTypes) and value.lower()=='true': return True + def add_options_to_OptionParser (self, parser): - for (field,_,default,short,long,msg) in SfiConfig.supported: - if default==True or default==False: + for (field,_,default,short,long,msg) in Config.supported: + if isinstance(default,bool): parser.add_option(short,long,dest=field,action="store_true",help=msg) else: parser.add_option(short,long,dest=field,action="store",default=None, help=msg) @@ -126,16 +140,16 @@ class SfiConfig: setattr(self,field,getattr(optparse_options,field)) # def setUser(self, user): -# SfiConfig.SFI_USER = user +# Config.SFI_USER = user # # # Should probably get authority from user record instead... # a = user.split('.') -# SfiConfig.SFI_AUTH = '.'.join(a[:len(a)-1]) +# Config.SFI_AUTH = '.'.join(a[:len(a)-1]) def getSliceRSpecFile(self): return os.path.expanduser("~/.sfi/%s.rspec" % self.getSlice()) # configuration singleton -config = SfiConfig() +config = Config() config.define_accessors() diff --git a/sface/screens/configscreen.py b/sface/screens/configscreen.py index b918573..077ee1b 100644 --- a/sface/screens/configscreen.py +++ b/sface/screens/configscreen.py @@ -2,7 +2,7 @@ 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): @@ -17,7 +17,7 @@ class ConfigWidget(QWidget): default=config.field_default(field) if isinstance(default,bool): edit=QCheckBox(msg) - if config.get(field) is True or config.get(field) == 'True': + if config.is_true(config.get(field)): edit.setCheckState(Qt.Checked) else: edit=QLineEdit(config.get(field), self) @@ -26,7 +26,7 @@ class ConfigWidget(QWidget): layout.addWidget (edit) for (action,label) in [('apply','Apply'), - ('save','Apply & Save')]: + ('save','Apply && Save')]: button=QPushButton(label, self) button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) layout.addWidget(button, 0, Qt.AlignRight) @@ -52,8 +52,7 @@ class ConfigWidget(QWidget): def save(self): self.apply() config.save_config() - self.parent().setStatus("Configuration saved!", timeout=3000) - + self.parent().setStatus("Configuration saved in %s !"%config.filename(), timeout=5000) class ConfigScreen(SfaScreen): def __init__(self, parent): diff --git a/sface/screens/mainscreen.py b/sface/screens/mainscreen.py index 4b636bc..19aedfe 100644 --- a/sface/screens/mainscreen.py +++ b/sface/screens/mainscreen.py @@ -5,7 +5,7 @@ from PyQt4.QtGui import * from sfa.util.rspecHelper import RSpec from sface.sfahelper import * -from sface.sficonfig import config +from sface.config import config from sface.sfiprocess import SfiProcess from sface.screens.sfascreen import SfaScreen diff --git a/sface/sfawindow.py b/sface/sfawindow.py index 976b184..49ecbd4 100644 --- a/sface/sfawindow.py +++ b/sface/sfawindow.py @@ -5,7 +5,7 @@ import time from PyQt4.QtCore import * from PyQt4.QtGui import * -from sface.sficonfig import config +from sface.config import config from sface.screens.configscreen import ConfigScreen from sface.screens.mainscreen import MainScreen diff --git a/sface/sfiprocess.py b/sface/sfiprocess.py index 05199c9..cd24f9a 100644 --- a/sface/sfiprocess.py +++ b/sface/sfiprocess.py @@ -3,7 +3,7 @@ import os import time from PyQt4.QtCore import * -from sface.sficonfig import config +from sface.config import config def find_executable(exec_name): """find the given executable in $PATH""" -- 2.43.0