Add edits

This commit is contained in:
Dominic Zimmer 2019-08-21 23:04:13 +02:00
parent 0a82d58de7
commit f2f78cf0fd
2 changed files with 39 additions and 2 deletions

View File

@ -91,7 +91,7 @@ class Drawtool():
for index, line in enumerate(self._get_input_lines(self.main_view.inputs, width = self.W - 4)[-self.input_lines:]):
self.stdscr.addstr(self.H - self.input_lines - 2 + index, 2, f"{line}")
if self.main_view.mode == "insert":
if self.main_view.mode in ["insert", "edit"]:
curses.curs_set(1)
y, x = self._get_cursor_position(self.main_view.inputs, width = self.W - 4)
self.stdscr.move(self.H - self.input_lines - 2 + y, 2 + x)

View File

@ -34,6 +34,8 @@ class MainView():
self.inputs = ""
self.inputs_cursor = 0
self.edit_message = None
self.popup = None
self.drawtool = drawtool.Drawtool(self)
@ -372,6 +374,8 @@ class MainView():
self.vimline_box = ""
elif key == "RETURN" or key == "y":
await self.send_message()
elif key == "Q":
await self.quit()
elif key == "q":
if self.macro_recording == None:
# start macro recording
@ -404,7 +408,7 @@ class MainView():
self.select_prev_chat()
elif key == "c":
self.select_next_chat()
elif key == "e":
elif key == "E":
self.text_emojis ^= True
elif key == "R":
await self.mark_read()
@ -430,6 +434,16 @@ class MainView():
self.spawn_popup(action_handler, question)
await self.drawtool.redraw()
elif key == "e":
if self.command_box:
try:
n = int(self.command_box)
except:
return
self.edit_message = self.dialogs[self.selected_chat]["messages"][n]
self.mode = "edit"
self.inputs = emojis.decode(self.edit_message.text)
self.command_box = ""
elif key == "r":
if self.command_box:
try:
@ -472,6 +486,29 @@ class MainView():
# I think this could break
self.mode = self.modestack.pop()
await action(self, key)
elif self.mode == "edit":
if key == "ESCAPE":
async def ah(self, key):
if key in ["Y", "y", "RETURN"]:
edit = await self.edit_message.edit(self.inputs)
await self.on_message(edit)
# TODO: update message in chat
# this on_message call does not work reliably
self.mode = "normal"
else:
self.popup_message("Edit discarded.")
self.mode = "normal"
self.spawn_popup(ah, "Do you want to save the edit? [Y/n]")
elif key == "LEFT":
self.insert_move_left()
elif key == "RIGHT":
self.insert_move_right()
elif key == "BACKSPACE":
self.inputs = self.inputs[0:-1]
elif key == "RETURN":
self.inputs += "\n"
else:
self.inputs += key
elif self.mode == "insert":
if key == "ESCAPE":
self.mode = "normal"