Source code for schrodinger.application.livedesign.maestro_sync
from schrodinger.maestro_utils import maestro_sync
from schrodinger.project import utils as proj_utils
from schrodinger.Qt import QtCore
[docs]class EntrySelectionMaestroSync(maestro_sync.BaseMaestroSync, QtCore.QObject):
    """
    Keep track of the project entry selection state. If it changes, emit a
    signal.
    """
    entrySelectionChanged = QtCore.pyqtSignal()
[docs]    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._selected_eids = set() 
[docs]    def onProjectUpdated(self):
        super().onProjectUpdated()
        if self.updateSelectedEntries():
            self.entrySelectionChanged.emit() 
[docs]    def updateSelectedEntries(self):
        """
        Update the cached list of selected entry IDs with the current set of
        selected entry IDs in the project.
        :return: whether the cached entry ID list needed to be updated
        :rtype: bool
        """
        selected_eids = set(proj_utils.get_selected_entry_ids())
        if self._selected_eids != selected_eids:
            self._selected_eids = selected_eids
            return True
        return False