PyBreeze 1.0.7__tar.gz → 1.0.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. {pybreeze-1.0.7 → pybreeze-1.0.9}/PKG-INFO +3 -2
  2. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/__init__.py +2 -2
  3. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/api_testka/api_testka_process.py +5 -5
  4. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/auto_control/auto_control_process.py +5 -5
  5. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/file_automation/file_automation_process.py +5 -5
  6. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/load_density/load_density_process.py +5 -5
  7. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/mail_thunder/mail_thunder_process.py +2 -2
  8. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/process_executor_utils.py +3 -3
  9. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py +4 -4
  10. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/web_runner/web_runner_process.py +5 -5
  11. {pybreeze-1.0.7/pybreeze/pybreeze_ui → pybreeze-1.0.9/pybreeze}/extend_multi_language/extend_english.py +6 -0
  12. {pybreeze-1.0.7/pybreeze/pybreeze_ui → pybreeze-1.0.9/pybreeze}/extend_multi_language/extend_traditional_chinese.py +6 -0
  13. pybreeze-1.0.9/pybreeze/extend_multi_language/update_language_dict.py +8 -0
  14. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/editor_main/main_ui.py +4 -6
  15. pybreeze-1.0.9/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyer_lab_thread.py +95 -0
  16. pybreeze-1.0.9/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyter_lab_widget.py +56 -0
  17. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py +3 -3
  18. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py +4 -4
  19. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py +2 -2
  20. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py +3 -3
  21. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py +2 -2
  22. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py +3 -3
  23. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py +2 -2
  24. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/build_menubar.py +15 -13
  25. pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu/jupyter_lab_tab.py +31 -0
  26. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py +8 -8
  27. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/install_menu/install_utils.py +2 -2
  28. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py +3 -3
  29. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/menu_utils.py +2 -2
  30. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/menu/tools/tools_menu.py +4 -4
  31. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/syntax/syntax_extend.py +2 -2
  32. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/logging/logger.py +6 -4
  33. pybreeze-1.0.9/pybreeze/utils/manager/__init__.py +0 -0
  34. pybreeze-1.0.9/pybreeze/utils/manager/package_manager/__init__.py +0 -0
  35. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze.egg-info/PKG-INFO +3 -2
  36. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze.egg-info/SOURCES.txt +9 -4
  37. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze.egg-info/requires.txt +2 -1
  38. {pybreeze-1.0.7 → pybreeze-1.0.9}/pyproject.toml +3 -2
  39. pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_multi_language/update_language_dict.py +0 -8
  40. {pybreeze-1.0.7 → pybreeze-1.0.9}/LICENSE +0 -0
  41. {pybreeze-1.0.7 → pybreeze-1.0.9}/README.md +0 -0
  42. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/__main__.py +0 -0
  43. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/__init__.py +0 -0
  44. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/mail_thunder_extend/__init__.py +0 -0
  45. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py +0 -0
  46. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/__init__.py +0 -0
  47. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/api_testka/__init__.py +0 -0
  48. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/auto_control/__init__.py +0 -0
  49. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/file_automation/__init__.py +0 -0
  50. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/load_density/__init__.py +0 -0
  51. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/mail_thunder/__init__.py +0 -0
  52. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/python_task_process_manager.py +0 -0
  53. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/test_pioneer/__init__.py +0 -0
  54. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/extend/process_executor/web_runner/__init__.py +0 -0
  55. {pybreeze-1.0.7/pybreeze/pybreeze_ui → pybreeze-1.0.9/pybreeze/extend_multi_language}/__init__.py +0 -0
  56. {pybreeze-1.0.7/pybreeze/pybreeze_ui/connect_gui → pybreeze-1.0.9/pybreeze/pybreeze_ui}/__init__.py +0 -0
  57. {pybreeze-1.0.7/pybreeze/pybreeze_ui/connect_gui/ssh → pybreeze-1.0.9/pybreeze/pybreeze_ui/connect_gui}/__init__.py +0 -0
  58. {pybreeze-1.0.7/pybreeze/pybreeze_ui/connect_gui/url → pybreeze-1.0.9/pybreeze/pybreeze_ui/connect_gui/ssh}/__init__.py +0 -0
  59. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py +0 -0
  60. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py +0 -0
  61. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_login_widget.py +0 -0
  62. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py +0 -0
  63. {pybreeze-1.0.7/pybreeze/pybreeze_ui/editor_main → pybreeze-1.0.9/pybreeze/pybreeze_ui/connect_gui/url}/__init__.py +0 -0
  64. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/connect_gui/url/ai_code_review_gui.py +0 -0
  65. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui → pybreeze-1.0.9/pybreeze/pybreeze_ui/editor_main}/__init__.py +0 -0
  66. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui/code_review → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui}/__init__.py +0 -0
  67. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py +0 -0
  68. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui/code_review}/__init__.py +0 -0
  69. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py +0 -0
  70. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py +0 -0
  71. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui}/__init__.py +0 -0
  72. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates}/__init__.py +0 -0
  73. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py +0 -0
  74. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py +0 -0
  75. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py +0 -0
  76. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py +0 -0
  77. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py +0 -0
  78. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py +0 -0
  79. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py +0 -0
  80. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py +0 -0
  81. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py +0 -0
  82. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py +0 -0
  83. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py +0 -0
  84. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_ai_gui/skills → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates}/__init__.py +0 -0
  85. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py +0 -0
  86. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py +0 -0
  87. {pybreeze-1.0.7/pybreeze/pybreeze_ui/extend_multi_language → pybreeze-1.0.9/pybreeze/pybreeze_ui/extend_ai_gui/skills}/__init__.py +0 -0
  88. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py +0 -0
  89. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/jupyter_lab_gui}/__init__.py +0 -0
  90. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu}/__init__.py +0 -0
  91. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu}/__init__.py +0 -0
  92. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu}/__init__.py +0 -0
  93. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu}/__init__.py +0 -0
  94. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu}/__init__.py +0 -0
  95. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu}/__init__.py +0 -0
  96. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu}/__init__.py +0 -0
  97. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu}/__init__.py +0 -0
  98. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/install_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu}/__init__.py +0 -0
  99. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/install_menu/automation_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu}/__init__.py +0 -0
  100. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/install_menu/tools_menu → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/install_menu}/__init__.py +0 -0
  101. {pybreeze-1.0.7/pybreeze/pybreeze_ui/menu/tools → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/install_menu/automation_menu}/__init__.py +0 -0
  102. {pybreeze-1.0.7/pybreeze/pybreeze_ui/show_code_window → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/install_menu/tools_menu}/__init__.py +0 -0
  103. {pybreeze-1.0.7/pybreeze/pybreeze_ui/syntax → pybreeze-1.0.9/pybreeze/pybreeze_ui/menu/tools}/__init__.py +0 -0
  104. {pybreeze-1.0.7/pybreeze/utils → pybreeze-1.0.9/pybreeze/pybreeze_ui/show_code_window}/__init__.py +0 -0
  105. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/show_code_window/code_window.py +0 -0
  106. {pybreeze-1.0.7/pybreeze/utils/exception → pybreeze-1.0.9/pybreeze/pybreeze_ui/syntax}/__init__.py +0 -0
  107. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/pybreeze_ui/syntax/syntax_keyword.py +0 -0
  108. {pybreeze-1.0.7/pybreeze/utils/file_process → pybreeze-1.0.9/pybreeze/utils}/__init__.py +0 -0
  109. {pybreeze-1.0.7/pybreeze/utils/logging → pybreeze-1.0.9/pybreeze/utils/exception}/__init__.py +0 -0
  110. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/exception/exception_tags.py +0 -0
  111. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/exception/exceptions.py +0 -0
  112. {pybreeze-1.0.7/pybreeze/utils/manager → pybreeze-1.0.9/pybreeze/utils/file_process}/__init__.py +0 -0
  113. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/file_process/get_dir_file_list.py +0 -0
  114. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/json_format/__init__.py +0 -0
  115. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/json_format/json_process.py +0 -0
  116. {pybreeze-1.0.7/pybreeze/utils/manager/package_manager → pybreeze-1.0.9/pybreeze/utils/logging}/__init__.py +0 -0
  117. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze/utils/manager/package_manager/package_manager_class.py +0 -0
  118. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze.egg-info/dependency_links.txt +0 -0
  119. {pybreeze-1.0.7 → pybreeze-1.0.9}/pybreeze.egg-info/top_level.txt +0 -0
  120. {pybreeze-1.0.7 → pybreeze-1.0.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pybreeze
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: IDE for multi automation
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/Intergration-Automation-Testing/AutomationEditor
@@ -21,9 +21,10 @@ Requires-Dist: je_load_density
21
21
  Requires-Dist: je_api_testka
22
22
  Requires-Dist: je-mail-thunder
23
23
  Requires-Dist: automation-file
24
- Requires-Dist: PySide6==6.10.2
24
+ Requires-Dist: PySide6==6.11.0
25
25
  Requires-Dist: test_pioneer
26
26
  Requires-Dist: paramiko
27
+ Requires-Dist: jupyterlab
27
28
  Dynamic: license-file
28
29
 
29
30
  # PyBreeze: The Automation-First IDE
@@ -1,7 +1,7 @@
1
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
1
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
2
2
  from pybreeze.pybreeze_ui.editor_main.main_ui import EDITOR_EXTEND_TAB
3
3
  from pybreeze.pybreeze_ui.editor_main.main_ui import start_editor
4
4
 
5
5
  __all__ = [
6
- "start_editor", "AutomationEditor", "EDITOR_EXTEND_TAB"
6
+ "start_editor", "PyBreezeMainWindow", "EDITOR_EXTEND_TAB"
7
7
  ]
@@ -5,14 +5,14 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
  import sys
10
10
 
11
11
  from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
12
12
 
13
13
 
14
14
  def call_api_testka(
15
- main_window: AutomationEditor,
15
+ main_window: PyBreezeMainWindow,
16
16
  exec_str: Union[str, None] = None,
17
17
  program_buffer: int = 1024000
18
18
  ):
@@ -20,7 +20,7 @@ def call_api_testka(
20
20
 
21
21
 
22
22
  def call_api_testka_with_send(
23
- main_window: AutomationEditor,
23
+ main_window: PyBreezeMainWindow,
24
24
  exec_str: Union[str, None] = None,
25
25
  program_buffer: int = 1024000
26
26
  ):
@@ -28,7 +28,7 @@ def call_api_testka_with_send(
28
28
 
29
29
 
30
30
  def call_api_testka_multi_file(
31
- main_window: AutomationEditor,
31
+ main_window: PyBreezeMainWindow,
32
32
  program_buffer: int = 1024000
33
33
  ):
34
34
  try:
@@ -47,7 +47,7 @@ def call_api_testka_multi_file(
47
47
 
48
48
 
49
49
  def call_api_testka_multi_file_and_send(
50
- main_window: AutomationEditor,
50
+ main_window: PyBreezeMainWindow,
51
51
  program_buffer: int = 1024000
52
52
  ):
53
53
  try:
@@ -5,14 +5,14 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
  import sys
10
10
 
11
11
  from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
12
12
 
13
13
 
14
14
  def call_auto_control(
15
- main_window: AutomationEditor,
15
+ main_window: PyBreezeMainWindow,
16
16
  exec_str: Union[str, None] = None,
17
17
  program_buffer: int = 1024000
18
18
  ):
@@ -20,7 +20,7 @@ def call_auto_control(
20
20
 
21
21
 
22
22
  def call_auto_control_with_send(
23
- main_window: AutomationEditor,
23
+ main_window: PyBreezeMainWindow,
24
24
  exec_str: Union[str, None] = None,
25
25
  program_buffer: int = 1024000
26
26
  ):
@@ -28,7 +28,7 @@ def call_auto_control_with_send(
28
28
 
29
29
 
30
30
  def call_auto_control_multi_file(
31
- main_window: AutomationEditor,
31
+ main_window: PyBreezeMainWindow,
32
32
  program_buffer: int = 1024000
33
33
  ):
34
34
  need_to_execute_list: list = ask_and_get_dir_files_as_list(main_window)
@@ -44,7 +44,7 @@ def call_auto_control_multi_file(
44
44
 
45
45
 
46
46
  def call_auto_control_multi_file_and_send(
47
- main_window: AutomationEditor,
47
+ main_window: PyBreezeMainWindow,
48
48
  program_buffer: int = 1024000
49
49
  ):
50
50
  try:
@@ -5,14 +5,14 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
  import sys
10
10
 
11
11
  from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
12
12
 
13
13
 
14
14
  def call_file_automation_test(
15
- main_window: AutomationEditor,
15
+ main_window: PyBreezeMainWindow,
16
16
  exec_str: Union[str, None] = None,
17
17
  program_buffer: int = 1024000
18
18
  ):
@@ -20,7 +20,7 @@ def call_file_automation_test(
20
20
 
21
21
 
22
22
  def call_file_automation_test_with_send(
23
- main_window: AutomationEditor,
23
+ main_window: PyBreezeMainWindow,
24
24
  exec_str: Union[str, None] = None,
25
25
  program_buffer: int = 1024000
26
26
  ):
@@ -28,7 +28,7 @@ def call_file_automation_test_with_send(
28
28
 
29
29
 
30
30
  def call_file_automation_test_multi_file(
31
- main_window: AutomationEditor,
31
+ main_window: PyBreezeMainWindow,
32
32
  program_buffer: int = 1024000
33
33
  ):
34
34
  try:
@@ -47,7 +47,7 @@ def call_file_automation_test_multi_file(
47
47
 
48
48
 
49
49
  def call_file_automation_test_multi_file_and_send(
50
- main_window: AutomationEditor,
50
+ main_window: PyBreezeMainWindow,
51
51
  program_buffer: int = 1024000
52
52
  ):
53
53
  try:
@@ -5,14 +5,14 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
  import sys
10
10
 
11
11
  from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
12
12
 
13
13
 
14
14
  def call_load_density(
15
- main_window: AutomationEditor,
15
+ main_window: PyBreezeMainWindow,
16
16
  exec_str: Union[str, None] = None,
17
17
  program_buffer: int = 1024000
18
18
  ):
@@ -20,7 +20,7 @@ def call_load_density(
20
20
 
21
21
 
22
22
  def call_load_density_with_send(
23
- main_window: AutomationEditor,
23
+ main_window: PyBreezeMainWindow,
24
24
  exec_str: Union[str, None] = None,
25
25
  program_buffer: int = 1024000
26
26
  ):
@@ -28,7 +28,7 @@ def call_load_density_with_send(
28
28
 
29
29
 
30
30
  def call_load_density_multi_file(
31
- main_window: AutomationEditor,
31
+ main_window: PyBreezeMainWindow,
32
32
  program_buffer: int = 1024000
33
33
  ):
34
34
  try:
@@ -47,7 +47,7 @@ def call_load_density_multi_file(
47
47
 
48
48
 
49
49
  def call_load_density_multi_file_and_send(
50
- main_window: AutomationEditor,
50
+ main_window: PyBreezeMainWindow,
51
51
  program_buffer: int = 1024000
52
52
  ):
53
53
  try:
@@ -5,11 +5,11 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
 
10
10
 
11
11
  def call_mail_thunder(
12
- main_window: AutomationEditor,
12
+ main_window: PyBreezeMainWindow,
13
13
  exec_str: Union[str, None] = None,
14
14
  program_buffer: int = 1024000
15
15
  ):
@@ -13,11 +13,11 @@ from pybreeze.utils.exception.exception_tags import wrong_test_data_format_excep
13
13
  from pybreeze.utils.exception.exceptions import ITETestExecutorException
14
14
 
15
15
  if TYPE_CHECKING:
16
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
16
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
17
17
 
18
18
 
19
19
  def build_process(
20
- main_window: AutomationEditor,
20
+ main_window: PyBreezeMainWindow,
21
21
  package: str,
22
22
  exec_str: Union[str, None] = None,
23
23
  send_mail: bool = False,
@@ -42,7 +42,7 @@ def build_process(
42
42
 
43
43
 
44
44
  def start_process(
45
- main_window: AutomationEditor,
45
+ main_window: PyBreezeMainWindow,
46
46
  package: str,
47
47
  test_format_code: str,
48
48
  send_mail: bool = False,
@@ -17,19 +17,19 @@ from je_editor.utils.venv_check.check_venv import check_and_choose_venv
17
17
  from pybreeze.pybreeze_ui.show_code_window.code_window import CodeWindow
18
18
 
19
19
  if TYPE_CHECKING:
20
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
20
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
21
21
 
22
22
 
23
23
  class TestPioneerProcess(object):
24
24
 
25
25
  def __init__(
26
26
  self,
27
- main_window: AutomationEditor,
27
+ main_window: PyBreezeMainWindow,
28
28
  executable_path: str,
29
29
  program_buffer: int = 1024000,
30
30
  encoding: str = "utf-8",
31
31
  ):
32
- self._main_window: AutomationEditor = main_window
32
+ self._main_window: PyBreezeMainWindow = main_window
33
33
  self._widget: QWidget = main_window.tab_widget.currentWidget()
34
34
  # Code window init
35
35
  self._code_window = CodeWindow()
@@ -175,7 +175,7 @@ class TestPioneerProcess(object):
175
175
  self._timer.start()
176
176
 
177
177
 
178
- def init_and_start_test_pioneer_process(ui_we_want_to_set: AutomationEditor, file_path: str):
178
+ def init_and_start_test_pioneer_process(ui_we_want_to_set: PyBreezeMainWindow, file_path: str):
179
179
  test_pioneer_process_manager = TestPioneerProcess(
180
180
  main_window=ui_we_want_to_set, executable_path=file_path)
181
181
  test_pioneer_process_manager.start_test_pioneer_process()
@@ -5,14 +5,14 @@ from typing import TYPE_CHECKING, Union
5
5
  from pybreeze.extend.process_executor.process_executor_utils import build_process
6
6
 
7
7
  if TYPE_CHECKING:
8
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
8
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
9
9
  import sys
10
10
 
11
11
  from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
12
12
 
13
13
 
14
14
  def call_web_runner_test(
15
- main_window: AutomationEditor,
15
+ main_window: PyBreezeMainWindow,
16
16
  exec_str: Union[str, None] = None,
17
17
  program_buffer: int = 1024000
18
18
  ):
@@ -20,7 +20,7 @@ def call_web_runner_test(
20
20
 
21
21
 
22
22
  def call_web_runner_test_with_send(
23
- main_window: AutomationEditor,
23
+ main_window: PyBreezeMainWindow,
24
24
  exec_str: Union[str, None] = None,
25
25
  program_buffer: int = 1024000
26
26
  ):
@@ -28,7 +28,7 @@ def call_web_runner_test_with_send(
28
28
 
29
29
 
30
30
  def call_web_runner_test_multi_file(
31
- main_window: AutomationEditor,
31
+ main_window: PyBreezeMainWindow,
32
32
  program_buffer: int = 1024000
33
33
  ):
34
34
  try:
@@ -47,7 +47,7 @@ def call_web_runner_test_multi_file(
47
47
 
48
48
 
49
49
  def call_web_runner_test_multi_file_and_send(
50
- main_window: AutomationEditor,
50
+ main_window: PyBreezeMainWindow,
51
51
  program_buffer: int = 1024000
52
52
  ):
53
53
  try:
@@ -13,6 +13,8 @@ def update_english_word_dict():
13
13
  "run_label": "Run",
14
14
  "help_label": "HELP",
15
15
  "project_label": "Project",
16
+ # Tab tools menu
17
+ "tab_menu_jupyterlab_tab_name": "JupyterLab",
16
18
  # APITestka Menu
17
19
  "apitestka_menu_label": "APITestka",
18
20
  "apitestka_run_script_label": "Run APITestka Script",
@@ -268,5 +270,9 @@ def update_english_word_dict():
268
270
  "skills_response_label": "Response:",
269
271
  "skills_missing_input": "Please enter API URL and Prompt",
270
272
  "skills_generating": "Generating...",
273
+ # JupyterLab GUI
274
+ "jupyterlab_init": "Initializing...",
275
+ "jupyterlab_downloading": "Downloading...",
276
+ "jupyterlab_loading": "Loading..."
271
277
  }
272
278
  )
@@ -13,6 +13,8 @@ def update_traditional_chinese_word_dict():
13
13
  "run_label": "運行",
14
14
  "help_label": "幫助",
15
15
  "project_label": "專案",
16
+ # Tab tools menu
17
+ "tab_menu_jupyterlab_tab_name": "JupyterLab",
16
18
  # APITestka Menu
17
19
  "apitestka_menu_label": "APITestka",
18
20
  "apitestka_run_script_label": "運行 APITestka 腳本",
@@ -268,5 +270,9 @@ def update_traditional_chinese_word_dict():
268
270
  "skills_response_label": "回傳結果:",
269
271
  "skills_missing_input": "請輸入 API URL 和 Prompt",
270
272
  "skills_generating": "產生中...",
273
+ # JupyterLab GUI
274
+ "jupyterlab_init": "初始化中...",
275
+ "jupyterlab_downloading": "下載中...",
276
+ "jupyterlab_loading": "載入中...",
271
277
  }
272
278
  )
@@ -0,0 +1,8 @@
1
+ from pybreeze.extend_multi_language.extend_english import update_english_word_dict
2
+ from pybreeze.extend_multi_language.extend_traditional_chinese import \
3
+ update_traditional_chinese_word_dict
4
+
5
+
6
+ def update_language_dict():
7
+ update_traditional_chinese_word_dict()
8
+ update_english_word_dict()
@@ -4,17 +4,15 @@ from os import environ
4
4
  from pathlib import Path
5
5
  from typing import List, Dict, Type
6
6
 
7
- from pybreeze.utils.logging.logger import automation_ide_logger
8
-
9
7
  environ["LOCUST_SKIP_MONKEY_PATCH"] = "1"
10
8
 
11
9
  from PySide6.QtCore import QTimer, QCoreApplication
12
10
  from PySide6.QtGui import QIcon
13
- from PySide6.QtWidgets import QApplication, QWidget, QSystemTrayIcon
11
+ from PySide6.QtWidgets import QApplication, QWidget
14
12
  from je_editor import EditorMain, language_wrapper
15
13
  from qt_material import apply_stylesheet
16
14
 
17
- from pybreeze.pybreeze_ui.extend_multi_language.update_language_dict import update_language_dict
15
+ from pybreeze.extend_multi_language import update_language_dict
18
16
  from pybreeze.pybreeze_ui.menu.build_menubar import add_menu_to_menubar
19
17
  from pybreeze.pybreeze_ui.syntax.syntax_extend import \
20
18
  syntax_extend_package
@@ -24,7 +22,7 @@ EDITOR_EXTEND_TAB: Dict[str, Type[QWidget]] = {
24
22
  }
25
23
 
26
24
 
27
- class AutomationEditor(EditorMain):
25
+ class PyBreezeMainWindow(EditorMain):
28
26
 
29
27
  def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = False, extend: bool = False) -> None:
30
28
  super().__init__(debug_mode, show_system_tray_ray, extend=True)
@@ -94,7 +92,7 @@ def start_editor(debug_mode: bool = False, **kwargs) -> None:
94
92
  new_ide = QCoreApplication.instance()
95
93
  if new_ide is None:
96
94
  new_ide = QApplication(sys.argv)
97
- window = AutomationEditor(debug_mode=debug_mode, **kwargs)
95
+ window = PyBreezeMainWindow(debug_mode=debug_mode, **kwargs)
98
96
  apply_stylesheet(new_ide, theme="dark_amber.xml")
99
97
  window.showMaximized()
100
98
  try:
@@ -0,0 +1,95 @@
1
+ import os
2
+ import socket
3
+ import subprocess
4
+ import sys
5
+ from PySide6.QtCore import QThread, Signal
6
+ import time
7
+
8
+ from je_editor import language_wrapper
9
+
10
+
11
+ def find_free_port():
12
+ s = socket.socket()
13
+ s.bind(("", 0))
14
+ port = s.getsockname()[1]
15
+ s.close()
16
+ return port
17
+
18
+ def get_venv_python():
19
+ # 如果在 venv 中
20
+ if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
21
+ return sys.executable
22
+
23
+ # 嘗試從常見位置找 venv
24
+ possible_paths = [
25
+ os.path.join(os.getcwd(), "venv", "Scripts", "python.exe"),
26
+ os.path.join(os.getcwd(), ".venv", "Scripts", "python.exe"),
27
+ ]
28
+
29
+ for path in possible_paths:
30
+ if os.path.exists(path):
31
+ return path
32
+
33
+ raise RuntimeError("找不到 venv 的 python.exe")
34
+
35
+
36
+ def is_jupyter_installed(python_exe):
37
+ result = subprocess.run(
38
+ [python_exe, "-m", "pip", "show", "jupyterlab"],
39
+ stdout=subprocess.PIPE,
40
+ stderr=subprocess.PIPE
41
+ )
42
+ return result.returncode == 0
43
+
44
+
45
+ class JupyterLauncherThread(QThread):
46
+ server_ready = Signal(str)
47
+ status_update = Signal(str)
48
+
49
+ def __init__(self):
50
+ super().__init__()
51
+ self.process = None
52
+
53
+ def run(self):
54
+ python_exe = get_venv_python()
55
+
56
+ if not is_jupyter_installed(python_exe):
57
+ self.status_update.emit(language_wrapper.language_word_dict.get("jupyterlab_downloading"))
58
+ subprocess.run([
59
+ python_exe,
60
+ "-m",
61
+ "pip",
62
+ "install",
63
+ "jupyterlab",
64
+ "-U"
65
+ ])
66
+
67
+ self.status_update.emit(language_wrapper.language_word_dict.get("jupyterlab_loading"))
68
+
69
+ port = find_free_port()
70
+
71
+ self.process = subprocess.Popen([
72
+ python_exe,
73
+ "-m",
74
+ "jupyterlab",
75
+ "--no-browser",
76
+ f"--ServerApp.port={port}",
77
+ "--ServerApp.token=",
78
+ "--ServerApp.password=",
79
+ "--ServerApp.allow_origin=*",
80
+ "--ServerApp.disable_check_xsrf=True",
81
+ ])
82
+
83
+ while True:
84
+ try:
85
+ s = socket.create_connection(("localhost", port), timeout=0.5)
86
+ s.close()
87
+ break
88
+ except OSError:
89
+ time.sleep(0.2)
90
+
91
+ self.server_ready.emit(f"http://localhost:{port}/lab")
92
+
93
+ def stop(self):
94
+ if self.process:
95
+ self.process.terminate()
@@ -0,0 +1,56 @@
1
+ import sys
2
+
3
+ from PySide6.QtCore import QUrl
4
+ from PySide6.QtWebEngineWidgets import QWebEngineView
5
+ from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget, QLabel
6
+ from je_editor import language_wrapper
7
+
8
+ from pybreeze.pybreeze_ui.jupyter_lab_gui.jupyer_lab_thread import JupyterLauncherThread
9
+
10
+
11
+ class JupyterLabWidget(QWidget):
12
+
13
+ def __init__(self):
14
+ super().__init__()
15
+
16
+ layout = QVBoxLayout(self)
17
+
18
+ self.status_label = QLabel(language_wrapper.language_word_dict.get("jupyterlab_init"))
19
+ layout.addWidget(self.status_label)
20
+
21
+ self.browser = QWebEngineView()
22
+ self.browser.hide()
23
+ layout.addWidget(self.browser)
24
+
25
+ self.thread = JupyterLauncherThread()
26
+ self.thread.status_update.connect(self.update_status)
27
+ self.thread.server_ready.connect(self.load_lab)
28
+ self.thread.start()
29
+
30
+ def update_status(self, text):
31
+ self.status_label.setText(text)
32
+
33
+ def load_lab(self, url):
34
+ if self.status_label:
35
+ self.status_label.setParent(None)
36
+ self.status_label.deleteLater()
37
+ self.status_label = None
38
+
39
+ self.browser.setUrl(QUrl(url))
40
+ self.browser.show()
41
+
42
+ def closeEvent(self, event):
43
+ if self.thread.isRunning():
44
+ self.thread.stop()
45
+ self.thread.quit()
46
+ self.thread.wait()
47
+ event.accept()
48
+
49
+
50
+ if __name__ == "__main__":
51
+ app = QApplication(sys.argv)
52
+
53
+ win = JupyterLabWidget()
54
+ win.showMaximized()
55
+
56
+ sys.exit(app.exec())
@@ -8,7 +8,7 @@ from je_editor import language_wrapper
8
8
  from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser
9
9
 
10
10
  if TYPE_CHECKING:
11
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
11
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
12
12
  import sys
13
13
 
14
14
  from PySide6.QtGui import QAction
@@ -17,7 +17,7 @@ from pybreeze.extend.process_executor.api_testka.api_testka_process import call_
17
17
  call_api_testka_with_send, call_api_testka_multi_file, call_api_testka_multi_file_and_send
18
18
 
19
19
 
20
- def set_apitestka_menu(ui_we_want_to_set: AutomationEditor):
20
+ def set_apitestka_menu(ui_we_want_to_set: PyBreezeMainWindow):
21
21
  """
22
22
  Build menu include APITestka feature.
23
23
  :param ui_we_want_to_set: main window to add menu.
@@ -131,7 +131,7 @@ def create_project() -> None:
131
131
  print(repr(error), file=sys.stderr)
132
132
 
133
133
 
134
- def add_api_testka_gui(ui_we_want_to_set: AutomationEditor) -> None:
134
+ def add_api_testka_gui(ui_we_want_to_set: PyBreezeMainWindow) -> None:
135
135
  ui_we_want_to_set.tab_widget.addTab(
136
136
  APITestkaWidget(), "APITestka GUI"
137
137
  )
@@ -9,7 +9,7 @@ from je_editor.pyside_ui.main_ui.save_settings.user_color_setting_file import ac
9
9
  from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser
10
10
 
11
11
  if TYPE_CHECKING:
12
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
12
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
13
13
  import sys
14
14
 
15
15
  import je_auto_control
@@ -20,7 +20,7 @@ from pybreeze.extend.process_executor.auto_control.auto_control_process import \
20
20
  call_auto_control_multi_file_and_send
21
21
 
22
22
 
23
- def set_autocontrol_menu(ui_we_want_to_set: AutomationEditor):
23
+ def set_autocontrol_menu(ui_we_want_to_set: PyBreezeMainWindow):
24
24
  """
25
25
  Build menu include AutoControl feature.
26
26
  :param ui_we_want_to_set: main window to add menu.
@@ -153,7 +153,7 @@ def create_project() -> None:
153
153
  print(repr(error), file=sys.stderr)
154
154
 
155
155
 
156
- def stop_record(editor_instance: AutomationEditor):
156
+ def stop_record(editor_instance: PyBreezeMainWindow):
157
157
  widget = editor_instance.tab_widget.currentWidget()
158
158
  if isinstance(widget, EditorWidget):
159
159
  text_cursor = widget.code_edit.textCursor()
@@ -163,7 +163,7 @@ def stop_record(editor_instance: AutomationEditor):
163
163
  text_cursor.insertBlock()
164
164
 
165
165
 
166
- def add_autocontrol_gui(ui_we_want_to_set: AutomationEditor) -> None:
166
+ def add_autocontrol_gui(ui_we_want_to_set: PyBreezeMainWindow) -> None:
167
167
  ui_we_want_to_set.tab_widget.addTab(
168
168
  AutoControlGUIWidget(), "AutoControl GUI"
169
169
  )
@@ -7,7 +7,7 @@ from je_editor import language_wrapper
7
7
  from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser
8
8
 
9
9
  if TYPE_CHECKING:
10
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
10
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
11
11
  import sys
12
12
 
13
13
  from PySide6.QtGui import QAction
@@ -17,7 +17,7 @@ from pybreeze.extend.process_executor.file_automation.file_automation_process im
17
17
  call_file_automation_test_multi_file_and_send
18
18
 
19
19
 
20
- def set_automation_file_menu(ui_we_want_to_set: AutomationEditor):
20
+ def set_automation_file_menu(ui_we_want_to_set: PyBreezeMainWindow):
21
21
  """
22
22
  Build menu include WebRunner feature.
23
23
  :param ui_we_want_to_set: main window to add menu.
@@ -8,7 +8,7 @@ from je_load_density.gui.main_widget import LoadDensityWidget
8
8
  from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser
9
9
 
10
10
  if TYPE_CHECKING:
11
- from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor
11
+ from pybreeze.pybreeze_ui.editor_main.main_ui import PyBreezeMainWindow
12
12
  import sys
13
13
 
14
14
  from PySide6.QtGui import QAction
@@ -18,7 +18,7 @@ from pybreeze.extend.process_executor.load_density.load_density_process import \
18
18
  call_load_density_multi_file_and_send
19
19
 
20
20
 
21
- def set_load_density_menu(ui_we_want_to_set: AutomationEditor):
21
+ def set_load_density_menu(ui_we_want_to_set: PyBreezeMainWindow):
22
22
  """
23
23
  Build menu include LoadDensity feature.
24
24
  :param ui_we_want_to_set: main window to add menu.
@@ -131,7 +131,7 @@ def create_project() -> None:
131
131
  print(repr(error), file=sys.stderr)
132
132
 
133
133
 
134
- def add_load_density_gui(ui_we_want_to_set: AutomationEditor) -> None:
134
+ def add_load_density_gui(ui_we_want_to_set: PyBreezeMainWindow) -> None:
135
135
  ui_we_want_to_set.tab_widget.addTab(
136
136
  LoadDensityWidget(), "LoadDensity GUI"
137
137
  )