schrodinger.ui.qt.delegates module

class schrodinger.ui.qt.delegates.CenteredIconDelegate

Bases: PyQt6.QtWidgets.QStyledItemDelegate

Displays a center-aligned icon based on a QPixmap received from Qt.DecorationRole. Does nothing if Qt.DecorationRole returns None.

paint(painter, option, index)

Paint the icon supplied by QDecorationRole into each cell.

Parameters
  • painter (QPainter) – The painter being used to render the delegate

  • option (QStyleOptionViewItem) – The style options to use when painting

  • index (QtCore.QModelIndex) – The index being represented

class schrodinger.ui.qt.delegates.AbstractDelegateWithEditIcon(*args, **kwargs)

Bases: PyQt6.QtWidgets.QStyledItemDelegate

A base class for delegates that paint an edit icon.

Variables

EDIT_ICON (str) – The file name for the icon to paint on editable cells. This file must be in the same directory as this module.

EDIT_ICON = ':/schrodinger/ui/qt/icons_dir/pencil_icon.ico'
__init__(*args, **kwargs)
class schrodinger.ui.qt.delegates.LineEditDelegate(*args, **kwargs)

Bases: schrodinger.ui.qt.delegates.AbstractDelegateWithEditIcon

Delegate recommended for use with all Schrodinger table model. It’s just like the standard Qt delegate, except that if a table cell has the ItemIsEditable flag set, it will draw a “pencil” icon on the right side of the cell.

QLineEdit widget will be shown for cells that return str values for data, and QSpinBox widget will be shown for cells that return int or float values. To limit allowed min/max values, use SpinBoxDelegate.

paint(self, painter: Optional[QPainter], option: QStyleOptionViewItem, index: QModelIndex)
class schrodinger.ui.qt.delegates.MouseTrackingDelegateMixin(view)

Bases: object

A mixin for a QtWidgets.QStyledItemDelegate that tracks which cell the mouse is in.

__init__(view)
Parameters

view (QtWidgets.QTableView) – The view that this delegate will be added to. Note that mouse tracking will be enabled in the view

property mouse_data

Returns the data for the cell that the mouse is in.

Returns

the data for the cell that the mouse is on or None

Return type

object

createEditor(parent, option, index)

This delegate does not have a separate editor widget, so we return None. All arguments are ignored, but are present for Qt compatibility.

eventFilter(viewport, event)

The delegate does not receive Leave events or MouseMove events that don’t occur over an index (e.g. events that occur over a header or over blank space in the view), so we have to act as an event filter for the view’s viewport to observe these events.

Parameters
  • viewport (QtWidgets.QWidget) – The view’s viewport. Not used, but present for compatibility with Qt’s event filtering.

  • event (QtCore.QEvent) – The event to filter

Returns

True if the event was handled and does not need to be passed to the viewport. False otherwise. We want all events to be passed to the viewport, so we always return False.

Return type

bool

class schrodinger.ui.qt.delegates.PushButtonDelegate(view, role=None)

Bases: schrodinger.ui.qt.delegates.MouseTrackingDelegateMixin, PyQt6.QtWidgets.QStyledItemDelegate

A delegate containing a clickable push button. The button name will be taken from the Qt.DisplayRole data. Then clicked, this delegate will emit a clicked signal with either:

  • If role is None, a QtCore.QModelIndex for the cell that was clicked.

  • Otherwise, the role data for the cell that was clicked.

clicked

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

__init__(view, role=None)
Parameters
  • view (QtWidgets.QTableView) – The view that this delegate will be added to. Note that mouse tracking will be enabled in the view.

  • role (int or NoneType) – The role to emit data for when a button is clicked. If not given, the index that was clicked will be emitted instead. This value may be specified after instantiation using setRole.

setRole(role)

Specify the role to emit data for when a button is clicked. If None, the index that was clicked will be emitted instead.

Parameters

role (int or NoneType) – The role

paint(self, painter: Optional[QPainter], option: QStyleOptionViewItem, index: QModelIndex)
editorEvent(event, model, option, index)

