fix render/redraw_Screen

Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
This commit is contained in:
Adam Stokes 2015-06-24 15:10:34 -04:00
parent 33dd1d28dc
commit 18d011693b
2 changed files with 25 additions and 13 deletions

View File

@ -41,16 +41,23 @@ class BaseController:
controller(self).show(*args, **kwds)
def redraw_screen(self):
try:
self.loop.draw_screen()
except AssertionError as e:
log.exception("exception failure in redraw_screen")
raise e
if hasattr(self, 'loop'):
try:
self.loop.draw_screen()
except AssertionError as e:
log.critical(e)
def set_alarm_in(self, interval, cb):
self.loop.set_alarm_in(interval, cb)
return
def update(self, *args, **kwds):
log.debug("Updating ...")
route = Routes.current_idx()
if route == 0:
self.begin()
self.set_alarm_in(1, self.update)
def header_hotkeys(self, key):
if key in ['q', 'Q']:
raise urwid.ExitMainLoop()
@ -68,19 +75,19 @@ class BaseController:
self.redraw_screen()
def run(self):
self.main_loop()
def main_loop(self):
""" Run eventloop
"""
self.loop = urwid.MainLoop(self.ui, self.palette,
unhandled_input=self.header_hotkeys)
if not hasattr(self, 'loop'):
self.loop = urwid.MainLoop(self.ui, self.palette,
unhandled_input=self.header_hotkeys)
try:
self.update()
self.loop.run()
except:
log.exception("Exception in controller.run():")
raise
def begin(self):
""" Initializes the first controller for installation """
Routes.reset()
initial_controller = Routes.first()
self.set_body(initial_controller(self).show())
initial_controller(self).show()

View File

@ -41,6 +41,11 @@ class Routes:
raise RoutesError("Failed to load Route at index: {}".format(idx))
return _route
@classmethod
def current_idx(cls):
""" Returns current route index """
return cls.current_route_idx
@classmethod
def reset(cls):
""" Resets current route """