You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.8 KiB
123 lines
3.8 KiB
import pcop
|
|
|
|
def registeredApplications():
|
|
"""Return a list of current DCOP registered applications."""
|
|
return pcop.app_list()
|
|
|
|
def apps():
|
|
"""Return a list of current DCOP registered applications."""
|
|
return pcop.app_list()
|
|
|
|
def anyAppCalled(appName):
|
|
"""Return any application instance called appName, or None if none currently registered."""
|
|
for app in apps():
|
|
if appName==app or appName+'-'==app[:len(appName)+1]:
|
|
return DCOPApplication(app)
|
|
return None
|
|
|
|
def registerAs(appid, addpid=1):
|
|
"""Register the application with DCOP and return the ID. This is needed in order to receive DCOP requests."""
|
|
return pcop.register_as(appid,addpid)
|
|
|
|
def processEvents():
|
|
"""Process any waiting QT events, then return."""
|
|
pcop.process_events()
|
|
|
|
def connectDCOPSignal(sender,senderObj,signal,receiverObj,slot,vol=1):
|
|
"""Connect a dcop signal"""
|
|
return pcop.connect_dcop_signal(sender,senderObj,signal,receiverObj,slot,vol)
|
|
|
|
def disconnectDCOPSignal(sender,senderObj,signal,receiverObj,slot):
|
|
"""Connect a dcop signal"""
|
|
return pcop.disconnect_dcop_signal(sender,senderObj,signal,receiverObj,slot)
|
|
|
|
class DCOPApplication(object):
|
|
def __init__( self, name ):
|
|
self.name = name
|
|
|
|
def __getattr__( self, item ):
|
|
if item == "__repr__":
|
|
return object.__repr__
|
|
if item == "__str__":
|
|
return object.__str__
|
|
if item == "__call__":
|
|
return object.__call__
|
|
if item == "_objects_":
|
|
return pcop.obj_list(self.name)
|
|
return DCOPObject( self.name, item )
|
|
|
|
def _object_(self, object):
|
|
return DCOPObject( self.name, object )
|
|
|
|
class DCOPObject(object):
|
|
def __init__( self, appname, name ):
|
|
self.appname = appname
|
|
self.name = name
|
|
|
|
def __repr__( self ):
|
|
return "DCOPObject(%s,%s)" % ( self.appname, self.name )
|
|
|
|
def __str__( self ):
|
|
return "DCOPObject(%s,%s)" % ( self.appname, self.name )
|
|
|
|
def __getattr__( self, item ):
|
|
if item == "__repr__":
|
|
return object.__repr__
|
|
if item == "__str__":
|
|
return object.__str__
|
|
if item == "__call__":
|
|
return object.__call__
|
|
if item == "_methods_":
|
|
return pcop.method_list( self.appname, self.name )
|
|
return DCOPMethod( self.appname, self.name, item )
|
|
|
|
def _method_(self, method):
|
|
return DCOPMethod( self.appname, self.name, method )
|
|
|
|
class DCOPMethod(object):
|
|
def __init__( self, appname, objname, name ):
|
|
self.appname = appname
|
|
self.objname = objname
|
|
self.name = name
|
|
|
|
def __repr__( self ):
|
|
return "DCOPMethod(%s,%s,%s)" % ( self.appname, self.objname, self.name )
|
|
|
|
def __str__( self ):
|
|
return "DCOPMethod(%s,%s,%s)" % ( self.appname, self.objname, self.name )
|
|
|
|
def __call__( self, *args ):
|
|
return pcop.dcop_call( self.appname, self.objname, self.name, args )
|
|
|
|
class DCOPServer(object):
|
|
def __init__( self, appid, addpid = 1):
|
|
self.app_id = pcop.register_as(appid, addpid)
|
|
|
|
|
|
class DCOPServerObject:
|
|
"""Inherit from this class to DCOP enabled your object.
|
|
|
|
Remember to call the base class constructor, and in your own constructor
|
|
you should called setMethods to set the methods to DCOP enable.
|
|
"""
|
|
|
|
def __init__(self, objName=None):
|
|
"""objName is the name of the object. If omitted, it will default to a hex
|
|
address. It is best to supply it."""
|
|
if objName:
|
|
self.dcop_obj = pcop.create_dcop_object(self, objName)
|
|
else:
|
|
self.dcop_obj = pcop.create_dcop_object(self)
|
|
|
|
def setMethods(self, methods):
|
|
"""Set the method list for this object.
|
|
|
|
methods is a list of tuple pairs. Each pair consists of the
|
|
method signature and the Python method that handles it.
|
|
|
|
For example, setMethods([ ('QString cheeseType()', self.cheese_type),
|
|
('void setGreatWines(bool perthPink, bool hobartMuddy, bool chateauChunder)')
|
|
"""
|
|
pcop.set_method_list(self.dcop_obj, methods)
|
|
|