Handle mouse clicks and key presses. Left clicking on the button or hitting the space bar will emit the clicked signal. Left clicks outside of the button will be handled as normal (i.e. selecting the cell).

See Qt documentation for documentation on arguments and return value.

eventFilter(viewport, event)

The delegate does not receive Leave events or MouseMove events that don’t occur over an index (e.g. events that occur over a header or over blank space in the view), so we have to act as an event filter for the view’s viewport to observe these events. Without these events, we may not know when the mouse is no longer over a button, so we won’t know when to remove mouse-over highlighting on the button. Since this class has tokeep track of _btn_down and _mouse_over the parent class’ eventFilter can not be used.

Parameters
  • viewport (QtWidgets.QWidget) – The view’s viewport. Not used, but present for compatibility with Qt’s event filtering.

  • event (QtCore.QEvent) – The event to filter

Returns

True if the event was handled and does not need to be passed to the viewport. False otherwise. We want all events to be passed to the viewport, so we always return False.

Return type

bool

sizeHint(self, option: QStyleOptionViewItem, index: QModelIndex) QSize
sizeHintForText(txt)

Generate a size hint using the specified text.

Parameters

txt (str) – The text to use for determining the button’s size

Returns

The calculated size hint

Return type

QtCore.QSize

class schrodinger.ui.qt.delegates.SpinBoxDelegate(*args, **kwargs)

Bases: schrodinger.ui.qt.delegates.LineEditDelegate

A delegate that provides a QtWidgets.QSpinBox as an editor. The minimum and maximum allowed values for the spin box are set using data retrieved via the SPINBOX_LIMITS_ROLE.

Editing is initiated when the cell is clicked. Note that the mouse down and up must both occur in the same cell; otherwise, editing will not be started. This allows the user to highlight multiple cells by clicking and dragging.

NOTE: Use STableView in order to enter the edit mode after a click.

SPINBOX_LIMITS_ROLE = 357
MOUSE_CLICK_STARTS_EDIT = True
createEditor(self, parent: Optional[QWidget], option: QStyleOptionViewItem, index: QModelIndex) Optional[QWidget]
setEditorData(self, editor: Optional[QWidget], index: QModelIndex)
setModelData(self, editor: Optional[QWidget], model: Optional[QAbstractItemModel], index: QModelIndex)
updateEditorGeometry(self, editor: Optional[QWidget], option: QStyleOptionViewItem, index: QModelIndex)
class schrodinger.ui.qt.delegates.ComboBoxDelegate(*args, **kwargs)

Bases: schrodinger.ui.qt.delegates.AbstractDelegateWithEditIcon

A delegate that provides a _TableComboBox as an editor. The combo box is populated using a list or OrderedDict retrieved via the COMBOBOX_ROLE.

NOTE: Use STableView in order to open the combo menu with a single click.

COMBOBOX_ROLE = 358
MOUSE_PRESS_STARTS_EDIT = True
EDIT_ICON = ':/schrodinger/ui/qt/icons_dir/combobox_icon.ico'
paint(self, painter: Optional[QPainter], option: QStyleOptionViewItem, index: QModelIndex)
createEditor(self, parent: Optional[QWidget], option: QStyleOptionViewItem, index: QModelIndex) Optional[QWidget]
setEditorData(self, editor: Optional[QWidget], index: QModelIndex)
setModelData(self, editor: Optional[QWidget], model: Optional[QAbstractItemModel], index: QModelIndex)
class schrodinger.ui.qt.delegates.MatplotlibDelegate(parent=None)

Bases: PyQt6.QtWidgets.QStyledItemDelegate

A delegate that displays a matplotlib plot for all data of type PLOT_DATA_TYPE. Data of other types will be displayed normally (i.e. as a string). A small plot (generated in _genCellPlot) will be shown inside of the cell and a larger plot (generated in _genToolTipPlot) will be shown in a tool-tip-style pop up if the user hovers over a cell. Data for the small plot is retrieved using Qt.UserRole. Data for the tool tip plot is retrieved using Qt.ToolTipRole.

This class should not be instantiated directly and must be subclassed. Subclasses must redefine _genCellPlot and may also redefine _genToolTipPlot and the class variables.

