把分析视频和分析设置挪到独立的「分析」菜单。

菜单栏为文件 | 采集 | 分析 | 视图 | 帮助。提示里指向这两项的路径已改成「分析」。
This commit is contained in:
ykcheungab
2026-10-07 21:36:13 +08:00
parent 154a84ddae
commit 3e45ecdc3c
5 changed files with 38 additions and 31 deletions
+20 -17
View File
@@ -171,7 +171,7 @@ class StudioMainWindow(QMainWindow):
self._theme = str(self.prefs.get("theme") or "dark")
self._language = str(self.prefs.get("language") or "zh_CN")
#: Reference-frame override for the next analysis pass on a real recording
#: (from View ▸ Analysis setup…). Bare-video workspaces store this in session.json.
#: (from Analysis ▸ Analysis setup…). Bare-video workspaces store this in session.json.
self._analysis_reference_override: int | None = None
# The view preset, the calibration panel, the 3D pane's switch and the fps
# readout are the controllers' state; the window reads and writes them through
@@ -1064,7 +1064,7 @@ class StudioMainWindow(QMainWindow):
self.addAction(self.act_play)
# Acquisition session controls (run / preview / pause). Order on the bar:
# File | Session | View | Help.
# File | Session | Analysis | View | Help.
self.session_menu = menu_bar.addMenu("")
self.act_run = QAction(self)
@@ -1095,6 +1095,19 @@ class StudioMainWindow(QMainWindow):
self.act_pause.toggled.connect(self._on_pause_action_toggled)
self.session_menu.addAction(self.act_pause)
# Offline analysis of a recording. Separate from Session: that menu starts
# and stops a live device session.
self.analysis_menu = menu_bar.addMenu("")
# Serve / leave a stored analysis result (or run the pass when there is none).
self.act_recompute = QAction(self)
self.act_recompute.setCheckable(True)
self.act_recompute.setChecked(False)
self.analysis_menu.addAction(self.act_recompute)
# Reopen the setup dialog after the first pass (profile / calibration / reference).
self.act_analysis_setup = QAction(self)
self.act_analysis_setup.triggered.connect(self.replay_ctl.on_analysis_setup)
self.analysis_menu.addAction(self.act_analysis_setup)
self.view_menu = menu_bar.addMenu("")
self.act_cal_panel = QAction(self)
self.act_cal_panel.setCheckable(True)
@@ -1142,17 +1155,6 @@ class StudioMainWindow(QMainWindow):
self.act_rotate_arrows = QAction(self)
self.act_rotate_arrows.triggered.connect(self.display_ctl.on_rotate_arrows)
self.view_menu.addAction(self.act_rotate_arrows)
# Serve / leave a stored analysis result (or run the pass when there is none).
self.act_recompute = QAction(self)
self.act_recompute.setCheckable(True)
self.act_recompute.setChecked(False)
self.view_menu.addAction(self.act_recompute)
# Reopen the setup dialog after the first pass (profile / calibration / reference).
self.act_analysis_setup = QAction(self)
self.act_analysis_setup.triggered.connect(self.replay_ctl.on_analysis_setup)
self.view_menu.addAction(self.act_analysis_setup)
self.view_menu.addSeparator()
# The graphics half of the old 重置: curves, window, cursor and the 3D camera.
@@ -1392,6 +1394,11 @@ class StudioMainWindow(QMainWindow):
self._sync_reset_action()
self.act_pause.setText(t("menu.pause"))
self._sync_pause_action()
self.analysis_menu.setTitle(t("menu.analysis"))
self.act_recompute.setText(t("menu.recompute"))
self.act_recompute.setToolTip(t("menu.recompute_tip"))
self.act_analysis_setup.setText(t("menu.analysis_setup"))
self.act_analysis_setup.setToolTip(t("menu.analysis_setup_tip"))
self.view_menu.setTitle(t("menu.view"))
self.act_cal_panel.setText(t("menu.calibration_panel"))
self.act_finger_3d.setText(t("menu.finger_3d"))
@@ -1401,10 +1408,6 @@ class StudioMainWindow(QMainWindow):
self.act_settings.setText(t("menu.settings"))
self.act_plot_settings.setText(t("menu.plot_settings"))
self.act_rotate_arrows.setText(t("menu.rotate_arrows"))
self.act_recompute.setText(t("menu.recompute"))
self.act_recompute.setToolTip(t("menu.recompute_tip"))
self.act_analysis_setup.setText(t("menu.analysis_setup"))
self.act_analysis_setup.setToolTip(t("menu.analysis_setup_tip"))
self.act_reset_view.setText(t("menu.reset_view"))
self.act_reset_view.setToolTip(t("menu.reset_view_tip"))
self.theme_menu.setTitle(t("menu.theme"))