summaryrefslogtreecommitdiff
path: root/docs/tutorial
diff options
context:
space:
mode:
authorIan Ward <ian@excess.org>2012-09-18 22:12:08 -0400
committerIan Ward <ian@excess.org>2012-09-18 22:12:08 -0400
commitda0f30e5561c8ed0b4a9300cab23d00283cec01c (patch)
tree49f0d39246f3af4f30d473bb463e1dc127b74aeb /docs/tutorial
parentc93f671c8d0b3dc1764ead8746da96fa905ab859 (diff)
downloadurwid-da0f30e5561c8ed0b4a9300cab23d00283cec01c.tar.gz
tutorial: work on making menu examples fancier-looking
--HG-- branch : feature-sphinx
Diffstat (limited to 'docs/tutorial')
-rw-r--r--docs/tutorial/index.rst30
-rw-r--r--docs/tutorial/menu1.py13
-rw-r--r--docs/tutorial/menu1.py.xdotool3
-rw-r--r--docs/tutorial/menu11.pngbin0 -> 997 bytes
-rw-r--r--docs/tutorial/menu12.pngbin0 -> 991 bytes
-rw-r--r--docs/tutorial/menu13.pngbin0 -> 468 bytes
-rw-r--r--docs/tutorial/menu2.py31
-rw-r--r--docs/tutorial/menu2.py.xdotool4
-rw-r--r--docs/tutorial/menu21.pngbin0 -> 1240 bytes
-rw-r--r--docs/tutorial/menu22.pngbin0 -> 1243 bytes
-rw-r--r--docs/tutorial/menu23.pngbin0 -> 1499 bytes
-rw-r--r--docs/tutorial/menu24.pngbin0 -> 1436 bytes
-rw-r--r--docs/tutorial/menu25.pngbin0 -> 366 bytes
-rw-r--r--docs/tutorial/menu3.py2
-rw-r--r--docs/tutorial/menu3.py.xdotool4
-rw-r--r--docs/tutorial/menu31.pngbin0 -> 654 bytes
-rw-r--r--docs/tutorial/menu32.pngbin0 -> 643 bytes
-rw-r--r--docs/tutorial/menu33.pngbin0 -> 569 bytes
-rw-r--r--docs/tutorial/menu34.pngbin0 -> 381 bytes
-rw-r--r--docs/tutorial/menu4.py.xdotool4
-rw-r--r--docs/tutorial/menu41.pngbin0 -> 696 bytes
-rw-r--r--docs/tutorial/menu42.pngbin0 -> 761 bytes
-rw-r--r--docs/tutorial/menu43.pngbin0 -> 625 bytes
-rw-r--r--docs/tutorial/menu44.pngbin0 -> 633 bytes
24 files changed, 70 insertions, 21 deletions
diff --git a/docs/tutorial/index.rst b/docs/tutorial/index.rst
index 1a4c911..dd3de0b 100644
--- a/docs/tutorial/index.rst
+++ b/docs/tutorial/index.rst
@@ -237,6 +237,7 @@ It then asks again, and again. Old values may be changed and the responses will
be updated when you press *ENTER*. *ENTER* on a blank line exits.
.. literalinclude:: lbcont.py
+ :linenos:
:class:`ListBox` widgets let you scroll through a number of flow widgets
vertically. It handles *UP*, *DOWN*, *PAGE UP* and *PAGE DOWN* keystrokes
@@ -279,12 +280,16 @@ Menu Example
Simple Menu with Buttons
------------------------
-We can create a very simple menu using a list of :class:`Button` widgets. This program
-lets you choose an option then repeats what you chose.
+We can create a very simple menu using a list of :class:`Button` widgets.
+This program lets you choose an option then repeats what you chose.
.. literalinclude:: menu1.py
:linenos:
+.. image:: menu11.png
+.. image:: menu12.png
+.. image:: menu13.png
+
Nested Menus
------------
@@ -294,6 +299,11 @@ lets you choose an option from a nested menu then repeats what you chose.
.. literalinclude:: menu2.py
:linenos:
+.. image:: menu21.png
+.. image:: menu22.png
+.. image:: menu23.png
+.. image:: menu24.png
+
Nested Menus with Custom Widgets
--------------------------------
@@ -303,13 +313,23 @@ component we are creating. The :class:`Button` subclasses are customized to remo
default decorations
.. literalinclude:: menu3.py
+ :linenos:
-Adventure Game in Menus
------------------------
+.. image:: menu31.png
+.. image:: menu32.png
+.. image:: menu33.png
+.. image:: menu34.png
-.. literalinclude:: menu4.py
+"Adventure Game" in Menus
+-------------------------
+.. literalinclude:: menu4.py
+ :linenos:
+.. image:: menu41.png
+.. image:: menu42.png
+.. image:: menu43.png
+.. image:: menu44.png
.. _zen-listbox:
diff --git a/docs/tutorial/menu1.py b/docs/tutorial/menu1.py
index f3dd0a3..98096f8 100644
--- a/docs/tutorial/menu1.py
+++ b/docs/tutorial/menu1.py
@@ -1,24 +1,27 @@
import urwid
+choices = u'Chapman Cleese Gilliam Idle Jones Palin'.split()
+
def menu(title, choices):
body = [urwid.Text(title), urwid.Divider()]
for c in choices:
button = urwid.Button(c)
urwid.connect_signal(button, 'click', item_chosen, c)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
- return urwid.ListBox(urwid.SimpleListWalker(body))
+ return urwid.ListBox(urwid.SimpleFocusListWalker(body))
def item_chosen(self, choice):
response = urwid.Text(u'You chose %s' % choice)
- loop.widget = urwid.Filler(response)
+ main.original_widget = urwid.Filler(response)
# exit on the next input from user
loop.unhandled_input = exit_program
def exit_program(key):
raise urwid.ExitMainLoop()
-choices = u'Chapman Cleese Gilliam Idle Jones Palin'.split()
-
-loop = urwid.MainLoop(menu(u'Pythons', choices),
+main = urwid.Padding(menu(u'Pythons', choices), left=2, right=2)
+top = urwid.Overlay(main, urwid.SolidFill(u'\u2592'),
+ 'center', 20, 'middle', 9)
+loop = urwid.MainLoop(top,
palette=[('reversed', 'standout', '')])
loop.run()
diff --git a/docs/tutorial/menu1.py.xdotool b/docs/tutorial/menu1.py.xdotool
new file mode 100644
index 0000000..3ef7d5c
--- /dev/null
+++ b/docs/tutorial/menu1.py.xdotool
@@ -0,0 +1,3 @@
+windowsize --usehints $RXVTWINDOWID 24 11
+key --window $RXVTWINDOWID Down Down Down
+key --window $RXVTWINDOWID Return
diff --git a/docs/tutorial/menu11.png b/docs/tutorial/menu11.png
new file mode 100644
index 0000000..73b8235
--- /dev/null
+++ b/docs/tutorial/menu11.png
Binary files differ
diff --git a/docs/tutorial/menu12.png b/docs/tutorial/menu12.png
new file mode 100644
index 0000000..6fe32d3
--- /dev/null
+++ b/docs/tutorial/menu12.png
Binary files differ
diff --git a/docs/tutorial/menu13.png b/docs/tutorial/menu13.png
new file mode 100644
index 0000000..67af851
--- /dev/null
+++ b/docs/tutorial/menu13.png
Binary files differ
diff --git a/docs/tutorial/menu2.py b/docs/tutorial/menu2.py
index aaf805d..c158d6d 100644
--- a/docs/tutorial/menu2.py
+++ b/docs/tutorial/menu2.py
@@ -1,25 +1,24 @@
import urwid
-def menu_button(caption, callback, data=None):
+def menu_button(caption, callback):
button = urwid.Button(caption)
- urwid.connect_signal(button, 'click', callback, data)
+ urwid.connect_signal(button, 'click', callback)
return urwid.AttrMap(button, None, focus_map='reversed')
def sub_menu(caption, choices):
contents = menu(caption, choices)
- return menu_button(u'MENU: %s' % caption, open_menu, contents)
+ def open_menu(button):
+ return top.open_menu(contents)
+ return menu_button(u'MENU: %s' % caption, open_menu)
def menu(title, choices):
body = [urwid.Text(title), urwid.Divider()]
body.extend(choices)
- return urwid.ListBox(urwid.SimpleListWalker(body))
-
-def open_menu(button, menu):
- loop.widget = menu
+ return urwid.ListBox(urwid.SimpleFocusListWalker(body))
def item_chosen(button):
response = urwid.Text(u'You chose %s' % button.label)
- loop.widget = urwid.Filler(response)
+ top.open_menu(urwid.Filler(response))
# exit on the next input from user
loop.unhandled_input = exit_program
@@ -41,6 +40,18 @@ menu_top = menu(u'Main Menu', [
]),
])
-loop = urwid.MainLoop(menu_top,
- palette=[('reversed', 'standout', '')])
+class NestedMenus(urwid.WidgetPlaceholder):
+ def __init__(self, menu):
+ super(NestedMenus, self).__init__(urwid.SolidFill(u'/'))
+ self.menu_level = 0
+ self.open_menu(menu)
+
+ def open_menu(self, menu):
+ self.original_widget = urwid.Overlay(urwid.LineBox(menu),
+ self.original_widget, 'left', 24, 'top', 8,
+ left=self.menu_level * 2, top=self.menu_level * 2)
+ self.menu_level += 1
+
+top = NestedMenus(menu_top)
+loop = urwid.MainLoop(top, palette=[('reversed', 'standout', '')])
loop.run()
diff --git a/docs/tutorial/menu2.py.xdotool b/docs/tutorial/menu2.py.xdotool
new file mode 100644
index 0000000..a87fc38
--- /dev/null
+++ b/docs/tutorial/menu2.py.xdotool
@@ -0,0 +1,4 @@
+windowsize --usehints $RXVTWINDOWID 32 14
+key --window $RXVTWINDOWID Return
+key --window $RXVTWINDOWID Return Down
+key --window $RXVTWINDOWID Return
diff --git a/docs/tutorial/menu21.png b/docs/tutorial/menu21.png
new file mode 100644
index 0000000..95406dc
--- /dev/null
+++ b/docs/tutorial/menu21.png
Binary files differ
diff --git a/docs/tutorial/menu22.png b/docs/tutorial/menu22.png
new file mode 100644
index 0000000..870ffed
--- /dev/null
+++ b/docs/tutorial/menu22.png
Binary files differ
diff --git a/docs/tutorial/menu23.png b/docs/tutorial/menu23.png
new file mode 100644
index 0000000..ae9faa7
--- /dev/null
+++ b/docs/tutorial/menu23.png
Binary files differ
diff --git a/docs/tutorial/menu24.png b/docs/tutorial/menu24.png
new file mode 100644
index 0000000..53b9293
--- /dev/null
+++ b/docs/tutorial/menu24.png
Binary files differ
diff --git a/docs/tutorial/menu25.png b/docs/tutorial/menu25.png
new file mode 100644
index 0000000..38956c5
--- /dev/null
+++ b/docs/tutorial/menu25.png
Binary files differ
diff --git a/docs/tutorial/menu3.py b/docs/tutorial/menu3.py
index 2d257a6..e3bd0bb 100644
--- a/docs/tutorial/menu3.py
+++ b/docs/tutorial/menu3.py
@@ -4,7 +4,7 @@ class MenuButton(urwid.Button):
def __init__(self, caption, callback):
super(MenuButton, self).__init__("")
urwid.connect_signal(self, 'click', callback)
- self._w = urwid.AttrMap(urwid.SelectableIcon(caption, 1),
+ self._w = urwid.AttrMap(urwid.SelectableIcon(caption, 0),
None, focus_map='reversed')
class SubMenu(urwid.WidgetWrap):
diff --git a/docs/tutorial/menu3.py.xdotool b/docs/tutorial/menu3.py.xdotool
new file mode 100644
index 0000000..88fbf69
--- /dev/null
+++ b/docs/tutorial/menu3.py.xdotool
@@ -0,0 +1,4 @@
+windowsize --usehints $RXVTWINDOWID 23 8
+key --window $RXVTWINDOWID Down
+key --window $RXVTWINDOWID Return Down
+key --window $RXVTWINDOWID Return
diff --git a/docs/tutorial/menu31.png b/docs/tutorial/menu31.png
new file mode 100644
index 0000000..5304300
--- /dev/null
+++ b/docs/tutorial/menu31.png
Binary files differ
diff --git a/docs/tutorial/menu32.png b/docs/tutorial/menu32.png
new file mode 100644
index 0000000..8ddd497
--- /dev/null
+++ b/docs/tutorial/menu32.png
Binary files differ
diff --git a/docs/tutorial/menu33.png b/docs/tutorial/menu33.png
new file mode 100644
index 0000000..5979e08
--- /dev/null
+++ b/docs/tutorial/menu33.png
Binary files differ
diff --git a/docs/tutorial/menu34.png b/docs/tutorial/menu34.png
new file mode 100644
index 0000000..53109bf
--- /dev/null
+++ b/docs/tutorial/menu34.png
Binary files differ
diff --git a/docs/tutorial/menu4.py.xdotool b/docs/tutorial/menu4.py.xdotool
new file mode 100644
index 0000000..85999f6
--- /dev/null
+++ b/docs/tutorial/menu4.py.xdotool
@@ -0,0 +1,4 @@
+windowsize --usehints $RXVTWINDOWID 23 8
+key --window $RXVTWINDOWID Return Down Down
+key --window $RXVTWINDOWID Return Down
+key --window $RXVTWINDOWID Return
diff --git a/docs/tutorial/menu41.png b/docs/tutorial/menu41.png
new file mode 100644
index 0000000..00b5a9f
--- /dev/null
+++ b/docs/tutorial/menu41.png
Binary files differ
diff --git a/docs/tutorial/menu42.png b/docs/tutorial/menu42.png
new file mode 100644
index 0000000..d7c0440
--- /dev/null
+++ b/docs/tutorial/menu42.png
Binary files differ
diff --git a/docs/tutorial/menu43.png b/docs/tutorial/menu43.png
new file mode 100644
index 0000000..34f616a
--- /dev/null
+++ b/docs/tutorial/menu43.png
Binary files differ
diff --git a/docs/tutorial/menu44.png b/docs/tutorial/menu44.png
new file mode 100644
index 0000000..3ff574f
--- /dev/null
+++ b/docs/tutorial/menu44.png
Binary files differ