Variables
  • TOOLTIP_PLOT (bool) – Whether the matplotlib tool tip pop up should be used. If this is False, all of the other TOOLTIP_PLOT_* constants will be ignored, as will _genToolTipPlot.

  • TOOLTIP_PLOT_WIDTH (int) – The width of the plots shown in the tool tip popup

  • TOOLTIP_PLOT_HEIGHT (int) – The height of the plots shown in the tool tip popup

  • TOOLTIP_FRAME_WIDTH (int) – The thickness of the border around the tool tip plot popup

  • PLOT_DATA_TYPE (type or tuple) – Data of this type (or tuple of types) will result in a matplotlib plot. Other data types will result in standard table behavior.

TOOLTIP_PLOT = True
TOOLTIP_PLOT_WIDTH = 640
TOOLTIP_PLOT_HEIGHT = 480
TOOLTIP_FRAME_WIDTH = 1
PLOT_DATA_TYPE = (<class 'list'>, <class 'tuple'>)
__init__(parent=None)
createEditor(parent, option, index)

This delegate does not have a separate editor widget, so we return None. All arguments are ignored, but are present for Qt compatibility.

paint(painter, option, index)

Paint the cell contents

Parameters
  • painter (QPainter) – The painter being used to render the delegate

  • option (QStyleOptionViewItem) – The style options to use when painting

  • index (PyQt5.QtCore.QModelIndex) – The index being represented

helpEvent(event, view, option, index)

Handle help events. If the index has data of type self.PLOT_DATA_TYPE for Qt.ToolTipRole, a pop up plot will be generated. All other events will be handled as usual. Before generating a pop up, make sure that a pop up for the given index isn’t already displayed. If it is, don’t do anything.

Parameters
  • event (QtGui.QHelpEvent) – The event to be handled

  • view (QtWidgets.QTableView) – The view that this delegate is used in

  • option – Ignored, but present for Qt compatibility.

  • index (QtCore.QModelIndex) – The index of the cell where the event occurred

Returns

True if the event was handled. False otherwise.

Return type

bool

class schrodinger.ui.qt.delegates.ModelIndexFilter(data, index)

Bases: PyQt6.QtCore.QModelIndex

An index that can override the data provided by a model.

Note

Qt’s QModelIndex functions are all inlined. As a result, any functions implemented in a QModelIndex subclass are bypassed when called from C++. Because of this, we have to implement this class using a real index to a dummy model (_DummyModel) rather than using a dummy index with its own data() method.

class schrodinger.ui.qt.delegates.DefaultMessageDelegate(parent=None, message='Double-click to edit...')

Bases: PyQt6.QtWidgets.QStyledItemDelegate

A delegate that displays a default “Double-click to edit” message when there is no data to display. This way, the model and the editor don’t have to treat no-data as a special case. Note that the model background color will still be used.

FONT = <PyQt6.QtGui.QFont object>
FOREGROUND = <PyQt6.QtGui.QBrush object>
__init__(parent=None, message='Double-click to edit...')
paint(painter, option, index)

If the DisplayRole data for index is empty, paint the default message instead.

See Qt documentation for an explanation of arguments.

class schrodinger.ui.qt.delegates.AbstractCustomDelegate

Bases: PyQt6.QtWidgets.QStyledItemDelegate

paintItemBackground(painter, option, index)

Paints the item’s background.

Parameters
  • painter (QtGui.QPainter) – The painter to use

  • option (QtWidgets.QStyleOptionViewItem) – The options for the cell

  • index (QtCore.QModelIndex) – The index to paint

Returns

Instance of QtWidgets.QStyleOptionViewItem initialized using original option and an instance of QStyle

Return type

tuple of QtWidgets.QStyleOptionViewItem, QStyle

class schrodinger.ui.qt.delegates.WorkspaceInclusionDelegate(parent)

Bases: schrodinger.ui.qt.delegates.AbstractCustomDelegate

A delegate for representing workspace inclusion as it is shown in the project table. This delegate allows an entry to be set as the only workspace entry by clicking, or allows workspace inclusion to be toggled by holding down Ctrl.

