Expand input area to 6 visible lines and fix scroll logic
This commit is contained in:
parent
6f20e4b0b9
commit
2c2927751a
@ -47,9 +47,9 @@ class HendrikTUI:
|
|||||||
|
|
||||||
while self.running:
|
while self.running:
|
||||||
self.h, self.w = stdscr.getmaxyx()
|
self.h, self.w = stdscr.getmaxyx()
|
||||||
if self.h < 8 or self.w < 40:
|
if self.h < 14 or self.w < 40:
|
||||||
stdscr.erase()
|
stdscr.erase()
|
||||||
stdscr.addstr(0, 0, "Terminal too small (min 40x8)")
|
stdscr.addstr(0, 0, "Terminal too small (min 40x14)")
|
||||||
stdscr.refresh()
|
stdscr.refresh()
|
||||||
stdscr.getch()
|
stdscr.getch()
|
||||||
continue
|
continue
|
||||||
@ -94,7 +94,7 @@ class HendrikTUI:
|
|||||||
|
|
||||||
def _draw_chat(self, stdscr):
|
def _draw_chat(self, stdscr):
|
||||||
chat_top = 1
|
chat_top = 1
|
||||||
chat_h = self.h - 6
|
chat_h = self.h - 10
|
||||||
if chat_h <= 0:
|
if chat_h <= 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -145,11 +145,11 @@ class HendrikTUI:
|
|||||||
# ---- input area -------------------------------------------------------
|
# ---- input area -------------------------------------------------------
|
||||||
|
|
||||||
def _draw_input(self, stdscr):
|
def _draw_input(self, stdscr):
|
||||||
iy = self.h - 4
|
iy = self.h - 8
|
||||||
|
|
||||||
for off, text in [
|
for off, text in [
|
||||||
(0, "\u250c" + "\u2500" * (self.w - 2) + "\u2510"),
|
(0, "\u250c" + "\u2500" * (self.w - 2) + "\u2510"),
|
||||||
(3, "\u2514" + "\u2500" * (self.w - 2) + "\u2518"),
|
(7, "\u2514" + "\u2500" * (self.w - 2) + "\u2518"),
|
||||||
]:
|
]:
|
||||||
try:
|
try:
|
||||||
stdscr.addstr(iy + off, 0, text[:self.w])
|
stdscr.addstr(iy + off, 0, text[:self.w])
|
||||||
@ -157,17 +157,13 @@ class HendrikTUI:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
total = len(self.input_buffer)
|
total = len(self.input_buffer)
|
||||||
if total <= 2:
|
if total <= 6:
|
||||||
show = 0
|
show = 0
|
||||||
elif self.input_line <= 1:
|
|
||||||
show = max(0, total - 2)
|
|
||||||
elif self.input_line >= total - 2:
|
|
||||||
show = total - 2
|
|
||||||
else:
|
else:
|
||||||
show = self.input_line - 1
|
show = max(0, min(self.input_line - 3, total - 6))
|
||||||
|
|
||||||
cursor_yx = None
|
cursor_yx = None
|
||||||
for i in range(2):
|
for i in range(6):
|
||||||
idx = show + i
|
idx = show + i
|
||||||
y = iy + 1 + i
|
y = iy + 1 + i
|
||||||
line = self.input_buffer[idx] if idx < total else ""
|
line = self.input_buffer[idx] if idx < total else ""
|
||||||
@ -191,7 +187,7 @@ class HendrikTUI:
|
|||||||
# ---- status bar -------------------------------------------------------
|
# ---- status bar -------------------------------------------------------
|
||||||
|
|
||||||
def _draw_status(self, stdscr):
|
def _draw_status(self, stdscr):
|
||||||
y = self.h - 5
|
y = self.h - 9
|
||||||
ws = os.getcwd()
|
ws = os.getcwd()
|
||||||
mode = " PROCESSING " if self.processing else " READY "
|
mode = " PROCESSING " if self.processing else " READY "
|
||||||
hints = " ^D:send ^W:workspace ^C:exit "
|
hints = " ^D:send ^W:workspace ^C:exit "
|
||||||
@ -258,9 +254,9 @@ class HendrikTUI:
|
|||||||
elif key == curses.KEY_END:
|
elif key == curses.KEY_END:
|
||||||
self.input_col = len(self.input_buffer[self.input_line])
|
self.input_col = len(self.input_buffer[self.input_line])
|
||||||
elif key == curses.KEY_PPAGE:
|
elif key == curses.KEY_PPAGE:
|
||||||
self.scroll = max(0, self.scroll - (self.h - 6))
|
self.scroll = max(0, self.scroll - (self.h - 10))
|
||||||
elif key == curses.KEY_NPAGE:
|
elif key == curses.KEY_NPAGE:
|
||||||
self.scroll += self.h - 6
|
self.scroll += self.h - 10
|
||||||
elif key == curses.KEY_RESIZE:
|
elif key == curses.KEY_RESIZE:
|
||||||
pass
|
pass
|
||||||
elif key == 9:
|
elif key == 9:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user