dabo Commit
Revision 4342
Date: 2008-08-03 08:44:15 -0700 (Sun, 03 Aug 2008)
Author: Ed
Trac: http://svn.dabodev.com/trac/dabo/changeset/4342
Changed:
D trunk/dabo/ui/uiwx/dDropTarget.py
U trunk/dabo/ui/uiwx/dPemMixin.py
Log:
Moved the dDropTarget class definition into dPemMixin.py, and renamed it
_DropTarget. The reason is that this is a wxPython-specific implementation
detail, and we don't want to expose this as a Dabo base class to users.
Diff:
Deleted: trunk/dabo/ui/uiwx/dDropTarget.py
Modified: trunk/dabo/ui/uiwx/dPemMixin.py
===================================================================
--- trunk/dabo/ui/uiwx/dPemMixin.py 2008-08-03 01:25:32 UTC (rev 4341)
+++ trunk/dabo/ui/uiwx/dPemMixin.py 2008-08-03 15:44:15 UTC (rev 4342)
@@ -15,9 +15,9 @@
from dabo.dObject import dObject
from dabo.ui import makeDynamicProperty
from dabo.lib.utils import dictStringify
-from dDropTarget import dDropTarget
+
class dPemMixin(dPemMixinBase):
""" Provides Property/Event/Method interfaces for dForms and dControls.
@@ -1875,11 +1875,9 @@
def _setDroppedFileHandler(self, val):
if self._constructed():
self._droppedFileHandler = val
-
if self._dropTarget == None:
- self._dropTarget = dDropTarget()
+ self._dropTarget = _DropTarget()
self.SetDropTarget(self._dropTarget)
-
self._dropTarget.FileHandler = val
else:
self._properties["DroppedFileHandler"] = val
@@ -1892,11 +1890,9 @@
if self._constructed():
self._droppedTextHandler = val
target = self.GetDropTarget()
-
if self._dropTarget == None:
- self._dropTarget = dDropTarget()
+ self._dropTarget = _DropTarget()
self.SetDropTarget(self._dropTarget)
-
self._dropTarget.TextHandler = val
else:
self._properties["DroppedTextHandler"] = val
@@ -2767,6 +2763,7 @@
DynamicWidth = makeDynamicProperty(Width)
+
class DrawObject(dObject):
"""Class to handle drawing on an object.
@@ -3585,7 +3582,65 @@
DynamicWidth = makeDynamicProperty(Width)
DynamicXpos = makeDynamicProperty(Xpos)
DynamicYpos = makeDynamicProperty(Ypos)
+
+
+
+class _DropTarget(wx.DropTarget):
+ """Class that handles drag/drop items of any type."""
+ 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()
+ if format == wx.DF_FILENAME:
+ 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)"""))
if __name__ == "__main__":
_______________________________________________
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]