__init__.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #
  2. # Copyright (c) Daniel Sheffield 2021
  3. #
  4. # All rights reserved
  5. #
  6. # THIS SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY
  7. import urwid
  8. def show_or_exit(key):
  9. if isinstance(key, tuple):
  10. return
  11. if key in ('esc',):
  12. raise urwid.ExitMainLoop()
  13. class ActivityManager(object):
  14. def __init__(self):
  15. self.widgets = dict()
  16. self.app = None
  17. def add(self, widget, name):
  18. self.widgets[name] = widget
  19. return widget
  20. def get(self, name):
  21. if name in self.widgets:
  22. return self.widgets[name]
  23. return None
  24. def create(self, cls, name, *args, **kwargs):
  25. widget = cls(*args, **kwargs)
  26. if name is not None:
  27. self.add(widget, name)
  28. return widget
  29. def show(self, widget):
  30. if self.app is not None:
  31. self.app.original_widget = widget
  32. return
  33. self.app = widget
  34. def current(self):
  35. if self.app is None:
  36. return None
  37. return self.app.original_widget