Source code for fsleyes.actions.removealloverlays

#
# removealloverlays.py - The RemoveAllOverlaysAction class.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module provides the :class:`RemoveAllOverlaysAction`, which allows the
uesr to remove all overlays from the :class:`.OverlayList`.
"""


import fsleyes.strings as strings
from . import             base
from . import             saveoverlay


[docs]class RemoveAllOverlaysAction(base.Action): """The ``RemoveAllOverlaysAction`` allows the uesr to remove all overlays from the :class:`.OverlayList`. """
[docs] def __init__(self, overlayList, displayCtx, frame): """Create a ``RemoveAllOverlaysAction``. :arg overlayList: The :class:`.OverlayList`. :arg displayCtx: The :class:`.DisplayContext`. :arg frame: The :class:`.FSLeyesFrame`. """ base.Action.__init__( self, overlayList, displayCtx, self.__removeAllOverlays) self.__name = '{}_{}'.format(type(self).__name__, id(self)) overlayList.addListener('overlays', self.__name, self.__overlayListChanged)
[docs] def destroy(self): """Must be called when this ``RemoveAllOverlaysAction`` is no longer needed. Removes property listeners, and then calls :meth:`.Action.destroy`. """ self.overlayList.removeListener('overlays', self.__name) base.Action.destroy(self)
def __overlayListChanged(self, *a): """Called when the :class:`.OverlayList` changes. Updates the :attr:`.Action.enabled` flag """ self.enabled = len(self.overlayList) > 0 def __removeAllOverlays(self): """Removes all overlays from the :class:`.OverlayList`. """ import wx allSaved = saveoverlay.checkOverlaySaveState( self.overlayList, self.displayCtx) # If there are unsaved images, # get the user to confirm if not allSaved: msg = strings.messages[self, 'unsavedOverlays'] title = strings.titles[ self, 'unsavedOverlays'] parent = wx.GetApp().GetTopWindow() dlg = wx.MessageDialog(parent, message=msg, caption=title, style=(wx.YES_NO | wx.NO_DEFAULT | wx.CENTRE | wx.ICON_WARNING)) dlg.CentreOnParent() if dlg.ShowModal() == wx.ID_NO: return del self.overlayList[:]