diff options
author | Ian Ward <ian@excess.org> | 2012-09-09 22:51:38 -0400 |
---|---|---|
committer | Ian Ward <ian@excess.org> | 2012-09-09 22:51:38 -0400 |
commit | dff9ebcdcbc511f5e0eb1e6419ddcb498c37baf3 (patch) | |
tree | 38b4d3beef2f96b4d7d29f08c0610576ed152c71 /docs/tutorial | |
parent | ea9bd8d4099a95dfd74ef99a6db58ab3f97d947e (diff) | |
download | urwid-dff9ebcdcbc511f5e0eb1e6419ddcb498c37baf3.tar.gz |
tutorial: update some examples (descriptions to follow)
--HG--
branch : feature-sphinx
Diffstat (limited to 'docs/tutorial')
-rw-r--r-- | docs/tutorial/edit.py | 26 | ||||
-rw-r--r-- | docs/tutorial/edit.py.xdotool | 2 | ||||
-rw-r--r-- | docs/tutorial/edit3.png | bin | 612 -> 668 bytes | |||
-rw-r--r-- | docs/tutorial/frlb.py | 5 | ||||
-rw-r--r-- | docs/tutorial/index.rst | 1 | ||||
-rw-r--r-- | docs/tutorial/lbcont.py | 45 | ||||
-rw-r--r-- | docs/tutorial/lbcont.py.xdotool | 3 | ||||
-rw-r--r-- | docs/tutorial/lbcont1.png | bin | 526 -> 503 bytes | |||
-rw-r--r-- | docs/tutorial/lbcont2.png | bin | 908 -> 832 bytes | |||
-rw-r--r-- | docs/tutorial/lbcont3.png | bin | 1035 -> 1056 bytes | |||
-rw-r--r-- | docs/tutorial/lbscr1.png | bin | 747 -> 627 bytes |
11 files changed, 46 insertions, 36 deletions
diff --git a/docs/tutorial/edit.py b/docs/tutorial/edit.py index 8b32c4d..41842e3 100644 --- a/docs/tutorial/edit.py +++ b/docs/tutorial/edit.py @@ -1,16 +1,20 @@ import urwid -def do_reply(key): - if key != 'enter': - return - if fill.body == ask: - fill.body = urwid.Text(u"Nice to meet you,\n" + - ask.edit_text + ".") - return True - else: +def exit_on_q(key): + if key in ('q', 'Q'): raise urwid.ExitMainLoop() -ask = urwid.Edit(u"What is your name?\n") -fill = urwid.Filler(ask) -loop = urwid.MainLoop(fill, unhandled_input=do_reply) +class Question(urwid.Edit): + def __init__(self): + super(Question, self).__init__(u"What is your name?\n") + + def keypress(self, size, key): + key = super(Question, self).keypress(size, key) + if key != 'enter': + return key + fill.body = urwid.Text(u"Nice to meet you,\n" + self.edit_text + + u".\n\nPress Q to exit.") + +fill = urwid.Filler(Question()) +loop = urwid.MainLoop(fill, unhandled_input=exit_on_q) loop.run() diff --git a/docs/tutorial/edit.py.xdotool b/docs/tutorial/edit.py.xdotool index af7d3f2..484847b 100644 --- a/docs/tutorial/edit.py.xdotool +++ b/docs/tutorial/edit.py.xdotool @@ -1,3 +1,3 @@ windowsize --usehints $RXVTWINDOWID 21 7 type --window $RXVTWINDOWID 'Arthur, King of the Britons' -key --window $RXVTWINDOWID Return +key --window $RXVTWINDOWID 'Q' diff --git a/docs/tutorial/edit3.png b/docs/tutorial/edit3.png Binary files differindex 10ff428..152c3c1 100644 --- a/docs/tutorial/edit3.png +++ b/docs/tutorial/edit3.png diff --git a/docs/tutorial/frlb.py b/docs/tutorial/frlb.py index df4a289..6b3a332 100644 --- a/docs/tutorial/frlb.py +++ b/docs/tutorial/frlb.py @@ -12,9 +12,8 @@ def on_ask_change(edit, new_edit_text): palette = [('I say', 'default,bold', 'default', 'bold'),] ask = urwid.Edit(('I say', u"What is your name?\n")) reply = urwid.Text(u"") -content = urwid.SimpleListWalker([ask, reply]) -listbox = urwid.ListBox(content) - +listbox = urwid.ListBox(urwid.SimpleFocusListWalker([ask, reply])) urwid.connect_signal(ask, 'change', on_ask_change) + loop = urwid.MainLoop(listbox, palette, unhandled_input=exit_on_cr) loop.run() diff --git a/docs/tutorial/index.rst b/docs/tutorial/index.rst index 379fe9d..533dadd 100644 --- a/docs/tutorial/index.rst +++ b/docs/tutorial/index.rst @@ -297,6 +297,7 @@ default decorations Adventure Game in Menus ----------------------- +.. literalinclude:: menu4.py diff --git a/docs/tutorial/lbcont.py b/docs/tutorial/lbcont.py index f5e7ab2..f71d5bb 100644 --- a/docs/tutorial/lbcont.py +++ b/docs/tutorial/lbcont.py @@ -1,28 +1,33 @@ import urwid -def new_question(): - return urwid.Edit(('I say', u"What is your name?\n")) +class Question(urwid.Edit): + def __init__(self): + super(Question, self).__init__(('I say', u"What is your name?\n")) -def new_answer(name): + def keypress(self, size, key): + key = super(Question, self).keypress(size, key) + if key == 'enter' and not self.edit_text: + raise urwid.ExitMainLoop() + return key + +def answer(name): return urwid.Text(('I say', u"Nice to meet you, " + name + "\n")) -def update_on_cr(key): - if key != 'enter': - return - focus_widget, position = listbox.get_focus() - if not hasattr(focus_widget, 'edit_text'): - return - if not focus_widget.edit_text: - raise urwid.ExitMainLoop() - content[position + 1:position + 2] = [ - new_answer(focus_widget.edit_text)] - if not content[position + 2:position + 3]: - content.append(new_question()) - listbox.set_focus(position + 2) - return True +class ConversationListBox(urwid.ListBox): + def __init__(self): + super(ConversationListBox, self).__init__( + urwid.SimpleFocusListWalker([Question()])) + + def keypress(self, size, key): + key = super(ConversationListBox, self).keypress(size, key) + if key != 'enter' or not hasattr(self.focus, 'edit_text'): + return key + # replace or add response below + pos = self.focus_position + self.body[pos + 1:pos + 2] = [answer(self.focus.edit_text)] + if not self.body[pos + 2:pos + 3]: self.body.append(Question()) + self.set_focus(pos + 2) palette = [('I say', 'default,bold', 'default', 'bold'),] -content = urwid.SimpleListWalker([new_question()]) -listbox = urwid.ListBox(content) -loop = urwid.MainLoop(listbox, palette, unhandled_input=update_on_cr) +loop = urwid.MainLoop(ConversationListBox(), palette) loop.run() diff --git a/docs/tutorial/lbcont.py.xdotool b/docs/tutorial/lbcont.py.xdotool index f87a990..8abae5b 100644 --- a/docs/tutorial/lbcont.py.xdotool +++ b/docs/tutorial/lbcont.py.xdotool @@ -1,3 +1,4 @@ -windowsize --usehints $RXVTWINDOWID 23 13 key --window $RXVTWINDOWID A b e Return B o b +windowsize --usehints $RXVTWINDOWID 23 13 +key --window $RXVTWINDOWID A b e Return B o b key --window $RXVTWINDOWID Return C a r l Return key --window $RXVTWINDOWID D a v e Return diff --git a/docs/tutorial/lbcont1.png b/docs/tutorial/lbcont1.png Binary files differindex feb9377..c986f44 100644 --- a/docs/tutorial/lbcont1.png +++ b/docs/tutorial/lbcont1.png diff --git a/docs/tutorial/lbcont2.png b/docs/tutorial/lbcont2.png Binary files differindex ab4f70a..ae8f745 100644 --- a/docs/tutorial/lbcont2.png +++ b/docs/tutorial/lbcont2.png diff --git a/docs/tutorial/lbcont3.png b/docs/tutorial/lbcont3.png Binary files differindex de28724..31ee89a 100644 --- a/docs/tutorial/lbcont3.png +++ b/docs/tutorial/lbcont3.png diff --git a/docs/tutorial/lbscr1.png b/docs/tutorial/lbscr1.png Binary files differindex 79db363..a938a66 100644 --- a/docs/tutorial/lbscr1.png +++ b/docs/tutorial/lbscr1.png |