Skip to content

Commit

Permalink
editor - better rendering on quit prompt
Browse files Browse the repository at this point in the history
  • Loading branch information
SilenZcience committed Sep 13, 2023
1 parent a253913 commit 13fadfb
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions cat_win/util/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,26 +367,33 @@ def _action_quit(self, write_func) -> bool:
indicates if the editor should keep running
"""
if self.unsaved_progress:
max_y, max_x = self.getxymax()
save_message = 'Save changes? [y]es, [n]o'[:max_x]
self.curse_window.addstr(max_y + self.status_bar_size - 1, 0, save_message,
self._get_color(5))
if max_x > len(save_message):
self.curse_window.addstr(max_y + self.status_bar_size - 1,
len(save_message), ' ' * (max_x-len(save_message)-1),
self._get_color(5))
self.curse_window.refresh()
def _render_scr() -> None:
max_y, max_x = self.getxymax()
try:
if self.error_bar:
self.curse_window.addstr(max_y + self.status_bar_size - 2, 0,
self.error_bar[:max_x].ljust(max_x),
self._get_color(2))
save_message = 'Save changes? [y]es, [n]o; Abort? ^[, ESC'[:max_x].ljust(max_x)
self.curse_window.addstr(max_y + self.status_bar_size - 1, 0, save_message,
self._get_color(5))
except curses.error:
pass
self.curse_window.refresh()
curses.curs_set(0)

wchar = ''
while self.unsaved_progress and wchar.upper() != 'N':
while self.unsaved_progress and str(wchar).upper() != 'N':
_render_scr()
wchar, key = self._get_new_char()
if key in ACTION_HOTKEYS:
if key == b'_action_quit':
break
getattr(self, key.decode(), lambda *_: False)(write_func)
elif wchar.upper() in ['Y', 'J']:
self._action_save(write_func)
break
elif wchar == '\x1b': # ESC
return True

return False

Expand Down

0 comments on commit 13fadfb

Please sign in to comment.