Main window#

The datalab.gui.main module provides the main window of the DataLab project.

class datalab.gui.main.DLMainWindow(console=None, hide_on_close=False)[source]#

DataLab main window

Parameters:
  • console – enable internal console

  • hide_on_close – True to hide window on close

static get_instance(console=None, hide_on_close=False)[source]#

Return singleton instance

static xmlrpc_server_started(port)[source]#

XML-RPC server has started, writing comm port in configuration file

get_group_titles_with_object_info() tuple[list[str], list[list[str]], list[list[str]]][source]#

Return groups titles and lists of inner objects uuids and titles.

Returns:

Groups titles, lists of inner objects uuids and titles

get_object_titles(panel: Literal['signal', 'image', 'macro'] | None = None) list[str][source]#

Get object (signal/image) list for current panel. Objects are sorted by group number and object index in group.

Parameters:

panel – panel name. If None, current data panel is used (i.e. signal or image panel).

Returns:

List of object titles

Raises:

ValueError – if panel is unknown

get_object(nb_id_title: int | str | None = None, panel: Literal['signal', 'image'] | None = None) SignalObj | ImageObj[source]#

Get object (signal/image) from index.

Parameters:
  • nb_id_title – Object number, or object id, or object title. Defaults to None (current object).

  • panel – Panel name. Defaults to None (current panel).

Returns:

Object

Raises:
find_object_by_uuid(uuid: str) SignalObj | ImageObj | ObjectGroup | None[source]#

Find an object by UUID, searching across all panels.

This method searches for an object in both signal and image panels, making it suitable for cross-panel operations (e.g., radial profile that takes an ImageObj and produces a SignalObj).

Difference from get_object(): - get_object() requires specifying a panel and accepts number/id/title - find_object_by_uuid() searches all panels automatically using only UUID

Parameters:

uuid – UUID of the object to find

Returns:

The object if found in any panel, None otherwise

get_object_uuids(panel: Literal['signal', 'image'] | None = None, group: int | str | None = None) list[str][source]#

Get object (signal/image) uuid list for current panel. Objects are sorted by group number and object index in group.

Parameters:
  • panel – panel name. If None, current panel is used.

  • group – Group number, or group id, or group title. Defaults to None (all groups).

Returns:

List of object uuids

Raises:

ValueError – if panel is unknown

get_sel_object_uuids(include_groups: bool = False) list[str][source]#

Return selected objects uuids.

Parameters:

include_groups – If True, also return objects from selected groups.

Returns:

List of selected objects uuids.

add_group(title: str, panel: Literal['signal', 'image'] | None = None, select: bool = False) None[source]#

Add group to DataLab.

Parameters:
  • title – Group title

  • panel – Panel name. Defaults to None.

  • select – Select the group after creation. Defaults to False.

select_objects(selection: list[int | str], panel: Literal['signal', 'image'] | None = None) None[source]#

Select objects in current panel.

Parameters:
  • selection – List of object numbers (1 to N) or uuids to select

  • panel – panel name. If None, current panel is used. Defaults to None.

select_groups(selection: list[int | str] | None = None, panel: Literal['signal', 'image'] | None = None) None[source]#

Select groups in current panel.

Parameters:
  • selection – List of group numbers (1 to N), or list of group uuids, or None to select all groups. Defaults to None.

  • panel – panel name. If None, current panel is used. Defaults to None.

delete_metadata(refresh_plot: bool = True, keep_roi: bool = False) None[source]#

Delete metadata of selected objects

Parameters:
  • refresh_plot – Refresh plot. Defaults to True.

  • keep_roi – Keep ROI. Defaults to False.

get_object_shapes(nb_id_title: int | str | None = None, panel: Literal['signal', 'image'] | None = None) list[source]#

Get plot item shapes associated to object (signal/image).

Parameters:
  • nb_id_title – Object number, or object id, or object title. Defaults to None (current object).

  • panel – Panel name. Defaults to None (current panel).

Returns:

List of plot item shapes

