chiark / gitweb /
Add a Main Menu, at last.
authorSimon Tatham <anakin@pobox.com>
Thu, 7 Dec 2023 07:18:29 +0000 (07:18 +0000)
committerSimon Tatham <anakin@pobox.com>
Thu, 7 Dec 2023 07:18:29 +0000 (07:18 +0000)
Now that you can [RET] out of the home timeline, it's handy!

cursesclient.py

index d760d45d4b167477d2b0e46c98ddee9b43c3fa01..54694fa7f3f936517f0b51d9fa193b11f8cd545b 100644 (file)
@@ -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)