[PyKDE] konsole_part yet again
Jim Bublitz
jbublitz at nwinternet.com
Mon Sep 25 09:41:32 BST 2006
Apparently I made an incorrect assumption about konsole_part. Since originally
libkonsolepart.so exported all of the symbols needed to do a simple binding,
and since it exports those symbols on SuSE for KDE > 3.5,
I assumed it could be used as a library.
Unfortunately, the only symbol that's guaranteed to be exported is the init
function for the konsole_part factory. So while it's possible to use
konsole_part as a KPart, there isn't any practical way to guarantee the
classes and methods for a konsole_part will be available. I can't do a
wrapper for those classes if there's no underlying lib to link to. If there's
no binding, there isn't any way to cast the returned KParts:ReadWritePart
that's returned when you load the part, to a konsolePart, since PyKDE will
have no idea of what a konsolePart is.
That means the only way to interface to a konsole_part is via DCOP, which will
let you change the colors, fonts, size, etc., but won't let you read or write
to the konsole's command line. Which is one of the problems with DCOP -
you're restricted to what the app's authors choose to make available, and in
some cases that isn't enough to make use of a KPart.
So what I'll do is the opposite of what I started out to do in response to
Torsten's messages the last few days. I added a -x switch to configure.py to
disable generating konsole_part support. What I'll do is reverse the sense of
that switch. By default, konsole_part won't be supported and the -x switch
will turn on konsole_part support for those who want it and have a
distribution that supports it.
You can tell if your distribution supports it by doing:
nm -DC --defined-only $KDE_PATH/lib/kde3/libkonsolepart.so
where KDE_PATH (if not in your environment) is the path to the top level KDE
directory on your system. If that returns symbols for konsolePart and related
classes and methods, konsole_part support should work, and you can enable it.
If not, the PyKDE kparts module won't load if you enable the support.
Jim
More information about the PyQt
mailing list