選單驅動 GUI:Actions 選單取代分頁內按鈕

主視窗改以選單列與低按鈕分頁版面重新設計。分頁只保留輸入欄位、表格與 結果/狀態檢視;每個分頁的指令移到一個可預期的位置——會隨當前分頁動態 重建的視窗層級 Actions 選單。

Actions 選單

分頁有兩種方式呈現其指令:

  • 註冊時宣告——核心分頁(自動點擊、截圖、影像偵測、錄製、腳本執行器、 報告)在 gui/main_widget.py 註冊時宣告 (label_key, handler) 配對。

  • menu_actions() 掛鉤——功能分頁提供 menu_actions() 方法, 回傳相同的 [(label_key, handler), ...] 形狀;選單列查詢當前分頁並 渲染其回傳內容。

48 個已註冊分頁中有 46 個以此方式呈現指令。Script BuilderRemote 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 生命週期不會影響無頭 測試套件的其餘部分。