From 2630137019d3090fb4ef978344cd43d7ad0127a5 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 21 Dec 2020 16:04:08 +0100 Subject: [PATCH] In no-emoji mode, don't display the emoji menu Signed-off-by: Yohann D'ANELLO --- squinnondation/squinnondation.py | 64 +++++++++++++++++--------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/squinnondation/squinnondation.py b/squinnondation/squinnondation.py index 029a233..7a0ce5e 100644 --- a/squinnondation/squinnondation.py +++ b/squinnondation/squinnondation.py @@ -65,7 +65,8 @@ class Squinnondation: squirrel = Squirrel(instance, nickname) squirrel.refresh_history() squirrel.refresh_input() - squirrel.refresh_emoji_pad() + if not instance.no_emoji: + squirrel.refresh_emoji_pad() if instance.args.client_address and instance.args.client_port: hazelnut = Hazelnut(address=instance.args.client_address, port=instance.args.client_port) @@ -76,7 +77,8 @@ class Squinnondation: while True: squirrel.refresh_history() squirrel.refresh_input() - squirrel.refresh_emoji_pad() + if not instance.no_emoji: + squirrel.refresh_emoji_pad() key = screen.getkey(curses.LINES - 1, 3 + len(squirrel.nickname) + squirrel.input_index) if key == "\x7f": # backspace if squirrel.input_index: @@ -115,39 +117,40 @@ class Squinnondation: except curses.error: # This is not a valid click continue - if y == curses.LINES - 1 and x >= curses.COLS - 3: - # Click on the emoji - squirrel.emoji_panel_page *= -1 - elif squirrel.emoji_panel_page > 0 and y == curses.LINES - 4 and x >= curses.COLS - 5: - squirrel.emoji_panel_page += 1 - elif squirrel.emoji_panel_page > 1 and y == curses.LINES - curses.LINES // 2 - 1 \ - and x >= curses.COLS - 5: - squirrel.emoji_panel_page -= 1 - elif squirrel.emoji_panel_page > 0 and y >= curses.LINES // 2 - 1 and x >= curses.COLS // 2 - 1: - pad_y, pad_x = y - (curses.LINES - curses.LINES // 2) + 1,\ - (x - (curses.COLS - curses.COLS // 3)) // 2 - height, width = squirrel.emoji_pad.getmaxyx() - height -= 1 - width -= 1 + if not instance.no_emoji: + if y == curses.LINES - 1 and x >= curses.COLS - 3: + # Click on the emoji + squirrel.emoji_panel_page *= -1 + elif squirrel.emoji_panel_page > 0 and y == curses.LINES - 4 and x >= curses.COLS - 5: + squirrel.emoji_panel_page += 1 + elif squirrel.emoji_panel_page > 1 and y == curses.LINES - curses.LINES // 2 - 1 \ + and x >= curses.COLS - 5: + squirrel.emoji_panel_page -= 1 + elif squirrel.emoji_panel_page > 0 and y >= curses.LINES // 2 - 1 and x >= curses.COLS // 2 - 1: + pad_y, pad_x = y - (curses.LINES - curses.LINES // 2) + 1,\ + (x - (curses.COLS - curses.COLS // 3)) // 2 + height, width = squirrel.emoji_pad.getmaxyx() + height -= 1 + width -= 1 - emojis = list(unicode_codes.UNICODE_EMOJI) - emojis = [c for c in emojis if len(c) == 1] - size = (height - 2) * (width - 4) // 2 - page = emojis[(squirrel.emoji_panel_page - 1) * size:squirrel.emoji_panel_page * size] - index = pad_y * (width - 4) // 2 + pad_x - char = page[index] - if char: - demojized = emoji.demojize(char) - if char != demojized: - for c in reversed(demojized): - curses.ungetch(c) - continue + emojis = list(unicode_codes.UNICODE_EMOJI) + emojis = [c for c in emojis if len(c) == 1] + size = (height - 2) * (width - 4) // 2 + page = emojis[(squirrel.emoji_panel_page - 1) * size:squirrel.emoji_panel_page * size] + index = pad_y * (width - 4) // 2 + pad_x + char = page[index] + if char: + demojized = emoji.demojize(char) + if char != demojized: + for c in reversed(demojized): + curses.ungetch(c) + continue elif len(key) > 1: squirrel.add_message(f" *unmanaged key press: {key}*") continue elif key != "\n": squirrel.input_buffer = squirrel.input_buffer[:squirrel.input_index] + key \ - + squirrel.input_buffer[squirrel.input_index:] + + squirrel.input_buffer[squirrel.input_index:] squirrel.input_index += 1 continue @@ -648,7 +651,8 @@ class Squirrel(Hazelnut): self.input_pad.addstr(0, 1, self.nickname, curses.A_BOLD | curses.color_pair(color_id + 1)) self.input_pad.addstr(0, 1 + len(self.nickname), "> ") self.input_pad.addstr(0, 3 + len(self.nickname), self.input_buffer) - self.input_pad.addstr(0, self.input_pad.getmaxyx()[1] - 3, "😀") + if not self.squinnondation.no_emoji: + self.input_pad.addstr(0, self.input_pad.getmaxyx()[1] - 3, "😀") self.input_pad.refresh(0, 0, curses.LINES - 1, 0, curses.LINES - 1, curses.COLS - 1) def refresh_emoji_pad(self) -> None: