jadio-code 0.0.1__py3-none-any.whl
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.
- jadio_code/Backend/main/code_aigent/aigent_bottombox_core.py +0 -0
- jadio_code/Backend/main/code_aigent/aigent_chatwindow_core.py +0 -0
- jadio_code/Backend/main/code_aigent/aigent_core.py +0 -0
- jadio_code/Backend/main/code_aigent/aigent_sidebar_core.py +0 -0
- jadio_code/Backend/main/code_aigent/aigent_terminal_core.py +0 -0
- jadio_code/Backend/main/code_aigent/aigent_topbox_core.py +0 -0
- jadio_code/Backend/main/editor/editor_core.py +0 -0
- jadio_code/Backend/main/explorer/exploer_sidebar_core.py +0 -0
- jadio_code/Backend/main/explorer/explorer_core.py +0 -0
- jadio_code/Backend/main/terminal/terminal_core.py +0 -0
- jadio_code/Backend/sub/code_doctor/code_doctor_core.py +0 -0
- jadio_code/Backend/sub/help/help_core.py +0 -0
- jadio_code/Backend/sub/lan/lan_core.py +0 -0
- jadio_code/Backend/sub/llm/llm_core.py +0 -0
- jadio_code/Backend/sub/plugins/plugins_core.py +0 -0
- jadio_code/Backend/sub/settings/settings_core.py +0 -0
- jadio_code/UI/__init__.py +0 -0
- jadio_code/UI/icons/bell.svg +4 -0
- jadio_code/UI/icons/bolt.svg +3 -0
- jadio_code/UI/icons/check.svg +3 -0
- jadio_code/UI/icons/clipboard.svg +4 -0
- jadio_code/UI/icons/clock.svg +5 -0
- jadio_code/UI/icons/cloud.svg +3 -0
- jadio_code/UI/icons/down.svg +3 -0
- jadio_code/UI/icons/download.svg +5 -0
- jadio_code/UI/icons/explorer.svg +4 -0
- jadio_code/UI/icons/eye.svg +4 -0
- jadio_code/UI/icons/folder.svg +3 -0
- jadio_code/UI/icons/folder2.svg +4 -0
- jadio_code/UI/icons/glass.svg +4 -0
- jadio_code/UI/icons/globe.svg +5 -0
- jadio_code/UI/icons/grid.svg +5 -0
- jadio_code/UI/icons/idk.svg +4 -0
- jadio_code/UI/icons/info.svg +5 -0
- jadio_code/UI/icons/left.svg +3 -0
- jadio_code/UI/icons/lock.svg +5 -0
- jadio_code/UI/icons/lock2.svg +5 -0
- jadio_code/UI/icons/message.svg +4 -0
- jadio_code/UI/icons/net.svg +12 -0
- jadio_code/UI/icons/pencil.svg +4 -0
- jadio_code/UI/icons/play.svg +4 -0
- jadio_code/UI/icons/plus.svg +8 -0
- jadio_code/UI/icons/right.svg +3 -0
- jadio_code/UI/icons/robot.svg +6 -0
- jadio_code/UI/icons/split.svg +4 -0
- jadio_code/UI/icons/star.svg +3 -0
- jadio_code/UI/icons/stop.svg +4 -0
- jadio_code/UI/icons/tabs.svg +5 -0
- jadio_code/UI/icons/terminal.svg +5 -0
- jadio_code/UI/icons/up.svg +3 -0
- jadio_code/UI/icons/upload.svg +5 -0
- jadio_code/UI/icons/user.svg +4 -0
- jadio_code/UI/icons/warning.svg +5 -0
- jadio_code/UI/icons/x.svg +4 -0
- jadio_code/UI/main.py +101 -0
- jadio_code/UI/mainwindows/__init__.py +0 -0
- jadio_code/UI/mainwindows/code_aigent/__init__.py +0 -0
- jadio_code/UI/mainwindows/code_aigent/aigent_controller.py +114 -0
- jadio_code/UI/mainwindows/code_aigent/aigent_menu.py +91 -0
- jadio_code/UI/mainwindows/code_aigent/aigent_sidebar.py +59 -0
- jadio_code/UI/mainwindows/code_aigent/aigentvision.md +315 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/__init__.py +0 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/bottombox_chat.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/bottombox_context.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/bottombox_controller.py +176 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/bottombox_settings.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/bottombox/bottombox_terminal.py +11 -0
- jadio_code/UI/mainwindows/code_aigent/chatwindow/__init__.py +0 -0
- jadio_code/UI/mainwindows/code_aigent/chatwindow/aigent_chat_controller.py +28 -0
- jadio_code/UI/mainwindows/code_aigent/chatwindow/aigent_summary.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/__init__.py +0 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/topbox_context.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/topbox_controller.py +93 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/topbox_lan.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/topbox_modelsettings.py +9 -0
- jadio_code/UI/mainwindows/code_aigent/topbox/topbox_tools.py +9 -0
- jadio_code/UI/mainwindows/editor/__init__.py +0 -0
- jadio_code/UI/mainwindows/editor/editor_code.py +14 -0
- jadio_code/UI/mainwindows/editor/editor_controller.py +28 -0
- jadio_code/UI/mainwindows/editor/editor_tabs.py +17 -0
- jadio_code/UI/mainwindows/editor/editor_topmenu.py +30 -0
- jadio_code/UI/mainwindows/explorer/__init__.py +0 -0
- jadio_code/UI/mainwindows/explorer/explorer_controller.py +62 -0
- jadio_code/UI/mainwindows/explorer/explorer_menu.py +91 -0
- jadio_code/UI/mainwindows/explorer/explorer_sidebar.py +57 -0
- jadio_code/UI/mainwindows/terminal/__init__.py +0 -0
- jadio_code/UI/mainwindows/terminal/terminal_controller.py +73 -0
- jadio_code/UI/mainwindows/terminal/terminal_menu.py +31 -0
- jadio_code/UI/mainwindows/terminal/terminal_shells.py +18 -0
- jadio_code/UI/mainwindows/terminal/terminal_window.py +15 -0
- jadio_code/UI/menubar.py +100 -0
- jadio_code/UI/styles.py +304 -0
- jadio_code/UI/submodules/__init__.py +0 -0
- jadio_code/UI/submodules/help/__init__.py +0 -0
- jadio_code/UI/submodules/help/help_backend.py +0 -0
- jadio_code/UI/submodules/help/help_window.py +0 -0
- jadio_code/UI/submodules/llm/__init__.py +0 -0
- jadio_code/UI/submodules/llm/llm_backend.py +0 -0
- jadio_code/UI/submodules/llm/llm_window.py +0 -0
- jadio_code/UI/submodules/settings/__init__.py +0 -0
- jadio_code/UI/submodules/settings/settings_backend.py +0 -0
- jadio_code/UI/submodules/settings/settings_window.py +0 -0
- jadio_code/__init__.py +2 -0
- jadio_code-0.0.1.dist-info/METADATA +201 -0
- jadio_code-0.0.1.dist-info/RECORD +108 -0
- jadio_code-0.0.1.dist-info/WHEEL +4 -0
- jadio_code-0.0.1.dist-info/entry_points.txt +2 -0
- jadio_code-0.0.1.dist-info/licenses/license.md +0 -0
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="16" y="16" width="32" height="40" rx="4" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<rect x="24" y="12" width="16" height="8" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
4
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="32" cy="32" r="16" stroke="#eee" stroke-width="3" fill="none"></circle>
|
3
|
+
<line x1="32" y1="32" x2="40" y2="24" stroke="#eee" stroke-width="3"></line>
|
4
|
+
<line x1="32" y1="32" x2="32" y2="20" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<line x1="32" y1="12" x2="32" y2="44" stroke="#eee" stroke-width="3"></line>
|
3
|
+
<polyline points="20,32 32,44 44,32" stroke="#eee" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"></polyline>
|
4
|
+
<line x1="16" y1="52" x2="48" y2="52" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<rect x="12" y="8" width="40" height="48" rx="4" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<path d="M20 16h24M20 24h24M20 32h24M20 40h16" stroke="#eee" stroke-width="2" stroke-linecap="round"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path d="M10 24h44v22a4 4 0 01-4 4H14a4 4 0 01-4-4V24z" stroke="#eee" stroke-width="3" fill="none"></path>
|
3
|
+
<path d="M10 24l10-8h12l6 8" stroke="#eee" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<circle cx="28" cy="28" r="12" stroke="#eee" stroke-width="2" fill="#333"></circle>
|
3
|
+
<line x1="38" y1="38" x2="50" y2="50" stroke="#eee" stroke-width="2" stroke-linecap="round"></line>
|
4
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="32" cy="32" r="20" stroke="#eee" stroke-width="3" fill="none"></circle>
|
3
|
+
<ellipse cx="32" cy="32" rx="12" ry="20" stroke="#eee" stroke-width="3" fill="none"></ellipse>
|
4
|
+
<line x1="12" y1="32" x2="52" y2="32" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="12" y="12" width="40" height="40" stroke="#eee" stroke-width="3" fill="none"></rect>
|
3
|
+
<line x1="32" y1="12" x2="32" y2="52" stroke="#eee" stroke-width="3"></line>
|
4
|
+
<line x1="12" y1="32" x2="52" y2="32" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<circle cx="32" cy="32" r="10" fill="#333" stroke="#eee" stroke-width="2"></circle>
|
3
|
+
<path d="M32 14v-6M32 56v-6M50 32h6M8 32h6M45.25 18.75l4.24-4.24M14.51 49.49l4.24-4.24M45.25 45.25l4.24 4.24M14.51 14.51l4.24 4.24" stroke="#eee" stroke-width="2" stroke-linecap="round"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="32" cy="32" r="16" stroke="#eee" stroke-width="3" fill="none"></circle>
|
3
|
+
<circle cx="32" cy="24" r="2" fill="#eee"></circle>
|
4
|
+
<line x1="32" y1="30" x2="32" y2="44" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="16" y="28" width="32" height="24" rx="4" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<path d="M24 28v-8a8 8 0 0116 0v8" stroke="#eee" stroke-width="2"></path>
|
4
|
+
<circle cx="32" cy="40" r="3" fill="#eee"></circle>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="20" y="28" width="24" height="20" rx="4" stroke="#eee" stroke-width="3" fill="none"></rect>
|
3
|
+
<path d="M24 28v-6a8 8 0 0116 0v6" stroke="#eee" stroke-width="3" fill="none" stroke-linecap="round"></path>
|
4
|
+
<circle cx="32" cy="38" r="2" fill="#eee"></circle>
|
5
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<path d="M12 12h40v28H22l-10 10V12z" fill="#333" stroke="#eee" stroke-width="2"></path>
|
3
|
+
<path d="M20 22h24M20 30h16" stroke="#eee" stroke-width="2" stroke-linecap="round"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="16" cy="16" r="3" fill="#eee"></circle>
|
3
|
+
<circle cx="32" cy="16" r="3" fill="#eee"></circle>
|
4
|
+
<circle cx="48" cy="16" r="3" fill="#eee"></circle>
|
5
|
+
<circle cx="16" cy="32" r="3" fill="#eee"></circle>
|
6
|
+
<circle cx="32" cy="32" r="3" fill="#eee"></circle>
|
7
|
+
<circle cx="48" cy="32" r="3" fill="#eee"></circle>
|
8
|
+
<circle cx="16" cy="48" r="3" fill="#eee"></circle>
|
9
|
+
<circle cx="32" cy="48" r="3" fill="#eee"></circle>
|
10
|
+
<circle cx="48" cy="48" r="3" fill="#eee"></circle>
|
11
|
+
<path d="M16 16L48 48M48 16L16 48M16 32L48 32M32 16L32 48M16 16L48 16M16 48L48 48" stroke="#eee" stroke-width="2"></path>
|
12
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<path d="M45 19L23 41l-6 2 2-6 22-22 6 6z" fill="#333" stroke="#eee" stroke-width="2"></path>
|
3
|
+
<path d="M39 13l6 6" stroke="#eee" stroke-width="2" stroke-linecap="round"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="32" cy="32" r="28" fill="#333" stroke="#eee" stroke-width="2"></circle>
|
3
|
+
<circle cx="32" cy="32" r="4" fill="#eee"></circle>
|
4
|
+
<line x1="32" y1="36" x2="32" y2="48" stroke="#eee" stroke-width="2"></line>
|
5
|
+
<line x1="32" y1="16" x2="32" y2="28" stroke="#eee" stroke-width="2"></line>
|
6
|
+
<line x1="36" y1="32" x2="48" y2="32" stroke="#eee" stroke-width="2"></line>
|
7
|
+
<line x1="16" y1="32" x2="28" y2="32" stroke="#eee" stroke-width="2"></line>
|
8
|
+
</svg>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="16" y="20" width="32" height="24" rx="4" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<circle cx="24" cy="32" r="3" fill="#eee"></circle>
|
4
|
+
<circle cx="40" cy="32" r="3" fill="#eee"></circle>
|
5
|
+
<line x1="32" y1="12" x2="32" y2="20" stroke="#eee" stroke-width="2"></line>
|
6
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="12" y="16" width="40" height="32" stroke="#eee" stroke-width="3" fill="none"></rect>
|
3
|
+
<line x1="32" y1="16" x2="32" y2="48" stroke="#eee" stroke-width="3"></line>
|
4
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<rect x="12" y="12" width="40" height="40" rx="8" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<rect x="22" y="22" width="20" height="20" fill="#eee"></rect>
|
4
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<rect x="10" y="20" width="44" height="24" rx="4" stroke="#eee" stroke-width="3" fill="none"></rect>
|
3
|
+
<line x1="22" y1="20" x2="22" y2="44" stroke="#eee" stroke-width="3"></line>
|
4
|
+
<line x1="36" y1="20" x2="36" y2="44" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="none">
|
2
|
+
<rect x="8" y="12" width="48" height="40" rx="4" fill="#333" stroke="#eee" stroke-width="2"></rect>
|
3
|
+
<path d="M16 24l8 8-8 8" stroke="#eee" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
4
|
+
<path d="M32 40h16" stroke="#eee" stroke-width="2" stroke-linecap="round"></path>
|
5
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<line x1="32" y1="52" x2="32" y2="20" stroke="#eee" stroke-width="3"></line>
|
3
|
+
<polyline points="20,32 32,20 44,32" stroke="#eee" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"></polyline>
|
4
|
+
<line x1="16" y1="12" x2="48" y2="12" stroke="#eee" stroke-width="3"></line>
|
5
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<circle cx="32" cy="24" r="8" fill="#333" stroke="#eee" stroke-width="2"></circle>
|
3
|
+
<path d="M20 44a12 12 0 0124 0v4H20v-4z" fill="#333" stroke="#eee" stroke-width="2"></path>
|
4
|
+
</svg>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<polygon points="32,12 56,52 8,52" fill="#333" stroke="#eee" stroke-width="2" stroke-linejoin="round"></polygon>
|
3
|
+
<line x1="32" y1="24" x2="32" y2="36" stroke="#eee" stroke-width="2" stroke-linecap="round"></line>
|
4
|
+
<circle cx="32" cy="42" r="2" fill="#eee"></circle>
|
5
|
+
</svg>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="150" height="150" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<line x1="16" y1="16" x2="48" y2="48" stroke="#eee" stroke-width="4" stroke-linecap="round"></line>
|
3
|
+
<line x1="48" y1="16" x2="16" y2="48" stroke="#eee" stroke-width="4" stroke-linecap="round"></line>
|
4
|
+
</svg>
|
jadio_code/UI/main.py
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
import sys
|
2
|
+
import os
|
3
|
+
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QSplitter
|
4
|
+
from PyQt6.QtCore import Qt
|
5
|
+
|
6
|
+
# Add the current directory to Python path to fix imports
|
7
|
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
8
|
+
|
9
|
+
# IMPORT YOUR MODULES
|
10
|
+
from mainwindows.explorer.explorer_controller import ExplorerController
|
11
|
+
from mainwindows.editor.editor_controller import EditorController
|
12
|
+
from mainwindows.terminal.terminal_controller import TerminalController
|
13
|
+
from mainwindows.code_aigent.aigent_controller import AigentController
|
14
|
+
from menubar import MenuBar
|
15
|
+
from styles import Styles
|
16
|
+
|
17
|
+
class MainWindow(QMainWindow):
|
18
|
+
def __init__(self):
|
19
|
+
super().__init__()
|
20
|
+
self.setWindowTitle("JADIO CODE")
|
21
|
+
self.resize(1400, 900)
|
22
|
+
self.setMinimumSize(1200, 700)
|
23
|
+
|
24
|
+
# Apply centralized styles
|
25
|
+
self.setStyleSheet(Styles.get_complete_stylesheet())
|
26
|
+
|
27
|
+
# Set the menu bar
|
28
|
+
self.setMenuBar(MenuBar(self))
|
29
|
+
|
30
|
+
# Central widget
|
31
|
+
central_widget = QWidget()
|
32
|
+
self.setCentralWidget(central_widget)
|
33
|
+
|
34
|
+
# Main horizontal layout
|
35
|
+
main_layout = QHBoxLayout()
|
36
|
+
main_layout.setContentsMargins(0, 0, 0, 0)
|
37
|
+
main_layout.setSpacing(0)
|
38
|
+
central_widget.setLayout(main_layout)
|
39
|
+
|
40
|
+
# ================================================
|
41
|
+
# LEFT SIDE: Main Content Area
|
42
|
+
# ================================================
|
43
|
+
left_splitter = QSplitter(Qt.Orientation.Horizontal)
|
44
|
+
|
45
|
+
# 1. Explorer (narrow sidebar)
|
46
|
+
explorer = ExplorerController()
|
47
|
+
explorer.setMinimumWidth(200)
|
48
|
+
explorer.setMaximumWidth(400)
|
49
|
+
left_splitter.addWidget(explorer)
|
50
|
+
|
51
|
+
# 2. Editor + Terminal Area (main content)
|
52
|
+
editor_terminal_splitter = QSplitter(Qt.Orientation.Vertical)
|
53
|
+
|
54
|
+
# Editor (STRETCHES VERTICALLY)
|
55
|
+
editor = EditorController()
|
56
|
+
editor_terminal_splitter.addWidget(editor)
|
57
|
+
|
58
|
+
# Terminal (fixed height)
|
59
|
+
terminal = TerminalController()
|
60
|
+
terminal.setMinimumHeight(150)
|
61
|
+
terminal.setMaximumHeight(300)
|
62
|
+
editor_terminal_splitter.addWidget(terminal)
|
63
|
+
|
64
|
+
# Set proportions: Editor gets most space, Terminal fixed
|
65
|
+
editor_terminal_splitter.setSizes([700, 200])
|
66
|
+
editor_terminal_splitter.setStretchFactor(0, 1) # Editor stretches
|
67
|
+
editor_terminal_splitter.setStretchFactor(1, 0) # Terminal fixed
|
68
|
+
|
69
|
+
left_splitter.addWidget(editor_terminal_splitter)
|
70
|
+
|
71
|
+
# Set Explorer vs Editor+Terminal proportions
|
72
|
+
left_splitter.setSizes([250, 900])
|
73
|
+
left_splitter.setStretchFactor(0, 0) # Explorer fixed
|
74
|
+
left_splitter.setStretchFactor(1, 1) # Editor area stretches
|
75
|
+
|
76
|
+
# ================================================
|
77
|
+
# RIGHT SIDE: AIGent Panel (STRETCHES)
|
78
|
+
# ================================================
|
79
|
+
aigent_splitter = QSplitter(Qt.Orientation.Horizontal)
|
80
|
+
|
81
|
+
# AIGent Panel (can stretch)
|
82
|
+
agent_panel = AigentController()
|
83
|
+
agent_panel.setMinimumWidth(300)
|
84
|
+
|
85
|
+
# Add both to the horizontal splitter
|
86
|
+
aigent_splitter.addWidget(left_splitter)
|
87
|
+
aigent_splitter.addWidget(agent_panel)
|
88
|
+
|
89
|
+
# Set proportions: Main content 70%, AIGent 30%
|
90
|
+
aigent_splitter.setSizes([1000, 400])
|
91
|
+
aigent_splitter.setStretchFactor(0, 1) # Main content stretches
|
92
|
+
aigent_splitter.setStretchFactor(1, 1) # AIGent ALSO stretches
|
93
|
+
|
94
|
+
# Add to main layout
|
95
|
+
main_layout.addWidget(aigent_splitter)
|
96
|
+
|
97
|
+
if __name__ == "__main__":
|
98
|
+
app = QApplication(sys.argv)
|
99
|
+
window = MainWindow()
|
100
|
+
window.show()
|
101
|
+
sys.exit(app.exec())
|
File without changes
|
File without changes
|
@@ -0,0 +1,114 @@
|
|
1
|
+
from PyQt6.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QTextEdit
|
2
|
+
from .aigent_menu import AigentMenu
|
3
|
+
from .topbox.topbox_controller import TopBox
|
4
|
+
from .chatwindow.aigent_chat_controller import ChatWindow
|
5
|
+
from .bottombox.bottombox_controller import BottomBox
|
6
|
+
from .aigent_sidebar import AigentSidebar
|
7
|
+
|
8
|
+
|
9
|
+
class AigentController(QWidget):
|
10
|
+
"""
|
11
|
+
VS Code style AIGent panel - with flexible chat and expandable terminal
|
12
|
+
"""
|
13
|
+
|
14
|
+
def __init__(self, parent=None):
|
15
|
+
super().__init__(parent)
|
16
|
+
|
17
|
+
# Set background color to distinguish the panel
|
18
|
+
self.setStyleSheet("""
|
19
|
+
AigentController {
|
20
|
+
background-color: #1e1e1e;
|
21
|
+
border-left: 1px solid #333;
|
22
|
+
}
|
23
|
+
""")
|
24
|
+
|
25
|
+
# Track terminal state
|
26
|
+
self.terminal_expanded = False
|
27
|
+
|
28
|
+
# Main horizontal layout: Content + Sidebar
|
29
|
+
main_layout = QHBoxLayout()
|
30
|
+
main_layout.setContentsMargins(0, 0, 0, 0)
|
31
|
+
main_layout.setSpacing(0)
|
32
|
+
|
33
|
+
# =============================================
|
34
|
+
# LEFT: Main AIGent Content Area
|
35
|
+
# =============================================
|
36
|
+
content_widget = QWidget()
|
37
|
+
self.content_layout = QVBoxLayout()
|
38
|
+
self.content_layout.setContentsMargins(0, 0, 0, 0)
|
39
|
+
self.content_layout.setSpacing(0)
|
40
|
+
|
41
|
+
# 1. AIGent Menu (top bar) - Fixed height
|
42
|
+
self.menu = AigentMenu()
|
43
|
+
self.menu.setFixedHeight(40)
|
44
|
+
self.content_layout.addWidget(self.menu)
|
45
|
+
|
46
|
+
# 2. TopBox (compact) - Fixed height
|
47
|
+
self.topbox = TopBox()
|
48
|
+
self.topbox.setFixedHeight(120)
|
49
|
+
self.content_layout.addWidget(self.topbox)
|
50
|
+
|
51
|
+
# 3. ChatWindow (FLEXIBLE) - Gets remaining space
|
52
|
+
self.chatwindow = ChatWindow()
|
53
|
+
self.content_layout.addWidget(self.chatwindow, stretch=1) # FLEXIBLE!
|
54
|
+
|
55
|
+
# 4. Expandable Terminal (hidden by default)
|
56
|
+
self.expanded_terminal = QTextEdit()
|
57
|
+
self.expanded_terminal.setStyleSheet("""
|
58
|
+
QTextEdit {
|
59
|
+
background-color: #1e1e1e;
|
60
|
+
color: #cccccc;
|
61
|
+
border: 1px solid #3e3e42;
|
62
|
+
border-radius: 4px;
|
63
|
+
font-family: 'Consolas', monospace;
|
64
|
+
font-size: 12px;
|
65
|
+
padding: 8px;
|
66
|
+
}
|
67
|
+
""")
|
68
|
+
self.expanded_terminal.setPlaceholderText("Expanded AIGent Terminal...")
|
69
|
+
self.expanded_terminal.hide() # Hidden by default
|
70
|
+
self.content_layout.addWidget(self.expanded_terminal)
|
71
|
+
|
72
|
+
# 5. BottomBox (FIXED height) - Input area
|
73
|
+
self.bottombox = BottomBox()
|
74
|
+
self.bottombox.setFixedHeight(200) # Fixed height
|
75
|
+
self.content_layout.addWidget(self.bottombox)
|
76
|
+
|
77
|
+
content_widget.setLayout(self.content_layout)
|
78
|
+
|
79
|
+
# =============================================
|
80
|
+
# RIGHT: AIGent Sidebar
|
81
|
+
# =============================================
|
82
|
+
self.sidebar = AigentSidebar()
|
83
|
+
self.sidebar.setFixedWidth(48)
|
84
|
+
|
85
|
+
# Add both to main layout
|
86
|
+
main_layout.addWidget(content_widget, stretch=1)
|
87
|
+
main_layout.addWidget(self.sidebar)
|
88
|
+
|
89
|
+
self.setLayout(main_layout)
|
90
|
+
|
91
|
+
# Connect expand terminal button
|
92
|
+
self.connect_expand_button()
|
93
|
+
|
94
|
+
def connect_expand_button(self):
|
95
|
+
"""Connect the expand terminal button from BottomBox"""
|
96
|
+
# We'll connect this after BottomBox is created
|
97
|
+
if hasattr(self.bottombox, 'expand_button'):
|
98
|
+
self.bottombox.expand_button.clicked.disconnect() # Remove old connection
|
99
|
+
self.bottombox.expand_button.clicked.connect(self.toggle_terminal)
|
100
|
+
|
101
|
+
def toggle_terminal(self):
|
102
|
+
"""Toggle the expanded terminal"""
|
103
|
+
if self.terminal_expanded:
|
104
|
+
# Close terminal
|
105
|
+
self.expanded_terminal.hide()
|
106
|
+
self.expanded_terminal.setFixedHeight(0)
|
107
|
+
self.bottombox.expand_button.setText("↗\nExpand\nTerminal")
|
108
|
+
self.terminal_expanded = False
|
109
|
+
else:
|
110
|
+
# Open terminal
|
111
|
+
self.expanded_terminal.show()
|
112
|
+
self.expanded_terminal.setFixedHeight(250) # 250px as requested
|
113
|
+
self.bottombox.expand_button.setText("↙\nClose\nTerminal")
|
114
|
+
self.terminal_expanded = True
|
@@ -0,0 +1,91 @@
|
|
1
|
+
from PyQt6.QtWidgets import QWidget, QHBoxLayout, QPushButton
|
2
|
+
from PyQt6.QtCore import Qt
|
3
|
+
from styles import Styles
|
4
|
+
|
5
|
+
class AigentMenu(QWidget):
|
6
|
+
"""
|
7
|
+
Collapsible AIGent menu - starts collapsed, expands to show all buttons
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init__(self, parent=None):
|
11
|
+
super().__init__(parent)
|
12
|
+
|
13
|
+
# Set fixed height and apply centralized styles
|
14
|
+
self.setFixedHeight(40)
|
15
|
+
self.setStyleSheet(Styles.get_menu_bar_style())
|
16
|
+
|
17
|
+
# Initially collapsed state
|
18
|
+
self.expanded = False
|
19
|
+
layout = QHBoxLayout()
|
20
|
+
layout.setContentsMargins(4, 4, 4, 4)
|
21
|
+
layout.setSpacing(2)
|
22
|
+
self.create_collapsed_layout(layout)
|
23
|
+
self.setLayout(layout)
|
24
|
+
|
25
|
+
def create_collapsed_layout(self, layout):
|
26
|
+
"""Create the collapsed state with just the main toggle button"""
|
27
|
+
self.clear_layout(layout)
|
28
|
+
|
29
|
+
# Main toggle button
|
30
|
+
self.toggle_button = QPushButton("🤖 ▼")
|
31
|
+
self.toggle_button.clicked.connect(self.toggle_menu)
|
32
|
+
layout.addWidget(self.toggle_button)
|
33
|
+
layout.addStretch()
|
34
|
+
|
35
|
+
def create_expanded_layout(self, layout):
|
36
|
+
"""Create the expanded state with all AIGent buttons"""
|
37
|
+
self.clear_layout(layout)
|
38
|
+
|
39
|
+
# Toggle button (now shows up arrow)
|
40
|
+
self.toggle_button = QPushButton("🤖 ▲")
|
41
|
+
self.toggle_button.clicked.connect(self.toggle_menu)
|
42
|
+
layout.addWidget(self.toggle_button)
|
43
|
+
|
44
|
+
# All the AIGent action buttons
|
45
|
+
buttons_config = [
|
46
|
+
("🔄", self.handle_refresh),
|
47
|
+
("💬", self.handle_new_chat),
|
48
|
+
("📚", self.handle_old_chats),
|
49
|
+
("⚙️", self.handle_settings),
|
50
|
+
("❓", self.handle_help)
|
51
|
+
]
|
52
|
+
|
53
|
+
for label, handler in buttons_config:
|
54
|
+
btn = QPushButton(label)
|
55
|
+
btn.clicked.connect(handler)
|
56
|
+
layout.addWidget(btn)
|
57
|
+
|
58
|
+
layout.addStretch()
|
59
|
+
|
60
|
+
def toggle_menu(self):
|
61
|
+
"""Toggle between collapsed and expanded states"""
|
62
|
+
self.expanded = not self.expanded
|
63
|
+
layout = self.layout()
|
64
|
+
|
65
|
+
if self.expanded:
|
66
|
+
self.create_expanded_layout(layout)
|
67
|
+
else:
|
68
|
+
self.create_collapsed_layout(layout)
|
69
|
+
|
70
|
+
def clear_layout(self, layout):
|
71
|
+
"""Clear all widgets from layout"""
|
72
|
+
while layout.count():
|
73
|
+
child = layout.takeAt(0)
|
74
|
+
if child.widget():
|
75
|
+
child.widget().deleteLater()
|
76
|
+
|
77
|
+
# Button handlers
|
78
|
+
def handle_refresh(self):
|
79
|
+
print("Refresh button clicked.")
|
80
|
+
|
81
|
+
def handle_new_chat(self):
|
82
|
+
print("New Chat button clicked.")
|
83
|
+
|
84
|
+
def handle_old_chats(self):
|
85
|
+
print("Old Chats button clicked.")
|
86
|
+
|
87
|
+
def handle_settings(self):
|
88
|
+
print("Settings button clicked.")
|
89
|
+
|
90
|
+
def handle_help(self):
|
91
|
+
print("Help button clicked.")
|