src/eric7/eric7_editor.py

branch
eric7
changeset 10303
ee1aadab1215
parent 10238
9ea4634a697e
child 10439
21c28b0f9e41
--- a/src/eric7/eric7_editor.py	Sat Nov 11 10:13:29 2023 +0100
+++ b/src/eric7/eric7_editor.py	Sat Nov 11 12:44:51 2023 +0100
@@ -12,44 +12,88 @@
 version of the integrated MiniEditor module.
 """
 
+import argparse
 import os
 import sys
 
 from PyQt6.QtGui import QGuiApplication
 
-for arg in sys.argv[:]:
-    if arg.startswith("--config="):
-        from eric7 import Globals
+
+def createArgparseNamespace():
+    """
+    Function to create an argument parser.
 
-        configDir = arg.replace("--config=", "")
-        Globals.setConfigDir(configDir)
-        sys.argv.remove(arg)
-    elif arg.startswith("--settings="):
-        from PyQt6.QtCore import QSettings
+    @return created argument parser object
+    @rtype argparse.ArgumentParser
+    """
+    from eric7.UI.Info import Version
+
+    # 1. create the argument parser
+    parser = argparse.ArgumentParser(
+        description="Simplified version of the eric-ide editor of the eric tool suite.",
+        epilog="Copyright (c) 2007 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>.",
+    )
 
-        settingsDir = os.path.expanduser(arg.replace("--settings=", ""))
-        if not os.path.isdir(settingsDir):
-            os.makedirs(settingsDir)
-        QSettings.setPath(
-            QSettings.Format.IniFormat, QSettings.Scope.UserScope, settingsDir
-        )
-        sys.argv.remove(arg)
+    # 2. add the arguments
+    parser.add_argument(
+        "-V",
+        "--version",
+        action="version",
+        version="%(prog)s {0}".format(Version),
+        help="show version information and exit",
+    )
+    parser.add_argument(
+        "--config",
+        metavar="config_dir",
+        help="use the given directory as the one containing the config files",
+    )
+    parser.add_argument(
+        "--settings",
+        metavar="settings_dir",
+        help="use the given directory to store the settings files",
+    )
+    parser.add_argument(
+        "file",
+        nargs="?",
+        help="file to be opened for editing",
+    )
 
-from eric7.Globals import AppInfo
+    # 3. create the Namespace object by parsing the command line
+    args = parser.parse_args()
+    return args
+
+
+args = createArgparseNamespace()
+if args.config:
+    from eric7 import Globals
+
+    Globals.setConfigDir(args.config)
+if args.settings:
+    from PyQt6.QtCore import QSettings
+
+    SettingsDir = os.path.expanduser(args.settings)
+    if not os.path.isdir(SettingsDir):
+        os.makedirs(SettingsDir)
+    QSettings.setPath(
+        QSettings.Format.IniFormat, QSettings.Scope.UserScope, SettingsDir
+    )
+
 from eric7.Toolbox import Startup
 
 
-def createMainWidget(argv):
+def createMainWidget(args):
     """
     Function to create the main widget.
 
-    @param argv list of commandline parameters (list of strings)
-    @return reference to the main widget (QWidget)
+    @param args namespace object containing the parsed command line parameters
+    @type argparse.Namespace
+    @return reference to the main widget
+    @rtype QWidget
     """
     from eric7.QScintilla.MiniEditor import MiniEditor
 
-    if len(argv) > 1:
-        return MiniEditor(argv[1])
+    if args.file:
+        return MiniEditor(args.file)
     else:
         return MiniEditor()
 
@@ -60,21 +104,7 @@
     """
     QGuiApplication.setDesktopFileName("eric7_editor")
 
-    options = [
-        (
-            "--config=configDir",
-            "use the given directory as the one containing the config files",
-        ),
-        (
-            "--settings=settingsDir",
-            "use the given directory to store the settings files",
-        ),
-        ("", "name of file to edit"),
-    ]
-    appinfo = AppInfo.makeAppInfo(
-        sys.argv, "eric Editor", "", "Simplified version of the eric editor", options
-    )
-    res = Startup.simpleAppStartup(sys.argv, appinfo, createMainWidget)
+    res = Startup.appStartup(args, createMainWidget)
     sys.exit(res)
 
 

eric ide

mercurial