[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