ToastFreeware
/
gregoa
/
zavai.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow to have more than one notification type in Service
[gregoa/zavai.git]
/
zavai
/
registry.py
diff --git
a/zavai/registry.py
b/zavai/registry.py
index 285045f507ac3165f3e85221e0c4fe7041330fcf..ec0a4a2c4f3b29c9bc497de4c6b1bedecc63bf77 100644
(file)
--- a/
zavai/registry.py
+++ b/
zavai/registry.py
@@
-162,8
+162,13
@@
class Resource(object):
class Service(Resource):
"Service that is activated only when someone is listening"
def __init__(self):
class Service(Resource):
"Service that is activated only when someone is listening"
def __init__(self):
- super(Service, self).__init__()
- self.callbacks = set()
+ """
+ Initialise a service that can emit signals for the given event types
+ """
+ super(Service, self).__init__(types = [])
+ self.callbacks = dict()
+ for t in types:
+ self.callbacks[t] = set()
def shutdown(self):
self.stop()
def shutdown(self):
self.stop()
@@
-176,21
+181,26
@@
class Service(Resource):
"Deactivate the service"
pass
"Deactivate the service"
pass
- def notify(self, *args, **kw):
+ def notify(self,
type,
*args, **kw):
"Call all callbacks with the given parameters"
"Call all callbacks with the given parameters"
- for cb in self.callbacks:
+ for cb in self.callbacks
[type]
:
cb(*args, **kw)
cb(*args, **kw)
- def connect(self, callback):
+ def has_callbacks(self):
+ for i in self.callbacks.values():
+ if i: return True
+ return False
+
+ def connect(self, type, callback):
"Connect a callback to this resource, activating it if needed"
"Connect a callback to this resource, activating it if needed"
- do_start = not self.
callbacks
- self.callbacks.add(callback)
+ do_start = not self.
has_callbacks()
+ self.callbacks
[type]
.add(callback)
if do_start:
self.start()
if do_start:
self.start()
- def disconnect(self, callback):
+ def disconnect(self,
type,
callback):
"Disconnect a callback to this resource, activating it if needed"
"Disconnect a callback to this resource, activating it if needed"
- if not self.
callbacks
: return
+ if not self.
has_callbacks()
: return
self.callbacks.discard(callback)
self.callbacks.discard(callback)
- if not self.
callbacks
:
+ if not self.
has_callbacks()
:
self.stop()
self.stop()