NOTE: If using schrodinger.ui.qt.delegates.WorkspaceInclusionDelegate, this delegate expects the model to provide the number of included entries for NUM_INCLUDED_ENTRIES_ROLE. If this data is not provided, a black inclusion icon will be used for any number of inclusions, including 1.

__init__(parent)
createEditor(parent, option, index)

This delegate does not have a separate editor widget, so we return None. All arguments are ignored, but are present for Qt compatibility.

paint(painter, option, index)

Paint the appropriate icon

Parameters
  • painter (QPainter) – The painter being used to render the delegate

  • option (QStyleOptionViewItem) – The style options to use when painting

  • index (PyQt5.QtCore.QModelIndex) – The index being represented

editorEvent(event, model, option, index)

Handle mouse clicks and key presses

Parameters
  • event (PyQt5.QtCore.QEvent) – The event that occurred

  • model (QAbstractTableModel) – The data model

  • option – Ignored, but present for Qt compatibility

  • index (PyQt5.QtCore.QModelIndex) – The index being edited

Returns

True if the event was handled. False otherwise.

Return type

bool

class schrodinger.ui.qt.delegates.PictureDelegate(parent=None, padding_factor=0.04, alignment=None)

Bases: schrodinger.ui.qt.delegates.AbstractCustomDelegate

An abstract delegate class that can render images along with text.

This delegate queries the table’s Qt.DisplayRole for data that informs how it should render an image. This data must be an instance of DISPLAY_DATA_CLASS. If not, this delegate will revert to default delegate behavior.

This delegate also queries the custom PICTURE_TEXT_ROLE role for text to display along with the generated image. The text color can be set if the table returns the appropriate QtGui.QBrush when Qt.ForegroundRole is queried.

Images should be cached for faster rendering after the first render. They are stored in a cache that can be cleared via the clearImageCache method when the model’s data changes, if necessary.

Subclasses should define the following:
-DISPLAY_DATA_CLASS: class variable that indicates the expected type of

the display data to be received from the table.

-_getPicture(): method that actually generates the picture to be

rendered. Should only be accessed via the getPicture() method

Variables

padding_factor – The portion of a cell’s width and height to be used as padding on each side of the cell when drawing the image. Default value 0.04.

TEXT_MARGIN = 2
DISPLAY_DATA_CLASS = None
__init__(parent=None, padding_factor=0.04, alignment=None)

Initialize a new delegate instance, optionally specifying the size of the padding in the cell around the image.

Parameters
  • padding_factor (float) – The portion of the cell’s width and height to be used as padding on each side of the cell when drawing the image.

  • alignment (QtCore.QAlignment) – The alignment of the text, if any text is provided by the cell data method. Vertical alignment specifies whether the text is displayed above or below the structure image.

setAlignment(alignment)

Set the text alignment for the cell. The vertical component of the alignment indicates whether the text will be displayed above or below the structure image.

The vertical component of the alignment must either be Qt.AlignTop or Qt.AlignBottom; if it is neither of these, the vertical alignment will default to Qt.AlignTop.

If this delegate is not provided with both a structure and text to display, this alignment setting is ignored.

Parameters

alignment (QtCore.Alignment) – Text alignment in table cell.

Raises

ValueError – if the vertical component of the alignment is specified to be Qt.AlignVCenter

alignment()
setTextElide(elide)

Set the text elide status of the text displayed by the delegate. The elide mode describes where the ellipsis should appear when displaying text that doesn’t fit into the available space.

Parameters

elide (Qt.TextElideMode) – text elide mode

textElide()
setPaddingFactor(padding_factor)

Set the relative size of the cell width and height used as padding for the image.

If the table view has already been painted, view.update should be called after setPaddingFactor to make sure that the visible cells are properly updated.

Raises
  • TypeError – when the supplied padding_factor is not a float

  • ValueError – when the supplied padding_factor is less than 0.0 or greater than 0.5.

Parameters

padding_factor (float) – The portion of the cell’s width and height to be used as padding on each side of the cell when drawing the image.

paddingFactor()
paint(painter, option, index)

Arrange and paint image, and optionally text, into the table cell.

