These links are ordered by their time last-updated -- rightmost is newest.
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()



This web page and related elements are for informative purposes only and thus the use of any of this information is at your risk! In accordance with Title 17 U.S.C. Section 107 and The Berne Convention on Literary and Artistic Works, Article 10, news clippings on this site are made available without profit for research and educational purposes. Any trademarks, trade names, service marks, or service names used on this site are the property of their respective owners.