15 import os, sys, traceback, time, string
18 if (x ==
"--no-curses"):
21 if (have_curses == 1):
22 import curses, curses.textpad
53 gb.subtitle = subtitle
60 def Print (message, sleep=0.7,row=1):
63 if (x ==
"--no-curses" or gb.init == 0):
67 if (gb.scrn ==
None):
return
68 if (row == 1): gb.scrn.erase()
69 gb.scrn.addstr(row,1,message, curses.A_BOLD)
81 if (x ==
"--no-curses"):
86 gb.scrn.addstr(1,1,message, curses.A_BOLD)
102 gb.scrn.addstr(0,0,
">> "+gb.title+
" <<", curses.A_BOLD)
104 if (len(gb.subtitle) > 1):
105 gb.scrn.addstr(2,0, gb.subtitle, curses.A_UNDERLINE)
109 for ln
in entries[0:len(entries)]:
110 indx = entries.index(ln)
111 gb.scrn.addstr(lastrow, gb.cbeg, ln)
113 gb.scrn.addstr(lastrow, gb.cbeg + gb.csep, default[indx])
116 if (row == 0
or gb.row < gb.rbeg
or gb.row > lastrow):
120 gb.scrn.addstr(gb.row, gb.cbeg , entries[n], curses.A_REVERSE)
121 if (gb.ncol == 2): gb.scrn.addstr(gb.row, gb.cbeg+gb.csep, default[n], curses.A_UNDERLINE)
135 if tmp >= gb.rbeg
and tmp < (gb.rbeg + len(entries)):
137 gb.scrn.addstr(gb.row, gb.cbeg , entries[gb.row-gb.rbeg])
138 if (gb.ncol == 2): gb.scrn.addstr(gb.row, gb.cbeg + gb.csep, default[gb.row-gb.rbeg])
141 c1 = entries[gb.row-gb.rbeg]
142 if (gb.ncol == 2): c2 = default[gb.row-gb.rbeg]
144 gb.scrn.addstr(gb.row, gb.cbeg , c1, curses.A_REVERSE)
145 if (gb.ncol == 2): gb.scrn.addstr(gb.row, gb.cbeg + gb.csep, c2, curses.A_UNDERLINE)
158 idef = options[i].index(default[i])
159 nopt = len(options[i])
160 if (inc > 0): idef = idef + 1
161 if (inc < 0): idef = idef - 1
162 if (idef < 0): idef = nopt-1
163 if (idef == nopt): idef = 0
165 default[i] = options[i][idef]
166 gb.scrn.addstr(gb.row, gb.cbeg , entries[i], curses.A_REVERSE)
167 gb.scrn.addstr(gb.row, gb.cbeg + gb.csep, default[i], curses.A_UNDERLINE)
181 def Browse(entries, default=[], options=[]):
184 if (len(default) > 0): gb.ncol = 2
187 if (x ==
"--no-curses"):
194 gb.scrn = curses.initscr()
208 return entries[gb.row-gb.rbeg]
213 elif (cc ==
'u' or c == curses.KEY_UP): UpDown(entries, default, -1)
214 elif (cc ==
'd' or c == curses.KEY_DOWN):
UpDown(entries, default, 1)
216 if (cc ==
'r' or c == curses.KEY_RIGHT):
218 elif (cc ==
'l' or c == curses.KEY_LEFT):
232 if (x ==
"--no-curses"):
240 gb.scrn = curses.initscr()
264 elif (cc ==
'u' or c == curses.KEY_UP): UpDown(entries, default, -1)
265 elif (cc ==
'd' or c == curses.KEY_DOWN):
UpDown(entries, default, 1)
266 elif (cc ==
'r' or c == curses.KEY_RIGHT):
268 gb.scrn.addstr(gb.row,gb.cbeg+gb.csep,' ')
269 gb.scrn.addstr(gb.row,gb.cbeg+gb.csep,
'NAME or VALUE > ',curses.A_UNDERLINE)
270 new_name = gb.scrn.getstr()
273 default.insert(i,new_name)
290 if (x ==
"--no-curses"):
293 curses.reset_shell_mode()
299 if __name__ ==
'__browse__':
305 traceback.print_exc()
350 print ">> ",gb.title+
"\n"
353 if (len(default) > 0):
354 print str(i).rjust(2),
') ',x.ljust(28), default[i]
356 print str(i).rjust(2),
') ',x.ljust(28)
359 q = raw_input(
">> choice ? ")
365 if (len(default) == 0):
return entries[q]
371 i = options[q].index(x)
372 opt_list += repr(i)+
") "+x+
" "
374 print "\n"+entries[q]+
": ",opt_list
375 c = raw_input(
">> choice ["+default[q]+
"] ? ")
381 default[q] = options[q][c]
393 print ">> ",gb.title+
"\n"
396 print str(i).rjust(2),
') ',names[i].ljust(28)
399 q = raw_input(
">> choice ? ")
408 newname = raw_input(
">> new name ? ")