See QtWidgets.QAbstractItemDelegate.paint for argument documentation.

paintText(painter, option, index, rect)

Paint supplied text into a subsection of the supplied rectangle.

Parameters
  • painter (QtGui.QPainter) – The painter that is drawing in the table

  • option (QtGui.QStyleOptionViewItem) – Class containing parameters used to draw the cell

  • index (QtCore.QModelIndex) – Index for the cell to be painted

  • rect (QtCore.QRect) – The rectangle in which the text should be painted

Returns

If text is drawn, a rectangle contained entirely within the larger painting area that contains the painted text, or None if no text was provided.

Return type

QtCore.QRect or None

paintPicture(display_data, painter, rect)

Paint the picture into the supplied rectangle.

Parameters
  • display_data (DISPLAY_DATA_CLASS) – object used to generate the image

  • painter (QtGui.QPainter) – The painter that is drawing in the table

  • rect (QtCore.QRect) – The rectangle in which the image should be painted

getPicture(*args, **kwargs) PyQt6.QtGui.QPicture

Outward-facing API for accessing a picture.

This method should not be overridden in subclasses; instead, _getCacheableArgs() and _getPicture() should be.

getContentRect(rect)

Given the rectangle representing the total area in the table cell, return a (potentially) smaller rectangle that remains after the portion of the rectangle dedicated to padding is removed.

Parameters

rect (QtCore.QRect) – the rectangle corresponding to the full table cell area

Returns

the rectangle corresponding to the subset of the table area devoted to the cell contents (full cell minus padding area, if any)

Return type

QtCore.QRect

clearImageCache()

Clear the image cache. This function can be called from a subclass if the functools.lru_cache decorator is applied to getPicture.

class schrodinger.ui.qt.delegates.HashableRdMol(rdmol: rdkit.Chem.rdchem.Mol, atom_idcs: Optional[Tuple[int, ...]] = None, color: Optional[Tuple[int, int, int]] = None, atom_labels: Optional[List[str]] = None, width_height: Optional[Tuple[int, int]] = None)

Bases: object

A rdchem.Mol wrapper that extracts data from the rdchem.Mol object and uses it to form a useful hash value. This is necessary to ensure that a rdchem.Mol instance is not accidentally matched with a totally different rdchem.Mol because they happen to share the same memory location (at different times).

Since this type of object is intended for use with the RdMolDelegate, the options used for rendering this as a picture are included in the hash.

__init__(rdmol: rdkit.Chem.rdchem.Mol, atom_idcs: Optional[Tuple[int, ...]] = None, color: Optional[Tuple[int, int, int]] = None, atom_labels: Optional[List[str]] = None, width_height: Optional[Tuple[int, int]] = None)
Note

as of this writing, sketcher does not appear to support rendering both custom atom coloring and atom labels.

Parameters
  • rdmol – the molecule for which the 2D image will be rendered

  • atom_idcs – optionally, atom indices for rdmol which should be colored. Will be ignored if color is not specified.

  • color – a (red, green, blue) tuple describing the color of the atoms (optionally) specified by atom_idcs. Will be ignored if atom_idcs is not specified.

  • atom_labels – optionally, text labels to annotate each atom. The labeled atom is specified by the index of the label within the list, so we must have len(atom_labels) == rdmol.GetNumAtoms()

  • width_height – optionally, the width and height of the 2D image

class schrodinger.ui.qt.delegates.RdMolDelegate(parent=None, padding_factor=0.04, alignment=None)

Bases: schrodinger.ui.qt.delegates.PictureDelegate

Delegate that uses RDKit and sketcher to display a 2D image of a small molecule.

Input Mol objects can use implicit or explicit hydrogens.

DISPLAY_DATA_CLASS

alias of rdkit.Chem.rdchem.Mol

paintPicture(display_data, painter, rect)

Paint the picture into the supplied rectangle.

Parameters
  • display_data (DISPLAY_DATA_CLASS) – object used to generate the image

  • painter (QtGui.QPainter) – The painter that is drawing in the table

  • rect (QtCore.QRect) – The rectangle in which the image should be painted

class schrodinger.ui.qt.delegates.StructureDelegate(parent=None, padding_factor=0.04, alignment=None)

