Show code - CODE/python/gconf_methods.py


import gconf
import types
GCONF_DIR = "/apps/mytestapp"
class cr_gconf_base:
def __init__( self, dir ):
self.dir = GCONF_DIR + dir
self.client = gconf.client_get_default ()
if not self.client.dir_exists ( self.dir ):
self.client.add_dir ( self.dir, gconf.CLIENT_PRELOAD_NONE )
def get_entries( self ):
'''Wrapper method for gconf.Client.all_entries(...)'''
return self.client.all_entries( self.dir )
def get_list( self ):
'''Wrapper method for gconf.Client.get_list(...)'''
return self.client.get_list( self.dir + "/list" , gconf.VALUE_STRING )
def set_list( self, values ): # set_list( self, list )
'''Wrapper method for gconf.Client.set_list(...)'''
return self.client.set_list( self.dir + "/list", gconf.VALUE_STRING, values )
def set_string( self, key, value ):
'''Wrapper method for gconf.Client.set_string(...)'''
return self.client.set_string ( self.dir + "/" + key, value )
def get_string( self, key ):
'''Wrapper method for gconf.Client.get_string(...)'''
return self.client.get_string( self.dir + "/" + key )
def set_int( self, key, value ):
'''Wrapper method for gconf.Client.set_int(...)'''
return self.client.set_int( self.dir + "/" + key, value )
def get_int( self, key ):
'''Wrapper method for gconf.Client.get_int(...)'''
return self.client.get_int( self.dir + "/" + key )
def set_bool( self, key, value ):
'''Wrapper method for gconf.Client.set_bool(...)'''
return self.client.set_bool( self.dir + "/" + key, value )
def get_bool( self, key ):
'''Wrapper method for gconf.Client.get_bool(...)'''
return self.client.get_bool( self.dir + "/" + key )
def set_float( self, key, value ):
'''Wrapper method for gconf.Client.set_float(...)'''
return self.client.set_float( self.dir + "/" + key, value )
def get_float( self, key ):
'''Wrapper method for gconf.Client.get_float(...)'''
return self.client.get_float( self.dir + "/" + key )
def unset( self, key ):
'''Wrapper method for gconf.Client.unset(...)'''
return self.client.unset( self.dir + "/" + key )
def remove_dir( self, dir ):
'''Wrapper method for gconf.Client.remove_dir(...)'''
if not self.client.dir_exists( self.dir + "/" + dir):
return False
self.client.add_dir ( self.dir + "/" + dir, gconf.CLIENT_PRELOAD_NONE )
return self.client.remove_dir( self.dir + "/" + dir )
def get_real_value( self, value ): # value is of type gconf.Value
'''Convenience method for transparently getting a value determined by its type'''
if value.type == gconf.VALUE_INVALID:
_value = None
elif value.type == gconf.VALUE_STRING:
_value = value.get_string()
elif value.type == gconf.VALUE_INT:
_value = value.get_int()
elif value.type == gconf.VALUE_FLOAT:
_value = value.get_float()
elif value.type == gconf.VALUE_BOOL:
_value = value.get_bool()
elif value.type == gconf.VALUE_SCHEMA:
_value = None # gconf.Value doesn't have a get_schema method
elif value.type == gconf.VALUE_LIST:
_value = value.get_list()
return _value
def set_real_value( self, key, value ):
'''Convenience method for transparently setting a value determined by its type'''
_type = type( value )
if _type == types.StringType:
self.set_string( key, value )
elif _type == types.IntType:
self.set_int( key, value )
elif _type == types.FloatType:
self.set_float( key, value )
elif _type == types.BooleanType:
self.set_bool( key, value )
else:
print "Error: Couldn't determine type for " + key + \
"; did not save value " + str( value )
class gconf_prefs( cr_gconf_base ):
def __init__( self ):
cr_gconf_base.__init__( self, "/prefs" )
def prefs( self ):
'''Returns a dict representing values within our /prefs gconf directory'''
prefs_tmp = {}
for pref in self.get_entries():
key = pref.get_key()
key = key[ key.rfind("/")+1 : ]
if not pref.get_value():
prefs_tmp[key] = None
continue
#value = pref.get_value().get_string()
value = self.get_real_value( pref.get_value() )
prefs_tmp[key] = value
return prefs_tmp
def save_prefs( self, prefs ):
'''Saves key and value pairs found in the dict prefs to our /prefs gconf directory'''
for key, value in prefs.iteritems():
self.set_real_value( key, value )
#Examples
prefs = gconf_prefs( )
print prefs.set_string( "foo", "blah" )
print prefs.set_string( "bar", "blahblah" )
print prefs.get_string( "foo" )
print prefs.unset( "foo" )
print prefs.prefs()
prefs.set_real_value( 'vte_scrollback_lines', 10000 )
print prefs.prefs()
print prefs.get_entries()[0].get_key()
print prefs.get_entries()[0].get_value().get_string()