symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/ncurses.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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)