jadeui 1.2.1__tar.gz → 2.3.2__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 (74) hide show
  1. {jadeui-1.2.1 → jadeui-2.3.2}/.gitignore +5 -0
  2. jadeui-2.3.2/PKG-INFO +250 -0
  3. jadeui-2.3.2/README.md +213 -0
  4. {jadeui-1.2.1 → jadeui-2.3.2}/examples/README.md +3 -0
  5. {jadeui-1.2.1 → jadeui-2.3.2}/examples/backdrop_demo/README.md +2 -8
  6. {jadeui-1.2.1 → jadeui-2.3.2}/examples/calculator/README.md +4 -9
  7. {jadeui-1.2.1 → jadeui-2.3.2}/examples/custom_template/README.md +2 -8
  8. jadeui-2.3.2/examples/dialog_notification_demo/README.md +130 -0
  9. {jadeui-1.2.1 → jadeui-2.3.2}/examples/router_demo/README.md +2 -8
  10. jadeui-2.3.2/examples/v23_demo/README.md +19 -0
  11. {jadeui-1.2.1 → jadeui-2.3.2}/examples/vue_app/README.md +2 -8
  12. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/__init__.py +34 -4
  13. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/app.py +212 -14
  14. jadeui-2.3.2/jadeui/cli/__init__.py +5 -0
  15. jadeui-2.3.2/jadeui/cli/__main__.py +5 -0
  16. jadeui-2.3.2/jadeui/cli/build.py +424 -0
  17. jadeui-2.3.2/jadeui/cli/doctor.py +139 -0
  18. jadeui-2.3.2/jadeui/cli/init.py +135 -0
  19. jadeui-2.3.2/jadeui/cli/japk.py +92 -0
  20. jadeui-2.3.2/jadeui/cli/main.py +398 -0
  21. jadeui-2.3.2/jadeui/cli/project.py +193 -0
  22. jadeui-2.3.2/jadeui/cli/run.py +32 -0
  23. jadeui-2.3.2/jadeui/clipboard.py +71 -0
  24. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/core/__init__.py +11 -0
  25. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/core/dll.py +252 -13
  26. jadeui-2.3.2/jadeui/core/types.py +468 -0
  27. jadeui-2.3.2/jadeui/dialog.py +488 -0
  28. jadeui-2.3.2/jadeui/downloader.py +622 -0
  29. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/events.py +55 -3
  30. jadeui-2.3.2/jadeui/hotkey.py +199 -0
  31. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/ipc.py +71 -4
  32. jadeui-2.3.2/jadeui/japk.py +173 -0
  33. jadeui-2.3.2/jadeui/menu.py +340 -0
  34. jadeui-2.3.2/jadeui/notification.py +486 -0
  35. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/router.py +9 -8
  36. jadeui-2.3.2/jadeui/scaffolds/__init__.py +1 -0
  37. jadeui-2.3.2/jadeui/scaffolds/html/.gitignore +9 -0
  38. jadeui-2.3.2/jadeui/scaffolds/html/README.md +28 -0
  39. jadeui-2.3.2/jadeui/scaffolds/html/app.py +16 -0
  40. jadeui-2.3.2/jadeui/scaffolds/html/pyproject.toml +12 -0
  41. jadeui-2.3.2/jadeui/scaffolds/html/web/index.html +82 -0
  42. jadeui-2.3.2/jadeui/scaffolds/react/.gitignore +12 -0
  43. jadeui-2.3.2/jadeui/scaffolds/react/README.md +25 -0
  44. jadeui-2.3.2/jadeui/scaffolds/react/app.py +23 -0
  45. jadeui-2.3.2/jadeui/scaffolds/react/frontend/index.html +12 -0
  46. jadeui-2.3.2/jadeui/scaffolds/react/frontend/package.json +19 -0
  47. jadeui-2.3.2/jadeui/scaffolds/react/frontend/src/App.jsx +36 -0
  48. jadeui-2.3.2/jadeui/scaffolds/react/frontend/src/main.jsx +9 -0
  49. jadeui-2.3.2/jadeui/scaffolds/react/frontend/vite.config.js +12 -0
  50. jadeui-2.3.2/jadeui/scaffolds/react/pyproject.toml +12 -0
  51. jadeui-2.3.2/jadeui/scaffolds/vue/.gitignore +12 -0
  52. jadeui-2.3.2/jadeui/scaffolds/vue/README.md +27 -0
  53. jadeui-2.3.2/jadeui/scaffolds/vue/app.py +23 -0
  54. jadeui-2.3.2/jadeui/scaffolds/vue/frontend/index.html +12 -0
  55. jadeui-2.3.2/jadeui/scaffolds/vue/frontend/package.json +18 -0
  56. jadeui-2.3.2/jadeui/scaffolds/vue/frontend/src/App.vue +47 -0
  57. jadeui-2.3.2/jadeui/scaffolds/vue/frontend/src/main.js +4 -0
  58. jadeui-2.3.2/jadeui/scaffolds/vue/frontend/vite.config.js +12 -0
  59. jadeui-2.3.2/jadeui/scaffolds/vue/pyproject.toml +12 -0
  60. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/server.py +76 -34
  61. jadeui-2.3.2/jadeui/storage.py +197 -0
  62. jadeui-2.3.2/jadeui/system.py +442 -0
  63. jadeui-2.3.2/jadeui/tray.py +249 -0
  64. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/window.py +536 -84
  65. {jadeui-1.2.1 → jadeui-2.3.2}/pyproject.toml +21 -5
  66. jadeui-1.2.1/PKG-INFO +0 -156
  67. jadeui-1.2.1/README.md +0 -121
  68. jadeui-1.2.1/jadeui/core/types.py +0 -216
  69. jadeui-1.2.1/jadeui/downloader.py +0 -405
  70. {jadeui-1.2.1 → jadeui-2.3.2}/examples/simple/README.md +0 -0
  71. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/core/lifecycle.py +0 -0
  72. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/exceptions.py +0 -0
  73. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/templates/__init__.py +0 -0
  74. {jadeui-1.2.1 → jadeui-2.3.2}/jadeui/utils.py +0 -0
