def init_display(self): self.max_y, self.max_x = self.screen.getmaxyx() self.lines = [""]*(self.max_y - 1) self.prev_lines = [""]*(self.max_y - 1) curses.noecho() curses.nonl() curses.cbreak() curses.typeahead(-1) curses.curs_set(0) self.screen.attron(curses.A_REVERSE)
def _initscr_plus(self): self._scr = curses.initscr() self._max_y, self._max_x = self._scr.getmaxyx() curses.noecho() curses.nonl() curses.cbreak() curses.typeahead(-1) curses.curs_set(0) # in case curses has other ideas fcntl.fcntl(0, fcntl.F_SETFL, os.O_NONBLOCK)
def curses_setup(self): if self.in_readline: self.pseudo_input_box.keypad(0) self.curs_set(1) elif self.pseudo_input_box: self.pseudo_input_box.nodelay(1) self.pseudo_input_box.keypad(1) self.curs_set(0) else: self.curs_set(0) try: curses.cbreak() curses.noecho() curses.start_color() curses.use_default_colors() curses.typeahead(-1) curses.halfdelay(5) except Exception as e: log.error("Curses setup failed: %s" % e.msg) return -1 self.height, self.width = self.stdscr.getmaxyx() self.height = int(self.height) self.width = int(self.width) color_conf = self.callbacks["get_opt"]("color") for i in range(0, curses.COLOR_PAIRS): if str(i) not in color_conf: continue color = color_conf[str(i)] if type(color) == int: fg = color bg = color_conf['defbg'] else: if 'fg' in color: fg = color['fg'] else: fg = color_conf['deffg'] if 'bg' in color: bg = color['bg'] else: bg = color_conf['defbg'] try: curses.init_pair(i, fg, bg) log.debug("color pair %s : %s %s", i, fg, bg) except: log.debug("color pair failed!: %d fg: %d bg: %d", i + 1, fg, bg) return 0
def main(scr): curses.curs_set(False) curses.noecho() curses.start_color() curses.use_default_colors() curses.typeahead(-1) state = "list" list_scroll = 0 list_selected = 0 list_width = 64 tab_scroll = -1 hasrunonce = False refresh = True while True: if not hasrunonce or refresh: songs = os.listdir("tabs") song = loadSong(songs[list_selected]) refresh = False currentx = 0 listWin = None if curses.COLS > list_width or state == "list": currentx = min(list_width, curses.COLS) listWin = draw_list(scr, curses.LINES - 2, currentx, 1, 2, songs, list_scroll, list_selected, state == "list") splitter = curses.newwin(curses.LINES, 5, 0, currentx) splitter.vline(0, 2, "|", curses.LINES) splitter.refresh() currentx += 5 tabWin = draw_tab(scr, curses.LINES, curses.COLS - currentx, 0, currentx, song, tab_scroll, state == "tab") scr.refresh() if hasrunonce: key = scr.getkey() if key == "q": break if key == "+": list_width = max(1, list_width + 1) if key == "-": list_width = max(1, list_width - 1) if state == "list": list_scroll, list_selected, state, refresh = key_list( key, list_scroll, list_selected, list_width, curses.LINES, state, len(songs)) elif state == "tab": tab_scroll, state = key_tab(key, tab_scroll, state) hasrunonce = True
def module_funcs(stdscr): "Test module-level functions" for func in [curses.baudrate, curses.beep, curses.can_change_color, curses.cbreak, curses.def_prog_mode, curses.doupdate, curses.filter, curses.flash, curses.flushinp, curses.has_colors, curses.has_ic, curses.has_il, curses.isendwin, curses.killchar, curses.longname, curses.nocbreak, curses.noecho, curses.nonl, curses.noqiflush, curses.noraw, curses.reset_prog_mode, curses.termattrs, curses.termname, curses.erasechar, curses.getsyx]: func() # Functions that actually need arguments if curses.tigetstr("cnorm"): curses.curs_set(1) curses.delay_output(1) curses.echo() ; curses.echo(1) f = tempfile.TemporaryFile() stdscr.putwin(f) f.seek(0) curses.getwin(f) f.close() curses.halfdelay(1) curses.intrflush(1) curses.meta(1) curses.napms(100) curses.newpad(50,50) win = curses.newwin(5,5) win = curses.newwin(5,5, 1,1) curses.nl() ; curses.nl(1) curses.putp('abc') curses.qiflush() curses.raw() ; curses.raw(1) curses.setsyx(5,5) curses.tigetflag('hc') curses.tigetnum('co') curses.tigetstr('cr') curses.tparm('cr') curses.typeahead(sys.__stdin__.fileno()) curses.unctrl('a') curses.ungetch('a') curses.use_env(1) # Functions only available on a few platforms if curses.has_colors(): curses.start_color() curses.init_pair(2, 1,1) curses.color_content(1) curses.color_pair(2) curses.pair_content(curses.COLOR_PAIRS - 1) curses.pair_number(0) if hasattr(curses, 'use_default_colors'): curses.use_default_colors() if hasattr(curses, 'keyname'): curses.keyname(13) if hasattr(curses, 'has_key'): curses.has_key(13) if hasattr(curses, 'getmouse'): (availmask, oldmask) = curses.mousemask(curses.BUTTON1_PRESSED) # availmask indicates that mouse stuff not available. if availmask != 0: curses.mouseinterval(10) # just verify these don't cause errors m = curses.getmouse() curses.ungetmouse(*m)
#