import threading import curses class CLine(threading.Thread): # Initialize ncurses stuff def __init__(self): threading.Thread.__init__(self) self.stdscr = curses.initscr() self.maxSize = self.stdscr.getmaxyx() curses.cbreak() curses.noecho() self.stdscr.keypad(1) self.input = "" self.pos = (0,0) # REMEMBER: (y,x) self.start() # Reverse ncurses stuff def quit(self): curses.nocbreak() curses.echo() self.stdscr.keypad(0) curses.endwin() # Print the prompt def prompt(self): self.stdscr.addstr(self.pos[0],0,">>> ") # Run the command line def run(self): try: self.prompt() while(True): #self.prompt() self.pos=self.stdscr.getyx() c = self.stdscr.getch() if c==10: if self.enter()==False: return else: self.input+=curses.keyname(c) self.changeline() finally: self.quit() # Enter key pressed # Returns true if we keep going def enter(self): if self.input=="": return True elif self.input=="quit": self.quit() return False else: self.input = "" # Change the current line to reflect self.input def changeline(self): (y,x) = self.stdscr.getyx() self.stdscr.deleteln() self.stdscr.move(y,0) self.prompt() self.stdscr.addstr(self.input) #self.stdscr.move(y,x+10)