|
|
|
"""
|
|
|
|
Copyright 2003 Jim Bublitz
|
|
|
|
|
|
|
|
Terms and Conditions
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to
|
|
|
|
deal in the Software without restriction, including without limitation the
|
|
|
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
|
|
sell copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
|
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
|
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
SOFTWARE.
|
|
|
|
|
|
|
|
Except as contained in this notice, the name of the copyright holder shall
|
|
|
|
not be used in advertising or otherwise to promote the sale, use or other
|
|
|
|
dealings in this Software without prior written authorization from the
|
|
|
|
copyright holder.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import sys, time
|
|
|
|
from PyTQt.qt import TQString, TQCString
|
|
|
|
import dcop
|
|
|
|
import dcopext
|
|
|
|
from tdecore import TDEApplication, TDECmdLineArgs, TDEAboutData
|
|
|
|
|
|
|
|
|
|
|
|
def getAnyApplication (client, appName):
|
|
|
|
for qcstring_app in client.registeredApplications ():
|
|
|
|
app = str (qcstring_app)
|
|
|
|
if app == appName or app.startswith (appName + "-"):
|
|
|
|
print(app)
|
|
|
|
print()
|
|
|
|
objList, ok = client.remoteObjects (app)
|
|
|
|
for obj in objList:
|
|
|
|
print(" ", obj)
|
|
|
|
funcs, ok = client.remoteFunctions (app, obj)
|
|
|
|
for f in funcs:
|
|
|
|
print(" ", " ", f)
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
|
#-------------------- main ------------------------------------------------
|
|
|
|
|
|
|
|
description = b"DCOP client template"
|
|
|
|
version = b"1.0"
|
|
|
|
aboutData = TDEAboutData (b"MyApp", b"MyApp",\
|
|
|
|
version, description, TDEAboutData.License_GPL,\
|
|
|
|
b"(C) 2003 whoever the author is")
|
|
|
|
|
|
|
|
aboutData.addAuthor (b"author1", b"whatever they did", b"email@somedomain")
|
|
|
|
aboutData.addAuthor (b"author2", b"they did something else", b"another@email.address")
|
|
|
|
|
|
|
|
TDECmdLineArgs.init (sys.argv, aboutData)
|
|
|
|
|
|
|
|
TDECmdLineArgs.addCmdLineOptions ([(b"+files", b"File to open")])
|
|
|
|
|
|
|
|
app = TDEApplication ()
|
|
|
|
dcop = app.dcopClient ()
|
|
|
|
|
|
|
|
#getAnyApplication (dcop, "konqueror")
|
|
|
|
print("--------------------------")
|
|
|
|
print("The DCOPObjects for kicker:")
|
|
|
|
d = dcopext.DCOPApp ("kicker", dcop)
|
|
|
|
objs = d.objects
|
|
|
|
if objs:
|
|
|
|
for obj in objs:
|
|
|
|
print(obj.data())
|
|
|
|
print("--------------------------")
|
|
|
|
print("The methods for the panel:")
|
|
|
|
o = d.object ("Panel")
|
|
|
|
methods = o.methods
|
|
|
|
for method in methods:
|
|
|
|
print(method.data())
|
|
|
|
m = o.method ("addNonKDEAppButton")
|
|
|
|
print(m)
|
|
|
|
print("--------------------------")
|
|
|
|
print("The method")
|
|
|
|
print(o.method)
|
|
|
|
print("--------------------------")
|
|
|
|
print("Find the method:")
|
|
|
|
print(m.findMethod ())
|
|
|
|
print("--------------------------")
|
|
|
|
print("The return type:")
|
|
|
|
print(m.rtype)
|
|
|
|
print("--------------------------")
|
|
|
|
print("The argument types:")
|
|
|
|
print(m.argtypes)
|
|
|
|
print("--------------------------")
|
|
|
|
print("The argument names:")
|
|
|
|
print(m.argnames)
|
|
|
|
print("--------------------------")
|
|
|
|
|
|
|
|
print("get kicker panel size via DCOP")
|
|
|
|
res = d.Panel.panelSize()
|
|
|
|
print(res, d.Panel.panelSize.valid)
|
|
|
|
print("--------------------------")
|
|
|
|
|
|
|
|
print("Call a method that doesn't exist")
|
|
|
|
res = d.Panel.junk ()
|
|
|
|
print(res)
|
|
|
|
print("--------------------------")
|
|
|
|
|
|
|
|
print("See if a non-existent method is valid")
|
|
|
|
print(d.Panel.junk.valid)
|
|
|
|
print("--------------------------")
|
|
|
|
|
|
|
|
print("Start a kwrite instance")
|
|
|
|
errcode, error, dcopService, pid = TDEApplication.startServiceByDesktopName ("kwrite", "")
|
|
|
|
dcopService = "kwrite-" + str (pid)
|
|
|
|
print("errcode: %i error: %s dcopService: %s pid: %i" % (errcode, error, dcopService, pid))
|
|
|
|
print("--------------------------")
|
|
|
|
time.sleep (2)
|
|
|
|
|
|
|
|
o1 = dcopext.DCOPObj (dcopService, dcop, "EditInterface#1")
|
|
|
|
print("Check if insertLine is a valid function")
|
|
|
|
print("valid", o1.insertLine.valid)
|
|
|
|
print("--------------------------")
|
|
|
|
print("insertLine's arg types and names")
|
|
|
|
print(o1.insertLine.argtypes, o1.insertLine.argnames)
|
|
|
|
print("--------------------------")
|
|
|
|
print("Insert a line into the kwrite instance we launched")
|
|
|
|
print("call returns:", o1.insertLine (0, "Now is the time for all good men to come to the aid of their party"))
|