Bases: schrodinger.ui.qt.delegates.RdMolDelegate

Delegate used to display a 2D image of a small molecule.

DISPLAY_DATA_CLASS

alias of schrodinger.structure._structure.Structure

class schrodinger.ui.qt.delegates.CheckboxDelegate

Bases: schrodinger.ui.qt.delegates.AbstractCustomDelegate

This delegate contains a clickable checkbox. The checkbox is only displayed if the index contains data for the Qt.CheckStateRole role. If the Qt.CheckStateRole role is None, then the standard delegate behavior will be used. The index must flagged as enabled and editable for clicks to toggle the model value, and clicks must occur on the checkbox itself. Clicks on other areas of the cell will be handled as normal (i.e. selecting the cell). Model.setData() will be called with the default role (i.e. Qt.EditRole) when toggling the checkbox value. Note that this delegate uses a bi-state rather than tri-state checkbox, so partially checked states are not allowed.

DRAW_STYLE = 3
createEditor(parent, option, index)

This delegate does not have a separate editor widget, so we return None. All arguments are ignored, but are present for Qt compatibility.

paint(painter, option, index)

Paint the appropriate icon

Parameters
  • painter (PyQt5.QtGui.QPainter) – The painter being used to render the delegate

  • option (PyQt5.QtWidgets.QStyleOptionViewItem) – The style options to use when painting

  • index (PyQt5.QtCore.QModelIndex) – The index being represented

editorEvent(event, model, option, index)

Handle mouse clicks and key presses. Left clicking on the check box or hitting the space bar will toggle the check box value. Left clicks outside of the checkbox will be handled as normal (i.e. selecting the cell).

Parameters
  • event (PyQt5.QtCore.QEvent) – The event that occurred

  • model (QAbstractTableModel) – The data model

  • option (QStyleOptionViewItem) – The style options for the cell

  • index (PyQt5.QtCore.QModelIndex) – The index being edited

Returns

True if the event was handled. False otherwise.

Return type

bool

sizeHint(option=None, index=None)

Provide a reasonable default size for the table cell. If no index is provided, then option is not required and it is assumed that the cell contains check data.

See Qt documentation for an explanation of arguments and return type

class schrodinger.ui.qt.delegates.RadioButtonDelegate

Bases: schrodinger.ui.qt.delegates.CheckboxDelegate

Subclass of CheckboxDelegate giving the widget a radio button appearance. Note that the model must define check state behavior, e.g. to uncheck all other rows when a new row is checked.

DRAW_STYLE = 5
paint(painter, option, index)

Paint the appropriate icon

Parameters
  • painter (PyQt5.QtGui.QPainter) – The painter being used to render the delegate

  • option (PyQt5.QtWidgets.QStyleOptionViewItem) – The style options to use when painting

  • index (PyQt5.QtCore.QModelIndex) – The index being represented

class schrodinger.ui.qt.delegates.ProgressBarDelegate

Bases: schrodinger.ui.qt.delegates.AbstractCustomDelegate

This delegate displays if the Qt.DisplayRows datat is an int or tuple; standard delegate behavior is invoked otherwise.

Integer values are displayed as percentages on the progress bar. These must be between -100 and 100.

The tuple should consist of (value, maximum), in which case the progress text is shown as abs(value)/maximum.

A negative value flags the existence of an error and changes the color to orange.

DRAW_STYLE = 10
createEditor(parent, option, index)

This delegate does not have a separate editor widget, so we return None. All arguments are ignored, but are present for Qt compatibility.

paint(painter, option, index)

Paint the progress bar or use the default delegate

Parameters
  • painter (QtGui.QPainter) – The painter being used to render the delegate

  • option (QtWidgets.QStyleOptionViewItem) – The style options to use when painting

  • index (QtCore.QModelIndex) – The index being represented

sizeHint(option=None, index=None)

Provide a reasonable default size for the table cell. If no index is provided, then option is not required and it is assumed that the cell contains progress bar data.

See Qt documentation for an explanation of arguments and return type

class schrodinger.ui.qt.delegates.ToolTipIconDelegate(parent, icon)

