[PyQt] loading arbitrary kparts

Jim Bublitz jbublitz at nwinternet.com
Mon Oct 8 17:38:21 BST 2007


On Monday 08 October 2007 07:41, Marcos Dione wrote:
>     hi all. I've been playing with kparts a little and now I hit a wall.
> I try to load the proper part for a given url. the code I have looks
> like this:
>
>
> mime= KMimeType.findByURL(url, 0, False, False)
> mimeType= mime.name ()
> # this trick I saw in
> #
> http://lxr.kde.org/source/KDE/kdegraphics/kuickshow/src/kuickshow.cpp?v=3.5
>-branch#166 if mimeType=='application/octet-stream':
>     mineType= KIO.NetAccess.mimetype (url, self);
> ptr= KTrader.self().query(mimeType, "'KParts/ReadOnlyPart' in
> ServiceTypes")[0] part= createReadOnlyPart (ptr.library (), tab, ptr.name
> ())
>
>
>     no matter what url it is, seems like I always get mimeType as
> "application/octet-stream", and the part it loads it's an hex editor. I
> tried to find other examples of findByUrl(), but the only one that could
> be interesting (in konqueror) is very deep and can't wrap my head around
> it.

I'm using KIO.NetAccess.mimeType in a PyKDE4 application and it works fine 
there - there could be some difference to the PyKDE 3 version. It would help 
if you'd provide a short example program that exhibits the problem so I can 
see if there's some other problem in the surrounding code triggering the 
mimetype problem.

You could also try to use KRun, just as a *test* to see if it will pick up the 
mime type correctly (it launches an application though - doesn't load a 
part).

>     I also found examples like this:
>
>
> mimetype == KMimeType::findByURL( m_url )->name();
> m_part =
> KParts::ComponentFactory::createPartInstanceFromQuery<KParts::ReadOnlyPart>
>( mimetype, QString::null, this, 0, this, 0 );
>
>
>     but I can't find the ComponentFactory namespace in pykde, and I'm
> not sure it would fix my problem. so, what am I missing?

ComponentFactory consists of only templates, so there isn't any code to wrap, 
unless the templates are instantiated via a typedef somewhere else in 
kdelibs. KParts.Factory is implemented though.

Jim


More information about the PyQt mailing list