magscope.ui.controls#
Classes#
Figure canvas that grows taller when constrained to a narrow panel. |
|
Clickable panel that links to the MagScope documentation. |
|
Panel shown when no user hardware managers are configured. |
|
Allow importing, exporting, and editing MagScope configuration values. |
|
Modal dialog for global MagScope preferences. |
|
Compact info icon that shows a tooltip on hover. |
|
Compact color-coded status label with rounded background. |
|
Small circular ring indicator that fills over the lock interval and resets on correction. |
|
Compact row: label | spinbox | unit suffix. |
|
Functions#
|
|
|
|
|
Module Contents#
- magscope.ui.controls._panel_control_target(label: str, panel_id: str, widget_attr: str, *, context: str, aliases: tuple[str, Ellipsis] = (), description: str = '', keywords: tuple[str, Ellipsis] = ()) magscope.ui.search.PanelControlTarget[source]#
- magscope.ui.controls._preference_widget_targets(definitions: tuple[tuple[str, str, tuple[str, Ellipsis]], Ellipsis], *, tab_name: str, context: str) list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.ControlPanelBase(manager: magscope.ui.ui.UIManager, title: str, collapsed_by_default: bool = False, collapsible: bool = False)[source]#
Bases:
PyQt6.QtWidgets.QWidget- manager: magscope.ui.ui.UIManager[source]#
- groupbox: magscope.ui.widgets.CollapsibleGroupBox | None = None[source]#
- class magscope.ui.controls.ResponsivePlotCanvas(figure: matplotlib.figure.Figure, *, minimum_height: int = 210, maximum_height: int | None = 235, height_for_width: float = 0.72)[source]#
Bases:
matplotlib.backends.backend_qtagg.FigureCanvasQTAggFigure canvas that grows taller when constrained to a narrow panel.
- class magscope.ui.controls.HelpPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
PyQt6.QtWidgets.QFrameClickable panel that links to the MagScope documentation.
- class magscope.ui.controls.MotorsPlaceholderPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBasePanel shown when no user hardware managers are configured.
- class magscope.ui.controls.MagScopeSettingsPanel(manager: magscope.ui.ui.UIManager, *, collapsible: bool = True, file_status_label: PyQt6.QtWidgets.QLabel | None = None)[source]#
Bases:
PyQt6.QtWidgets.QWidgetAllow importing, exporting, and editing MagScope configuration values.
- _SETTING_GROUPS: tuple[tuple[str, tuple[str, Ellipsis]], Ellipsis] = (('Imaging', ('ROI', 'magnification')), ('Data Buffers', ('tracks max datapoints', 'video buffer...[source]#
- static search_targets() list[magscope.ui.search.SearchTarget][source]#
- _push_settings(settings: magscope.settings.MagScopeSettings) None[source]#
- class magscope.ui.controls.AcquisitionPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.BeadSelectionPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.CameraPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase
- class magscope.ui.controls.HistogramPanel(manager: magscope.ui.ui.UIManager)[source]#
- class magscope.ui.controls.PlotSettingsPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.AllanDeviationPanel(manager: magscope.ui.ui.UIManager)[source]#
- class magscope.ui.controls.ProfilePanel(manager: magscope.ui.ui.UIManager)[source]#
- class magscope.ui.controls.TrackingOptionsPanel(manager: magscope.ui.ui.UIManager, *, collapsible: bool = True)[source]#
Bases:
ControlPanelBase- static _build_preferences_group(title: str, parent: PyQt6.QtWidgets.QWidget) tuple[PyQt6.QtWidgets.QWidget, PyQt6.QtWidgets.QVBoxLayout][source]#
- static _configure_lineedit_row(widget: magscope.ui.widgets.LabeledLineEditWithValue) None[source]#
- static _configure_checkbox_row(widget: magscope.ui.widgets.LabeledCheckbox) None[source]#
- static search_targets() list[magscope.ui.search.SearchTarget][source]#
- _option_line_edits() tuple[magscope.ui.widgets.LabeledLineEditWithValue, Ellipsis][source]#
- class magscope.ui.controls.PreferencesDialog(manager: magscope.ui.ui.UIManager)[source]#
Bases:
PyQt6.QtWidgets.QDialogModal dialog for global MagScope preferences.
- _SIDEBAR_SECTIONS: tuple[tuple[str, str], Ellipsis] = (('tune', 'MagScope'), ('ads_click', 'Tracking'), ('palette', 'Appearance/Layout'))[source]#
- class magscope.ui.controls.ScriptPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- update_status(status: magscope.scripting.ScriptStatus)[source]#
- class magscope.ui.controls.StatusPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase
- class magscope.ui.controls._LockInfoButton(tooltip_text: str, parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
PyQt6.QtWidgets.QToolButtonCompact info icon that shows a tooltip on hover.
- class magscope.ui.controls._LockStatusBadge(text: str = '', parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
PyQt6.QtWidgets.QLabelCompact color-coded status label with rounded background.
- class magscope.ui.controls._LockActivityIndicator(parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
PyQt6.QtWidgets.QWidgetSmall circular ring indicator that fills over the lock interval and resets on correction.
- class magscope.ui.controls._LockNumberInput(label_text: str, default: float | int, unit: str, *, is_int: bool = False, minimum: float = 0.0, maximum: float = 999999.0, decimals: int = 1, callback: callable | None = None, show_unit_label: bool = True, parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
PyQt6.QtWidgets.QWidgetCompact row: label | spinbox | unit suffix.
- class magscope.ui.controls.XYLockPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.ZLockPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.ZLUTGenerationPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#
- class magscope.ui.controls.ZLUTGenerationSetupDialog(parent: PyQt6.QtWidgets.QWidget | None = None, *, roi_size: int, default_measurements: int)[source]#
Bases:
PyQt6.QtWidgets.QDialog
- class magscope.ui.controls.ZLUTSweepPreviewWidget(parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
MatplotlibCleanupMixin,PyQt6.QtWidgets.QWidget- update_preview(*, state: int, count: int, capacity: int, n_steps: int, n_beads: int, profiles_per_bead: int, profile_length: int, preview_image: numpy.ndarray | None, selected_bead_id: int | None, mode: str, motor_z_min: float | None, motor_z_max: float | None, expected_capture_count: int | None = None, x_axis_label: str = 'Z Position (nm)', x_axis_min: float | None = None, x_axis_max: float | None = None, image_x_min: float | None = None, image_x_max: float | None = None) None[source]#
- class magscope.ui.controls.ZLUTGenerationDialog(parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
PyQt6.QtWidgets.QDialog- update_state(status: str, detail: str | None = None, *, running: bool = False, can_cancel: bool = False, phase: str = 'idle') None[source]#
- class magscope.ui.controls.CurrentZLUTDialog(parent: PyQt6.QtWidgets.QWidget | None = None)[source]#
Bases:
MatplotlibCleanupMixin,PyQt6.QtWidgets.QDialog- _add_metadata_row(layout: PyQt6.QtWidgets.QVBoxLayout, label_text: str) PyQt6.QtWidgets.QLabel[source]#
- class magscope.ui.controls.ZLUTPanel(manager: magscope.ui.ui.UIManager)[source]#
Bases:
ControlPanelBase- search_targets() list[magscope.ui.search.SearchTarget][source]#