summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/decorators.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/decorators.py b/src/decorators.py
new file mode 100644
index 00000000..6eaac018
--- /dev/null
+++ b/src/decorators.py
@@ -0,0 +1,46 @@
+"""
+Module containing the decorators
+"""
+
+class RefreshWrapper(object):
+ def __init__(self):
+ self.core = None
+
+ def conditional(self, func):
+ """
+ Decorator to refresh the UI if the wrapped function
+ returns True
+ """
+ def wrap(*args, **kwargs):
+ ret = func(*args, **kwargs)
+ if self.core and ret:
+ self.core.refresh_window()
+ self.core.doupdate()
+ return ret
+ return wrap
+
+ def always(self, func):
+ """
+ Decorator that refreshs the UI no matter what after the function
+ """
+ def wrap(*args, **kwargs):
+ ret = func(*args, **kwargs)
+ if self.core:
+ self.core.refresh_window()
+ self.core.doupdate()
+ return ret
+ return wrap
+
+ def update(self, funct):
+ """
+ Decorator that only updates the screen
+ """
+ def wrap(*args, **kwargs):
+ ret = func(*args, **kwargs)
+ if self.core:
+ self.core.doupdate()
+ return ret
+ return wrap
+
+
+refresh_wrapper = RefreshWrapper()