~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Demo/curses/ncurses.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
#
 
3
# $Id: ncurses.py 66424 2008-09-13 01:22:08Z andrew.kuchling $
 
4
#
 
5
# (n)curses exerciser in Python, an interactive test for the curses
 
6
# module. Currently, only the panel demos are ported.
 
7
 
 
8
import curses
 
9
from curses import panel
 
10
 
 
11
def wGetchar(win = None):
 
12
    if win is None: win = stdscr
 
13
    return win.getch()
 
14
 
 
15
def Getchar():
 
16
    wGetchar()
 
17
 
 
18
#
 
19
# Panels tester
 
20
#
 
21
def wait_a_while():
 
22
    if nap_msec == 1:
 
23
        Getchar()
 
24
    else:
 
25
        curses.napms(nap_msec)
 
26
 
 
27
def saywhat(text):
 
28
    stdscr.move(curses.LINES - 1, 0)
 
29
    stdscr.clrtoeol()
 
30
    stdscr.addstr(text)
 
31
 
 
32
def mkpanel(color, rows, cols, tly, tlx):
 
33
    win = curses.newwin(rows, cols, tly, tlx)
 
34
    pan = panel.new_panel(win)
 
35
    if curses.has_colors():
 
36
        if color == curses.COLOR_BLUE:
 
37
            fg = curses.COLOR_WHITE
 
38
        else:
 
39
            fg = curses.COLOR_BLACK
 
40
        bg = color
 
41
        curses.init_pair(color, fg, bg)
 
42
        win.bkgdset(ord(' '), curses.color_pair(color))
 
43
    else:
 
44
        win.bkgdset(ord(' '), curses.A_BOLD)
 
45
 
 
46
    return pan
 
47
 
 
48
def pflush():
 
49
    panel.update_panels()
 
50
    curses.doupdate()
 
51
 
 
52
def fill_panel(pan):
 
53
    win = pan.window()
 
54
    num = pan.userptr()[1]
 
55
 
 
56
    win.move(1, 1)
 
57
    win.addstr("-pan%c-" % num)
 
58
    win.clrtoeol()
 
59
    win.box()
 
60
 
 
61
    maxy, maxx = win.getmaxyx()
 
62
    for y in range(2, maxy - 1):
 
63
        for x in range(1, maxx - 1):
 
64
            win.move(y, x)
 
65
            win.addch(num)
 
66
 
 
67
def demo_panels(win):
 
68
    global stdscr, nap_msec, mod
 
69
    stdscr = win
 
70
    nap_msec = 1
 
71
    mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"]
 
72
 
 
73
    stdscr.refresh()
 
74
 
 
75
    for y in range(0, curses.LINES - 1):
 
76
        for x in range(0, curses.COLS):
 
77
            stdscr.addstr("%d" % ((y + x) % 10))
 
78
    for y in range(0, 1):
 
79
        p1 = mkpanel(curses.COLOR_RED,
 
80
                     curses.LINES // 2 - 2,
 
81
                     curses.COLS // 8 + 1,
 
82
                     0,
 
83
                     0)
 
84
        p1.set_userptr("p1")
 
