Today marks a special coincidence. First,Adam
Treat released the initial version ofQt bindings for C#,
which consists of 476 Qt classes converted to C#.
The bindings work with the Mono
compiler, runtime environment and class libraries, enabling a fully Open Source implementation of C# for Qt. While not yet ready for
a real application, Adam has managed to write and execute a
Hello World! program
(screenshot).
KDE bindings are on the drawing board. Shortly thereafter,Phil Thompson, Jim Bublitz andtheKompany.com
released KDE 2 and KDE
3 bindings for Python. Together with the Java, Objective C and C bindings in thekdebindings
module, as well as theRuby
bindings, KDE is providing developers a broad gamut of application
development languages. Great work, Adam, Phil and Jim!

Comments

It's great that there are news on the language binding front. But, when will we ever see new Perl bindings for Qt/KDE? There are lots of skilled Perl programmers out there, and I'm sure they could benefit the KDE community to no end if there were bindings available.

And, no the Qt bindings on CPAN doesn't seem to work :-( Could this be a conspiracy to force Perl people to switch to Python!!!! :-)

Yes, Germain Gerand, TJ Mather and myself are working on Perl bindings for Qt 3/KDE 3, and they should be ready for KDE 3.1.

The bindings are generated from 'Perl Interface Generator' .pig files that used to be prepared by hand. We've added a .pig file generation option to the kalyptus bindings generator to autogenerate them. Germain has regenerated the bindings for Qt 2.2.x and KDE 2.2.2, and pretty well got that working in TJ's cvs.

But the big problem with Qt 3 is that the bindings assume the moc works the way it did for Qt 2. The was a type in Qt 1.x/2.x called 'QMember' which was a pointer to a function for the target slot to be called. In Qt 3 the moc has been changed so it uses an integer offset into the slot table as 'QMember' to invoke a slot. So the slot/signal handling needs to be redone (and the code is quite tricky to follow).

No, you are not required to install Gnome. Mono is _not_ a part of Gnome... yet ;-) Even if Mono is included in Gnome in the future, the Qt bindings will only require Mono's runtime (jit and corlib) and compiler (mcs).

ac, you better get your act together man.
I've seen you on gnome-news also.
You're the one always posting controversial stuff.
Now what is "Genius... but will this require you to install GNOME? Not so good..." supposed to mean?
Have you no respect for the gnome-developers?
And no, if you would know what a compiler was, you wouldn't be asking this question...
Didn't you figure out yet, that it's all about the community.
Who cares what DE you like. All the developers are there to give a product to the community. Should you therefore continue to bash them?
Silly man, crawl back in the hole where you came from...

