# HG changeset patch
# User Tuomo Valkonen <tuomov@iki.fi>
# Date 1516463709 0
# Node ID aa121291eb0efd64338d994c1904f4bdad0e68c6
# Parent  7b2d2eac6a4857375637e118eeb6b144979cba10
Rumps/Mac UI stuff is fucked and disables ^C etc.; threading doesn't help

diff -r 7b2d2eac6a48 -r aa121291eb0e borgend.py
--- a/borgend.py	Sat Jan 20 15:08:16 2018 +0000
+++ b/borgend.py	Sat Jan 20 15:55:09 2018 +0000
@@ -1,6 +1,7 @@
 #!/usr/local/bin/python3
 
 import logging
+from threading import Thread
 
 logging.basicConfig(#filename='example.log',
                     format='%(levelname)s:%(message)s',
@@ -10,7 +11,7 @@
 from config import settings
 from queue import Queue
 from ui import BorgendTray
-
+import signal, os
 
 backupconfigs=settings['backups']
 backups=[None]*len(backupconfigs);
@@ -27,5 +28,22 @@
 
 if __name__ == "__main__":
     #print(settings)
-    BorgendTray("Borgend").run()
-    pass
+    tray=BorgendTray("Borgend", backups);
+    tray.run()
+
+    #
+    # This shit is fucked, disables ^C etc., and threading doesn't seem to help
+    #
+
+    # ui_thread=Thread(target=tray.run)
+    # ui_thread.daemon=True
+    # ui_thread.start()
+
+    # def quit_signal_handler(signum, frame):
+    #     print('Signal handler called with signal %s' % str(signum))
+    #     ui_thread.terminate()
+    #     os.exit()
+
+    # signal.signal(signal.SIGTERM, quit_signal_handler)
+    # signal.signal(signal.SIGINT, quit_signal_handler)
+
diff -r 7b2d2eac6a48 -r aa121291eb0e ui.py
--- a/ui.py	Sat Jan 20 15:08:16 2018 +0000
+++ b/ui.py	Sat Jan 20 15:55:09 2018 +0000
@@ -5,6 +5,14 @@
 import rumps
 
 class BorgendTray(rumps.App):
-    @rumps.clicked("Status...")
-    def prefs(self, _):
-        rumps.alert("None")
+    def __init__(self, name, backups):
+        menu=[rumps.MenuItem(b.name, callback=self.silly) for b in backups]
+        menu = menu + [rumps.MenuItem("Quit...", callback=self.my_quit_button)]
+        super().__init__(name, menu=menu, quit_button=None)
+
+    def my_quit_button(self, _):
+        rumps.quit_application()
+
+    def silly(self, sender):
+        sender.state=not sender.state
+