# HG changeset patch # User Goffi # Date 1298158377 -3600 # Node ID 589e5e22f8f1a5ccd229bfbd58b9f6b8271405fa # Parent 4da76342ae05b5a32ac7ae2b6d3a619424f8f664 menu example: added shortcut example + some comments diff -r 4da76342ae05 -r 589e5e22f8f1 examples/menu.py --- a/examples/menu.py Sun Feb 20 00:04:53 2011 +0100 +++ b/examples/menu.py Sun Feb 20 00:32:57 2011 +0100 @@ -18,16 +18,16 @@ def __init__(self): _frame = urwid.Frame(urwid.Filler(urwid.Text('Menu demo', align='center'))) - self.loop = urwid.MainLoop(_frame, const_PALETTE, unhandled_input=self.test_quit) + self.loop = urwid.MainLoop(_frame, const_PALETTE, unhandled_input=self.keyHandler) _frame.set_header(self.buildMenu()) _frame.set_focus('header') def run(self): self.loop.run() - def menu_cb(self, menu_data): + def _messageExit(self, message): #We print the menu data in the middle of the screen - new_widget = urwid.Filler(urwid.Text("Menu selected: %s/%s" % menu_data, align='center')) + new_widget = urwid.Filler(urwid.Text(message, align='center')) self.loop.widget = new_widget self.loop.draw_screen() #5 seconds pause @@ -35,22 +35,31 @@ #see you raise urwid.ExitMainLoop() + def menu_cb(self, menu_data): + self._messageExit("Menu selected: %s/%s" % menu_data) + + def exit_cb(self, menu_data): + self._messageExit("Exiting throught 'Exit' menu item") + def buildMenu(self): - _menu = Menu(self.loop) + self.menu = Menu(self.loop) _menu1 = "Menu 1" - _menu.addMenu(_menu1, "Item 1", self.menu_cb) - _menu.addMenu(_menu1, "Item 2", self.menu_cb) - _menu.addMenu(_menu1, "Item 3", self.menu_cb) + self.menu.addMenu(_menu1, "Item 1", self.menu_cb) #Adding a menu is quite easy + self.menu.addMenu(_menu1, "Item 2", self.menu_cb) #Here the callback is always the same, + self.menu.addMenu(_menu1, "Item 3", self.menu_cb) #but you use differents one in real life :) + self.menu.addMenu(_menu1, "Exit (C-x)", self.exit_cb, 'ctrl x') #You can also add a shortcut _menu2 = "Menu 2" - _menu.addMenu(_menu2, "Item 1", self.menu_cb) - _menu.addMenu(_menu2, "Item 2", self.menu_cb) - _menu.addMenu(_menu2, "Item 3", self.menu_cb) - return _menu + self.menu.addMenu(_menu2, "Item 1", self.menu_cb) + self.menu.addMenu(_menu2, "Item 2", self.menu_cb) + self.menu.addMenu(_menu2, "Item 3", self.menu_cb) + return self.menu - def test_quit(self, input): + def keyHandler(self, input): """We leave is user press 'esc'""" if input in ('esc','q','Q'): raise urwid.ExitMainLoop() + else: + return self.menu.checkShortcuts(input) demo = MenuDemo() demo.run()