atomiq.frontend.atomiq_dashboard

Attributes

Classes

_ArgumentEditor

Patches the ARTIQ argument editor table (artiq.dashboard.experiments._ArgumentEditor) to add alternating row

ScanOrderList

Track scannable arguments and make a user-configurable sorting widget.

SearchBar

Argument search bar.

_ExperimentDock

Patches the experiment dock (artiq.dashboard._ExperimentDock) to add a search bar and a list to choose the

_NoScan

Patches the no scan dialog (artiq.gui.entries._NoScan) to take up less space in the arguments table.

ScanEntry

Patches the scan entry argument widget (artiq.gui.entries.ScanEntry) to add automatic resizing when switching

Functions

main()

Module Contents

atomiq.frontend.atomiq_dashboard.DragDropMode_NoDragDrop
atomiq.frontend.atomiq_dashboard._OldArgumentEditor
atomiq.frontend.atomiq_dashboard._OldExperimentDock
atomiq.frontend.atomiq_dashboard._OldScanEntry
atomiq.frontend.atomiq_dashboard._OldNoScan
atomiq.frontend.atomiq_dashboard.cls_name = ''
class atomiq.frontend.atomiq_dashboard._ArgumentEditor(manager, dock, expurl)

Bases: _OldArgumentEditor

Patches the ARTIQ argument editor table (artiq.dashboard.experiments._ArgumentEditor) to add alternating row colors, reduce the mouse wheel scroll speed and implement an argument search.

argument_entry_reset
search(keyword)
async _recompute_argument(name)
class atomiq.frontend.atomiq_dashboard.ScanOrderList(sort=True, *args, **kwargs)

Bases: PyQt5.QtCore.QObject

Track scannable arguments and make a user-configurable sorting widget.

Parameters:

sort (bool)

scan_order_changed
sort_changed
_scan_order: list[str] = []
_sort: bool = True
_updating_from_state = False
_list_widget: PyQt5.QtWidgets.QWidget | None = None
_sort_checkbox: PyQt5.QtWidgets.QWidget | None = None
_widget: PyQt5.QtWidgets.QWidget | None
get_scan_order()
set_scan_order(value)
scan_order
get_sort()
Return type:

bool

set_sort(value)
Parameters:

value (bool)

Return type:

None

sort
get_priority(item)

Return the scan priority for an argument name.

Parameters:

item (str) -- The argument name to get the priority for.

Returns:

The scan priority for the argument name. Items present in scan_order get their index (0..N-1). All others get priority 100.

Return type:

int

add(item)

Add an item to the scan order if it's not already present.

Parameters:

item (str) -- The item to add to the scan order.

remove(item)

Remove an item from the scan order.

Parameters:

item (str) -- The item to remove from the scan order.

sort_scan_order()

Sort the scan order in-place (lexicographically).

Return type:

None

_render_widget_from_scan_order()

Renders the widget from the current scan order.

This method updates the list widget with items from the scan order.

Return type:

None

_update_scan_order_from_widget(*_args)

Updates the scan order from the widget.

This method is triggered when the list widget content changes. It updates the scan_order attribute with the current order of items in the widget.

Return type:

None

_apply_sort_mode()

Applies the sort mode to the list widget by enabling or disabling drag/drop functionality.

If sorting is active, this method disables drag and drop operations and greys out the widget. If sorting is inactive, this method enables internal move drag and drop functionality.

Return type:

None

_on_sort_changed(value)
Parameters:

value (bool)

Return type:

None

_build_widget()

Builds the search bar widget.

This method creates a search bar (QLineEdit) and wraps it in a QGroupBox.

Return type:

None

property widget: PyQt5.QtWidgets.QWidget

Return the scan order widget.

Return type:

PyQt5.QtWidgets.QWidget

class atomiq.frontend.atomiq_dashboard.SearchBar(sort=True, *args, **kwargs)

Bases: PyQt5.QtCore.QObject

Argument search bar.

Parameters:

sort (bool)

_searchbar_widget: PyQt5.QtWidgets.QWidget | None = None
_widget: PyQt5.QtWidgets.QWidget | None
_build_widget()

Builds the search bar widget.

This method creates a search bar (QLineEdit) and wraps it in a QGroupBox.

Return type:

None

property widget: PyQt5.QtWidgets.QWidget

Return the scan order widget.

Return type:

PyQt5.QtWidgets.QWidget

property text_changed_signal: PyQt5.QtCore.pyqtSignal

Return the scan order widget.

Return type:

PyQt5.QtCore.pyqtSignal

class atomiq.frontend.atomiq_dashboard._ExperimentDock(*args, **kwargs)

Bases: _OldExperimentDock

Patches the experiment dock (artiq.dashboard._ExperimentDock) to add a search bar and a list to choose the scan order.

argument_entry_reset
search_bar
scan_order_editor
_connect_scan_entries()

Connects all ScanEntry widgets to the scan entry changed handler.

This method re-imports the scan entry module to avoid monkey patching issues, then finds all ScanEntry widgets in the UI and connects their scan_entry_changed signals to the on_scan_entry_changed handler method.

on_scan_entry_changed()

Handle changes to scan entries in the submission arguments.

The method checks each argument in the submission and determines whether it should be included in the scan order based on: - Whether the argument type is "Scannable" - Whether the NoScan repetition count is greater than 1 - Whether the current argument type is not "NoScan"

_connect_and_reload_scan_entries()
childEvent(event)

Handle child events for the dashboard.

This method overrides the default childEvent handling to connect scan entry changed signals to the on_scan_entry_changed handler when new ScanEntry objects are added to the dashboard.

Parameters:

event -- The child event that was triggered

_apply_scan_priorities_from_model()

Apply scan_priority for all arguments of this experiment based on ScanOrderList.scan_order.

In-order items get scan_priority = 0..N-1. All others get scan_priority = 100.

Return type:

None

async _recompute_arguments_task(*args, **kwargs)
class atomiq.frontend.atomiq_dashboard._NoScan(*args, **kwargs)

Bases: _OldNoScan

Patches the no scan dialog (artiq.gui.entries._NoScan) to take up less space in the arguments table.

class atomiq.frontend.atomiq_dashboard.ScanEntry(*args, **kwargs)

Bases: _OldScanEntry

Patches the scan entry argument widget (artiq.gui.entries.ScanEntry) to add automatic resizing when switching between the scan modes.

scan_entry_changed
_scan_type_toggled()
Return type:

None

_notify_scan_entry_changed()
_delegate_size_change()
changeEvent(e)
Return type:

None

atomiq.frontend.atomiq_dashboard.main()