schrodinger.maestro_utils.surface_manager.surface_table module

class schrodinger.maestro_utils.surface_manager.surface_table.SurfaceTable(parent=None)

Bases: TreeViewWithoutFilter

Sub-class of maestro_ui.maestro.TreeViewWithoutFilter. We have 4 columns in the table: 1. Checkbox column 2. Entry / Surface Name column 3. Type column 4. Volume column

We can have two types of rows in the table: 1. EntryNodeItem (parent nodes) 2. SurfaceNodeItem (child nodes)

Variables:
  • notifyToChangeDisplay (QtCore.pyqtSignal) – Signal to notify client to change display.

  • notifyToModifyVolume (QtCore.pyqtSignal) – Signal to notify client to modify volume.

  • notifyToViewInfo (QtCore.pyqtSignal) – Signal to notify client to view info.

  • tableUpdated (QtCore.pyqtSignal) – Signal emitted when the table is updated.

notifyToChangeDisplay

A pyqtSignal emitted by instances of the class.

notifyToModifyVolume

A pyqtSignal emitted by instances of the class.

notifyToViewInfo

A pyqtSignal emitted by instances of the class.

tableUpdated

A pyqtSignal emitted by instances of the class.

__init__(parent=None)

Constructor for SurfaceTable.

Parameters:

parent – The parent widget.

setupConnections()

Setup the connections.

reorderHeader()

Reorders the header.

refresh()

Refresh the surface table. This will repopulate the model with the current project data.

setCheckedOnNodes(indices: list[PyQt6.QtCore.QModelIndex], value: CheckState)

Set the checked state on the nodes.

Parameters:
  • indices – The indices of the items.

  • value – The value to set.

removeRowsAndDeleteSurfaces(indices: list[PyQt6.QtCore.QModelIndex]) None

Remove the rows from the model and delete the corresponding surfaces. Batch dependency logic: - Surfaces belonging to a fully-selected entry node are deleted unconditionally — all intra-entry dependencies go away together. - For individually selected surface nodes, if a surface’s volume is coloring another surface that is NOT also being deleted, deletion of that source surface is blocked. - Unblocked surfaces are deleted normally. - If any surfaces are blocked, a warning is shown to the user. - Blocked surfaces are left selected so the user can identify them. - If all dependencies are also being deleted, deletion proceeds silently. Note: This method expects the caller to send either all entry node indices, or all surface node indices.

Parameters:

indices – The indices of the items to delete.

deleteAllSurfacesAndRows()

Remove all rows from the model. This will delete all the underlying surfaces and remove their rows from the table.

getSelectedSurfaceInfos() list[SurfaceInfo]

Get the SurfaceInfo objects for selected surfaces.

Returns:

The SurfaceInfo objects for selected surfaces.

hasSelection() bool

Check if there is a non-empty selection in the surface table.

Returns:

True if there is a non-empty selection, False otherwise.

exportAllData()

Exports all surface data.

selectIndices(indices: list[PyQt6.QtCore.QModelIndex])

Selects the given indices in the workspace surfaces table.

Parameters:

indices – List of QModelIndex to select.

selectEntries(entry_ids: list[int])

Selects the given entry_ids in the workspace surfaces table. Also clears the previous selection.

Parameters:

entry_ids – List of entry IDs to select.

selectSurfaces(entry_to_surface_names: dict[int, set[str]])

Selects the given surfaces in the workspace surfaces table. Also clears the previous selection.

Parameters:

entry_to_surface_names – Dictionary mapping entry IDs to sets of surface names to select.

getEntryIdsOfSelectedSurfaces() set[int]

Get the entry IDs of entries corresponding to currently selected surfaces in the surface table.

Returns:

Set of entry IDs for selected surfaces.

isTableBeingUpdated() bool

Check if the table is being updated.

Returns:

True if the table is being updated, False otherwise.

getDisplayedSurfaceCount() int

Get the count of displayed surfaces.

Returns:

The count of displayed surfaces.