Add inital work on cursor movement, bugs everywhere!
This commit is contained in:
parent
232d43310c
commit
556b771078
43
drawtool.py
43
drawtool.py
@ -60,12 +60,51 @@ class Drawtool():
|
||||
return newlines
|
||||
#return textwrap.wrap(s, width = width)
|
||||
|
||||
def move_cursor_home(self):
|
||||
y, x = self._get_cursor_position(self.main_view.inputs, width = self.W - 4)
|
||||
lines = self._get_input_lines(self.main_view.inputs, width = self.W - 4)[-self.input_lines:]
|
||||
self.main_view.cursor -= x
|
||||
#len(lines[y])
|
||||
|
||||
def move_cursor_end(self):
|
||||
try:
|
||||
y, x = self._get_cursor_position(self.main_view.inputs, width = self.W - 4)
|
||||
lines = self._get_input_lines(self.main_view.inputs, width = self.W - 4)[-self.input_lines:]
|
||||
self.main_view.cursor -= x - len(lines[y])
|
||||
except:
|
||||
show_stacktrace()
|
||||
#len(lines[y])
|
||||
|
||||
def move_cursor_up(self):
|
||||
y, x = self._get_cursor_position(self.main_view.inputs, width = self.W - 4)
|
||||
lines = self._get_input_lines(self.main_view.inputs, width = self.W - 4)[-self.input_lines:]
|
||||
debug(lines)
|
||||
debug(f"x:{x} y:{y}")
|
||||
if y > 0:
|
||||
self.main_view.cursor -= x
|
||||
self.main_view.cursor -= 1
|
||||
|
||||
def move_cursor_down(self):
|
||||
pass
|
||||
|
||||
def _get_cursor_position(self, s, width = 50):
|
||||
lines = self._get_input_lines(s, width = width)[-self.input_lines:]
|
||||
alllines = self._get_input_lines(s, width = width)
|
||||
if not lines:
|
||||
return (0, 0)
|
||||
x = len(lines[-1])
|
||||
y = len(lines) - 1
|
||||
curs = self.main_view.cursor
|
||||
y = 0
|
||||
x = 0
|
||||
for line in alllines:
|
||||
if curs > len(line):
|
||||
curs -= len(line)
|
||||
y += 1
|
||||
else:
|
||||
x = curs
|
||||
break
|
||||
curs -= 1
|
||||
if y >= self.input_lines:
|
||||
y = self.input_lines - 1
|
||||
return y, x
|
||||
|
||||
async def redraw(self):
|
||||
|
||||
56
mainview.py
56
mainview.py
@ -28,7 +28,7 @@ class MainView():
|
||||
self.text_emojis = True
|
||||
|
||||
self.inputs = ""
|
||||
self.inputs_cursor = 0
|
||||
self.cursor = 0
|
||||
|
||||
self.popup = None
|
||||
|
||||
@ -442,33 +442,47 @@ class MainView():
|
||||
self.mode = "normal"
|
||||
elif key == "LEFT":
|
||||
self.insert_move_left()
|
||||
elif key == "UP":
|
||||
self.drawtool.move_cursor_up()
|
||||
elif key == "RIGHT":
|
||||
self.insert_move_right()
|
||||
elif key == "HOME":
|
||||
self.drawtool.move_cursor_home()
|
||||
#self.cursor = 0
|
||||
elif key == "END":
|
||||
self.drawtool.move_cursor_end()
|
||||
#self.cursor = len(self.inputs)
|
||||
elif key == "DEL":
|
||||
try:
|
||||
if len(self.inputs) > self.cursor:
|
||||
inp = list(self.inputs)
|
||||
inp.pop(self.cursor)
|
||||
self.inputs = "".join(inp)
|
||||
except:
|
||||
debug(f"{self.cursor}, {self.inputs}")
|
||||
show_stacktrace()
|
||||
elif key == "BACKSPACE":
|
||||
self.inputs = self.inputs[0:-1]
|
||||
elif key == "RETURN":
|
||||
self.inputs += "\n"
|
||||
try:
|
||||
if len(self.inputs) > 0:
|
||||
inp = list(self.inputs)
|
||||
inp.pop(self.cursor - 1)
|
||||
self.inputs = "".join(inp)
|
||||
self.insert_move_left()
|
||||
except:
|
||||
debug(f"{self.cursor}, {self.inputs}")
|
||||
show_stacktrace()
|
||||
else:
|
||||
self.inputs += key
|
||||
if key == "RETURN":
|
||||
key = "\n"
|
||||
inp = list(self.inputs)
|
||||
inp.insert(self.cursor, key)
|
||||
self.inputs = "".join(inp)
|
||||
self.cursor += 1
|
||||
self.command_box = ""
|
||||
await self.drawtool.redraw()
|
||||
|
||||
def insert_move_left(self):
|
||||
self.inputs_cursor = max(0, self.cursor - 1)
|
||||
self.cursor = max(0, self.cursor - 1)
|
||||
|
||||
def insert_move_right(self):
|
||||
self.inputs_cursor = min(len(self.inputs), self.cursor + 1)
|
||||
|
||||
async def handle_key_old(self, key):
|
||||
if key == "RETURN":
|
||||
with await self.inputevent:
|
||||
self.inputevent.notify()
|
||||
elif key == "":
|
||||
chat = self.dialogs[self.selected_chat]["dialog"]
|
||||
last_message = self.dialogs[self.selected_chat]["messages"][0]
|
||||
await self.client.send_read_acknowledge(chat, max_id=last_message.id)
|
||||
self.dialogs[self.selected_chat]["unread_count"] = 0
|
||||
else:
|
||||
self.inputs += key
|
||||
self.drawtool.redraw()
|
||||
|
||||
self.cursor = min(len(self.inputs), self.cursor + 1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user