Source code for pyface.drop_handler

# (C) Copyright 2005-2022 Enthought, Inc., Austin, TX
# All rights reserved.
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at
# Thanks for using Enthought open source!
from pyface.i_drop_handler import IDropHandler
from traits.api import Callable, HasTraits, List, provides, Str

[docs]@provides(IDropHandler) class BaseDropHandler(HasTraits): """ Basic drop handler """ # BaseDropHandler interface --------------------------------------------- #: Returns True if the current drop handler can handle the given drag event #: occurring on the given target widget. on_can_handle = Callable #: Performs drop action when drop event occurs on target widget. on_handle = Callable # IDropHandler interface ------------------------------------------------
[docs] def can_handle_drop(self, event, target): return self.on_can_handle(event, target)
[docs] def handle_drop(self, event, target): return self.on_handle(event, target)
[docs]@provides(IDropHandler) class FileDropHandler(HasTraits): """ Class to handle backward compatible file drop events """ # FileDropHandler interface --------------------------------------------- #: supported extensions extensions = List(Str) #: Called when file is opened. Takes single argument: path of file open_file = Callable # IDropHandler interface ------------------------------------------------
[docs] def can_handle_drop(self, event, target): """ Does the drop event contails file data with matching extensions """ if event.mimeData().hasUrls(): for url in event.mimeData().urls(): file_path = url.toLocalFile() if file_path.endswith(tuple(self.extensions)): return True return False
[docs] def handle_drop(self, event, target): """ Open the file using the supplied callback """ for url in event.mimeData().urls(): self.open_file(url.toLocalFile())