"""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()