From 69fc5db07d1af30d28b657501fcc17225f6013f9 Mon Sep 17 00:00:00 2001 From: bjschuma Date: Sun, 20 Dec 2009 18:23:02 -0500 Subject: [PATCH] Command line shows multiple lines --- src/base/settings.py | 18 ++++++++++++++++++ src/core/cli.py | 6 ++++-- src/core/cline/addch.py | 8 +++++--- src/core/cline/loop.py | 6 +++--- src/core/cline/message.py | 16 +++++++++++++--- src/core/cline/run.py | 4 ++++ 6 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/base/settings.py b/src/base/settings.py index af47e044..9386fcd7 100644 --- a/src/base/settings.py +++ b/src/base/settings.py @@ -37,6 +37,24 @@ def get(key, all=False): return settings[key.upper()] +#def replace(key,value): +# global settings +# if (key in settings) == True: +# del settings[key] +# set(key,value) + + +def pop(key): + global settings + value = None + if (key in settings) == True: + values = settings[key] + if len(values) > 0: + value = values.pop(0) + return value + + + # Read settings from file def readfile(file): write("Reading file: "+file,True) diff --git a/src/core/cli.py b/src/core/cli.py index 7475f421..b785c917 100644 --- a/src/core/cli.py +++ b/src/core/cli.py @@ -17,6 +17,7 @@ from bt.message import * import bt.needle import cline.loop +import cline.message import settings global maxxy, stdscr, thread @@ -38,8 +39,9 @@ def open(): settings.set("stdscr", stdscr) settings.set("maxxy", maxxy) settings.set("prompt", ">>> ") - #settings.set("clinex", 0) - #settings.set("cliney", 0) + settings.set("clinex", 0) + settings.set("cliney", 0) + settings.set("write", cline.message.insert) # Start loop in new thread thread = bt.needle.Needle(cline.loop.loop) diff --git a/src/core/cline/addch.py b/src/core/cline/addch.py index fd0e9056..72727f2d 100644 --- a/src/core/cline/addch.py +++ b/src/core/cline/addch.py @@ -20,18 +20,20 @@ def addch(input): if c == 10: input = enter(input) - elif c == 127: - input = backspace(input) - elif(c >= 32 and c<= 126): input += curses.keyname(c) + elif c == 127: + input = backspace(input) + return input # Remove the last character in input def backspace(input): + stdscr = settings.get("stdscr") + stdscr.deleteln() l = len(input) if(l>4): return input[:l-1] diff --git a/src/core/cline/loop.py b/src/core/cline/loop.py index 4c0ab239..eb8cee59 100644 --- a/src/core/cline/loop.py +++ b/src/core/cline/loop.py @@ -13,7 +13,7 @@ import settings # Command line related imports from addch import addch -from message import insert +from message import * global halt @@ -28,11 +28,11 @@ def loop(): #stdscr = settings.get("stdscr") input = settings.get("prompt") (y, x) = settings.get("stdscr").getyx() - insert(input, y) + disp(input) while halt == False: input = addch(input) - insert(input, y) + disp(input) def quit(): diff --git a/src/core/cline/message.py b/src/core/cline/message.py index fcc3fa4a..5015bd41 100644 --- a/src/core/cline/message.py +++ b/src/core/cline/message.py @@ -8,8 +8,18 @@ __date__ ="$Dec 19, 2009 11:57:19 PM$" import settings -def insert(string, y): - stdscr = settings.get("stdscr") - stdscr.deleteln() +# Add string to line y +def insert(string): + stdscr = settings.get("stdscr") + y = settings.pop("cliney") + y+=1 + settings.set("cliney", y) stdscr.addstr(y, 0, string) + + +# Replace the string on the current line +def disp(string): + stdscr = settings.get("stdscr") + stdscr.addstr(settings.get("cliney"), 0, string) + #insert(string, settings.get("cliney")) diff --git a/src/core/cline/run.py b/src/core/cline/run.py index 3a8d54b5..ba794b5e 100644 --- a/src/core/cline/run.py +++ b/src/core/cline/run.py @@ -7,6 +7,7 @@ __author__="bjschuma" __date__ ="$Dec 19, 2009 11:38:46 PM$" from manager import manager +import settings # Check for valid input @@ -18,4 +19,7 @@ def run(input): manager.run(split[0],split[1:]) else: manager.run(input) + + y = settings.get("cliney") + settings.replace("cliney", y+1) return prompt