匯入外掛(Qt)
在宿主配置中啟用外掛管理頁:
config = {"plugin": True}
plugin 預設為 False,控制是否顯示“外掛”管理頁。已有 ok_import/
外掛仍按原有方式載入。管理頁和自定義 Qt 頁面僅用於桌面模式,Web 與無介面
執行時不會例項化 Qt 頁面。
安裝和刪除
兩個新增按鈕均先顯示與指令碼匯入相同的釋出者風險提示,需要勾選確認並等待 15 秒倒計時後才能繼續安裝。
- 從 ZIP 新增:選擇本地
.zip或.okscript檔案。 - 從 GitHub 新增:輸入
https://github.com/owner/repository或owner/repository。在最近 20 個釋出版本中查詢帶.zip/.okscript附件的最新穩定版;沒有合適的穩定版時使用預釋出版。多個附件可手動選擇。 不會自動使用 GitHub 生成的原始碼壓縮包。 - 刪除外掛:關閉外掛頁面及任務,再刪除
ok_import/中的安裝目錄。 外掛應將持久化使用者資料放在宿主配置或資料目錄中,不要放在安裝目錄裡。
例如 https://github.com/hxwd94666/WW-Echo-Workshop 的發行 ZIP 內含
echo-workshop/manifest.json。支援這種單層目錄包裝,也支援將 manifest 直接放在
壓縮包根目錄。安裝相同 ID 的包會先關閉舊頁面和任務服務,再替換檔案。
下載和解壓在後臺執行;任務和 Qt 頁面在 GUI 執行緒初始化。發行包應包含所需
Python 包、資源及原生二進位制,安裝過程不執行構建指令碼或 pip。
GitHub 更新
通過 GitHub 新增的外掛會儲存倉庫、發行標籤和所選附件,重啟後仍可使用 “檢查更新”按鈕。外掛載入後 10 秒會自動在後臺檢查一次,安裝或重新載入後同樣適用。 正在執行安裝時,自動檢查會延後至操作結束。
僅提供嚴格高於已安裝版本的更新;優先使用 manifest 中的版本,預設時使用儲存的
發行標籤,支援數字版本及 v 字首。相同或更舊版本不會提示更新,無法比較的版本
會顯示檢查錯誤。發現更新後可點選“更新至 …”,確認匯入提示後下載並安裝。
自動檢查不會自動安裝更新,更新包必須匹配外掛 ID 且包含更高版本。
本地安裝的外掛不顯示 GitHub 檢查按鈕。此前未儲存來源的外掛需要通過 GitHub 重新新增一次,才能啟用更新檢查。
任務與自定義頁
在 manifest.json 中宣告任務、自定義 Qt 頁,或同時宣告兩者:
{
"file_name": "my-plugin",
"script_name": "我的插件",
"version": "1.0.0",
"tasks": [["plugin_tasks", "MyTask"]],
"custom_tabs": [["plugin_page", "MyTab"]]
}
入口格式為 [模块名, 类名],支援 ui.main 等巢狀模組,模組相對於外掛目錄。
任務繼承 BaseTask 或 TriggerTask,均顯示在外掛標準任務頁;自定義頁獲得獨立導航。
不宣告 tasks 時沿用掃描根目錄 .py 檔案的方式;純頁面外掛應宣告 "tasks": []。
custom_tabs 預設為空列表,自定義頁模組由 Qt 適配層載入。
自定義頁繼承 ok.ui.qt.widget.CustomTab.CustomTab,提供 name、icon 和頁面內容。
宿主在構造後設置 executor,負責導航和銷燬。頁面可提供 dispose() 或
stop_worker() 釋放訂閱及後臺工作。完整程式碼示例見英文說明。
匯入任務解除安裝時呼叫 on_destroy();修改任務程式碼後重新載入整個外掛,避免頁面保留
舊任務例項。單個自定義頁載入失敗不會阻止其他頁面,錯誤會顯示在管理頁。
相容任務自帶頁面
Workshop 等現有外掛可在任務中提供 create_import_page(parent),返回一個內嵌
QWidget。沒有顯式 custom_tabs 時,宿主用這些頁面替代普通任務卡片頁,任務仍
保持註冊並可執行。頁面建立失敗時保留普通任務介面。
不需要 on_main_window() 回撥、修改宿主內部元件或配置應用級 custom_tabs。
應在工廠方法內匯入 Qt 頁面,保持任務定義可被無介面執行時匯入。