add_annotations_from_items(items: list, refresh_plot: bool = True, panel: Literal['signal', 'image'] | None = None) None[source]#

Add object annotations (annotation plot items).

Parameters:
  • items – annotation plot items

  • refresh_plot – refresh plot. Defaults to True.

  • panel – panel name. If None, current panel is used.

add_label_with_title(title: str | None = None, panel: Literal['signal', 'image'] | None = None) None[source]#

Add a label with object title on the associated plot

Parameters:
  • title – Label title. Defaults to None. If None, the title is the object title.

  • panel – panel name. If None, current panel is used.

run_macro(number_or_title: int | str | None = None) None[source]#

Run macro.

Parameters:

number – Number of the macro (starting at 1). Defaults to None (run current macro, or does nothing if there is no macro).

stop_macro(number_or_title: int | str | None = None) None[source]#

Stop macro.

Parameters:

number – Number of the macro (starting at 1). Defaults to None (stop current macro, or does nothing if there is no macro).

import_macro_from_file(filename: str) None[source]#

Import macro from file

Parameters:

filename – Filename.

property panels: tuple[AbstractPanel, ...]#

Return the tuple of implemented panels (signal, image)

Returns:

Tuple of panels

confirm_memory_state() bool[source]#

Check memory warning state and eventually show a warning dialog

Returns:

True if memory state is ok

check_stable_release() None[source]#

Check if this is a stable release

check_for_previous_crash() None[source]#

Check for previous crash

check_for_v020_plugins() None[source]#

Check for v0.20 plugins and warn user if any are found

execute_post_show_actions() None[source]#

Execute post-show actions

take_screenshot(name: str) None[source]#

Take main window screenshot

take_menu_screenshots() None[source]#

Take menu screenshots

setup(console: bool = False) None[source]#

Setup main window

Parameters:

console – True to setup console

set_process_isolation_enabled(state: bool) None[source]#

Enable/disable process isolation

Parameters:

state – True to enable process isolation

get_current_panel() str[source]#

Return current panel name

Returns:

“signal”, “image”, “macro”)

Return type:

Panel name (valid values

set_current_panel(panel: Literal['signal', 'image', 'macro'] | BaseDataPanel) None[source]#

Switch to panel.

Parameters:

panel – panel name or panel instance

Raises:

ValueError – unknown panel

calc(name: str, param: gds.DataSet | None = None) None[source]#

Call computation feature name

Note

This calls either the processor’s compute_<name> method (if it exists), or the processor’s <name> computation feature (if it is registered, using the run_feature method). It looks for the function in all panels, starting with the current one.

Parameters:
  • name – Compute function name

  • param – Compute function parameter. Defaults to None.

Raises:

ValueError – unknown function

has_objects() bool[source]#

Return True if sig/ima panels have any object

set_modified(state: bool = True) None[source]#

Set mainwindow modified state

is_modified() bool[source]#

Return True if mainwindow is modified

repopulate_panel_trees() None[source]#

Repopulate all panel trees

toggle_show_titles(state: bool) None[source]#

Toggle show annotations option

Parameters:

state – state

handle_autorefresh_action(state: bool) None[source]#

Handle auto-refresh action from UI (with confirmation dialog)

Parameters:

state – desired state

toggle_auto_refresh(state: bool) None[source]#

Toggle auto refresh option

Parameters:

state – state

toggle_show_first_only(state: bool) None[source]#

Toggle show first only option

Parameters:

state – state

reset_all() None[source]#

Reset all application data

save_to_h5_file(filename=None) None[source]#

Save to a DataLab HDF5 file

Parameters:

filename – HDF5 filename. If None, a file dialog is opened.

Raises:

IOError – if filename is invalid or file cannot be saved.

open_h5_files(h5files: list[str] | None = None, import_all: bool | None = None, reset_all: bool | None = None) None[source]#

Open a DataLab HDF5 file or import from any other HDF5 file.

Parameters:
  • h5files – HDF5 filenames (optionally with dataset name, separated by “:”)

  • import_all – Import all datasets from HDF5 files

  • reset_all – Reset all application data before importing

browse_h5_files(filenames: list[str], reset_all: bool) None[source]#

Browse HDF5 files

Parameters:
  • filenames – HDF5 filenames

  • reset_all – Reset all application data before importing

load_h5_workspace(h5files: list[str], reset_all: bool = False) None[source]#

Load native DataLab HDF5 workspace files without any GUI elements.

This method can be safely called from the internal console as it does not create any Qt widgets, dialogs, or progress bars. It is designed for programmatic use when loading DataLab workspace files.

Warning

This method only supports native DataLab HDF5 files. For importing arbitrary HDF5 files (non-native), use the GUI menu or macros with datalab.control.proxy.RemoteProxy.

Parameters:
  • h5files – List of native DataLab HDF5 filenames

  • reset_all – Reset all application data before importing. Defaults to False.

Raises:

ValueError – If a file is not a valid native DataLab HDF5 file

save_h5_workspace(filename: str) None[source]#

Save current workspace to a native DataLab HDF5 file without GUI elements.

This method can be safely called from the internal console as it does not create any Qt widgets, dialogs, or progress bars. It is designed for programmatic use when saving DataLab workspace files.

Parameters:

filename – HDF5 filename to save to

Raises:

IOError – If file cannot be saved

import_h5_file(filename: str, reset_all: bool | None = None) None[source]#

Import HDF5 file into DataLab

Parameters:
  • filename – HDF5 filename (optionally with dataset name,

  • " (separated by) – “)

  • reset_all – Delete all DataLab signals/images before importing data

add_object(obj: SignalObj | ImageObj, group_id: str = '', set_current=True) None[source]#

Add object - signal or image

Parameters:
  • obj – object to add (signal or image)

  • group_id – group ID (optional)

  • set_current – True to set the object as current object

load_from_files(filenames: list[str]) None[source]#

Open objects from files in current panel (signals/images)

Parameters:

filenames – list of filenames

load_from_directory(path: str) None[source]#

Open objects from directory in current panel (signals/images).

Parameters:

path – directory path

get_version() str[source]#

Return DataLab public version.

Returns:

DataLab version

close_application() None[source]#

Close DataLab application

raise_window() None[source]#

Raise DataLab window

add_signal(title: str, xdata: ndarray, ydata: ndarray, xunit: str = '', yunit: str = '', xlabel: str = '', ylabel: str = '', group_id: str = '', set_current: bool = True) bool[source]#

Add signal data to DataLab.

Parameters:
  • title – Signal title

  • xdata – X data

  • ydata – Y data

  • xunit – X unit. Defaults to “”

  • yunit – Y unit. Defaults to “”

  • xlabel – X label. Defaults to “”

  • ylabel – Y label. Defaults to “”

  • group_id – group id in which to add the signal. Defaults to “”

  • set_current – if True, set the added signal as current

Returns:

True if signal was added successfully, False otherwise

Raises:
add_image(title: str, data: ndarray, xunit: str = '', yunit: str = '', zunit: str = '', xlabel: str = '', ylabel: str = '', zlabel: str = '', group_id: str = '', set_current: bool = True) bool[source]#

Add image data to DataLab.

Parameters:
  • title – Image title

  • data – Image data

  • xunit – X unit. Defaults to “”

  • yunit – Y unit. Defaults to “”

  • zunit – Z unit. Defaults to “”

  • xlabel – X label. Defaults to “”

  • ylabel – Y label. Defaults to “”

  • zlabel – Z label. Defaults to “”

  • group_id – group id in which to add the image. Defaults to “”

  • set_current – if True, set the added image as current

Returns:

True if image was added successfully, False otherwise

Raises:

ValueError – Invalid data dtype

play_demo() None[source]#

Play demo

show_tour() None[source]#

Show tour

static test_segfault_error() None[source]#

Generate errors (both fault and traceback)

show() None[source]#

Reimplement QMainWindow method

close_properly() bool[source]#

Close properly

Returns:

True if closed properly, False otherwise

closeEvent(event: QCloseEvent) None[source]#

Reimplement QMainWindow method