61 lines
1.7 KiB
Python
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
|
|
|
|
|