Changeset 7ddb5d


Ignore:
Timestamp:
06/10/2009 06:15:52 PM (16 years ago)
Author:
Andrew Resch <andrewresch@gmail.com>
Branches:
2.0.x, develop, extjs4-port, master
Children:
c274da9
Parents:
853138
Message:

Fix the set functions so that you are able to register more than one per config key
Likewise for the config change callbacks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • deluge/config.py

    r853138 r7ddb5d  
    103103        self.__config = {}
    104104        self.__set_functions = {}
    105         self.__change_callback = None
     105        self.__change_callbacks = []
    106106
    107107        # These hold the version numbers and they will be set when loaded
     
    178178            pass
    179179        try:
    180             reactor.callLater(0, self.__change_callback, key, value)
     180            def do_change_callbacks(key, value):
     181                for func in self.__change_callbacks:
     182                    func(key, value)
     183            reactor.callLater(0, do_change_callbacks, key, value)
    181184        except:
    182185            pass
     
    226229
    227230        """
    228         self.__change_callback = callback
     231        self.__change_callbacks.append(callback)
    229232
    230233    def register_set_function(self, key, function, apply_now=True):
     
    247250        """
    248251        log.debug("Registering function for %s key..", key)
    249         self.__set_functions[key] = function
     252        if key not in self.__set_functions:
     253            self.__set_functions[key] = []
     254
     255        self.__set_functions[key].append(function)
     256
    250257        # Run the function now if apply_now is set
    251258        if apply_now:
    252             self.__set_functions[key](key, self.__config[key])
     259            function(key, self.__config[key])
    253260        return
    254261
     
    270277        log.debug("Calling all set functions..")
    271278        for key, value in self.__set_functions.iteritems():
    272             value(key, self.__config[key])
     279            for func in value:
     280                func(key, self.__config[key])
    273281
    274282    def apply_set_functions(self, key):
     
    281289        log.debug("Calling set functions for key %s..", key)
    282290        if key in self.__set_functions:
    283             self.__set_functions[key](key, self.__config[key])
     291            for func in self.__set_functions[key]:
     292                func(key, self.__config[key])
    284293
    285294    def load(self, filename=None):
Note: See TracChangeset for help on using the changeset viewer.