(To other folks, sorry you had to read this, but I've seen this fellow more than once, with no good word coming out of his mouth)

Does GNOME require the install of KDE? See that would be bad just like it would be bad if the install of KDE required GNOME. Nothing controversial here. Self-important anti-trollers like you are just as bad as the real trollers.

:: Second of all, GNOMErs might start using aRts, which IS actually a part of KDE.

No offense, but I've heard this for awhile without anybody who states it being able to back it up. Where did this "common knowledge" come from - it's been repeated quite often, but I haven't seen any links to any developers actually discussing it. I'd like to have documentation to potentially back up this.

Weird! Iain replied to you earlier, but his response has disappeared. At any rate, there has been discussion on the GNOME lists (from last August or September, I think) about using aRts. No decision has been made yet, and there is no default sound server/sound system for GNOME 2.0. The developers decided to wait and see how things play out in development between the different contenders. The two front-runners are aRts and GStreamer: the former is a little more mature, while the latter is more integrated with GNOME (it uses GLib). A decision will most likely be made for GNOME 2.2. Cheers!

Well, I have to say it is.
For little apps, it's very good.
You see, PHP is the easiest language out there IMHO, and I already did some really good php-gtk programs with it.
Yes, the real problem here is that a php compiler is missing, so distribution of it is very hard on linux machines.
But indeed it's very good and very, very cool. I would love to have qt-php :)

What? Php-gtk is far from useless. I have written a proof of concept query tool in it, and it runs very fast, and because of PHP's excellent DB functionality, can connect to virtually any databas eunder the sun. PHP-Mole (http://www.akbkhome.com/Projects/Phpmole-IDE/) is a feature-rich IDE being written entirely in PHP-GTK. I'd suggest checking out stuff next time before making sweeping assumptions.

I have to disagree... as both a python and PHP programmer, both are useful and very complete languages. PHP is extrodinarily good at generating text files of any sort (due to the way it handles output), but can be used to do virtually any task. I have a PHP script that goes through my MP3 files, renames them (capitalizing words, spacing dashes, etc), and resets the ID3 tags (a binary operation) in them to what the filename suggests.

Like Perl and Python, PHP supports modular, loadable libraries, and also supports classes. It is very much capable of being interfaced to Qt and KDE and producing useful applications. And even if your view is *still* that it is "just a HTML scripting language", let me kick this idea out - DCOP aware webpages on your intranet.

Yep, I'll second that. I have a PHP project that runs as a daemon, using SQL based mp3 playlists
to play music, and talking about it (and automagically downloading and reading news) with
Festival. I probably could've gotten better performance if I had written it in C or even Perl, but
it didn't take me long to develop, and it was a good exercise to finish up learning PHP.

*Shameless code promotion* That app isnt in devel anymore, but you can get it at
geekradio.sf.net, and I might just continue to work on it if there's any demand.

For Python to really make it as a language under KDE, you would need to have support at the core level. That is, you install KDE, you have the Python bindings, period.

We should not repeat GNOME's mistake of requiring python and probably 200 other languages for a base install just because some applications are written using it. We don't want a 1 GB base install... (Remember that we could do just the same thing for C#, Java, C, Objective-C bindings... There's no real reason why Python is more important than any of those).

It's a sort of chicken and egg problem - distributors will start picking up PyKDE once there are applications for it. Developers will pick up PyKDE once they're aware of it, which is often by seeing it in a distribution.

For a start, I'll add PyKDE in one of the next Red Hat Linux releases; it's too late for the next one, unfortunately.

Which version of Qt/KDE does the 0.15 release of the Ruby bindings relate to? As far as I know Nobuyuki Horie hasn't updated the bindings for the last six months.

I've added a Ruby bindings code generation option to the kalyptus bindings generation utility - usage 'kalyptus -fruby '. It needs a bit more work (maybe only a week or so to add method overloading code generation), but then it should be much easier to keep up to date than maintaining SWIG interface files.

It seems to be that something could be drawn from one of the indexing programs such as lxr. (http://lxr.kde.org/) which automatically parses the classes in KDE. Failing that, the documentation is kept in a structured format, so bindings could be autogenerated from that information, complete with documentation for the bindings.

What you've just described is Kalyptus. It is a modification of KDoc by Richard Dale, and it is excellent. Basically, all of these bindings (Java, C, Objective-C, C#, and perl) are drawn from Richard Dale's work. Look a few posts above and you will find that Richard is working on some new Ruby bindings as we speak.

Since it took the person who wrote Ruby bindings for GNUStep only about a day to do it (he didn't know anything aobut GNUStep and was a newbie to ruby) how long can it take to write Ruby Qt ... an hour?

KDE has language bindings for dynamic languages like Objective-C or Java, so it should be possible to write a dynamic bridge to those languages like the Ruby/GNUstep one (or even use the same code). I think JPython should work well with the Java bindings.

But it isn't that much effort to write static bindings, once you don't have to prepare heroic amounts of SWIG interfaces by hand.

Now, these days, it seems that most programs are written in a programming language. It also happens that most utilize an application programming interface (API).

In trying to understand what .NET was, I decided to split it into the C# language and the API (which is called CLI or something). C++ was the object oriented derivate of C, and one example of API is Qt (of which KDE looks like an extension), another is GTK+ (of which GNOME looks like an extension) with its C++ bindings. Then comes Objective-C and OpenStep, Java and Java (um, Java language and Java API)...

We can port program in Java since years and it work very well.
In Java, there is even a native toolkit integration. It is called AWT.
And nobody uses it! It is not because it not slow or because the API is bad.
It goes even very fast.

But when you write your application for a OS (ex Linux), it looks awful
in another one (ex Windows). To solve that, you finish by having a part
of your code that handles the difference between the OS. Just because
of that, nobody uses it.

I do not want to see .NET. Just because it is Microsoft. They do not
compete by technology but by a huge distribution channel.

In the Java world, everything is not perfect too.

I think there is no public implementation of AWT in QT. It is just Motif.
Trolltech has written one for the Zaurus. But it is not available on Linux.
It should be very, very good to have it as a standard part of the JDK on Linux

AWT was terrible, you probably mean SWT?
Swing is also terrible, first you need a good look & feel,
combining the new XP look+feel with JGoodies is a good way...

But with Java you can't make quickly some dialogs, with C#
and .NET you can get good looking dialogs very quickly.
Just like I could for years with Delphi.

Java has its strong points, but GUI development is not one
of them. And for Gnome and KDE we need GUI's not backend
programs.

C# is a good programming languages, it has most of the things
I liked from Delphi, and as a big improvement over C++ and C, it
has internal string class. It would be nice if Trolltech would help
and make a version where the QString class is not needed any
more for the QT/C# bindings.

But I don't see many differences between using Mono with GTK#
or QT#, and Java using SWT, for every plattform you need a
new GUI Design. Hopefully one day someone will come up with
a better solution for that...

Alright, I know this is totally offtopic. But in the Hello World screenshot (http://qtcsharp.sourceforge.net/snapshot.png) there is an xmms... thing in the toolbar of kate. Is this application specific? What is the source?

I don't think it's xmms-kde, but I could be wrong.

The screenshot is at

And to keep things vaguely relevant...

The speed of open source & especially KDE development never ceases to amaze. I guess a tower is much easier to vuild when the foundations aren't wrapped in bubble wrap.