hydrus/include/ClientDragDrop.py

61 lines
1.7 KiB
Python

import ClientFiles
import json
import wx
class FileDropTarget( wx.PyDropTarget ):
def __init__( self, filenames_callable ):
wx.PyDropTarget.__init__( self )
self._receiving_data_object = wx.DataObjectComposite()
self._hydrus_media_data_object = wx.CustomDataObject( 'application/hydrus-media' )
self._file_data_object = wx.FileDataObject()
self._receiving_data_object.Add( self._hydrus_media_data_object, True )
self._receiving_data_object.Add( self._file_data_object )
self.SetDataObject( self._receiving_data_object )
self._filenames_callable = filenames_callable
def OnData( self, x, y, result ):
if self.GetData():
received_format = self._receiving_data_object.GetReceivedFormat()
if received_format.GetType() == wx.DF_FILENAME:
paths = self._file_data_object.GetFilenames()
wx.CallAfter( self._filenames_callable, paths )
else:
try:
format_id = received_format.GetId()
except:
format_id = None
if format_id == 'application/hydrus-media':
pass
return result
def OnDragOver( self, x, y, result ):
return wx.DragCopy