Bases: schrodinger.ui.qt.delegates.AbstractCustomDelegate

A delegate for drawing an icon which shows a tooltip when clicked when user hovers the mouse over the cell. Tool tip text must be returned by the model’s data() method for the ToolTipRole.

__init__(parent, icon)

Initialize the delegate. :param parent: Parent view widget :param icon: QIcon to draw in the cell.

paint(painter, option, index)

Paint the appropriate icon, but only for cells that have a ToolTipRole.

Parameters
  • painter (QPainter) – The painter being used to render the delegate

  • option (QStyleOptionViewItem) – The style options to use when painting

  • index (PyQt5.QtCore.QModelIndex) – The index being represented

editorEvent(event, model, option, index)

Handle mouse clicks: show tool tip if the cell is clicked.

class schrodinger.ui.qt.delegates.LinkDelegate(view, role=None, link_role=None)

Bases: schrodinger.ui.qt.delegates.PushButtonDelegate

A delegate containing a clickable text. Text will be taken from the Qt.DisplayRole data. When clicked, this delegate will emit a clicked signal with either:

  • If role is None, a QtCore.QModelIndex for the cell that was clicked.

  • Otherwise, the role data for the cell that was clicked.

When optional link role is provided data with that is checked to determine whether link should be enabled. When link role is None link is always enabled. When link is disabled clicked signal is not emitted.

Variables
  • DISABLED_STYLE (str) – style sheet that sets button text to standard disabled link color

  • ENABLED_STYLE (str) – style sheet that sets button text to “Maestro blue” to match standard link appearance

  • _cursor_over_delegate (bool) – whether the cursor is over the delgate

  • _cursor_override_active (bool) – whether the “pointing hand” cursor override is currently in effect

DISABLED_STYLE = 'QPushButton {color: #acb8bf}'
ENABLED_STYLE = 'QPushButton {color: #2e9cdc}'
__init__(view, role=None, link_role=None)
Parameters
  • view (QtWidgets.QTableView) – The view that this delegate will be added to. Note that mouse tracking will be enabled in the view.

  • role (int or NoneType) – The role to emit data for when a button is clicked. If not given, the index that was clicked will be emitted instead. This value may be specified after instantiation using setRole.

  • link_role (int or NoneType) – The role to check data that determines whether link should be enabled. (Note: may need to use a role different from Qt.DisplayRole if the link should use the disabled stylesheet)

indexIsEnabled(index)
Returns

whether the specified index should have an enabled link

Return type

bool

paint(painter, option, index)

Temporarily updates the painter font to be bold to match standard link appearance.

eventFilter(viewport, event)

Catch all events in order to apply the correct appearance to the cursor based on its position.

Parameters
  • viewport (QtWidgets.QWidget) – The view’s viewport. Not used, but present for compatibility with Qt’s event filtering.

  • event (QtCore.QEvent) – The event to filter

Returns

True if the event was handled and does not need to be passed to the viewport. False otherwise. We want all events to be passed to the viewport, so we always return False.

Return type

bool

schrodinger.ui.qt.delegates.structure_tuple(st)

Produce a hashable tuple to identify a structure by its Cartesian coordinates and atom types.

Parameters

st (structure.Structure) – a structure instance

Returns

two tuples containing a subset of the data from the structure instance. The first contains the atom types; The second contains the Cartesian coordinates of the atoms.

Return type

tuple(tuple(str), tuple(float))

class schrodinger.ui.qt.delegates.SketcherDelegate(parent=None, message='Double-click to edit...')

Bases: schrodinger.ui.qt.delegates.DefaultMessageDelegate

Delegate that uses the SketcherTextWidget and sketcher to display a LineEdit and a sketcher button. The LineEdit can be edited directly or populated by the SMARTS pattern returned by sketcher.

createEditor(self, parent: Optional[QWidget], option: QStyleOptionViewItem, index: QModelIndex) Optional[QWidget]
setEditorData(self, editor: Optional[QWidget], index: QModelIndex)
setModelData(self, editor: Optional[QWidget], model: Optional[QAbstractItemModel], index: QModelIndex)