Source code for magmap.gui.event_handlers

# PyQt event handlers
"""Handlers for PyQt events."""

from PyQt5.QtCore import QObject, QEvent

from magmap.settings import config

_logger = config.logger.getChild(__name__)


[docs] class FileOpenHandler(QObject): """Handle file opening events. These events are triggered by Apple Events through the PyInstaller bootloader. Attributes: fn_open_image (func): Function to open an image, taking the image path. """ #: tuple: URI schemes that may be passed to MagellanMapper. _SCHEMES = ("file://", f"{config.URI_SCHEME}:", f"{config.URI_SCHEME}://") def __init__(self, fn_open_image, parent=None): """Create a new instance of the file open handler. Args: fn_open_image (func): Function to open an image. parent (:class:`PyQt5.QtCore.QObject`): Parent object. """ super().__init__(parent=parent) self.fn_open_image = fn_open_image
[docs] def eventFilter(self, watched, event): """Handle open file events. Args: watched (:class:`PyQt5.QtCore.QObject`): Watched object. event (:class:`PyQt5.QtCore.QEvent`): Event oject. Returns: bool: True if the event was filtered out; otherwise the return output from the base class. """ if event.type() == QEvent.FileOpen: url = event.url().toString() _logger.info("File open event: %s", url) for scheme in self._SCHEMES: if url.startswith(scheme): # remove scheme and trigger file opening url = url[len(scheme):] self.fn_open_image(url) return True return super().eventFilter(watched, event)