add back GUI 2D display with optional raw / pure color background

This commit is contained in:
ykcheungab
2026-06-21 18:01:13 +08:00
parent 7feae9550e
commit 04a4df3303
25 changed files with 931 additions and 9 deletions
+57
View File
@@ -5,6 +5,7 @@ from __future__ import annotations
from PyQt5.QtCore import QSize, Qt, pyqtSignal
from PyQt5.QtWidgets import (
QCheckBox,
QComboBox,
QHBoxLayout,
QLabel,
QLineEdit,
@@ -14,6 +15,9 @@ from PyQt5.QtWidgets import (
QWidget,
)
from orisys.finger import DEFAULT_FINGER_EXPORT_DIR
from viz.render_2d import ArrowBackground
from ..layout import DashboardLayout, LAYOUT
from ..mesh_view_state import MeshViewState
from ..transport_icons import reset_icon, transport_icon
@@ -32,9 +36,11 @@ class SettingsPanelWidget(QWidget):
log_visibility_changed = pyqtSignal(bool)
free_rotation_changed = pyqtSignal(bool)
arrow_background_changed = pyqtSignal(str)
view_reset_requested = pyqtSignal()
browse_video_requested = pyqtSignal()
browse_config_requested = pyqtSignal()
browse_finger_assets_requested = pyqtSignal()
def __init__(
self,
@@ -83,6 +89,17 @@ class SettingsPanelWidget(QWidget):
self.show_flow_arrows_check.toggled.connect(self._mesh_state.set_flow_arrows_enabled)
root.addWidget(self.show_flow_arrows_check)
root.addWidget(self._caption("UV arrow background"))
self.arrow_background_combo = QComboBox()
for label, value in (
("Unrolled", "unrolled"),
("Pure color", "pure_color"),
):
self.arrow_background_combo.addItem(label, value)
self.set_arrow_background(layout.arrow_background)
self.arrow_background_combo.currentIndexChanged.connect(self._emit_arrow_background_changed)
root.addWidget(self.arrow_background_combo)
root.addWidget(self._caption("Video source"))
video_row = QHBoxLayout()
video_row.setSpacing(6)
@@ -113,6 +130,19 @@ class SettingsPanelWidget(QWidget):
root.addWidget(self._caption("Calibration"))
root.addWidget(self.cal_edit)
root.addWidget(self._caption("Finger assets"))
finger_assets_row = QHBoxLayout()
finger_assets_row.setSpacing(6)
self.finger_assets_edit = QLineEdit(DEFAULT_FINGER_EXPORT_DIR)
self.finger_assets_edit.setPlaceholderText("Blender export bundle directory")
finger_assets_row.addWidget(self.finger_assets_edit, 1)
self.btn_browse_finger_assets = QPushButton("…")
self.btn_browse_finger_assets.setFixedWidth(32)
self.btn_browse_finger_assets.setToolTip("Browse finger asset directory")
self.btn_browse_finger_assets.clicked.connect(self.browse_finger_assets_requested.emit)
finger_assets_row.addWidget(self.btn_browse_finger_assets)
root.addLayout(finger_assets_row)
root.addSpacing(8)
rotate_row = QHBoxLayout()
rotate_row.setSpacing(6)
@@ -174,6 +204,30 @@ class SettingsPanelWidget(QWidget):
def set_calibration_path(self, value: str) -> None:
self.cal_edit.setText(value or "")
def set_finger_export_dir(self, value: str) -> None:
self.finger_assets_edit.setText(value)
def set_finger_export_dir_enabled(self, enabled: bool) -> None:
self.finger_assets_edit.setEnabled(enabled)
self.btn_browse_finger_assets.setEnabled(enabled)
def _emit_arrow_background_changed(self, _index: int) -> None:
value = self.arrow_background_combo.currentData()
if value:
self.arrow_background_changed.emit(value)
def set_arrow_background(self, value: ArrowBackground) -> None:
idx = self.arrow_background_combo.findData(value)
if idx < 0:
return
self.arrow_background_combo.blockSignals(True)
self.arrow_background_combo.setCurrentIndex(idx)
self.arrow_background_combo.blockSignals(False)
def arrow_background(self) -> ArrowBackground:
value = self.arrow_background_combo.currentData()
return value if value else "unrolled"
def video_source(self) -> str:
return self.video_edit.text().strip()
@@ -182,3 +236,6 @@ class SettingsPanelWidget(QWidget):
def calibration_path(self) -> str:
return self.cal_edit.text().strip()
def finger_export_dir(self) -> str:
return self.finger_assets_edit.text().strip()