85
 
 
86
        p2 = mkpanel(curses.COLOR_GREEN,
 
87
                     curses.LINES // 2 + 1,
 
88
                     curses.COLS // 7,
 
89
                     curses.LINES // 4,
 
90
                     curses.COLS // 10)
 
91
        p2.set_userptr("p2")
 
92
 
 
93
        p3 = mkpanel(curses.COLOR_YELLOW,
 
94
                     curses.LINES // 4,
 
95
                     curses.COLS // 10,
 
96
                     curses.LINES // 2,
 
97
                     curses.COLS // 9)
 
98
        p3.set_userptr("p3")
 
99
 
 
100
        p4 = mkpanel(curses.COLOR_BLUE,
 
101
                     curses.LINES // 2 - 2,
 
102
                     curses.COLS // 8,
 
103
                     curses.LINES // 2 - 2,
 
104
                     curses.COLS // 3)
 
105
        p4.set_userptr("p4")
 
106
 
 
107
        p5 = mkpanel(curses.COLOR_MAGENTA,
 
108
                     curses.LINES // 2 - 2,
 
109
                     curses.COLS // 8,
 
110
                     curses.LINES // 2,
 
111
                     curses.COLS // 2 - 2)
 
112
        p5.set_userptr("p5")
 
113
 
 
114
        fill_panel(p1)
 
115
        fill_panel(p2)
 
116
        fill_panel(p3)
 
117
        fill_panel(p4)
 
118
        fill_panel(p5)
 
119
        p4.hide()
 
120
        p5.hide()
 
121
        pflush()
 
122
        saywhat("press any key to continue")
 
123
        wait_a_while()
 
124
 
 
125
        saywhat("h3 s1 s2 s4 s5;press any key to continue")
 
126
        p1.move(0, 0)
 
127
        p3.hide()
 
128
        p1.show()
 
129
        p2.show()
 
130
        p4.show()
 
131
        p5.show()
 
132
        pflush()
 
133
        wait_a_while()
 
134
 
 
135
        saywhat("s1; press any key to continue")
 
136
        p1.show()
 
137
        pflush()
 
138
        wait_a_while()
 
139
 
 
140
        saywhat("s2; press any key to continue")
 
141
        p2.show()
 
142
        pflush()
 
143
        wait_a_while()
 
144
 
 
145
        saywhat("m2; press any key to continue")
 
146
        p2.move(curses.LINES // 3 + 1, curses.COLS // 8)
 
147
        pflush()
 
148
        wait_a_while()
 
149
 
 
150
        saywhat("s3; press any key to continue")
 
151
        p3.show()
 
152
        pflush()
 
153
        wait_a_while()
 
154
 
 
155
        saywhat("m3; press any key to continue")
 
156
        p3.move(curses.LINES // 4 + 1, curses.COLS // 15)
 
157
        pflush()
 
158
        wait_a_while()
 
159
 
 
160
        saywhat("b3; press any key to continue")
 
161
        p3.bottom()
 
162
        pflush()
 
163
        wait_a_while()
 
164
 
 
165
        saywhat("s4; press any key to continue")
 
166
        p4.show()
 
167
        pflush()
 
168
        wait_a_while()
 
169
 
 
170
        saywhat("s5; press any key to continue")
 
171
        p5.show()
 
172
        pflush()
 
173
        wait_a_while()
 
174
 
 
175
        saywhat("t3; press any key to continue")
 
176
        p3.top()
 
177
        pflush()
 
178
        wait_a_while()
 
179
 
 
180
        saywhat("t1; press any key to continue")
 
181
        p1.show()
 
182
        pflush()
 
183
        wait_a_while()
 
184
 
 
185
        saywhat("t2; press any key to continue")
 
186
        p2.show()
 
187
        pflush()
 
188
        wait_a_while()
 
189
 
 
190
        saywhat("t3; press any key to continue")
 
191
        p3.show()
 
192
        pflush()
 
193
        wait_a_while()
 
194
 
 
195
        saywhat("t4; press any key to continue")
 
196
        p4.show()
 
197
        pflush()
 
198
        wait_a_while()
 
199
 
 
200
        for itmp in range(0, 6):
 
201
            w4 = p4.window()
 
202
            w5 = p5.window()
 
203
 
 
204
            saywhat("m4; press any key to continue")
 
205
            w4.move(curses.LINES // 8, 1)
 
206
            w4.addstr(mod[itmp])
 
207
            p4.move(curses.LINES // 6, itmp * curses.COLS // 8)
 
208
            w5.move(curses.LINES // 6, 1)
 
209
            w5.addstr(mod[itmp])
 
210
            pflush()
 
211
            wait_a_while()
 
212
 
 
213
            saywhat("m5; press any key to continue")
 
214
            w4.move(curses.LINES // 6, 1)
 
215
            w4.addstr(mod[itmp])
 
216
            p5.move(curses.LINES // 3 - 1, itmp * 10 + 6)
 
217
            w5.move(curses.LINES // 8, 1)
 
218
            w5.addstr(mod[itmp])
 
219
            pflush()
 
220
            wait_a_while()
 
221
 
 
222
        saywhat("m4; press any key to continue")
 
223
        p4.move(curses.LINES // 6, (itmp + 1) * curses.COLS // 8)
 
224
        pflush()
 
225
        wait_a_while()
 
226
 
 
227
        saywhat("t5; press any key to continue")
 
228
        p5.top()
 
229
        pflush()
 
230
        wait_a_while()
 
231
 
 
232
        saywhat("t2; press any key to continue")
 
233
        p2.top()
 
234
        pflush()
 
235
        wait_a_while()
 
236
 
 
237
        saywhat("t1; press any key to continue")
 
238
        p1.top()
 
239
        pflush()
 
240
        wait_a_while()
 
241
 
 
242
        saywhat("d2; press any key to continue")
 
243
        del p2
 
244
        pflush()
 
245
        wait_a_while()
 
246
 
 
247
        saywhat("h3; press any key to continue")
 
248
        p3.hide()
 
249
        pflush()
 
250
        wait_a_while()
 
251
 
 
252
        saywhat("d1; press any key to continue")
 
253
        del p1
 
254
        pflush()
 
255
        wait_a_while()
 
256
 
 
257
        saywhat("d4; press any key to continue")
 
258
        del p4
 
259
        pflush()
 
260
        wait_a_while()
 
261
 
 
262
        saywhat("d5; press any key to continue")
 
263
        del p5
 
264
        pflush()
 
265
        wait_a_while()
 
266
        if nap_msec == 1:
 
267
            break
 
268
        nap_msec = 100
 
269
 
 
270
#
 
271
# one fine day there'll be the menu at this place
 
272
#
 
273
curses.wrapper(demo_panels)