選單驅動 GUI:Actions 選單取代分頁內按鈕
主視窗改以選單列與低按鈕分頁版面重新設計。分頁只保留輸入欄位、表格與 結果/狀態檢視;每個分頁的指令移到一個可預期的位置——會隨當前分頁動態 重建的視窗層級 Actions 選單。
Actions 選單
分頁有兩種方式呈現其指令:
註冊時宣告——核心分頁(自動點擊、截圖、影像偵測、錄製、腳本執行器、 報告)在
gui/main_widget.py註冊時宣告(label_key, handler)配對。menu_actions()掛鉤——功能分頁提供menu_actions()方法, 回傳相同的[(label_key, handler), ...]形狀;選單列查詢當前分頁並 渲染其回傳內容。
48 個已註冊分頁中有 46 個以此方式呈現指令。Script Builder 與 Remote Desktop 刻意保留其互動式面板版面,Actions 選單在這兩頁顯示 佔位訊息。視窗層級選單無法取代的控制項則維持原位:堆疊觸發器表單內的 逐頁瀏覽按鈕、隨可見性切換的資料來源瀏覽按鈕,以及有狀態的自動更新 核取方塊。
View 選單
View → Tabs 可依分類(核心 / 編輯 / 偵測與視覺 / 自動化引擎 / 系統) 顯示或隱藏任一已註冊分頁。預設版面只開啟錄製、Script Builder 與遠端 桌面;其餘分頁一個選單點擊即可叫出。分頁可關閉——關閉等同於在 View 選單取消勾選。
View → Text Size 提供自動(依螢幕高度)與預設字級,即時套用。
契約測試
test/unit_test/headless/test_actions_menu_gui.py 守護此契約:每個已
註冊分頁都必須透過註冊宣告或 menu_actions() 掛鉤呈現指令(兩個豁免
分頁除外),且每個項目都必須是非空的 label_key 字串搭配可呼叫物件。
新分頁若忘了掛鉤會直接讓 CI 失敗,而不是默默出貨一個沒有任何可觸及指令
的分頁。探測程序在子行程中建構完整 widget,使 Qt 生命週期不會影響無頭
測試套件的其餘部分。