pyampp.gxbox.box_view2d ======================= .. py:module:: pyampp.gxbox.box_view2d Classes ------- .. autoapisummary:: pyampp.gxbox.box_view2d.MapBoxViewState pyampp.gxbox.box_view2d.MapBoxDisplayWidget Module Contents --------------- .. py:class:: MapBoxViewState Reusable state container for focused map+box visualization tools. This is intentionally lightweight and plotting-backend agnostic so it can be reused by multiple future GUIs (FOV selector, box inspector, model preview, ...). .. py:attribute:: session_input :type: pyampp.gxbox.selector_api.SelectorSessionInput .. py:attribute:: selected_context_id :type: Optional[str] :value: None .. py:attribute:: selected_bottom_id :type: Optional[str] :value: None .. py:attribute:: geometry :type: Optional[pyampp.gxbox.selector_api.BoxGeometrySelection] :value: None .. py:attribute:: fov :type: Optional[pyampp.gxbox.selector_api.DisplayFovSelection] :value: None .. py:attribute:: fov_box :type: Optional[pyampp.gxbox.selector_api.DisplayFovBoxSelection] :value: None .. py:attribute:: map_files :type: dict[str, str] | None :value: None .. py:attribute:: refmaps :type: dict | None :value: None .. py:attribute:: base_maps :type: dict | None :value: None .. py:attribute:: base_wcs_header :type: str | None :value: None .. py:attribute:: base_geometry :type: Optional[pyampp.gxbox.selector_api.BoxGeometrySelection] :value: None .. py:attribute:: map_source_mode :type: str :value: 'auto' .. py:attribute:: square_fov :type: bool :value: False .. py:attribute:: display_observer_key :type: str :value: 'earth' .. py:attribute:: geometry_definition_observer_key :type: str :value: 'earth' .. py:attribute:: fov_definition_observer_key :type: str :value: 'earth' .. py:attribute:: custom_observer_ephemeris :type: dict | None :value: None .. py:attribute:: custom_observer_label :type: str | None :value: None .. py:attribute:: custom_observer_source :type: str | None :value: None .. py:class:: MapBoxDisplayWidget(parent: Optional[PyQt5.QtWidgets.QWidget] = None) Bases: :py:obj:`PyQt5.QtWidgets.QWidget` Reusable widget shell for map display + interactive box overlays. Current implementation provides: - SunPy map plotting using the map's native WCS projection - a static box-outline overlay derived from the current geometry state - a stable API for future drag/resize interaction layers .. py:method:: show_loading_placeholder(message: str = 'Preparing viewer data...') -> None .. py:method:: showEvent(event) .. py:method:: set_display_observer_key(observer_key: str | None) -> None .. py:method:: set_custom_display_observer_pb0r(*, b0_deg, l0_deg, rsun_arcsec, obs_date=None, rsun_cm=None, label: str | None = None, source: str | None = None) -> bool .. py:method:: set_custom_observer_identity(*, label: str | None = None, source: str | None = None) -> None .. py:method:: initialize(session_input: pyampp.gxbox.selector_api.SelectorSessionInput) -> None .. py:method:: refresh_session_view() -> None .. py:method:: set_available_maps(map_ids: Iterable[str]) -> None .. py:method:: set_context_map_id(map_id: Optional[str]) -> None .. py:method:: set_bottom_map_id(map_id: Optional[str]) -> None .. py:method:: set_map_file_paths(map_files: dict[str, str]) -> None .. py:method:: set_map_source_mode(mode: str) -> None .. py:method:: set_geometry_edit_enabled(enabled: bool) -> None .. py:method:: set_entry_box_path(entry_box_path: Optional[str | pathlib.Path], *, load_session_model: bool = True) -> None .. py:method:: set_geometry_selection(selection: pyampp.gxbox.selector_api.BoxGeometrySelection) -> None .. py:method:: set_fov_selection(selection: pyampp.gxbox.selector_api.DisplayFovSelection) -> None .. py:method:: set_square_fov(enabled: bool, *, refresh: bool = True) -> None .. py:method:: set_action_state_callback(callback) -> None .. py:method:: committed_line_seeds() .. py:method:: commit_live_3d_edits(line_seeds, streamlines, z_base=0.0) -> None .. py:method:: cancel_live_3d_edits() -> None .. py:method:: current_geometry_selection() -> Optional[pyampp.gxbox.selector_api.BoxGeometrySelection] .. py:method:: current_fov_selection() -> Optional[pyampp.gxbox.selector_api.DisplayFovSelection] .. py:method:: current_fov_box_selection() -> Optional[pyampp.gxbox.selector_api.DisplayFovBoxSelection] .. py:method:: projected_box_fov() -> Optional[pyampp.gxbox.selector_api.DisplayFovSelection] .. py:method:: set_geometry_change_callback(callback) -> None .. py:method:: set_map_info_callback(callback) -> None .. py:method:: set_status_callback(callback) -> None .. py:method:: current_status_text() -> str .. py:method:: set_observer_info_callback(callback) -> None .. py:method:: set_fov_change_callback(callback) -> None .. py:method:: state() -> Optional[MapBoxViewState] .. py:method:: observer_options() -> tuple[tuple[str, str], Ellipsis] .. py:method:: observer_enabled_keys() -> set[str] .. py:method:: set_available_observer_keys(observer_keys: Iterable[str] | None, *, notice: str | None = None) -> None .. py:method:: current_display_observer_key() -> str .. py:method:: current_observer_persistence_state() -> dict[str, Any] .. py:method:: current_observer_info() -> dict[str, str] .. py:method:: open_live_3d_viewer() -> None .. py:method:: clear_fieldlines() -> None .. py:method:: plot_fieldlines(streamlines, z_base=0.0) -> None .. py:method:: save_current_plot(output_path: str) -> None .. py:method:: show_full_sun_view() -> None .. py:method:: show_box_fov_view(pad_factor: float | None = None) -> None .. py:method:: recompute_fov_from_box() -> None