In the first of what we hope to be an exciting series, Richard Moore has published a tutorial on how to write KPart plugins for KDE 2. In this tutorial, Richard gives us a glimpse into the power of KParts by demonstrating how simple it is to extend Konqueror with a plugin. In particular, he implements a plugin for HTML Validation, but the same mechanism could have just as easily been used to write a plugin for convenient Babelfish translation of the current webpage, or indeed something much more fancy. In general, once you understand what's here you should be able to write plugins for pretty much any application or component in KDE.
The full tutorial can be found on the KDE Developer Site. This story was amended and republished at 04:00 PM. Update: 01/26 04:35 PM by N: Kurt Granroth has made available various modifications to the htmlvalidator example and, best of all, has implemented a nifty BabelFish plugin. See his article for details, download the plugins here. Update: 01/28 07:55 PM by I:
As yet more proof of the power and simplicity of KParts-based plugins, Carsten Pfeifferhas created another plugin, which allows easy configuration (from a light drop-down menu) of Java, JavaScript, cookies and image loading. Thanks, Rich, Kurt and Carsten.

One word: Amazing. I just downloaded and compiled the source code. Works like a charm. I got a new toolbar with the ABC spellcheck icon on it. The toolbar even magically goes away in FileManager mode. It's a wonderful feeling to run a browser that is as easily extendable as this.

How do I add the icon ABC automatically to the main toolbar? I tried editing plugin_htmlvalidator.rc by changing mainToolBar to Main Toolbar but that didn't work.

One funny thing is that the source code is only a few lines long but the Makefile stuff is hundreds of kilobytes. :-)

> How do I add the icon ABC automatically to the
> main toolbar? I tried editing
> plugin_htmlvalidator.rc by changing mainToolBar
> to Main Toolbar but that didn't work.

The easiest way to do this is to use the standard edit toolbar dialog - the new action is fully integrated with the app framework.

The size of the build system is because it uses the standard KDE scripts - I think the simplicity makes it worth the size. The same scripts can build everything from plugins to complete applications. This is perhaps a slight example of over-engineering for a 100 line program...

Makefiles are usually (esp KDE) automatically generated and so contain a lot of extra features, targets, etc. Theoretically, they prolly could be cut down, but it's not needed. Now a few lines of source code and a beautiful browser with extensible features is what is wonderful as that is a great combonation that I love to see.

GNOME has bonobo, KDE has kparts. Deal with it. I'm sure there are advantages and disadvantages to both. What's the point it starting a GNOME vs. KDE war every time a GNOME or KDE technology is in a news item?
Whatever works for you, use it!
Might as well just end this thread, because it'll never accomplish anything claiming which technology is better.

I have tried out the libhtmlvalidatorplugin form the tutorial. After installation there was no entry for the plugin in the tools menu of konqueror. After I changed the line
kpartgui name="htmlvalidator" library="libhtmlvalidatorplugin" to
kpartgui name="htmlvalidator" library="libhtmlvalidatorplugin" version="1" in plugin_htmlvalidatior.rc it worked.

After reading Rich's excellent tutorial, I was inspired to hack around for a bit. I downloaded the tutorial and starting cleaning things up. For instance:

BUGFIX: Put the ToolBar container outside of the MenuBar container. This was why the action created it's own toolbar instead of appending to an existing one.

BUGFIX: Put the toolbar action inside of "extraToolBar" instead of "mainToolBar" since that's what the extra toolbar is for.

CLEANUP: Got rid of a lot of the old KDE 1.x 'configure' and 'automake' stuff and replaced with new and improved KDE 2.x stuff.

OTHER: Created a 16x16 and 22x22 icon just for the validator

OTHER: Changed some references of 'spellcheck' to 'htmlvalidator'

OTHER: Changed '"&Validate Web Page (plugin)"' to 'i18n("&Validate Web Page")' since no other plugin claims to be a plugin AND it's always good practice to use i18n.

But while I was doing that, I wondered how easy it would be to create a plugin to do page translation as suggested in the above article. The result was the 'babelfish' plugin. It puts a KActionMenu list of all of BabelFish's translations (English to French, etc) in the menubar and toolbar. It's pretty slick.

I'm not 100% sure what to do with all this so for now, I just put it up on the web for anybody to get:

Seems to me that these might not look bad in CVS or perhaps at www.konqueror.org. Or even better, just like kde.themes.org offers themes, there should be a repository for handy plugins once more follow, no?

OK, that's a nice screenshot. All right, very nice. But it has one serious flaw; the maximize/minimize/close buttons in inactive windows looks disabled (grey). There is no reason they should be -- you can use them, can't you?

And Gnome's triangular back/forward buttons are ugly. And so are KDE's blue arrows...

That's a very nice window border theme in that shot. It reminded me that I have not seen ANY kwm themes out there. Have I been looking in the wrong places, or are there really no themes out there except for the ones that come with KDE? I've seen some widget themes on kde.themes.org, but no window manager themes.

Hm, I assumed you would post a screenshot making gnome look good, but you just posted something pretty ugly. The windowmanager sucks (who wants their close box near maximise/minimise, that's asking for trouble), the gtk 'theme' is less than inspired, and the panel looks like a chintzy kicker ripoff. I would be ashamed to have that as my desktop.

Thanks Rich, due to your nice tutorial I finally implemented qwertz' suggestion to configure Java/Javascript/Cookies/Image loading in a small dropdown menu, so you don't have to open the config-dialog for those often-changed settings.

Grab the plugin here.
For the cookie settings to work, you need a current kdelibs snapshot (beta2 is not sufficient), but the other settings should work just fine with 2.0.