Here's a piece of code which takes text/plain mime type, appends '123' to the text and creates drop buffer for Serna (DocumentFragment). The idea is simple: callback should create appropriate GroveDocumentFragment from the QMimeData.
Code:
from SernaApi import *
from weakref import *
from PyQt4.QtCore import QMimeData
from PyQt4.QtGui import QDropEvent
class TextToFragment(MimeCallback):
def __init__(self, mt):
MimeCallback.__init__(self)
self.fragMimeType_ = mt
def mimeType(self):
return "text/plain"
def callbackClass(self):
return MimeCallback.CREATE_FRAGMENT
def execute(self, mh, dropevent):
frag = GroveDocumentFragment()
tnode = GroveText(unicode(mh.mimeData().text() + "123"))
frag.appendChild(tnode)
SernaDocFragment.newFragment(mh.mimeData(), \
self.fragMimeType_).setFragment(frag)
return True
class MimeCallbacksTest(DocumentPlugin):
def __init__(self, a1, a2):
DocumentPlugin.__init__(self, a1, a2)
self.buildPluginExecutors(True)
self.mh_ = self.sernaDoc().mimeHandler()
def postInit(self):
target_mt = SernaDocFragment.fragMimeType(self.sernaDoc().getDsi())
self.textToFrag_ = TextToFragment(target_mt)
self.mh_.registerCallback(self.textToFrag_, 150)
~