@@ -25,6 +25,7 @@ venv/
25
25
  ENV/
26
26
  env/
27
27
  .venv/
28
+ .venv-*/
28
29
 
29
30
  # IDE
30
31
  .idea/
@@ -46,6 +47,7 @@ htmlcov/
46
47
  # Build
47
48
  *.manifest
48
49
  *.spec
50
+ .tmp_jadeview_*/
49
51
 
50
52
  # DLL (development only, included in wheel)
51
53
  jadeui/dll/
@@ -66,3 +68,6 @@ Thumbs.db
66
68
  # uv
67
69
  .uv/
68
70
 
71
+
72
+ # vue_app build output (generated by `npm run build`)
73
+ examples/vue_app/web/
jadeui-2.3.2/PKG-INFO ADDED
@@ -0,0 +1,250 @@
1
+ Metadata-Version: 2.4
2
+ Name: jadeui
3
+ Version: 2.3.2
4
+ Summary: Python SDK for JadeView - Create desktop applications with WebView
5
+ Project-URL: Homepage, https://jade.run
6
+ Project-URL: Documentation, https://jade.run/python-sdk
7
+ Project-URL: Repository, https://github.com/ArcletProject/jadeui
8
+ Project-URL: Issues, https://github.com/ArcletProject/jadeui/issues
9
+ Author: JadeView Team
10
+ License: MIT
11
+ Keywords: desktop,gui,jadeui,jadeview,ui,webview
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.7
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Desktop Environment
26
+ Classifier: Topic :: Software Development :: User Interfaces
27
+ Requires-Python: >=3.7
28
+ Provides-Extra: dev
29
+ Requires-Dist: build>=1.0; extra == 'dev'
30
+ Requires-Dist: imageio; extra == 'dev'
31
+ Requires-Dist: mypy>=1.0; extra == 'dev'
32
+ Requires-Dist: pytest>=7.0; extra == 'dev'
33
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
34
+ Provides-Extra: pyinstaller
35
+ Requires-Dist: pyinstaller>=6.0; extra == 'pyinstaller'
36
+ Description-Content-Type: text/markdown
37
+
38
+ <p align="center">
39
+ <img src="assets/light.svg" alt="JadeUI Logo" width="120">
40
+ </p>
41
+
42
+ <h1 align="center">JadeUI</h1>
43
+
44
+ <p align="center">
45
+ <strong>Python SDK for JadeView - 使用 Web 技术构建桌面应用</strong>
46
+ </p>
47
+
48
+ <p align="center">
49
+ <a href="https://pypi.org/project/jadeui/"><img src="https://img.shields.io/pypi/v/jadeui.svg" alt="PyPI version"></a>
50
+ <a href="https://pypi.org/project/jadeui/"><img src="https://img.shields.io/pypi/pyversions/jadeui.svg" alt="Python versions"></a>
51
+ </p>
52
+
53
+ ---
54
+
55
+ JadeUI 是 [JadeView](https://jade.run) 的 Python SDK,让你可以使用 Python + Web 技术构建现代桌面应用程序。
56
+
57
+ ## 特性
58
+
59
+ - **WebView 窗口** - 使用 HTML/CSS/JS 构建 UI
60
+ - **现代外观** - 支持 Windows 11 Mica/Acrylic 效果
61
+ - **主题切换** - Light/Dark/System 主题
62
+ - **IPC 通信** - Python 与前端双向通信
63
+ - **对话框 API** - 文件选择、消息框 (v1.3.0+)
64
+ - **通知 API** - Windows 原生桌面通知 (v1.3.0+)
65
+ - **系统托盘** - 托盘图标、提示与右键菜单 (v2.2.4+)
66
+ - **全局热键** - 应用在后台也能响应的快捷键 (v2.2.4+)
67
+ - **剪贴板 / 系统信息** - 剪贴板读写、显示器/语言/系统路径 (v2.2.4+)
68
+ - **窗口增强** - 缩放、任务栏进度/闪烁、DevTools、内容保护等 (v2.2.4+)
69
+ - **YAML 存储 / 系统集成** - 持久化存储、开机自启、文件图标、NTP 网络时间 (v2.3.0+)
70
+ - **窗口集成增强** - 不进任务栏、不抢焦点、窗口层级、HWND 反查窗口 ID (v2.3.0+)
71
+ - **打包体积** - 极小的依赖,打包后体积仅有8MB左右
72
+
73
+ > 本版本对应 JadeView 原生 **v2.3.0 (Build 26G02)**。从 2.2.4 升级的变更与实机验收结果详见 [docs/UPGRADE_v2.3.0.md](docs/UPGRADE_v2.3.0.md)。
74
+
75
+ ## 安装
76
+
77
+ ```bash
78
+ pip install jadeui
79
+ ```
80
+
81
+ ## CLI 快速开始
82
+
83
+ 安装后可使用统一命令行工具 `jadeui`:
84
+
85
+ ```bash
86
+ jadeui init my-app --frontend html # 也可选 vue / react
87
+ cd my-app
88
+ jadeui doctor # 检查 Python / DLL / Nuitka / Node+asar
89
+ jadeui run # 开发运行
90
+ jadeui japk # 前端打包为明文 app.japk(需 @electron/asar)
91
+ jadeui build # 宿主打包为 exe(默认 Nuitka)
92
+ jadeui build --packager pyinstaller # 可选 PyInstaller
93
+ ```
94
+
95
+ 常用子命令:`init` / `run` / `doctor` / `japk` / `build` / `download` / `clean`。
96
+
97
+ 旧入口 `jadeui-download`、`jadeui-clean` 仍然可用。
98
+
99
+ 项目元数据(可选)读 `pyproject.toml`:CLI 显式参数优先,其次 `[tool.jadeui]`,再回退 `[project].name`(例如 `jadeui build` 的默认输出名)。与 uv / conda 等共用同一份 `pyproject.toml` 时互不冲突——JadeUI 只使用 `[tool.jadeui]` 命名空间。
100
+
101
+ ## JadeView DLL 更新规则
102
+
103
+ JadeUI SDK 只会在已适配的 JadeView API 版本内自动选择最新构建号。例如 `2.3.0.26G02` 可以自动更新到同一 tag 下的后续 build,但不会自动跨到 `2.4` 或其它 release tag。
104
+
105
+ ```bash
106
+ jadeui download # 下载当前 SDK 适配版本的最新 build
107
+ jadeui download --build 26G02 # 固定下载指定 build
108
+ # 兼容旧命令:
109
+ jadeui-download
110
+ ```
111
+
112
+ 当前按 Python 解释器架构选择上游原生包:
113
+
114
+ - Windows: `x86` / `x64` / `arm64`,下载 `JadeView_win_{arch}_*.zip`,加载 `JadeView_{arch}.dll`
115
+
116
+ 跨 minor/major 的原生版本升级(如 `2.2` -> `2.3`)可能包含 ABI/API 变化,必须由 SDK 显式适配后再升级。
117
+
118
+ ## 快速开始
119
+
120
+ ### CLI 脚手架
121
+
122
+ ```bash
123
+ jadeui init my-app --frontend html
124
+ cd my-app
125
+ jadeui run
126
+ ```
127
+
128
+ ### 最简模式
129
+
130
+ ```python
131
+ from jadeui import Window
132
+
133
+ Window(title="Hello JadeUI", url="https://example.com").run()
134
+ ```
135
+
136
+ ### 本地应用(自动检测 web 目录)
137
+
138
+ ```python
139
+ from jadeui import Window
140
+
141
+ Window(title="My App").run() # 自动加载 web/index.html
142
+ ```
143
+
144
+ ### 完整模式(多窗口、全局事件)
145
+
146
+ ```python
147
+ from jadeui import JadeUIApp, Window
148
+
149
+ app = JadeUIApp()
150
+
151
+ @app.on_ready
152
+ def on_ready():
153
+ Window(title="Window 1", url="https://example.com").show()
154
+ Window(title="Window 2", url="https://google.com").show()
155
+
156
+ app.run()
157
+ ```
158
+
159
+ ## 示例项目
160
+
161
+ 查看 [examples](./examples) 目录获取完整示例:
162
+
163
+ | 示例 | 说明 |
164
+ |------|------|
165
+ | [simple](./examples/simple) | **最简示例** - 几行代码创建应用 |
166
+ | [calculator](./examples/calculator) | 基础计算器,展示窗口创建和 IPC 通信 |
167
+ | [backdrop_demo](./examples/backdrop_demo) | Windows 11 Mica/Acrylic 背景效果 |
168
+ | [router_demo](./examples/router_demo) | 内置路由系统实现多页面应用 |
169
+ | [custom_template](./examples/custom_template) | 自定义 HTML 模板和样式 |
170
+ | [vue_app](./examples/vue_app) | Vue.js + JadeUI 集成示例 |
171
+ | [dialog_notification_demo](./examples/dialog_notification_demo) | 对话框与桌面通知 (v1.3.0+) |
172
+ | [p3_demo](./examples/p3_demo) | **系统托盘 / 全局热键 / 剪贴板 / 系统信息 / 窗口增强** (v2.2.4+) |
173
+ | [v23_demo](./examples/v23_demo) | **YAML 存储 / 窗口层级 / 文件图标 / NTP / 拖拽事件** (v2.3.0+) |
174
+
175
+ ### 效果预览
176
+
177
+ | Simple | Calculator | Backdrop |
178
+ |:---:|:---:|:---:|
179
+ | ![Simple](assets/simple.png) | ![Calculator](assets/calculator_iiBxCxUko6.png) | ![Backdrop](assets/backdrop_demo.png) |
180
+
181
+ | Router | Custom Template | Vue App |
182
+ |:---:|:---:|:---:|
183
+ | ![Router](assets/router_demo.png) | ![Custom](assets/custom_demo.png) | ![Vue](assets/vueapp.png) |
184
+
185
+ ## API 文档
186
+
187
+ 完整文档请访问: https://jade.run/python-sdk
188
+
189
+ ## 前端资源包(JAPK)
190
+
191
+ JAPK 打包的是 **HTML/CSS/JS 等前端资源**(不是 Python exe)。官方说明见 [JAPK 文档](https://jade.run/docs/api/japk)。
192
+
193
+ | 方式 | 工具 | 说明 |
194
+ |------|------|------|
195
+ | 明文 ASAR 兼容包 | `jadeui japk`(底层 `@electron/asar`) | 开发/内部工具,命令行可用 |
196
+ | 混淆 / 签名包 | [JadePack](https://jade.run/jadepack) 桌面客户端 | **生产推荐**(签名包为 AES-256-GCM + Ed25519) |
197
+
198
+ ```bash
199
+ # 需先安装 Node.js,并执行: npm install -g @electron/asar
200
+ jadeui japk # 默认 web -> dist/app.japk
201
+ jadeui japk --src web -o dist/app.japk
202
+ ```
203
+
204
+ 运行时可用目录、`.japk` 路径或内存加载:
205
+
206
+ ```python
207
+ from jadeui import Window
208
+
209
+ Window(title="My App").run(japk="dist/app.japk")
210
+ ```
211
+
212
+ ## 打包发布(宿主 exe)
213
+
214
+ 默认使用 **Nuitka** 将 Python 宿主打包为独立可执行文件;也可用 PyInstaller:
215
+
216
+ ```bash
217
+ # Nuitka(推荐;onefile 建议使用 4.0rc7)
218
+ # pip install https://github.com/HG-ha/jadeui/raw/main/scripts/nuitka-4.0.rc7.zip
219
+ jadeui build app.py -o your_app
220
+
221
+ # 可选 PyInstaller
222
+ pip install jadeui[pyinstaller]
223
+ jadeui build app.py -o your_app --packager pyinstaller
224
+ ```
225
+
226
+ 兼容旧脚本:`python scripts/build.py your_app.py -o your_app`(内部转发到同一实现)。
227
+
228
+ ## 系统要求
229
+
230
+ - **操作系统**: Windows 10/11
231
+ - **Python**: 3.7+
232
+ - **Python 架构**: Windows 支持 x86 / x64 / arm64。JadeUI 会按 Python 解释器架构下载匹配的 JadeView 原生库。
233
+
234
+ > 官方 JadeView 暂未提供 Linux 原生库(仍在开发中),当前 SDK 仅支持 Windows。
235
+
236
+ ### 使用注意
237
+
238
+ - 单次 `jade.invoke` payload 建议不超过 `1000KB`。实测 `1023KB` 可用,但精确 `1MiB` payload 加上 IPC 封装后会超过 JadeView bridge 的消息上限并被拒绝;更大的数据应使用分片或文件传递。
239
+
240
+ ## 许可证
241
+
242
+ MIT License
243
+
244
+ ## 链接
245
+
246
+ - [Python SDK 文档](https://jade.run/python-sdk)
247
+ - [JadeView 官网](https://jade.run)
248
+ - [GitHub](https://github.com/HG-ha/Jadeui)
249
+ - [PyPI](https://pypi.org/project/jadeui/)
250
+
jadeui-2.3.2/README.md ADDED
@@ -0,0 +1,213 @@
1
+ <p align="center">
2
+ <img src="assets/light.svg" alt="JadeUI Logo" width="120">
3
+ </p>
4
+
5
+ <h1 align="center">JadeUI</h1>
6
+
7
+ <p align="center">
8
+ <strong>Python SDK for JadeView - 使用 Web 技术构建桌面应用</strong>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://pypi.org/project/jadeui/"><img src="https://img.shields.io/pypi/v/jadeui.svg" alt="PyPI version"></a>
13
+ <a href="https://pypi.org/project/jadeui/"><img src="https://img.shields.io/pypi/pyversions/jadeui.svg" alt="Python versions"></a>
14
+ </p>
15
+
16
+ ---
17
+
18
+ JadeUI 是 [JadeView](https://jade.run) 的 Python SDK,让你可以使用 Python + Web 技术构建现代桌面应用程序。
19
+
20
+ ## 特性
21
+
22
+ - **WebView 窗口** - 使用 HTML/CSS/JS 构建 UI
23
+ - **现代外观** - 支持 Windows 11 Mica/Acrylic 效果
24
+ - **主题切换** - Light/Dark/System 主题
25
+ - **IPC 通信** - Python 与前端双向通信
26
+ - **对话框 API** - 文件选择、消息框 (v1.3.0+)
27
+ - **通知 API** - Windows 原生桌面通知 (v1.3.0+)
28
+ - **系统托盘** - 托盘图标、提示与右键菜单 (v2.2.4+)
29
+ - **全局热键** - 应用在后台也能响应的快捷键 (v2.2.4+)
30
+ - **剪贴板 / 系统信息** - 剪贴板读写、显示器/语言/系统路径 (v2.2.4+)
31
+ - **窗口增强** - 缩放、任务栏进度/闪烁、DevTools、内容保护等 (v2.2.4+)
32
+ - **YAML 存储 / 系统集成** - 持久化存储、开机自启、文件图标、NTP 网络时间 (v2.3.0+)
33
+ - **窗口集成增强** - 不进任务栏、不抢焦点、窗口层级、HWND 反查窗口 ID (v2.3.0+)
34
+ - **打包体积** - 极小的依赖,打包后体积仅有8MB左右
35
+
36
+ > 本版本对应 JadeView 原生 **v2.3.0 (Build 26G02)**。从 2.2.4 升级的变更与实机验收结果详见 [docs/UPGRADE_v2.3.0.md](docs/UPGRADE_v2.3.0.md)。
37
+
38
+ ## 安装
39
+
40
+ ```bash
41
+ pip install jadeui
42
+ ```
43
+
44
+ ## CLI 快速开始
45
+
46
+ 安装后可使用统一命令行工具 `jadeui`:
47
+
48
+ ```bash
49
+ jadeui init my-app --frontend html # 也可选 vue / react
50
+ cd my-app
51
+ jadeui doctor # 检查 Python / DLL / Nuitka / Node+asar
52
+ jadeui run # 开发运行
53
+ jadeui japk # 前端打包为明文 app.japk(需 @electron/asar)
54
+ jadeui build # 宿主打包为 exe(默认 Nuitka)
55
+ jadeui build --packager pyinstaller # 可选 PyInstaller
56
+ ```
57
+
58
+ 常用子命令:`init` / `run` / `doctor` / `japk` / `build` / `download` / `clean`。
59
+
60
+ 旧入口 `jadeui-download`、`jadeui-clean` 仍然可用。
61
+
62
+ 项目元数据(可选)读 `pyproject.toml`:CLI 显式参数优先,其次 `[tool.jadeui]`,再回退 `[project].name`(例如 `jadeui build` 的默认输出名)。与 uv / conda 等共用同一份 `pyproject.toml` 时互不冲突——JadeUI 只使用 `[tool.jadeui]` 命名空间。
63
+
64
+ ## JadeView DLL 更新规则
65
+
66
+ JadeUI SDK 只会在已适配的 JadeView API 版本内自动选择最新构建号。例如 `2.3.0.26G02` 可以自动更新到同一 tag 下的后续 build,但不会自动跨到 `2.4` 或其它 release tag。
67
+
68
+ ```bash
69
+ jadeui download # 下载当前 SDK 适配版本的最新 build
70
+ jadeui download --build 26G02 # 固定下载指定 build
71
+ # 兼容旧命令:
72
+ jadeui-download
73
+ ```
74
+
75
+ 当前按 Python 解释器架构选择上游原生包:
76
+
77
+ - Windows: `x86` / `x64` / `arm64`,下载 `JadeView_win_{arch}_*.zip`,加载 `JadeView_{arch}.dll`
78
+
79
+ 跨 minor/major 的原生版本升级(如 `2.2` -> `2.3`)可能包含 ABI/API 变化,必须由 SDK 显式适配后再升级。
80
+
81
+ ## 快速开始
82
+
83
+ ### CLI 脚手架
84
+
85
+ ```bash
86
+ jadeui init my-app --frontend html
87
+ cd my-app
88
+ jadeui run
89
+ ```
90
+
91
+ ### 最简模式
92
+
93
+ ```python
94
+ from jadeui import Window
95
+
96
+ Window(title="Hello JadeUI", url="https://example.com").run()
97
+ ```
98
+
99
+ ### 本地应用(自动检测 web 目录)
100
+
101
+ ```python
102
+ from jadeui import Window
103
+
104
+ Window(title="My App").run() # 自动加载 web/index.html
105
+ ```
106
+
107
+ ### 完整模式(多窗口、全局事件)
108
+
109
+ ```python
110
+ from jadeui import JadeUIApp, Window
111
+
112
+ app = JadeUIApp()
113
+
114
+ @app.on_ready
115
+ def on_ready():
116
+ Window(title="Window 1", url="https://example.com").show()
117
+ Window(title="Window 2", url="https://google.com").show()
118
+
119
+ app.run()
120
+ ```
121
+
122
+ ## 示例项目
123
+
124
+ 查看 [examples](./examples) 目录获取完整示例:
125
+
126
+ | 示例 | 说明 |
127
+ |------|------|
128
+ | [simple](./examples/simple) | **最简示例** - 几行代码创建应用 |
129
+ | [calculator](./examples/calculator) | 基础计算器,展示窗口创建和 IPC 通信 |
130
+ | [backdrop_demo](./examples/backdrop_demo) | Windows 11 Mica/Acrylic 背景效果 |
131
+ | [router_demo](./examples/router_demo) | 内置路由系统实现多页面应用 |
132
+ | [custom_template](./examples/custom_template) | 自定义 HTML 模板和样式 |
133
+ | [vue_app](./examples/vue_app) | Vue.js + JadeUI 集成示例 |
134
+ | [dialog_notification_demo](./examples/dialog_notification_demo) | 对话框与桌面通知 (v1.3.0+) |
135
+ | [p3_demo](./examples/p3_demo) | **系统托盘 / 全局热键 / 剪贴板 / 系统信息 / 窗口增强** (v2.2.4+) |
136
+ | [v23_demo](./examples/v23_demo) | **YAML 存储 / 窗口层级 / 文件图标 / NTP / 拖拽事件** (v2.3.0+) |
137
+
138
+ ### 效果预览
139
+
140
+ | Simple | Calculator | Backdrop |
141
+ |:---:|:---:|:---:|
142
+ | ![Simple](assets/simple.png) | ![Calculator](assets/calculator_iiBxCxUko6.png) | ![Backdrop](assets/backdrop_demo.png) |
143
+
144
+ | Router | Custom Template | Vue App |
145
+ |:---:|:---:|:---:|
146
+ | ![Router](assets/router_demo.png) | ![Custom](assets/custom_demo.png) | ![Vue](assets/vueapp.png) |
147
+
148
+ ## API 文档
149
+
150
+ 完整文档请访问: https://jade.run/python-sdk
151
+
152
+ ## 前端资源包(JAPK)
153
+
154
+ JAPK 打包的是 **HTML/CSS/JS 等前端资源**(不是 Python exe)。官方说明见 [JAPK 文档](https://jade.run/docs/api/japk)。
155
+
156
+ | 方式 | 工具 | 说明 |
157
+ |------|------|------|
158
+ | 明文 ASAR 兼容包 | `jadeui japk`(底层 `@electron/asar`) | 开发/内部工具,命令行可用 |
159
+ | 混淆 / 签名包 | [JadePack](https://jade.run/jadepack) 桌面客户端 | **生产推荐**(签名包为 AES-256-GCM + Ed25519) |
160
+
161
+ ```bash
162
+ # 需先安装 Node.js,并执行: npm install -g @electron/asar
163
+ jadeui japk # 默认 web -> dist/app.japk
164
+ jadeui japk --src web -o dist/app.japk
165
+ ```
166
+
167
+ 运行时可用目录、`.japk` 路径或内存加载:
168
+
169
+ ```python
170
+ from jadeui import Window
171
+
172
+ Window(title="My App").run(japk="dist/app.japk")
173
+ ```
174
+
175
+ ## 打包发布(宿主 exe)
176
+
177
+ 默认使用 **Nuitka** 将 Python 宿主打包为独立可执行文件;也可用 PyInstaller:
178
+
179
+ ```bash
180
+ # Nuitka(推荐;onefile 建议使用 4.0rc7)
181
+ # pip install https://github.com/HG-ha/jadeui/raw/main/scripts/nuitka-4.0.rc7.zip
182
+ jadeui build app.py -o your_app
183
+
184
+ # 可选 PyInstaller
185
+ pip install jadeui[pyinstaller]
186
+ jadeui build app.py -o your_app --packager pyinstaller
187
+ ```
188
+
189
+ 兼容旧脚本:`python scripts/build.py your_app.py -o your_app`(内部转发到同一实现)。
190
+
191
+ ## 系统要求
192
+
193
+ - **操作系统**: Windows 10/11
194
+ - **Python**: 3.7+
195
+ - **Python 架构**: Windows 支持 x86 / x64 / arm64。JadeUI 会按 Python 解释器架构下载匹配的 JadeView 原生库。
196
+
197
+ > 官方 JadeView 暂未提供 Linux 原生库(仍在开发中),当前 SDK 仅支持 Windows。
198
+
199
+ ### 使用注意
200
+
201
+ - 单次 `jade.invoke` payload 建议不超过 `1000KB`。实测 `1023KB` 可用,但精确 `1MiB` payload 加上 IPC 封装后会超过 JadeView bridge 的消息上限并被拒绝;更大的数据应使用分片或文件传递。
202
+
203
+ ## 许可证
204
+
205
+ MIT License
206
+
207
+ ## 链接
208
+
209
+ - [Python SDK 文档](https://jade.run/python-sdk)
210
+ - [JadeView 官网](https://jade.run)
211
+ - [GitHub](https://github.com/HG-ha/Jadeui)
212
+ - [PyPI](https://pypi.org/project/jadeui/)
213
+
@@ -17,7 +17,10 @@ Window(title="My App", url="https://example.com").run()
17
17
  | [simple](./simple/) | **最简示例** - 几行代码创建应用 | ⭐ |
18
18
  | [calculator](./calculator/) | 简单计算器,演示基础窗口和 IPC | ⭐⭐ |
19
19
  | [backdrop_demo](./backdrop_demo/) | Windows 11 Mica/Acrylic 背景效果 | ⭐⭐ |
20
+ | [dialog_notification_demo](./dialog_notification_demo/) | **对话框和通知** (v1.3.0+) | ⭐⭐ |
20
21
  | [router_demo](./router_demo/) | 内置路由系统,多页面应用 | ⭐⭐⭐ |
22
+ | [p3_demo](./p3_demo/) | 系统托盘、全局热键、剪贴板、系统信息、窗口增强 (v2.2.4+) | ⭐⭐⭐ |
23
+ | [v23_demo](./v23_demo/) | YAML 存储、窗口层级、文件图标、NTP、拖拽事件 (v2.3.0+) | ⭐⭐⭐ |
21
24
  | [custom_template](./custom_template/) | 自定义 HTML 模板 | ⭐⭐⭐ |
22
25
  | [vue_app](./vue_app/) | Vue.js 前端框架集成 | ⭐⭐⭐ |
23
26
 
@@ -17,16 +17,10 @@ python app.py
17
17
 
18
18
  ## 打包
19
19
 
20
- 首先安装开发依赖(包含 nuitka):
20
+ `examples/backdrop_demo` 目录下执行:
21
21
 
22
22
  ```bash
23
- pip install jadeui[dev]
24
- ```
25
-
26
- 然后在 `examples/backdrop_demo` 目录下执行:
27
-
28
- ```bash
29
- python ../../scripts/build.py app.py -o backdrop
23
+ jadeui build app.py -o backdrop
30
24
  ```
31
25
 
32
26
  ## 背景材料
@@ -18,19 +18,14 @@ python examples/calculator/app.py
18
18
 
19
19
  ## 打包
20
20
 
21
- 首先安装开发依赖(包含 nuitka):
21
+ `examples/calculator` 目录下执行:
22
22
 
23
23
  ```bash
24
- pip install jadeui[dev]
24
+ jadeui build app.py -o calculator
25
+ # 或: jadeui build app.py -o calculator --packager pyinstaller
25
26
  ```
26
27
 
27
- 然后在 `examples/calculator` 目录下执行:
28
-
29
- ```bash
30
- python ../../scripts/build.py app.py -o calculator
31
- ```
32
-
33
- 脚本会自动包含 `web` 目录和 `web/favicon.png` 图标。
28
+ 会自动包含 `web` 目录和 `web/favicon.png` 图标(若存在)。
34
29
 
35
30
  ## 文件结构
36
31
 
@@ -16,16 +16,10 @@ python app.py
16
16
 
17
17
  ## 打包
18
18
 
19
- 首先安装开发依赖(包含 nuitka):
19
+ `examples/custom_template` 目录下执行:
20
20
 
21
21
  ```bash
22
- pip install jadeui[dev]
23
- ```
24
-
25
- 然后在 `examples/custom_template` 目录下执行:
26
-
27
- ```bash
28
- python ../../scripts/build.py app.py -o custom
22
+ jadeui build app.py -o custom
29
23
  ```
30
24
 
31
25
  ## 文件结构
@@ -0,0 +1,130 @@
1
+ # Dialog & Notification Demo
2
+
3
+ 演示 JadeView 1.3.0+ 新增的对话框和通知功能。
4
+
5
+ ## 功能演示
6
+
7
+ ### 对话框 (Dialog)
8
+
9
+ 同时支持**前端 JavaScript** 和 **Python 后端**两种调用方式:
10
+
11
+ - **打开文件对话框** - 选择单个或多个文件
12
+ - **保存文件对话框** - 选择保存路径
13
+ - **消息框** - 信息/警告/错误/确认
14
+
15
+ ### 通知 (Notification)
16
+
17
+ 仅支持 **Python 后端**调用(Windows 原生通知):
18
+
19
+ - **简单通知** - 基本的标题和内容
20
+ - **带按钮通知** - 可交互,支持事件回调
21
+ - **定时通知** - 指定超时时间
22
+
23
+ ## 运行
24
+
25
+ ```bash
26
+ python examples/dialog_notification_demo/app.py
27
+ ```
28
+
29
+ ## 前端 API (JavaScript)
30
+
31
+ ### Dialog
32
+
33
+ ```javascript
34
+ // 打开文件对话框
35
+ const result = await jade.dialog.showOpenDialog({
36
+ title: '选择文件',
37
+ filters: [
38
+ { name: '图片', extensions: ['png', 'jpg'] },
39
+ { name: '所有文件', extensions: ['*'] }
40
+ ],
41
+ properties: ['openFile', 'multiSelections']
42
+ });
43
+
44
+ // 保存文件对话框
45
+ const savePath = await jade.dialog.showSaveDialog({
46
+ title: '保存文件',
47
+ defaultPath: 'document.txt',
48
+ filters: [{ name: '文本文件', extensions: ['txt'] }]
49
+ });
50
+
51
+ // 消息框
52
+ const response = await jade.dialog.showMessageBox({
53
+ title: '确认',
54
+ message: '确定要删除吗?',
55
+ type: 'warning',
56
+ buttons: ['删除', '取消']
57
+ });
58
+ ```
59
+
60
+ ## 后端 API (Python)
61
+
62
+ ### Dialog
63
+
64
+ ```python
65
+ from jadeui import Dialog
66
+
67
+ # 打开文件对话框
68
+ Dialog.show_open_dialog(
69
+ window_id=1,
70
+ title="选择文件",
71
+ filters=[{"name": "图片", "extensions": ["png", "jpg"]}],
72
+ properties=["openFile", "multiSelections"]
73
+ )
74
+
75
+ # 消息框
76
+ Dialog.show_message_box(
77
+ window_id=1,
78
+ title="确认",
79
+ message="确定要删除吗?",
80
+ type_="warning",
81
+ buttons=["删除", "取消"]
82
+ )
83
+
84
+ # 便捷方法
85
+ Dialog.alert("操作成功!")
86
+ Dialog.confirm("确定要继续吗?")
87
+ Dialog.error("操作失败!")
88
+ ```
89
+
90
+ ### Notification
91
+
92
+ ```python
93
+ from jadeui import Notification, Events
94
+
95
+ # 配置应用(可选,有默认值)
96
+ Notification.config(app_name="我的应用", icon="C:/path/to/icon.ico")
97
+
98
+ # 监听通知事件
99
+ @Notification.on(Events.NOTIFICATION_ACTION)
100
+ def on_action(data):
101
+ """用户点击通知按钮"""
102
+ button = data.get("action") # "action_0" 或 "action_1"
103
+ action_id = data.get("arguments") # 你传入的 action 参数
104
+ print(f"按钮点击: {button}, action: {action_id}")
105
+
106
+ @Notification.on(Events.NOTIFICATION_DISMISSED)
107
+ def on_dismissed(data):
108
+ """通知被关闭"""
109
+ print(f"通知关闭: {data.get('title')}")
110
+
111
+ # 简单通知
112
+ Notification.show("标题", "内容")
113
+
114
+ # 带按钮的通知
115
+ Notification.with_buttons(
116
+ "下载完成",
117
+ "video.mp4 已下载",
118
+ "打开", # button1
119
+ "忽略", # button2
120
+ action="download_123" # 用于在回调中识别通知
121
+ )
122
+
123
+ # 设置超时
124
+ Notification.show("任务", "执行中...", timeout=10000)
125
+ ```
126
+
127
+ ## 参考文档
128
+
129
+ - [Dialog API](https://jade.run/guides/dialog-api)
130
+ - [Notification API](https://jade.run/guides/notification)