566f1bf390
- FingerPanel 新增 release_views/restore_views,把表面选点图和三维预览 整体借出,不复制,已拾取的点、传感器包和 GL 视图仍是同一份状态 - SequencePanel 用共用视图替换“仿真阶段实现”的占位框(adopt_views/release_views) - 主窗口按当前标签页把两个视图挂到序列页或几何页 - 新增 tests/test_shared_views.py - 序列页借用视图时给两个框固定最小高度并隐藏长图例,修复 3D 视图下按钮与勾选框叠压
57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
"""The surface picker and 3D preview are one set of widgets shared by two pages."""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
def _inside(widget, page) -> bool:
|
|
while widget is not None:
|
|
if widget is page:
|
|
return True
|
|
widget = widget.parentWidget()
|
|
return False
|
|
|
|
|
|
def test_the_views_follow_the_open_tab(make_window):
|
|
window = make_window()
|
|
finger, sequence = window.finger_panel, window.sequence_panel
|
|
preview, picker = finger.preview, finger.view
|
|
|
|
window.workspace.set_current_key("sequence")
|
|
assert _inside(preview, sequence) and _inside(picker, sequence)
|
|
assert not sequence.preview_label.isVisibleTo(sequence)
|
|
assert finger.views_lent
|
|
|
|
window.workspace.set_current_key("finger")
|
|
assert _inside(preview, finger) and _inside(picker, finger)
|
|
assert sequence.preview_label.isVisibleTo(sequence) or not sequence.has_views
|
|
assert not finger.views_lent
|
|
|
|
# Going back and forth never creates a second copy.
|
|
window.workspace.set_current_key("sequence")
|
|
window.workspace.set_current_key("axes")
|
|
assert finger.preview is preview and finger.view is picker
|
|
assert _inside(preview, finger)
|
|
window.close()
|
|
|
|
|
|
def test_a_point_picked_on_the_sequence_page_is_the_geometry_pages_point(make_window):
|
|
window = make_window()
|
|
window.workspace.set_current_key("sequence")
|
|
seen: list[tuple[int, int]] = []
|
|
window.finger_panel.pickRequested.connect(lambda x, y: seen.append((x, y)))
|
|
window.finger_panel.view.pixelPicked.emit(10, 20)
|
|
assert seen == [(10, 20)]
|
|
window.close()
|
|
|
|
|
|
def test_the_sequence_page_gives_the_views_room_and_drops_the_long_legend(make_window):
|
|
window = make_window()
|
|
finger, sequence = window.finger_panel, window.sequence_panel
|
|
window.workspace.set_current_key("sequence")
|
|
assert finger.preview.parentWidget().minimumHeight() >= 400
|
|
assert not finger.legend_label.isVisibleTo(finger.legend_label.parentWidget())
|
|
window.workspace.set_current_key("finger")
|
|
assert finger.preview.parentWidget().minimumHeight() == 0
|
|
assert not finger.legend_label.isHidden()
|
|
window.close()
|