Skip to content

Commit eaa8dc5

Browse files
authored
Merge pull request #213 from Integration-Automation/dev
Dev
2 parents 9af3b1b + 9cd5885 commit eaa8dc5

11 files changed

Lines changed: 216 additions & 190 deletions

File tree

dev.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ build-backend = "setuptools.build_meta"
66

77
[project]
88
name = "je_editor_dev"
9-
version = "1.0.2"
9+
version = "1.0.4"
1010
authors = [
1111
{ name = "JE-Chen", email = "jechenmailman@gmail.com" },
1212
]
1313
description = "JEditor is basic but powerful editor include GPT"
1414
requires-python = ">=3.10"
1515
license-files = ["LICENSE"]
1616
dependencies = [
17-
"PySide6==6.10.2", "qt-material", "yapf", "frontengine", "pycodestyle", "jedi",
18-
"qtconsole", "langchain_openai==1.1.0", "langchain==1.1.2", "pydantic", "watchdog", "ruff", "gitpython"
17+
"PySide6==6.11.0", "qt-material", "yapf", "frontengine", "pycodestyle", "jedi",
18+
"qtconsole", "langchain_openai==1.1.12", "langchain==1.2.13", "pydantic", "watchdog", "ruff", "gitpython"
1919
]
2020
classifiers = [
2121
"Programming Language :: Python :: 3.10",

dev_requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
PySide6==6.10.0
2-
langchain_openai==1.0.2
3-
langchain==1.0.3
1+
PySide6==6.11.0
2+
langchain_openai==1.1.12
3+
langchain==1.2.13
44
ruff
55
sphinx
66
twine

je_editor/pyside_ui/main_ui/ipython_widget/rich_jupyter.py renamed to je_editor/pyside_ui/main_ui/ipython_widget/ipython_console.py

File renamed without changes.

je_editor/pyside_ui/main_ui/menu/dock_menu/build_dock_menu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from je_editor.pyside_ui.main_ui.console_widget.console_gui import ConsoleWidget
1919
from je_editor.pyside_ui.main_ui.dock.destroy_dock import DestroyDock
2020
from je_editor.pyside_ui.main_ui.editor.editor_widget_dock import FullEditorWidget
21-
from je_editor.pyside_ui.main_ui.ipython_widget.rich_jupyter import IpythonWidget
21+
from je_editor.pyside_ui.main_ui.ipython_widget.ipython_console import IpythonWidget
2222
from je_editor.utils.file.open.open_file import read_file # 檔案讀取工具 / File reading utility
2323
from je_editor.utils.logging.loggin_instance import jeditor_logger # 日誌紀錄器 / Logger
2424
from je_editor.utils.multi_language.multi_language_wrapper import language_wrapper # 多語系支援 / Multi-language wrapper
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING
4+
5+
from PySide6.QtGui import QAction
6+
7+
from je_editor.pyside_ui.git_ui.code_diff_compare.code_diff_viewer_widget import DiffViewerWidget
8+
9+
from je_editor.pyside_ui.git_ui.git_client.git_branch_tree_widget import GitTreeViewGUI
10+
11+
from je_editor.pyside_ui.git_ui.git_client.git_client_gui import GitGui
12+
13+
from je_editor.utils.logging.loggin_instance import jeditor_logger
14+
15+
from je_editor.utils.multi_language.multi_language_wrapper import language_wrapper
16+
17+
if TYPE_CHECKING:
18+
from je_editor.pyside_ui.main_ui.main_editor import EditorMain
19+
20+
def set_tab_git_menu(ui_we_want_to_set: EditorMain) -> None:
21+
ui_we_want_to_set.tab_menu.git_menu = ui_we_want_to_set.tab_menu.addMenu(
22+
language_wrapper.language_word_dict.get("tab_menu_git_submenu_label")
23+
)
24+
# === Git Client 分頁 ===
25+
# === Git Client Tab ===
26+
ui_we_want_to_set.tab_menu.git_menu.add_git_client_ui_action = QAction(
27+
language_wrapper.language_word_dict.get("tab_menu_git_client_tab_name"))
28+
ui_we_want_to_set.tab_menu.git_menu.add_git_client_ui_action.triggered.connect(
29+
lambda: add_git_client_tab(ui_we_want_to_set)
30+
)
31+
ui_we_want_to_set.tab_menu.git_menu.addAction(ui_we_want_to_set.tab_menu.git_menu.add_git_client_ui_action)
32+
33+
# === Git Branch Tree 分頁 ===
34+
# === Git Branch Tree Tab ===
35+
ui_we_want_to_set.tab_menu.git_menu.add_git_branch_view_ui_action = QAction(
36+
language_wrapper.language_word_dict.get("tab_menu_git_branch_tree_view_tab_name"))
37+
ui_we_want_to_set.tab_menu.git_menu.add_git_branch_view_ui_action.triggered.connect(
38+
lambda: add_git_tree_view_tab(ui_we_want_to_set)
39+
)
40+
ui_we_want_to_set.tab_menu.git_menu.addAction(ui_we_want_to_set.tab_menu.git_menu.add_git_branch_view_ui_action)
41+
42+
# === Code Diff Viewer 分頁 ===
43+
# === Code Diff Viewer Tab ===
44+
ui_we_want_to_set.tab_menu.git_menu.add_code_diff_viewer_ui_action = QAction(
45+
language_wrapper.language_word_dict.get("tab_code_diff_viewer_tab_name"))
46+
ui_we_want_to_set.tab_menu.git_menu.add_code_diff_viewer_ui_action.triggered.connect(
47+
lambda: add_code_diff_compare_tab(ui_we_want_to_set)
48+
)
49+
ui_we_want_to_set.tab_menu.git_menu.addAction(ui_we_want_to_set.tab_menu.git_menu.add_code_diff_viewer_ui_action)
50+
51+
def add_git_client_tab(ui_we_want_to_set: EditorMain):
52+
# 紀錄日誌:新增 Git Client 分頁
53+
# Log: add a Git Client tab
54+
jeditor_logger.info(f"build_tab_menu.py add git client tab ui_we_want_to_set: {ui_we_want_to_set}")
55+
# 在主編輯器中新增 Git 客戶端分頁
56+
# Add a Git client tab
57+
ui_we_want_to_set.tab_widget.addTab(
58+
GitGui(), # 建立 Git GUI 元件 / Create Git GUI widget
59+
f"{language_wrapper.language_word_dict.get('tab_menu_git_client_tab_name')} "
60+
f"{ui_we_want_to_set.tab_widget.count()}"
61+
)
62+
63+
64+
def add_git_tree_view_tab(ui_we_want_to_set: EditorMain):
65+
# 紀錄日誌:新增 Git Branch Tree 分頁
66+
# Log: add a Git Branch Tree tab
67+
jeditor_logger.info(f"build_tab_menu.py add git tree view tab ui_we_want_to_set: {ui_we_want_to_set}")
68+
# 在主編輯器中新增 Git 分支樹狀圖分頁
69+
# Add a Git branch tree view tab
70+
ui_we_want_to_set.tab_widget.addTab(
71+
GitTreeViewGUI(), # 建立 Git Tree View 元件 / Create Git Tree View widget
72+
f"{language_wrapper.language_word_dict.get('tab_menu_git_branch_tree_view_tab_name')} "
73+
f"{ui_we_want_to_set.tab_widget.count()}"
74+
)
75+
76+
def add_code_diff_compare_tab(ui_we_want_to_set: EditorMain):
77+
# 紀錄日誌:新增 Code Diff Compare 分頁
78+
# Log: add a Code Diff Compare tab
79+
jeditor_logger.info(f"build_tab_menu.py add code diff compare tab ui_we_want_to_set: {ui_we_want_to_set}")
80+
# 在主編輯器中新增程式碼差異比較分頁
81+
# Add a code diff comparison tab
82+
ui_we_want_to_set.tab_widget.addTab(
83+
DiffViewerWidget(), # 建立程式碼比對元件 / Create Code Diff Viewer widget
84+
f"{language_wrapper.language_word_dict.get('tab_code_diff_viewer_tab_name')} "
85+
f"{ui_we_want_to_set.tab_widget.count()}"
86+
)

je_editor/pyside_ui/main_ui/menu/tab_menu/build_tab_menu.py

Lines changed: 6 additions & 177 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,23 @@
22

33
from typing import TYPE_CHECKING
44

5-
from frontengine import FrontEngineMainUI
5+
from PySide6.QtWidgets import QMenu
66

77
from je_editor.pyside_ui.browser.main_browser_widget import MainBrowserWidget
8-
from je_editor.pyside_ui.code.variable_inspector.inspector_gui import VariableInspector
9-
# 匯入各種 UI 元件 (編輯器、瀏覽器、Git、變數檢查器、聊天、控制台、IPython、程式碼比對)
10-
# Import various UI components (editor, browser, Git, variable inspector, chat, console, IPython, code diff)
11-
from je_editor.pyside_ui.git_ui.code_diff_compare.code_diff_viewer_widget import DiffViewerWidget
12-
from je_editor.pyside_ui.git_ui.git_client.git_branch_tree_widget import GitTreeViewGUI
13-
from je_editor.pyside_ui.git_ui.git_client.git_client_gui import GitGui
14-
from je_editor.pyside_ui.main_ui.ai_widget.chat_ui import ChatUI
158
from je_editor.pyside_ui.main_ui.console_widget.console_gui import ConsoleWidget
169
from je_editor.pyside_ui.main_ui.editor.editor_widget import EditorWidget
17-
from je_editor.pyside_ui.main_ui.ipython_widget.rich_jupyter import IpythonWidget
10+
from je_editor.pyside_ui.main_ui.menu.tab_menu.build_tab_git_menu import set_tab_git_menu
11+
from je_editor.pyside_ui.main_ui.menu.tab_menu.build_tab_tools_menu import set_tab_tools_menu
1812
from je_editor.utils.logging.loggin_instance import jeditor_logger
1913

20-
# 啟用未來的註解功能,允許在型別提示中使用字串形式的前向參照
21-
# Enable future annotations, allowing forward references in type hints
22-
# TYPE_CHECKING 用於避免在型別檢查時引入不必要的模組
23-
# TYPE_CHECKING is used to avoid unnecessary imports during type checking
24-
# 匯入 FrontEngine 主 UI
25-
# Import the FrontEngine main UI
26-
# 匯入日誌工具,用於記錄操作
27-
# Import logger for recording operations
28-
2914
if TYPE_CHECKING:
3015
from je_editor.pyside_ui.main_ui.main_editor import EditorMain
31-
# 僅在型別檢查時匯入 EditorMain,避免循環依賴
32-
# Import EditorMain only for type checking to avoid circular imports
3316

3417
from PySide6.QtGui import QAction
35-
# 匯入 QAction,用於建立選單動作
36-
# Import QAction for creating menu actions
3718

3819
from je_editor.utils.multi_language.multi_language_wrapper import language_wrapper
3920

4021

41-
# 匯入多語言包裝器,用於支援多語系 UI
42-
# Import language wrapper for multilingual UI support
43-
44-
4522
def set_tab_menu(ui_we_want_to_set: EditorMain) -> None:
4623
"""
4724
設定主編輯器的分頁選單
@@ -51,7 +28,7 @@ def set_tab_menu(ui_we_want_to_set: EditorMain) -> None:
5128

5229
# 建立 Tab 選單 (主容器)
5330
# Create the Tab menu (main container)
54-
ui_we_want_to_set.tab_menu = ui_we_want_to_set.menu.addMenu(
31+
ui_we_want_to_set.tab_menu: QMenu = ui_we_want_to_set.menu.addMenu(
5532
language_wrapper.language_word_dict.get("tab_menu_label")
5633
)
5734

@@ -64,15 +41,6 @@ def set_tab_menu(ui_we_want_to_set: EditorMain) -> None:
6441
)
6542
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_editor_action)
6643

67-
# === Front Engine 分頁 ===
68-
# === Front Engine Tab ===
69-
ui_we_want_to_set.tab_menu.add_frontengine_action = QAction(
70-
language_wrapper.language_word_dict.get("tab_menu_add_frontengine_label"))
71-
ui_we_want_to_set.tab_menu.add_frontengine_action.triggered.connect(
72-
lambda: add_frontengine_tab(ui_we_want_to_set)
73-
)
74-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_frontengine_action)
75-
7644
# === Web 瀏覽器分頁 ===
7745
# === Web Browser Tab ===
7846
ui_we_want_to_set.tab_menu.add_web_action = QAction(
@@ -82,51 +50,6 @@ def set_tab_menu(ui_we_want_to_set: EditorMain) -> None:
8250
)
8351
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_web_action)
8452

85-
# === IPython 分頁 ===
86-
# === IPython Tab ===
87-
ui_we_want_to_set.tab_menu.add_ipython_action = QAction(
88-
language_wrapper.language_word_dict.get("tab_menu_ipython_tab_name"))
89-
ui_we_want_to_set.tab_menu.add_ipython_action.triggered.connect(
90-
lambda: add_ipython_tab(ui_we_want_to_set)
91-
)
92-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_ipython_action)
93-
94-
# === Chat UI 分頁 ===
95-
# === Chat UI Tab ===
96-
ui_we_want_to_set.tab_menu.add_chat_ui_action = QAction(
97-
language_wrapper.language_word_dict.get("tab_menu_chat_ui_tab_name"))
98-
ui_we_want_to_set.tab_menu.add_chat_ui_action.triggered.connect(
99-
lambda: add_chat_ui_tab(ui_we_want_to_set)
100-
)
101-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_chat_ui_action)
102-
103-
# === Git Client 分頁 ===
104-
# === Git Client Tab ===
105-
ui_we_want_to_set.tab_menu.add_git_client_ui_action = QAction(
106-
language_wrapper.language_word_dict.get("tab_menu_git_client_tab_name"))
107-
ui_we_want_to_set.tab_menu.add_git_client_ui_action.triggered.connect(
108-
lambda: add_git_client_tab(ui_we_want_to_set)
109-
)
110-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_git_client_ui_action)
111-
112-
# === Git Branch Tree 分頁 ===
113-
# === Git Branch Tree Tab ===
114-
ui_we_want_to_set.tab_menu.add_git_branch_view_ui_action = QAction(
115-
language_wrapper.language_word_dict.get("tab_menu_git_branch_tree_view_tab_name"))
116-
ui_we_want_to_set.tab_menu.add_git_branch_view_ui_action.triggered.connect(
117-
lambda: add_git_tree_view_tab(ui_we_want_to_set)
118-
)
119-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_git_branch_view_ui_action)
120-
121-
# === Variable Inspector 分頁 ===
122-
# === Variable Inspector Tab ===
123-
ui_we_want_to_set.tab_menu.add_variable_inspector_ui_action = QAction(
124-
language_wrapper.language_word_dict.get("tab_menu_variable_inspector_tab_name"))
125-
ui_we_want_to_set.tab_menu.add_variable_inspector_ui_action.triggered.connect(
126-
lambda: add_variable_inspector_tab(ui_we_want_to_set)
127-
)
128-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_variable_inspector_ui_action)
129-
13053
# === Console 分頁 ===
13154
# === Console Tab ===
13255
ui_we_want_to_set.tab_menu.add_console_widget_ui_action = QAction(
@@ -136,14 +59,8 @@ def set_tab_menu(ui_we_want_to_set: EditorMain) -> None:
13659
)
13760
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_console_widget_ui_action)
13861

139-
# === Code Diff Viewer 分頁 ===
140-
# === Code Diff Viewer Tab ===
141-
ui_we_want_to_set.tab_menu.add_code_diff_viewer_ui_action = QAction(
142-
language_wrapper.language_word_dict.get("tab_code_diff_viewer_tab_name"))
143-
ui_we_want_to_set.tab_menu.add_code_diff_viewer_ui_action.triggered.connect(
144-
lambda: add_code_diff_compare_tab(ui_we_want_to_set)
145-
)
146-
ui_we_want_to_set.tab_menu.addAction(ui_we_want_to_set.tab_menu.add_code_diff_viewer_ui_action)
62+
set_tab_tools_menu(ui_we_want_to_set=ui_we_want_to_set)
63+
set_tab_git_menu(ui_we_want_to_set=ui_we_want_to_set)
14764

14865

14966
# === 以下為各分頁新增函式 ===
@@ -161,16 +78,6 @@ def add_editor_tab(ui_we_want_to_set: EditorMain):
16178
return widget
16279

16380

164-
def add_frontengine_tab(ui_we_want_to_set: EditorMain):
165-
# 新增 FrontEngine 分頁
166-
# Add FrontEngine tab
167-
jeditor_logger.info(f"build_tab_menu.py add frontengine tab ui_we_want_to_set: {ui_we_want_to_set}")
168-
ui_we_want_to_set.tab_widget.addTab(
169-
FrontEngineMainUI(show_system_tray_ray=False, redirect_output=False),
170-
f"{language_wrapper.language_word_dict.get('tab_menu_frontengine_tab_name')} "
171-
f"{ui_we_want_to_set.tab_widget.count()}")
172-
173-
17481
def add_web_tab(ui_we_want_to_set: EditorMain):
17582
# 紀錄日誌:新增 Web 分頁
17683
# Log: add a Web tab
@@ -184,71 +91,6 @@ def add_web_tab(ui_we_want_to_set: EditorMain):
18491
)
18592

18693

187-
def add_ipython_tab(ui_we_want_to_set: EditorMain):
188-
# 紀錄日誌:新增 IPython 分頁
189-
# Log: add an IPython tab
190-
jeditor_logger.info(f"build_tab_menu.py add ipython tab ui_we_want_to_set: {ui_we_want_to_set}")
191-
# 在主編輯器中新增 IPython 互動式分頁
192-
# Add an IPython interactive tab
193-
ui_we_want_to_set.tab_widget.addTab(
194-
IpythonWidget(ui_we_want_to_set), # 建立 IPython 元件 / Create IPython widget
195-
f"{language_wrapper.language_word_dict.get('tab_menu_ipython_tab_name')} "
196-
f"{ui_we_want_to_set.tab_widget.count()}"
197-
)
198-
199-
200-
def add_chat_ui_tab(ui_we_want_to_set: EditorMain):
201-
# 紀錄日誌:新增 Chat UI 分頁
202-
# Log: add a Chat UI tab
203-
jeditor_logger.info(f"build_tab_menu.py add chat_ui tab ui_we_want_to_set: {ui_we_want_to_set}")
204-
# 在主編輯器中新增聊天分頁
205-
# Add a chat tab into the main editor
206-
ui_we_want_to_set.tab_widget.addTab(
207-
ChatUI(ui_we_want_to_set), # 建立聊天元件 / Create Chat UI widget
208-
f"{language_wrapper.language_word_dict.get('tab_menu_chat_ui_tab_name')} "
209-
f"{ui_we_want_to_set.tab_widget.count()}"
210-
)
211-
212-
213-
def add_git_client_tab(ui_we_want_to_set: EditorMain):
214-
# 紀錄日誌:新增 Git Client 分頁
215-
# Log: add a Git Client tab
216-
jeditor_logger.info(f"build_tab_menu.py add git client tab ui_we_want_to_set: {ui_we_want_to_set}")
217-
# 在主編輯器中新增 Git 客戶端分頁
218-
# Add a Git client tab
219-
ui_we_want_to_set.tab_widget.addTab(
220-
GitGui(), # 建立 Git GUI 元件 / Create Git GUI widget
221-
f"{language_wrapper.language_word_dict.get('tab_menu_git_client_tab_name')} "
222-
f"{ui_we_want_to_set.tab_widget.count()}"
223-
)
224-
225-
226-
def add_git_tree_view_tab(ui_we_want_to_set: EditorMain):
227-
# 紀錄日誌:新增 Git Branch Tree 分頁
228-
# Log: add a Git Branch Tree tab
229-
jeditor_logger.info(f"build_tab_menu.py add git tree view tab ui_we_want_to_set: {ui_we_want_to_set}")
230-
# 在主編輯器中新增 Git 分支樹狀圖分頁
231-
# Add a Git branch tree view tab
232-
ui_we_want_to_set.tab_widget.addTab(
233-
GitTreeViewGUI(), # 建立 Git Tree View 元件 / Create Git Tree View widget
234-
f"{language_wrapper.language_word_dict.get('tab_menu_git_branch_tree_view_tab_name')} "
235-
f"{ui_we_want_to_set.tab_widget.count()}"
236-
)
237-
238-
239-
def add_variable_inspector_tab(ui_we_want_to_set: EditorMain):
240-
# 紀錄日誌:新增 Variable Inspector 分頁
241-
# Log: add a Variable Inspector tab
242-
jeditor_logger.info(f"build_tab_menu.py add variable inspector tab ui_we_want_to_set: {ui_we_want_to_set}")
243-
# 在主編輯器中新增變數檢查器分頁
244-
# Add a variable inspector tab
245-
ui_we_want_to_set.tab_widget.addTab(
246-
VariableInspector(), # 建立變數檢查器元件 / Create Variable Inspector widget
247-
f"{language_wrapper.language_word_dict.get('tab_menu_variable_inspector_tab_name')} "
248-
f"{ui_we_want_to_set.tab_widget.count()}"
249-
)
250-
251-
25294
def add_console_widget_tab(ui_we_want_to_set: EditorMain):
25395
# 紀錄日誌:新增 Console 分頁
25496
# Log: add a Console tab
@@ -260,16 +102,3 @@ def add_console_widget_tab(ui_we_want_to_set: EditorMain):
260102
f"{language_wrapper.language_word_dict.get('tab_menu_console_widget_tab_name')} "
261103
f"{ui_we_want_to_set.tab_widget.count()}"
262104
)
263-
264-
265-
def add_code_diff_compare_tab(ui_we_want_to_set: EditorMain):
266-
# 紀錄日誌:新增 Code Diff Compare 分頁
267-
# Log: add a Code Diff Compare tab
268-
jeditor_logger.info(f"build_tab_menu.py add code diff compare tab ui_we_want_to_set: {ui_we_want_to_set}")
269-
# 在主編輯器中新增程式碼差異比較分頁
270-
# Add a code diff comparison tab
271-
ui_we_want_to_set.tab_widget.addTab(
272-
DiffViewerWidget(), # 建立程式碼比對元件 / Create Code Diff Viewer widget
273-
f"{language_wrapper.language_word_dict.get('tab_code_diff_viewer_tab_name')} "
274-
f"{ui_we_want_to_set.tab_widget.count()}"
275-
)

0 commit comments

Comments
 (0)