home · contact · privacy
For browser.py, simplify argument parsing.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 9 Sep 2024 19:39:48 +0000 (21:39 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 9 Sep 2024 19:39:48 +0000 (21:39 +0200)
browser.py

index 33791a6338548ffe8f04d07347d2200dc64133f6..5f6c26bf21761468c3bc257ede190230916aeb08 100755 (executable)
@@ -1,8 +1,8 @@
 #!/usr/bin/env python3
 """Browser for image files."""
-from sys import argv as sys_argv
 from json import dump as json_dump, load as json_load
 from os.path import exists as path_exists, join as path_join, abspath
+from argparse import ArgumentParser
 from exiftool import ExifToolHelper  # type: ignore
 import gi  # type: ignore
 gi.require_version('Gtk', '4.0')
@@ -262,7 +262,7 @@ class MainWindow(Gtk.Window):
                     return True
                 if a_cmp is None:
                     return False
-                elif b_cmp is None:
+                if b_cmp is None:
                     return True
                 return a_cmp > b_cmp
 
@@ -561,18 +561,17 @@ class MainWindow(Gtk.Window):
 
 class Application(Gtk.Application):
     """Image browser application class."""
+    img_dir_absolute: str
 
     def __init__(self, *args, **kwargs):
-        super().__init__(flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE,
-                         *args, **kwargs)
-        self.img_dir_absolute = abspath(IMG_DIR_DEFAULT)
-
-    def do_command_line(self, *args, **kwargs):
-        """Parse directory from command_line, start window and keep it open."""
-        command_line = args[0]
-        argv = command_line.get_arguments()
-        if len(argv) > 1:
-            self.img_dir_absolute = abspath(argv[1])
+        super().__init__(*args, **kwargs)
+
+    def do_activate(self, *args, **kwargs):
+        """Parse arguments, start window, and keep it open."""
+        parser = ArgumentParser()
+        parser.add_argument('directory', default=IMG_DIR_DEFAULT, nargs='?')
+        opts = parser.parse_args()
+        self.img_dir_absolute = abspath(opts.directory)
         win = MainWindow(self)
         win.present()
         self.hold()
@@ -580,4 +579,4 @@ class Application(Gtk.Application):
 
 
 main_app = Application(application_id='plomlompom.com.StablePixBrowser.App')
-main_app.run(sys_argv)
+main_app.run()