From f2f78cf0fd57e5f5122137d23ed35ea47ae30bd3 Mon Sep 17 00:00:00 2001 From: Dominic Zimmer Date: Wed, 21 Aug 2019 23:04:13 +0200 Subject: [PATCH] Add edits --- drawtool.py | 2 +- mainview.py | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/drawtool.py b/drawtool.py index c8463d6..94df6bd 100644 --- a/drawtool.py +++ b/drawtool.py @@ -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) diff --git a/mainview.py b/mainview.py index 3206067..32ac6d1 100644 --- a/mainview.py +++ b/mainview.py @@ -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"