VirtualBox

Changeset 20445 in vbox


Ignore:
Timestamp:
Jun 9, 2009 4:19:56 PM (16 years ago)
Author:
vboxsync
Message:

Python: generic callback creation mechanism, use like

cb = g_virtualBoxManager.createCallback("IVirtualBoxCallback", TestCallback)
g_virtualBoxManager.vbox.registerCallback(cb)

where TestCallback is class implementing methods of IVirtualBoxCallback

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/glue/vboxapi.py

    r20155 r20445  
    136136        pythoncom.CoUninitialize()
    137137
     138    def createCallback(self, iface, impl):       
     139        d = {}
     140        d['BaseClass'] = impl
     141        str = ""
     142        str += "import win32com.server.util"
     143        str += "class "+iface+"Impl(BaseClass):\n"
     144        str += "   _com_interfaces_ = ['"+iface+"']\n"
     145        str += "   _typelib_guid_ = '{46137EEC-703B-4FE5-AFD4-7C9BBBBA0259}'\n"
     146        str += "   def __init__(self): pass\n"
     147        str += "result = win32com.server.util.wrap("+iface+"Impl())\n"       
     148        exec (str,d,d)
     149        return d['result']
    138150
    139151class PlatformXPCOM:
     
    170182    def deinitPerThread(self):
    171183        pass
     184
     185    def createCallback(self, iface, impl):       
     186        d = {}
     187        d['BaseClass'] = impl
     188        str = ""
     189        str += "import xpcom.components\n"
     190        str += "class "+iface+"Impl(BaseClass):\n"
     191        str += "   _com_interfaces_ = xpcom.components.interfaces."+iface+"\n"
     192        str += "   def __init__(self): pass\n"
     193        str += "result = "+iface+"Impl()\n"
     194        #print str
     195        exec (str,d,d)
     196        return d['result']
     197
    172198
    173199class PlatformWEBSERVICE:
     
    210236    def deinitPerThread(self):
    211237        pass
     238
     239    def createCallback(self, iface, impl):
     240        raise Exception("no callbacks for webservices")
    212241
    213242class SessionManager:
     
    260289    def deinitPerThread(self):
    261290        self.platform.deinitPerThread()
     291
     292    def createCallback(self, iface, impl):
     293        return self.platform.createCallback(iface, impl)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette