aboutsummaryrefslogtreecommitdiffstats
path: root/lvc/signals.py
diff options
context:
space:
mode:
Diffstat (limited to 'lvc/signals.py')
-rw-r--r--lvc/signals.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/lvc/signals.py b/lvc/signals.py
index 2f64dc9..6fb6a93 100644
--- a/lvc/signals.py
+++ b/lvc/signals.py
@@ -37,9 +37,11 @@ import logging
import sys
import weakref
+
class NestedSignalError(StandardError):
pass
+
class WeakMethodReference:
"""Used to handle weak references to a method.
@@ -59,11 +61,14 @@ class WeakMethodReference:
def __call__(self):
func = self.func()
- if func is None: return None
+ if func is None:
+ return None
obj = self.object()
- if obj is None: return None
+ if obj is None:
+ return None
return func.__get__(obj, self.cls)
+
class Callback:
def __init__(self, func, extra_args):
self.func = func
@@ -78,6 +83,7 @@ class Callback:
def is_dead(self):
return False
+
class WeakCallback:
def __init__(self, method, extra_args):
self.ref = WeakMethodReference(method)
@@ -96,6 +102,7 @@ class WeakCallback:
def is_dead(self):
return self.ref() is None
+
class SignalEmitter(object):
def __init__(self, *signal_names):
self.signal_callbacks = {}
@@ -175,7 +182,7 @@ class SignalEmitter(object):
return
if name in self._currently_emitting:
raise NestedSignalError("Can't emit %s while handling %s" %
- (name, name))
+ (name, name))
self._currently_emitting.add(name)
try:
callback_returned_true = self._run_signal(name, args)
@@ -206,6 +213,7 @@ class SignalEmitter(object):
if callback_map[id_].is_dead():
del callback_map[id_]
+
class SystemSignals(SignalEmitter):
"""System wide signals for Miro. These can be accessed from the singleton
object signals.system. Signals include: