def __init__(self, name, type, values, default): self.name = name self.type = type self.valid_values = values self.default = default self.__value = default # if we are the first preference, create the gconf object if self.gconf == None and self._has_gconf(): from istanbul.main.gconf_client import IstanbulGConf self.gconf = IstanbulGConf() # see if we have this as a stored setting. # if we do and its valid, keep it. # otherwise, assume the default and set it in gconf. if self.gconf != None: self.gconf_key = "/apps/istanbul/" + self.name temp_val = self.gconf.get_entry(self.name, self.type) if self._is_valid(temp_val): self.value = temp_val else: self.gconf.set_entry(self.name, self.value, self.type) else: self.gconf_key = None
class Preference(object): """ This class represents a generic preference. """ gconf = None def __init__(self, name, type, values, default): self.name = name self.type = type self.valid_values = values self.default = default self.__value = default # if we are the first preference, create the gconf object if self.gconf == None and self._has_gconf(): from istanbul.main.gconf_client import IstanbulGConf self.gconf = IstanbulGConf() # see if we have this as a stored setting. # if we do and its valid, keep it. # otherwise, assume the default and set it in gconf. if self.gconf != None: self.gconf_key = "/apps/istanbul/" + self.name temp_val = self.gconf.get_entry(self.name, self.type) if self._is_valid(temp_val): self.value = temp_val else: self.gconf.set_entry(self.name, self.value, self.type) else: self.gconf_key = None def _is_valid(self, temp_val): if self.type != "integer": if temp_val in self.valid_values: return True else: if temp_val >= self.valid_values[0] and temp_val <= self.valid_values[1]: return True return False def generate_gui_event(self, widget, data): """ Return a gui event for this preference. """ if DEBUG: print "generated gui event for: " + self.name event = widget.connect("toggled", Preferences().set_preference, "gui", data) return event def generate_gconf_event(self, widget): """ Return a gconf event for this preference. """ if self.gconf != None: if DEBUG: print "generated gconf event for: " + self.name event = self.gconf.client.notify_add("/apps/istanbul/" + self.name, Preferences().set_preference, ("gconf", widget)) return event else: return None def _get_value(self): if DEBUG: print "in get value" return self.__value def _set_value(self, value): if DEBUG: print "in set value" self.__value = value if self.gconf != None: # only update if the values aren't equal for some odd reason. # we don't want this event firing over and over. if self.gconf.get_entry(self.name, self.type) != value: self.gconf.set_entry(self.name, self.value, self.type) value = property(_get_value, _set_value) def _has_gconf(self): try: import gconf return True except: return False def print_i(self): print "name: " + str(self.name) + "\n"\ "type: " + str(self.type) + "\n"\ "value: " + str(self.value) + "\n"