def __init__(self): self.frame = urwid.Frame(urwid.Filler(urwid.Text('Menu demo', align='center'))) self.loop = urwid.MainLoop(self.frame, TeachPendantApp.PALETTE, unhandled_input=self.keyHandler) self.menu = MainMenu(self) self.frame.set_header(self.menu.build()) self.frame.set_focus('header') tabs = TabsContainer() tabs.addTab("Point-to-point", None, True) self.message_box = urwid.Text("") self.bottom_bar = NotificationBar() self.bottom_bar.addMessage(u"Ready.") pile = urwid.Pile([self.menu._Menu, #urwid.AttrWrap(SurroundedText(" Control "), 'bright'), #tabs, urwid.AttrWrap(SurroundedText(u" Message "), 'bright'), self.message_box, urwid.AttrWrap(SurroundedText(u" Status "), 'bright'), self.bottom_bar]) self.top = urwid.Filler(pile, valign='top') self.loop.widget = self.top
class TeachPendantApp(object): PALETTE = [('menubar', 'light gray,bold', 'dark red'), ('menubar_focus', 'light gray,bold', 'dark green'), ('menuitem', 'light gray,bold', 'dark red'), ('menuitem_focus', 'light gray,bold', 'dark green'), ('title', 'black', 'light gray', 'standout,underline'), ('default', 'default', 'default'), ('default_focus', 'default,bold', 'default'), ('directory', 'dark cyan, bold', 'default'), ('directory_focus', 'dark cyan, bold', 'dark green'), ('separator', 'brown', 'default'), ] def __init__(self): self.frame = urwid.Frame(urwid.Filler(urwid.Text('Menu demo', align='center'))) self.loop = urwid.MainLoop(self.frame, TeachPendantApp.PALETTE, unhandled_input=self.keyHandler) self.menu = MainMenu(self) self.frame.set_header(self.menu.build()) self.frame.set_focus('header') tabs = TabsContainer() tabs.addTab("Point-to-point", None, True) self.message_box = urwid.Text("") self.bottom_bar = NotificationBar() self.bottom_bar.addMessage(u"Ready.") pile = urwid.Pile([self.menu._Menu, #urwid.AttrWrap(SurroundedText(" Control "), 'bright'), #tabs, urwid.AttrWrap(SurroundedText(u" Message "), 'bright'), self.message_box, urwid.AttrWrap(SurroundedText(u" Status "), 'bright'), self.bottom_bar]) self.top = urwid.Filler(pile, valign='top') self.loop.widget = self.top def attach(self, TeachPendant): self.tp = TeachPendant def run(self): self.loop.run() def show(self): self.loop.widget = self.top def _showMessage(self, message): # new_widget = urwid.Filler(urwid.Text(message, align='center')) # self.loop.widget = new_widget # self.loop.draw_screen() # time.sleep(5) # self.loop.widget = self.top self.message_box.set_text(message) self.loop.draw_screen() def _exit(self): new_widget = urwid.Filler(urwid.Text(exit("Exiting through 'Exit' menu item"), align='center')) self.loop.widget = new_widget self.loop.draw_screen() time.sleep(1) raise urwid.ExitMainLoop() def keyHandler(self, input): """We leave if user press a quit char""" if input in ('esc','q','Q'): self.tp._Conn.stop() self._exit() #raise urwid.ExitMainLoop() else: return self.menu._Menu.checkShortcuts(input)