From: Simon Tatham Date: Thu, 7 Dec 2023 07:18:29 +0000 (+0000) Subject: Add a Main Menu, at last. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=e7c567950211719aaff437780ca27591eb44b8c4;p=mastodonochrome.git Add a Main Menu, at last. Now that you can [RET] out of the home timeline, it's handy! --- diff --git a/cursesclient.py b/cursesclient.py index d760d45..54694fa 100644 --- a/cursesclient.py +++ b/cursesclient.py @@ -174,11 +174,12 @@ class CursesUI(client.Client): self.add_sigwinch_selfpipe() + self.main_menu = MainMenu(self) self.escape_menu = EscMenu(self) self.log_menu = LogMenu(self) self.log_menu_2 = LogMenu2(self) - self.activity_stack = [self.home_timeline] + self.activity_stack = [self.main_menu] try: self.curses_setup() @@ -227,10 +228,25 @@ class Menu: assert self.cc.activity_stack[-1] is self self.cc.activity_stack[-1] = activity + def push_to(self, activity): + self.cc.activity_stack.append(activity) + def handle_key(self, ch): if ch in {ord('q'), ord('Q'), 10, 13}: return 'quit' +class MainMenu(Menu): + def __init__(self, cc): + super().__init__(cc) + self.title = text.ColouredString( + "Mastodonochrome Main Menu", 'H') + + def handle_key(self, ch): + if ch in {ord('h'), ord('H')}: + self.push_to(self.cc.home_timeline) + else: + return super().handle_key(ch) + class EscMenu(Menu): def __init__(self, cc): super().__init__(cc) @@ -243,6 +259,8 @@ class EscMenu(Menu): self.chain_to(self.cc.mentions_timeline) elif ch in {ord('l'), ord('L')}: self.chain_to(self.cc.log_menu) + elif ch in {ord('g'), ord('G')}: + self.cc.activity_stack[:] = [self.cc.main_menu] else: return super().handle_key(ch)