[Kde-bindings] Uniform Qt Bindings for JRuby and Ruby

Cees Zeelenberg cees.zeelenberg at pg37.eu
Sun May 20 10:38:41 UTC 2012


On Thursday, May 17, 2012 03:21:32 PM Cees Zeelenberg wrote:

>> Hi everyone,

>> 

>> This may be of interest to some on this forum.  I have just uploaded a
new

>> Gem package (qt_connect) with the aim to provide  a uniform Qt API for
both

>> Ruby and JRuby platforms. The Gem provides JRuby bindings to the Qt Jambi

>> library with an (optional) extension to provide backward compatibility
with

>> existing Qt Ruby programs.

>> 

>> The same Gem package provides for Qt Ruby programs a QtJambi inspired

>> interface to the Signals/Slots system without the need to use C++

>> signatures.

>> 

>> 

>> 

>> download from RubyGems.org: gem install qt_connect

>> 

>> 

>> 

>> project on github:  <https://github.com/CeesZ/qt_connect>
https://github.com/CeesZ/qt_connect

On Thursday, May 17, 2012 17:18:03 Richard Dale wrote:

>Interesting project - thanks for providing backwards compatibility with 

>QtRuby. I have been a bit poor at moving the QtRuby 3.0 development forward


>recently, but I haven't given up and I think I will manage to get started 

>again soon. I am quite excited about the Raspberry Pi, Qt 5 and Ruby 2.0
and I 

>think there are a lot of reasons for wanting to carry on getting a really
good 

>CRuby binding working.

> 

>I think it would be a good idea if I could add some compatibilty with the 

>Ruby/QtJambi based bindings in QtRuby 3.0, particularly the slots and
signals 

>yntax, and I'll study your examples and api at some point and try and do 

>that.

> 

>-- Richard

I certainly share your enthusiasm for the Raspberry Pi, Qt 5 and Ruby 2.0.
Particularly Nokia's funding

for 400 Raspberry Pi boards for Qt5 applications seems one of the better
investments they have made

lately. I don't know how the project  has worked out so far, but it should
be an attractive challenge

to many kids and bring a bit of pioneering spirit to Qt  computing.

A CRuby Qt binding which would work for all flavors of Ruby would definitely
be my choice solution, but I

find it hard to estimate the amount of work involved - seems a lot to me -.
Maybe it is possible to write

(or better generate) an ffi based interface to the Qt libraries with a pure
Ruby wrapper for added

functionality. I really haven't studied Smoke or other binding technologies
in detail, so I am not

in a position to compare the different methods)

As far as QtRuby 3.0 is concerned, QtJambi may be interesting for more than
the Signals/Slot interface.

Java and Ruby have quite a few things in common which distinguish them from
C++. For instance single

inheritance and the use of  interfaces/modules. It is interesting how these
are used in QtJambi (e.g.

for Enum's and Signal emitting classes)

Also QtJambi has (virtually) eliminated the QVariant class. This makes
simpler and more readable code.

I think the same could be done for QtRuby. Also a bit of 'behind the scenes'
duck typing would make

application code easier and more readable. For instance in many method calls
it is necessary to add

.value or .to_int to one or more of the arguments which is not very
intuitive.

Also compatibility with the current version should be a major concern, at
least for those who have

invested in QtRuby programming.

Sofar a few of my thoughts on a new version of QtRuby, if I can be of
further help let me know.

For the moment one practical question you may be able to answer: I would
like to cycle through

all Qt classes in order to compare them with their QtJambi counterparts. I
have used the MetaObject

class but I have not found an enumerator which will pass me all classes. Do
you know of a

way to do this in QtRuby? In QtJambi this is straightforward because you can
just cycle through

the contents of the different jars.

==Cees

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120520/a03a32df/attachment-0001.html>


More information about the Kde-bindings mailing list