1 # ###################################################
2 # Copyright (C) 2008 The OpenAnno Team
4 # This file is part of OpenAnno.
6 # OpenAnno is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the
18 # Free Software Foundation, Inc.,
19 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 # ###################################################
22 from game
.util
import WeakMethod
24 class WeakMethodList(object):
25 """A class that handles zero to n callbacks."""
27 def __init__(self
, callbacks
= None):
29 @param callbacks: None, a function, a list of functions, or a tuple of functions
31 #self.__instance = instance
35 def __add(self
, callback
):
36 """Internal function used to add callbacks"""
39 elif callable(callback
):
40 self
.__callbacks
.append(WeakMethod(callback
))
41 elif isinstance(callback
, list, tuple):
45 def append(self
, elem
):
46 """Just like list.append"""
50 """Execute all callbacks. Number of callbacks may be zero to n."""
51 for callback
in self
.__callbacks
: