erlab.interactive.imagetool.manager

Manager for multiple ImageTool windows.

ImageToolManager window screenshot ImageToolManager window screenshot

This module provides a GUI application for managing multiple ImageTool windows. The application can be started by running the script itool-manager from the command line in the environment where the package is installed.

Python scripts communicate with the manager using a ZeroMQ connection with the default port number 45555. The port number can be changed by setting the environment variable ITOOL_MANAGER_PORT.

Functions

fetch(index)

Get data from the ImageTool window at the given index.

is_running()

Check whether an instance of ImageToolManager is active.

load_in_manager(paths[, loader_name])

Load and display data in the ImageToolManager.

main([execute])

Start the ImageToolManager application.

replace_data(index, data)

Replace data in existing ImageTool windows.

show_in_manager(data, **kwargs)

Create and display ImageTool windows in the ImageToolManager.

unwatch_data(uid[, remove])

Cancel watching a variable in the ImageToolManager.

watch_data(varname, uid, data[, show])

Add or update a watched variable in the ImageToolManager.

Classes

ImageToolManager()

The ImageToolManager window.

class erlab.interactive.imagetool.manager.ImageToolManager[source]

Bases: QMainWindow

The ImageToolManager window.

This class implements a GUI application for managing multiple ImageTool windows.

Users do not need to create an instance of this class directly. Instead, use the command line script itool-manager or the function main to start the application.

Signals:

sigLinkersChanged() – Signal emitted when the linker state is changed.

about()[source]

Show the about dialog.

add_childtool(tool, index, *, show=True)[source]

Register a child tool window.

This is mainly used for handling tool windows such as goldtool and dtool opened from child ImageTool windows.

Parameters:
  • tool (ToolWindow) – The tool window to add.

  • index (int) – Index of the parent ImageTool window.

  • show (bool, default: True) – Whether to show the tool window after adding it, by default True.

add_imagetool(tool, *, show=True, activate=False, watched_var=None)[source]

Add a new ImageTool window to the manager and show it.

Parameters:
  • tool (ImageTool) – ImageTool object to be added.

  • show (bool, default: True) – Whether to show the window after adding, by default True.

  • activate (bool, default: False) – Whether to focus on the window after adding, by default False.

  • watched_var (tuple[str, str] | None, default: None) – If the tool is created from a watched variable, this should be a tuple of the variable name and its unique ID.

Returns:

int – Index of the added ImageTool window.

Return type:

int

add_widget(widget)[source]

Save a reference to an additional window widget.

This is mainly used for handling tool windows such as goldtool and dtool opened from child ImageTool windows. This way, they can stay open even when the ImageTool that opened them is archived or removed.

All additional windows are closed when the manager is closed.

Only pass widgets that are not associated with a parent widget.

Parameters:

widget (QWidget) – The widget to add.

archive_selected()[source]

Archive selected ImageTool windows.

property cache_dir: str

Name of the cache directory where archived data are stored.

check_for_updates()[source]
closeEvent(event)[source]

Handle proper termination of resources before closing the application.

color_for_linker(linker)[source]

Get the color that should represent the given linker.

concat_selected()[source]

Concatenate the selected data using xarray.concat().

dragEnterEvent(event)[source]

Handle drag-and-drop operations entering the window.

dropEvent(event)[source]

Handle drag-and-drop operations dropping files into the window.

duplicate_childtool(uid)[source]

Duplicate the child tool corresponding to the given UID.

Parameters:

uid (str) – UID of the child tool to duplicate.

Returns:

str – UID of the newly created child tool.

Return type:

str

duplicate_imagetool(index)[source]

Duplicate the ImageTool window corresponding to the given index.

Parameters:

index (int) – Index of the ImageTool window to duplicate.

Returns:

int – Index of the newly created ImageTool window.

Return type:

int

duplicate_selected()[source]

Duplicate selected windows.

ensure_console_initialized()[source]

Ensure that the console window is initialized.

ensure_explorer_initialized()[source]

Ensure that the data explorer window is initialized.

eventFilter(obj=None, event=None)[source]

Event filter that intercepts select all and copy shortcuts.

For some operating systems, shortcuts are often intercepted by actions in the menu bar. This filter ensures that the shortcuts work as expected when the target widget has focus.

garbage_collect()[source]

Run garbage collection to free up memory.

get_childtool(uid)[source]

Get the child tool window corresponding to the given UID.

Parameters:

uid (str) – The unique ID of the child tool to get.

Returns:

ToolWindow – The child tool window corresponding to the given UID.

Return type:

ToolWindow

get_imagetool(index, unarchive=True)[source]

Get the ImageTool object corresponding to the given index.

Parameters:
  • index (int) – Index of the ImageTool window to retrieve.

  • unarchive (bool, default: True) – Whether to unarchive the tool if it is archived, by default True. If set to False, an error will be raised if the tool is archived.

Returns:

ImageTool – The ImageTool object corresponding to the index.

Return type:

ImageTool

hide_all()[source]

Hide all windows.

hide_selected()[source]

Hide selected windows.

label_of_imagetool(index)[source]

Get the label of the ImageTool window corresponding to the given index.

Link the ImageTool windows corresponding to the given indices.

Link selected ImageTool windows.

load(*, native=True)[source]

Load the state of the manager from a file.

Parameters:

native (bool, default: True) – Whether to use the native file dialog, by default True. This option is used when testing the application to ensure reproducibility.

name_of_imagetool(index)[source]

Get the name of the ImageTool window corresponding to the given index.

property next_idx: int

Index for the next window.

property ntools: int

Number of ImageTool windows being handled by the manager.

open(*, native=True)[source]

Open files in a new ImageTool window.

Parameters:

native (bool, default: True) – Whether to use the native file dialog, by default True. This option is used when testing the application to ensure reproducibility.

open_multiple_files(queued, try_workspace=False)[source]

Open multiple files in the manager.

open_settings()[source]

Open the settings dialog for the ImageTool manager.

reindex()[source]

Reset indices of ImageTool windows to be consecutive in displayed order.

reload_selected()[source]

Reload data in selected ImageTool windows.

remove_all_tools()[source]

Remove all ImageTool windows.

remove_imagetool(index)[source]

Remove the ImageTool window corresponding to the given index.

remove_selected()[source]

Discard selected ImageTool windows.

rename_imagetool(index, new_name)[source]

Rename the ImageTool window corresponding to the given index.

rename_selected()[source]

Rename selected ImageTool windows.

save(*, native=True)[source]

Save the current state of the manager to a file.

Parameters:

native (bool, default: True) – Whether to use the native file dialog, by default True. This option is used when testing the application to ensure reproducibility.

show_childtool(uid)[source]

Show the child tool window corresponding to the given UID.

show_explorer()[source]

Show data explorer window.

show_imagetool(index)[source]

Show the ImageTool window corresponding to the given index.

show_selected()[source]

Show selected windows.

store_selected()[source]
toggle_console()[source]

Toggle the console window.

unarchive_selected()[source]

Unarchive selected ImageTool windows.

Unlink selected ImageTool windows.

unwatch_selected()[source]

Unwatch selected ImageTool windows.

updated(old_version, new_version)[source]

Notify the user that the application has been updated.

wrapper_from_slicer_area(slicer_area)[source]

Get the ImageTool wrapper corresponding to the given slicer area.

erlab.interactive.imagetool.manager.fetch(index)[source]

Get data from the ImageTool window at the given index.

Parameters:

index (int | str) – Index of the ImageTool window to get data from, or the unique identifier (UID) of a watched variable (used internally).

Returns:

xr.DataArray or None – The data in the ImageTool window at the given index, or None if the index is invalid or the data cannot be retrieved.

Return type:

DataArray | None

erlab.interactive.imagetool.manager.is_running()[source]

Check whether an instance of ImageToolManager is active.

Returns:

bool – True if an instance of ImageToolManager is running, False otherwise.

Return type:

bool

erlab.interactive.imagetool.manager.load_in_manager(paths, loader_name=None, **load_kwargs)[source]

Load and display data in the ImageToolManager.

Parameters:
  • paths (Iterable[str | PathLike]) – List of paths containing the data to be displayed in the ImageTool window.

  • loader_name (str | None, default: None) – Name of the loader to use to load the data. The loader must be registered in erlab.io.loaders.

  • **load_kwargs – Additional keyword arguments passed onto the load method of the loader.

erlab.interactive.imagetool.manager.main(execute=True)[source]

Start the ImageToolManager application.

Running itool-manager from a shell will invoke this function.

erlab.interactive.imagetool.manager.replace_data(index, data)[source]

Replace data in existing ImageTool windows.

Parameters:
  • index (int | Collection[int]) – Index or indices of the ImageTool windows to replace data in. If data corresponds to a single ImageTool window, for instance a single DataArray, index is allowed to be a single integer. If data corresponds to multiple ImageTool windows, for instance a list of DataArrays, index must be a list of integers with the same length as data. All indices must be valid indices of existing ImageTool windows.

  • data (Collection[DataArray | ndarray[tuple[Any, ...], dtype[TypeVar(_ScalarT, bound= generic)]]] | DataArray | ndarray[tuple[Any, ...], dtype[TypeVar(_ScalarT, bound= generic)]] | Dataset | DataTree) – Data to replace the existing data in the ImageTool windows. See itool for more information.

erlab.interactive.imagetool.manager.show_in_manager(data, **kwargs)[source]

Create and display ImageTool windows in the ImageToolManager.

Parameters:
erlab.interactive.imagetool.manager.unwatch_data(uid, remove=False)[source]

Cancel watching a variable in the ImageToolManager.

Parameters:
  • uid (str) – Unique identifier for the watched variable.

  • remove (bool, default: False) – Whether to remove the corresponding ImageTool window when unwatching. Default is False.

erlab.interactive.imagetool.manager.watch_data(varname, uid, data, show=False)[source]

Add or update a watched variable in the ImageToolManager.

Parameters:
  • varname (str) – Name of the watched variable.

  • uid (str) – Unique identifier for the watched variable.

  • data (DataArray) – New data for the watched variable.

  • show (bool, default: False) – If True, bring the corresponding ImageTool window to the front. Default is False. If this is a new variable being watched, a new ImageTool window will be created and shown regardless of this parameter.