View Single Post
(#2 (permalink))
Old
apg apg is offline
Administrator
 
Posts: 53
Join Date: Mar 2009
Default 09-17-2009, 02:39 PM

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)
~
Reply With Quote