Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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"