From 5e26deee0a8a673dfa2cfaee64a17d7b33e098b3 Mon Sep 17 00:00:00 2001 From: JE-Chen <33644111+JE-Chen@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:54:42 +0800 Subject: [PATCH] Refactor --- .../editor_main/main_ui.py | 25 ++----- .../__init__.py | 0 .../api_testka_menu}/__init__.py | 0 .../api_testka_menu/build_api_testka_menu.py | 2 +- .../auto_control_menu}/__init__.py | 0 .../build_autocontrol_menu.py | 2 +- .../automation_file_menu}/__init__.py | 0 .../build_automation_file_menu.py | 2 +- .../load_density_menu}/__init__.py | 0 .../build_load_density_menu.py | 2 +- .../mail_thunder_menu}/__init__.py | 0 .../build_mail_thunder_menu.py | 2 +- .../web_runner_menu/__init__.py | 0 .../web_runner_menu/build_webrunner_menu.py | 2 +- .../menu/build_menubar.py | 36 ++++++++++ .../menu/help_menu/__init__.py | 0 .../install_menu/automation_menu/__init__.py | 0 .../build_automation_install_menu.py} | 72 ++++--------------- .../menu/install_menu/install_utils.py | 21 ++++++ .../menu/install_menu/tools_menu/__init__.py | 0 .../tools_menu/build_tool_install_menu.py | 26 +++++++ exe/auto_py_to_exe_setting.json | 8 +-- 22 files changed, 111 insertions(+), 89 deletions(-) rename automation_editor/automation_editor_ui/menu/{api_testka_menu => automation_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{auto_control_menu => automation_menu/api_testka_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/api_testka_menu/build_api_testka_menu.py (97%) rename automation_editor/automation_editor_ui/menu/{automation_file_menu => automation_menu/auto_control_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/auto_control_menu/build_autocontrol_menu.py (98%) rename automation_editor/automation_editor_ui/menu/{load_density_menu => automation_menu/automation_file_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/automation_file_menu/build_automation_file_menu.py (97%) rename automation_editor/automation_editor_ui/menu/{mail_thunder_menu => automation_menu/load_density_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/load_density_menu/build_load_density_menu.py (97%) rename automation_editor/automation_editor_ui/menu/{web_runner_menu => automation_menu/mail_thunder_menu}/__init__.py (100%) rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/mail_thunder_menu/build_mail_thunder_menu.py (96%) create mode 100644 automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/__init__.py rename automation_editor/automation_editor_ui/menu/{ => automation_menu}/web_runner_menu/build_webrunner_menu.py (97%) create mode 100644 automation_editor/automation_editor_ui/menu/build_menubar.py create mode 100644 automation_editor/automation_editor_ui/menu/help_menu/__init__.py create mode 100644 automation_editor/automation_editor_ui/menu/install_menu/automation_menu/__init__.py rename automation_editor/automation_editor_ui/menu/install_menu/{build_install_menu.py => automation_menu/build_automation_install_menu.py} (50%) create mode 100644 automation_editor/automation_editor_ui/menu/install_menu/install_utils.py create mode 100644 automation_editor/automation_editor_ui/menu/install_menu/tools_menu/__init__.py create mode 100644 automation_editor/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py diff --git a/automation_editor/automation_editor_ui/editor_main/main_ui.py b/automation_editor/automation_editor_ui/editor_main/main_ui.py index d85f913..be8e6a0 100644 --- a/automation_editor/automation_editor_ui/editor_main/main_ui.py +++ b/automation_editor/automation_editor_ui/editor_main/main_ui.py @@ -7,18 +7,7 @@ from qt_material import apply_stylesheet from automation_editor.automation_editor_ui.complete.complete_extend import complete_extend_package -from automation_editor.automation_editor_ui. \ - menu.api_testka_menu.build_api_testka_menu import set_apitestka_menu -from automation_editor.automation_editor_ui. \ - menu.auto_control_menu.build_autocontrol_menu import set_autocontrol_menu -from automation_editor.automation_editor_ui.menu.automation_file_menu.build_automation_file_menu import \ - set_automation_file_menu -from automation_editor.automation_editor_ui.menu.install_menu.build_install_menu import set_install_menu -from automation_editor.automation_editor_ui.menu. \ - load_density_menu.build_load_density_menu import set_load_density_menu -from automation_editor.automation_editor_ui.menu.mail_thunder_menu.build_mail_thunder_menu import set_mail_thunder_menu -from automation_editor.automation_editor_ui \ - .menu.web_runner_menu.build_webrunner_menu import set_web_runner_menu +from automation_editor.automation_editor_ui.menu.build_menubar import add_menu_to_menubar from automation_editor.automation_editor_ui.syntax.syntax_extend import \ syntax_extend_package @@ -30,14 +19,12 @@ class AutomationEditor(EditorMain): def __init__(self, debug_mode: bool = False): super().__init__() self.current_run_code_window: List[QWidget] = list() + # Project compiler if user not choose this will use which to find + self.python_compiler = None + # Delete JEditor help self.help_menu.deleteLater() - set_autocontrol_menu(self) - set_apitestka_menu(self) - set_load_density_menu(self) - set_web_runner_menu(self) - set_automation_file_menu(self) - set_mail_thunder_menu(self) - set_install_menu(self) + # Menu + add_menu_to_menubar(self) syntax_extend_package(self) complete_extend_package(self) # System tray change diff --git a/automation_editor/automation_editor_ui/menu/api_testka_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/api_testka_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/auto_control_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/api_testka_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/auto_control_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/api_testka_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/api_testka_menu/build_api_testka_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py similarity index 97% rename from automation_editor/automation_editor_ui/menu/api_testka_menu/build_api_testka_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py index 7604bfa..072e683 100644 --- a/automation_editor/automation_editor_ui/menu/api_testka_menu/build_api_testka_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py @@ -20,7 +20,7 @@ def set_apitestka_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.apitestka_menu = ui_we_want_to_set.menu.addMenu("APITestka") + ui_we_want_to_set.apitestka_menu = ui_we_want_to_set.automation_menu.addMenu("APITestka") ui_we_want_to_set.apitestka_run_menu = ui_we_want_to_set.apitestka_menu.addMenu("Run") # Run APITestka Script ui_we_want_to_set.run_apitestka_action = QAction("Run APITestka Script") diff --git a/automation_editor/automation_editor_ui/menu/automation_file_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/auto_control_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/automation_file_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/auto_control_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/auto_control_menu/build_autocontrol_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py similarity index 98% rename from automation_editor/automation_editor_ui/menu/auto_control_menu/build_autocontrol_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py index cd84df1..855c461 100644 --- a/automation_editor/automation_editor_ui/menu/auto_control_menu/build_autocontrol_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py @@ -24,7 +24,7 @@ def set_autocontrol_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.autocontrol_menu = ui_we_want_to_set.menu.addMenu("AutoControl") + ui_we_want_to_set.autocontrol_menu = ui_we_want_to_set.automation_menu.addMenu("AutoControl") ui_we_want_to_set.autocontrol_run_menu = ui_we_want_to_set.autocontrol_menu.addMenu("Run") # Run AutoControl Script ui_we_want_to_set.run_autocontrol_action = QAction("Run AutoControl Script") diff --git a/automation_editor/automation_editor_ui/menu/load_density_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/automation_file_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/load_density_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/automation_file_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/automation_file_menu/build_automation_file_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py similarity index 97% rename from automation_editor/automation_editor_ui/menu/automation_file_menu/build_automation_file_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py index 1ca65ad..99acca4 100644 --- a/automation_editor/automation_editor_ui/menu/automation_file_menu/build_automation_file_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py @@ -21,7 +21,7 @@ def set_automation_file_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.automation_file_menu = ui_we_want_to_set.menu.addMenu("FileAutomation") + ui_we_want_to_set.automation_file_menu = ui_we_want_to_set.automation_menu.addMenu("FileAutomation") ui_we_want_to_set.automation_run_file_menu = ui_we_want_to_set.automation_file_menu.addMenu("Run") # Run FileAutomation Script ui_we_want_to_set.run_file_automation_action = QAction("Run FileAutomation Script") diff --git a/automation_editor/automation_editor_ui/menu/mail_thunder_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/load_density_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/mail_thunder_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/load_density_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/load_density_menu/build_load_density_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py similarity index 97% rename from automation_editor/automation_editor_ui/menu/load_density_menu/build_load_density_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py index 1a3a00f..1e40eb4 100644 --- a/automation_editor/automation_editor_ui/menu/load_density_menu/build_load_density_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py @@ -21,7 +21,7 @@ def set_load_density_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.load_density_menu = ui_we_want_to_set.menu.addMenu("LoadDensity") + ui_we_want_to_set.load_density_menu = ui_we_want_to_set.automation_menu.addMenu("LoadDensity") ui_we_want_to_set.load_density_run_menu = ui_we_want_to_set.load_density_menu.addMenu("Run") # Run LoadDensity Script ui_we_want_to_set.run_load_density_action = QAction("Run LoadDensity Script") diff --git a/automation_editor/automation_editor_ui/menu/web_runner_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/mail_thunder_menu/__init__.py similarity index 100% rename from automation_editor/automation_editor_ui/menu/web_runner_menu/__init__.py rename to automation_editor/automation_editor_ui/menu/automation_menu/mail_thunder_menu/__init__.py diff --git a/automation_editor/automation_editor_ui/menu/mail_thunder_menu/build_mail_thunder_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py similarity index 96% rename from automation_editor/automation_editor_ui/menu/mail_thunder_menu/build_mail_thunder_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py index 3f39f7b..6e27b47 100644 --- a/automation_editor/automation_editor_ui/menu/mail_thunder_menu/build_mail_thunder_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py @@ -19,7 +19,7 @@ def set_mail_thunder_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.mail_thunder_menu = ui_we_want_to_set.menu.addMenu("MailThunder") + ui_we_want_to_set.mail_thunder_menu = ui_we_want_to_set.automation_menu.addMenu("MailThunder") ui_we_want_to_set.mail_thunder_run_menu = ui_we_want_to_set.mail_thunder_menu.addMenu("Run") # Run MailThunder ui_we_want_to_set.run_mail_thunder_action = QAction("Run MailThunder") diff --git a/automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/__init__.py b/automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_editor/automation_editor_ui/menu/web_runner_menu/build_webrunner_menu.py b/automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py similarity index 97% rename from automation_editor/automation_editor_ui/menu/web_runner_menu/build_webrunner_menu.py rename to automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py index e531c0c..d0b7436 100644 --- a/automation_editor/automation_editor_ui/menu/web_runner_menu/build_webrunner_menu.py +++ b/automation_editor/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py @@ -20,7 +20,7 @@ def set_web_runner_menu(ui_we_want_to_set: AutomationEditor): :param ui_we_want_to_set: main window to add menu. :return: None """ - ui_we_want_to_set.web_runner_menu = ui_we_want_to_set.menu.addMenu("WebRunner") + ui_we_want_to_set.web_runner_menu = ui_we_want_to_set.automation_menu.addMenu("WebRunner") ui_we_want_to_set.web_runner_run_menu = ui_we_want_to_set.web_runner_menu.addMenu("Run") # Run WEBRunner Script ui_we_want_to_set.run_web_runner_action = QAction("Run WebRunner Script") diff --git a/automation_editor/automation_editor_ui/menu/build_menubar.py b/automation_editor/automation_editor_ui/menu/build_menubar.py new file mode 100644 index 0000000..7bd2711 --- /dev/null +++ b/automation_editor/automation_editor_ui/menu/build_menubar.py @@ -0,0 +1,36 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from automation_editor.automation_editor_ui.menu.automation_menu.api_testka_menu.build_api_testka_menu import \ + set_apitestka_menu +from automation_editor.automation_editor_ui.menu.automation_menu.auto_control_menu.build_autocontrol_menu import \ + set_autocontrol_menu +from automation_editor.automation_editor_ui.menu.automation_menu.automation_file_menu.build_automation_file_menu import \ + set_automation_file_menu +from automation_editor.automation_editor_ui.menu.automation_menu.load_density_menu.build_load_density_menu import \ + set_load_density_menu +from automation_editor.automation_editor_ui.menu.automation_menu.mail_thunder_menu.build_mail_thunder_menu import \ + set_mail_thunder_menu +from automation_editor.automation_editor_ui.menu.automation_menu.web_runner_menu.build_webrunner_menu import \ + set_web_runner_menu +from automation_editor.automation_editor_ui.menu.install_menu.automation_menu.build_automation_install_menu import \ + build_automation_install_menu +from automation_editor.automation_editor_ui.menu.install_menu.tools_menu.build_tool_install_menu import \ + build_tool_install_menu + +if TYPE_CHECKING: + from automation_editor.automation_editor_ui.editor_main.main_ui import AutomationEditor + + +def add_menu_to_menubar(ui_we_want_to_set: AutomationEditor): + ui_we_want_to_set.automation_menu = ui_we_want_to_set.menu.addMenu("Automation") + ui_we_want_to_set.install_menu = ui_we_want_to_set.menu.addMenu("Install") + set_apitestka_menu(ui_we_want_to_set) + set_autocontrol_menu(ui_we_want_to_set) + set_automation_file_menu(ui_we_want_to_set) + set_load_density_menu(ui_we_want_to_set) + set_mail_thunder_menu(ui_we_want_to_set) + set_web_runner_menu(ui_we_want_to_set) + build_automation_install_menu(ui_we_want_to_set) + build_tool_install_menu(ui_we_want_to_set) diff --git a/automation_editor/automation_editor_ui/menu/help_menu/__init__.py b/automation_editor/automation_editor_ui/menu/help_menu/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_editor/automation_editor_ui/menu/install_menu/automation_menu/__init__.py b/automation_editor/automation_editor_ui/menu/install_menu/automation_menu/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_editor/automation_editor_ui/menu/install_menu/build_install_menu.py b/automation_editor/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py similarity index 50% rename from automation_editor/automation_editor_ui/menu/install_menu/build_install_menu.py rename to automation_editor/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py index 24181ec..0cac633 100644 --- a/automation_editor/automation_editor_ui/menu/install_menu/build_install_menu.py +++ b/automation_editor/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py @@ -2,100 +2,52 @@ from typing import TYPE_CHECKING +from PySide6.QtGui import QAction + +from automation_editor.automation_editor_ui.menu.install_menu.install_utils import install_package + if TYPE_CHECKING: from automation_editor.automation_editor_ui.editor_main.main_ui import AutomationEditor -import os -import shutil -import sys -from pathlib import Path -from PySide6.QtGui import QAction -from je_editor import ShellManager, EditorWidget - - -def set_install_menu(ui_we_want_to_set: AutomationEditor): - """ - Build menu include install package feature. - :param ui_we_want_to_set: main window to add menu. - :return: None - """ - ui_we_want_to_set.install_menu = ui_we_want_to_set.menu.addMenu("Install") - # Try to install Build Tools - ui_we_want_to_set.install_tool_action = QAction("Install Build Tools") - ui_we_want_to_set.install_tool_action.triggered.connect( - lambda: install_build_tools(ui_we_want_to_set) - ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_tool_action) +def build_automation_install_menu(ui_we_want_to_set: AutomationEditor): + ui_we_want_to_set.install_automation_menu = ui_we_want_to_set.install_menu.addMenu("Automation") # Try to install AutoControl ui_we_want_to_set.install_autocontrol_action = QAction("Install AutoControl") ui_we_want_to_set.install_autocontrol_action.triggered.connect( lambda: install_autocontrol(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_autocontrol_action) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_autocontrol_action) # Try to install APITestka ui_we_want_to_set.install_api_testka = QAction("Install APITestka") ui_we_want_to_set.install_api_testka.triggered.connect( lambda: install_api_testka(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_api_testka) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_api_testka) # Try to install LoadDensity ui_we_want_to_set.install_load_density_action = QAction("Install LoadDensity") ui_we_want_to_set.install_load_density_action.triggered.connect( lambda: install_load_density(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_load_density_action) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_load_density_action) # Try to install WebRunner ui_we_want_to_set.install_web_runner_action = QAction("Install WebRunner") ui_we_want_to_set.install_web_runner_action.triggered.connect( lambda: install_web_runner(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_web_runner_action) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_web_runner_action) # Try to install Automation File ui_we_want_to_set.install_automation_file_action = QAction("Install Automation File") ui_we_want_to_set.install_automation_file_action.triggered.connect( lambda: install_automation_file(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_automation_file_action) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_automation_file_action) # Try to install MailThunder ui_we_want_to_set.install_mail_thunder_action = QAction("Install MailThunder") ui_we_want_to_set.install_mail_thunder_action.triggered.connect( lambda: install_mail_thunder_file(ui_we_want_to_set) ) - ui_we_want_to_set.install_menu.addAction(ui_we_want_to_set.install_mail_thunder_action) - - -def install_package(package_text: str, ui_we_want_to_set: AutomationEditor) -> None: - if sys.platform in ["win32", "cygwin", "msys"]: - venv_path = Path(os.getcwd() + "/venv/Scripts") - else: - venv_path = Path(os.getcwd() + "/venv/bin") - if venv_path.is_dir() and venv_path.exists(): - compiler_path = shutil.which( - cmd="python3", - path=str(venv_path) - ) - else: - compiler_path = shutil.which(cmd="python3") - if compiler_path is None: - compiler_path = shutil.which( - cmd="python", - path=str(venv_path) - ) - else: - compiler_path = shutil.which(cmd="python") - widget = ui_we_want_to_set.tab_widget.currentWidget() - if isinstance(widget, EditorWidget): - shell_manager = ShellManager() - shell_manager.main_window = widget - shell_manager.later_init() - shell_manager.exec_shell([f"{compiler_path}", "-m", "pip", "install", f"{package_text}", "-U"]) - - -def install_build_tools(ui_we_want_to_set: AutomationEditor) -> None: - install_package("setuptools", ui_we_want_to_set) - install_package("build", ui_we_want_to_set) - install_package("wheel", ui_we_want_to_set) + ui_we_want_to_set.install_automation_menu.addAction(ui_we_want_to_set.install_mail_thunder_action) def install_autocontrol(ui_we_want_to_set: AutomationEditor) -> None: diff --git a/automation_editor/automation_editor_ui/menu/install_menu/install_utils.py b/automation_editor/automation_editor_ui/menu/install_menu/install_utils.py new file mode 100644 index 0000000..af07dc6 --- /dev/null +++ b/automation_editor/automation_editor_ui/menu/install_menu/install_utils.py @@ -0,0 +1,21 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from je_editor import EditorWidget, ShellManager + +if TYPE_CHECKING: + from automation_editor.automation_editor_ui.editor_main.main_ui import AutomationEditor + + +def install_package(package_text: str, ui_we_want_to_set: AutomationEditor) -> None: + widget = ui_we_want_to_set.tab_widget.currentWidget() + if isinstance(widget, EditorWidget): + widget.python_compiler = ui_we_want_to_set.python_compiler + shell_manager = ShellManager(main_window=widget) + shell_manager.later_init() + if widget.python_compiler is not None: + compiler_path = widget.python_compiler + else: + compiler_path = shell_manager.compiler_path + shell_manager.exec_shell([f"{compiler_path}", "-m", "pip", "install", f"{package_text}", "-U"]) diff --git a/automation_editor/automation_editor_ui/menu/install_menu/tools_menu/__init__.py b/automation_editor/automation_editor_ui/menu/install_menu/tools_menu/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_editor/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py b/automation_editor/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py new file mode 100644 index 0000000..eb5cf4a --- /dev/null +++ b/automation_editor/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from PySide6.QtGui import QAction + +from automation_editor.automation_editor_ui.menu.install_menu.install_utils import install_package + +if TYPE_CHECKING: + from automation_editor.automation_editor_ui.editor_main.main_ui import AutomationEditor + + +def build_tool_install_menu(ui_we_want_to_set: AutomationEditor): + ui_we_want_to_set.install_tools_menu = ui_we_want_to_set.install_menu.addMenu("Tools") + # Try to install Build Tools + ui_we_want_to_set.install_tool_action = QAction("Install Build Tools") + ui_we_want_to_set.install_tool_action.triggered.connect( + lambda: install_build_tools(ui_we_want_to_set) + ) + ui_we_want_to_set.install_tools_menu.addAction(ui_we_want_to_set.install_tool_action) + + +def install_build_tools(ui_we_want_to_set: AutomationEditor) -> None: + install_package("setuptools", ui_we_want_to_set) + install_package("build", ui_we_want_to_set) + install_package("wheel", ui_we_want_to_set) diff --git a/exe/auto_py_to_exe_setting.json b/exe/auto_py_to_exe_setting.json index 765dd83..1dd6b46 100644 --- a/exe/auto_py_to_exe_setting.json +++ b/exe/auto_py_to_exe_setting.json @@ -7,7 +7,7 @@ }, { "optionDest": "filenames", - "value": "C:/Users/JeffreyChen/Desktop/Code_Space/AutomationEditor/exe/start_automation_editor.py" + "value": "C:/CodeWorkspace/AutomationEditor/exe/start_automation_editor.py" }, { "optionDest": "onefile", @@ -19,7 +19,7 @@ }, { "optionDest": "icon_file", - "value": "C:/Users/JeffreyChen/Desktop/Code_Space/AutomationEditor/exe/je_driver_icon.ico" + "value": "C:/CodeWorkspace/AutomationEditor/exe/je_driver_icon.ico" }, { "optionDest": "name", @@ -75,11 +75,11 @@ }, { "optionDest": "datas", - "value": "C:/Users/JeffreyChen/Desktop/Code_Space/AutomationEditor/exe/je_driver_icon.ico;." + "value": "C:/CodeWorkspace/AutomationEditor/exe/je_driver_icon.ico;." }, { "optionDest": "pathex", - "value": "C:/Users/JeffreyChen/Desktop/Code_Space/AutomationEditor/venv" + "value": "C:/CodeWorkspace/AutomationEditor/venv" } ], "nonPyinstallerOptions": {