dabo Commit
Revision 4326
Date: 2008-07-30 14:44:25 -0700 (Wed, 30 Jul 2008)
Author: Nate
Trac: http://svn.dabodev.com/trac/dabo/changeset/4326
Changed:
A trunk/dabo/ui/uiwx/dDropTarget.py
U trunk/dabo/ui/uiwx/dPemMixin.py
Log:
Added a new class dDropTarget. The drop target using the
wx.DataObjectComposite class to be able to handle both files and text drops.
The class is built to allow for easy interfacing with the DroppedTextHandler
and DroppedFileHandler properties in dPemMixin.
Modified the DroppedTextHandler and DroppedFileHandler properties to support
the new drop target. User code shouldn't need to change.
Diff:
Added: trunk/dabo/ui/uiwx/dDropTarget.py
===================================================================
--- trunk/dabo/ui/uiwx/dDropTarget.py (rev 0)
+++ trunk/dabo/ui/uiwx/dDropTarget.py 2008-07-30 21:44:25 UTC (rev 4326)
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+import wx
+from dabo.dLocalize import _
+
+class dDropTarget(wx.DropTarget):
+ def __init__(self):
+ wx.DropTarget.__init__(self)
+
+ self._fileHandle = self._textHandle = None
+
+ self.compositeDataObject = wx.DataObjectComposite()
+ self.fileData = wx.FileDataObject()
+ self.compositeDataObject.Add(self.fileData)
+ self.textData = wx.TextDataObject()
+ self.compositeDataObject.Add(self.textData)
+
+ self.SetDataObject(self.compositeDataObject)
+
+ def OnData(self, x, y, defResult):
+ if self.GetData():
+ format =
self.compositeDataObject.ReceivedFormat.GetType()
+ print "Data type = %s, file type = %s" % (format,
wx.DF_FILENAME)
+ if format == wx.DF_FILENAME:
+ print "dropping files to file handle: %s" %
self._fileHandle
+ if self._fileHandle:
+
self._fileHandle.processDroppedFiles(self.fileData.Filenames)
+ elif format == wx.DF_TEXT or wx.DF_HTML:
+
self._textHandle.processDroppedText(self.textData.Text)
+ else:
+ print false
+
+ return defResult
+
+ def OnDragOver(self, xpos, ypos, result):
+ return wx.DragLink
+
+ #Property getters and setters
+ def _getFileHandler(self):
+ return self._fileHandle
+
+ def _setFileHandler(self, val):
+ self._fileHandle = val
+
+
+ def _getTextHandler(self):
+ return self._textHandle
+
+ def _setTextHandler(self, val):
+ self._textHandle = val
+
+
+ #PropertyDefinitions
+ FileHandler = property(_getFileHandler, _setFileHandler, None,
+ _("""Reference to the object that will handle files dropped on
this control.
+ When files are dropped, a list of them will be passed
to this object's
+ 'processDroppedFiles()' method. Default=None (object
or None)"""))
+
+ TextHandler = property(_getTextHandler, _setTextHandler, None,
+ _("""Reference to the object that will handle text dropped on
this control.
+ When text is dropped, that text will be passed to this
object's
+ 'processDroppedText()' method. Default=None (object or
None)"""))
\ No newline at end of file
Modified: trunk/dabo/ui/uiwx/dPemMixin.py
===================================================================
--- trunk/dabo/ui/uiwx/dPemMixin.py 2008-07-30 16:52:50 UTC (rev 4325)
+++ trunk/dabo/ui/uiwx/dPemMixin.py 2008-07-30 21:44:25 UTC (rev 4326)
@@ -15,6 +15,7 @@
from dabo.dObject import dObject
from dabo.ui import makeDynamicProperty
from dabo.lib.utils import dictStringify
+from dDropTarget import dDropTarget
class dPemMixin(dPemMixinBase):
@@ -296,6 +297,7 @@
# Handlers for drag/drop
self._droppedFileHandler = None
self._droppedTextHandler = None
+ self._dropTarget = None
# _beforeInit hook for Class Designer code
self._beforeInitDesignerHook()
@@ -1873,18 +1875,12 @@
def _setDroppedFileHandler(self, val):
if self._constructed():
self._droppedFileHandler = val
- class FileDropTarget(wx.FileDropTarget):
- def __init__(self):
- wx.FileDropTarget.__init__(self)
- self.handler = val
- def OnDropFiles(self, xpos, ypos, filelist):
- if self.handler:
-
self.handler.processDroppedFiles(filelist)
- return True
- def OnDragOver(self, xpos, ypos, result):
- return wx.DragLink
- self.SetDropTarget(FileDropTarget())
- self.SetDropTarget(FileDropTarget())
+
+ if self._dropTarget == None:
+ self._dropTarget = dDropTarget()
+ self.SetDropTarget(self._dropTarget)
+
+ self._dropTarget.FileHandler = val
else:
self._properties["DroppedFileHandler"] = val
@@ -1895,18 +1891,13 @@
def _setDroppedTextHandler(self, val):
if self._constructed():
self._droppedTextHandler = val
-
- class TextDropTarget(wx.TextDropTarget):
- def __init__(self):
- wx.TextDropTarget.__init__(self)
- self.handler = val
- def OnDropText(self, xpos, ypos, txt):
- if self.handler:
-
self.handler.processDroppedText(txt)
- return True
- def OnDragOver(self, xpos, ypos, result):
- return wx.DragLink
- self.SetDropTarget(TextDropTarget())
+ target = self.GetDropTarget()
+
+ if self._dropTarget == None:
+ self._dropTarget = dDropTarget()
+ self.SetDropTarget(self._dropTarget)
+
+ self._dropTarget.TextHandler = val
else:
self._properties["DroppedTextHandler"] = val
@@ -2776,7 +2767,6 @@
DynamicWidth = makeDynamicProperty(Width)
-
class DrawObject(dObject):
"""Class to handle drawing on an object.
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[EMAIL PROTECTED]