* When a ruby value was marshalled to C++, and the actual type of
[kdebindings.git] / ruby / qtruby / ChangeLog
blob429b36e2e5bb46ab240c592469e1fc710eaac893
1 2008-06-30  Richard Dale  <richard.j.dale@gmail.com>
3         * When a ruby value was marshalled to C++, and the actual type of
4           the C++ instance was cast to the type of the return value, it
5           was working correctly if the target type for the cast wasn't in
6           the same smoke module as the type of the instance. For instance,
7           an instance of type Plasma::Applet wasn't being correctly cast
8           to a QGraphicsLayoutItem, which caused a crash.
10 2008-06-28  Arno Rehn  <arno@arnorehn.de>
12         * Special case QDBusVariants in SlotReturnValue and make it behave
13           like the moc. This makes the complexpingpong example work.
14           Maybe more things need to be special cased, like in
15           SigSlotBase::prepareReturnValue().
16         * Add special cases for lists and maps to
17           SigSlotBase::prepareReturnValue().
18         * Add 'QList<QObject*>' to the handlers array.
19         * Small fixes to complexping.rb.
21 2008-06-23  Richard Dale  <richard.j.dale@gmail.com>
23         * Change prepareQtReturnType from a standalone function to a method
24           in the SigSlotBase class. It should work with int types, and fix
25           the bug reported by Stefano Crocco.
27 2008-06-22  Richard Dale  <richard.j.dale@gmail.com>
29         * Fix bug in resolve_classname_qt() caused by missing break statments
30         * Move list marshaller macro definitions to the top of the 
31           marshall_macros.h header, and add a DEF_HASH_MARSHALLER macro
32         * Add a set_qtruby_embedded() function to qtruby for use with plugins
33           like plasma
35 2008-06-20  Arno Rehn  <arno@arnorehn.de>
37         * Fix bug reported by Stefano Crocco. qt_metacall tried to write
38           data via an uninitialized pointer.
40 2008-06-20  Richard Dale  <richard.j.dale@gmail.com>
42         * Partly fix bug reported by Stefan Crocco - this explains why a slot
43           return value of type QPoint was nil. However, it's value is wrong,
44           and the problem with a QString return value crashing is still not
45           explained.
47 2008-06-13  Richard Dale  <richard.j.dale@gmail.com>
49         * Remove unnecessary special casing for Qt::TextEdit::ExtraSelection,
50       just make it an ording QtRuby class instead of a Struct, and add a 
51           marshaller for QList<QTextEdit::ExtraSelection>
53 2008-06-14  Arno Rehn  <arno@arnorehn.de>
55         * Since every smoke module defines a class 'QGlobalSpace', don't rely
56           on Smoke::classMap and search every smoke module for methods of this
57           class.
59 2008-06-13  Richard Dale  <richard.j.dale@gmail.com>
61         * Pass the resolve_classname() functions a 'smokeruby_object *' so that
62           they can change the smoke lib and classId on it.
63         * Added Qt::KeySequence inspect and pretty_print methods
65 2008-06-12  Richard Dale  <richard.j.dale@gmail.com>
67         * When resolve_classname_qt() was given a class outside the Qt smoke
68           library, such as KAction, it was failing to resolve it. This was
69           because it was only looking in the smoke library of the arg type
70           declared in the method. Hence, an arg type of 'QAction' was not
71           being resolved to 'KAction'. Thanks to Stefano Crocco for reporting 
72           the bug.
74 2008-06-09  Richard Dale  <richard.j.dale@gmail.com>
76         * The rb_id2name() function has changed to return a 'const char *'
77           in Ruby 1.8.7, which meant the QtRuby wouldn't compile. So attempt
78           to make it build on both 1.8.6 and 1.8.7. Thanks to Stefano Crocco
79           for reporting the bug.
81 2008-06-08  Richard Dale  <richard.j.dale@gmail.com>
83         * Move the template based List marshallers to a new header
84           marshall.macros.h and add marshallers for QLinkedList types
86 2008-06-05  Richard Dale  <richard.j.dale@gmail.com>
88         * Make the template based QList marshallers more DRY by moving them
89           to marshall_complex.h instead of copied into every extension.
91 2008-06-04  Richard Dale  <richard.j.dale@gmail.com>
93         * Make it possible to include marshall_basetypes.h so that korundum
94           can build
96 2008-05-31  Arno Rehn  <arno@arnorehn.de>
98         * Updated qtruby.cpp's header.
100 2008-05-29  Richard Dale  <richard.j.dale@gmail.com>
102         * Fixed bug in the FindAllMethods() f'n, and made the debug logging work
103           when a method couldn't be found in do_method_missing()
105 2008-05-28  Richard Dale  <richard.j.dale@gmail.com>
107         * The enum Qt::Process::StandardError was clashing with the exception of
108           the same name, so add a constant to the Qt::Process class instead. 
109           Thanks to Stefano Crocco for reporting the bug.
111 2008-05-22  Arno Rehn  <arno@arnorehn.de>
113         * Fixed dumpCandidates().
115 2008-05-19  Richard Dale  <richard.j.dale@gmail.com>
117         * The method selector cache function had an off by one error, which meant
118           it assumed there was one more argument to a method than there actually
119           was. This caused a crash. Why such a major problem hasn't caused any
120           problems before is a mystery - it wasn't a result of the modular smoke
121           changes.
122         * qtruby4.rb calls Kernel#y instead of Qt::Point#y on inspect and 
123           pretty_print when the yaml gem is loaded.
124           The attached patch fixes the problem by calling Qt::Point#y and 
125           Qt::PointF#y explicitly. Thanks to Paolo Capriotti for the bug report
126           and fix.
128 2008-05-16  Arno Rehn  <arno@arnorehn.de>
130         * Bring qtruby.cpp up to date with the branch-version.
132 2008-05-16  Richard Dale  <richard.j.dale@gmail.com>
134         * Rename the 'modules' global variable qtruby_modules to reduce the chances
135           of a name clash
137 2008-04-29  Richard Dale  <richard.j.dale@gmail.com>
139         * Added a marshaller for references to unsigned ints
140         * Added initialization for the various KDE::ConfigSkeleton classes
142 2008-04-24  Richard Dale  <richard.j.dale@gmail.com>
144         * Fixed a couple of differences between C++ code generation and Ruby.
145           The variable names weren't being stripped of any leading 'q' or 'k',
146           and the brush initialization hadn't been updated for Qt 4.4.
148 2008-04-22  Sebastian Sauer <mail@dipe.org>
150         * Fix reported crash on shutdown if QtRuby is used embedded.
152 2008-04-14  Richard Dale  <richard.j.dale@gmail.com>
154         * Special case the KDE::DateTime and KDE::TimeZone classes so that
155           nested classes, such as KDE::DateTime::Spec work with them. 
156           TODO: make this work automatically without needing extra code.
158 2008-04-10  Richard Dale  <richard.j.dale@gmail.com>
160         * When matching arg types, strip off an '::Ptr' or 'Ptr' at the end
161           of the type. This is to ensure that something like a KDE::Service
162           ruby instance can be passed to a method expecting a type of
163       KService::Ptr
165 2008-04-07  Richard Dale  <richard.j.dale@gmail.com>
167         * Added a QTRUBY_FUNCALL2 macro. If QtRuby is built with the
168           -DRUBY_EMBEDDED option, then the rb_funcall2s for invoking
169           virtual method callbacks and slot invocations in wrapped with
170           a rb_protect() call. Otherwise, rb_funcall() is called directly
171           and any uncaught Ruby exceptions will terminate the app.
172         * Borrowed a function from the kross code to put out an error message 
173           and stacktrace on stderr for the current exception, when qtruby
174           has been compiled with the embedded option.
176 2008-04-06  Richard Dale  <richard.j.dale@gmail.com>
178         * Change the way the 'MocArgument*' structs are created, instead
179           building them up in a Ruby Array, use a QList<MocArgument*>.
180           Move all the code to C/C++ and don't call Ruby anymore.
181         * Add QTRUBY_INIT_STACK and QTRUBY_RESTORE_STACK macros based on
182           the SWIG_INIT_STACK and SWIG_RESTORE_STACK macros. If QtRuby is
183           compiled with a '-DRUBY_EMBEDDED' option, then before each virtual
184           method callback and slot invocation call, which isn't nested
185           within another, call RUBY_INIT_STACK.
186         * This fixes a problem with Ruby Plasmoids where the Ruby runtime was
187           giving sys stackerror exceptions because the stack underflowed
188           relative to where it was when the krubypluginfactory was loaded.
189         * Add more checking for Qnil in the marshallers for primitive types
190           to make the runtime more robust. 
191         * Added some more range=(Range) methods as synonyms for 
192           setRange(Integer, Integer)
193         * Changed the examples to use range=
194         * Added a rbplasmaapi command line tool for introspecting the Ruby api
196 2008-04-05  Richard Dale  <richard.j.dale@gmail.com>
198         * Added rb_protect() wrappers around virtual method callbacks and
199           slot invocations. When there is a Ruby exception, the app no
200           longer terminates which is useful for Plasma applets.
202 2008-04-04  Richard Dale  <richard.j.dale@gmail.com>
204         * Ensure the class and module names in rbuic4 generated code
205           start with an upper case letter, even if they didn't in the
206           .ui file
208 2008-04-03  Richard Dale  <richard.j.dale@gmail.com>
210         * Updated the rbuic4 to be in line with the Qt 4.4 uic code
211         * Added a '-k' or '-kde' option to the rbuic4 tool, used in
212           conjunction with '-x' to generate a KDE app korundum4 test stub
214 2008-04-01  Richard Dale  <richard.j.dale@gmail.com>
216         * Qt::TimeLine.setFrameRange() can now be called like this:
217                 time_line.frameRange = 0..90
218         * Qt::Timer.singleShot can now be called with a block:
219                 timer = Qt::Timer.singleShot(5000, obj) { puts "In a block" }
220         * Thanks to stefo on #kde-bindings for both suggestions
221         * Added a few more 'range=' methods
222         * Fixed range setters so that both 1..10 and 1...10 work properly
224 2008-03-28  Richard Dale  <richard.j.dale@gmail.com>
226         * Added a QList<QTextEdit::ExtraSelection> marshallers as requested
227           by volty on the #qtruby irc channel. Qt::TextEdit::ExtraSelection
228           is a Ruby Struct with cursor and format fields.
230 2008-03-24  Richard Dale  <richard.j.dale@gmail.com>
232         * Attempt to improve the marshalling of WIds and assume they are
233           either signed ints (Mac OS) or signed longs.
235 2008-03-14  Richard Dale  <richard.j.dale@gmail.com>
237         * Fixed a bug in constructing Qt::Variants with custom types such
238           as Soprano::Statement
239         * Added a Soprano:: namespace
241 2008-03-11  Richard Dale  <richard.j.dale@gmail.com>
243         * When a method call began or ended with an underscore, and it
244           was missing from a qtruby instance, it caused ruby to loop,
245           rather than report the method as missing. Thanks to Daniel 
246           Brumbaugh Keeney for reporting the bug.
248 2008-03-04  Richard Dale  <richard.j.dale@gmail.com>
250         * Make symbolic links to rbqtapi as rbqt3api, rbqt4api, rbkdeapi 
251           and rbkde4api
253 2008-03-03  Richard Dale  <richard.j.dale@gmail.com>
255         * Added some marshallers for new Qt 4.4 QList types
257 2008-03-02  Richard Dale  <rdale@foton.es>
259         * The QModelIndex::internalPointer() method was returning nil, as
260           as result of the code change attempting to return nil if the C++
261           pointer is 0. Thanks to CyrilleB for reportin the error
263 2008-02-18  Richard Dale  <rdale@foton.es>
265         * Ignore the WebCore:: and std:: namespaces when loading classes
266         * Added marshallers for the WebKit QList types
268 2007-12-19  Richard Dale  <rdale@foton.es>
270         * The Qt::Polygon and Qt::PolygonF classes had no means of getting
271           the array of Qt::Points that they hold. Added count() and size()
272           methods and made the classes Enumerable, so this is now possible:
274           irb(main):002:0> poly = Qt::Polygon.new([Qt::Point.new(1,2),
275 Qt::Point.new(3,4)])
276           => #<Qt::Polygon:0xb5ee3094>
277           irb(main):003:0> poly.each {|t| p t}
278           #<Qt::Point:0xb5ee0510 x=1, y=2>
279           #<Qt::Point:0xb5ee018c x=3, y=4>
281         * Thanks to Sylvain Sauvage for reporting the problem on the Korundum
282 help forum
284 2007-11-21 Â Sebastian Sauer <mail@dipe.org>
286         * Fixed crash on shutdown of Ruby cause of a partly destroyed
287           pointer_map QHash.
289 2007-11-19  Richard Dale  <rdale@foton.es>
291         * Slot arguments types of 'uint', 'long' and 'ulong' weren't working.
292           Thanks to maniel for the bug report.
293         * When calling a slot directly, it wouldn't work when then slot had
295           arguments
296         * Special case any classes which are sub classes of
297 QDBusAbstractInterface
298           when calling slots directly as the slots will be remote.
299         * When there is more than one return value in a Qt::DBusMessage the
300 value
301           method now will return a Ruby Array
303 2007-11-18  Richard Dale  <rdale@foton.es>
305         * At the suggestion of Vincent Fourmond added a Qt::DateTime.to_time
306           method which returns a Ruby time. Also enhanced the Qt::DateTime
307           constructor so that it can be passed a Ruby Time.
308         * Qt::Variants containing either QDBusObjectPaths or QDBusSignatures
309           can now be converted to Ruby Strings with a Qt::Variant.value call.
310           Fixes bug reported by maniel on the #qtruby IRC channel.
312 2007-11-12  Richard Dale  <rdale@foton.es>
314         * If QModelIndex.internalPointer() is zero, return Qnil
315         * Don't attempt to mark a zero internalPointer() for the garbage
316           collector. Thanks to cheiron for reporting the bug.
318 2007-11-11  Richard Dale  <rdale@foton.es>
320         * Fixed a regression introduced when slots were made directly
321 callable.
322           It broke the code to invoke remote QtDBus methods because the 
323           remote methods become slots in the QMetaObject of the
324 QDBusInterface
325           being used as a proxy. The code was trying to invoke those slots
326           directly which didn't work. So special case any QMetaObjects which
327           have classNames of "local::Merge" as it means they are remote.
329 2007-10-31  Richard Dale  <rdale@foton.es>
331         * Don't build the qtrubyinternal library anymore as it gave trouble
333           AMD64 machines and needed an '-fPIC' option there. Instead just
334           include the qtruby sources in the korundum (and plasma) projects.
336 2007-10-30  Richard Dale  <rdale@foton.es>
338         * The Qt::KeyEvent#type method wasn't working. Fixes problem reported
339           by Magicloud Magiclouds
341 2007-10-19  Richard Dale  <rdale@foton.es>
343         * Ruby signal declared in superclasses were not being inherited by
344           subclasses correctly. Fixed bug reported by cheiron on the #qtruby
345           irc channel - thanks for the report and test program.
347 2007-10-14  Richard Dale  <rdale@foton.es>
349         * The QScintilla class names now all start with Qsci instead of Qext,
350           so change the QtRuby module name from Qext:: to Qsci::
351         * Fixes a seg fault pointed out by Adreas Pakulat
353 2007-10-08  Richard Dale  <rdale@foton.es>
355         * Added some missing modules for namespaces in the KDE4 classes
357 2007-09-07  Richard Dale  <rdale@foton.es>
359         * Added a kross2qtruby method from Cyrille Berger to convert from a
360 kross 
361           instance to a qtruby instance
362         * Fixed bug in overloaded method resolution where a quint32 was being
363 given
364           equal priority to a qint32 type. Thanks to joseph/vista on #qtruby
366           reporting the bug
368 2007-07-28  Richard Dale  <rdale@foton.es>
370         * Up the version to 1.4.9
371         * Add a Plasma:: module for the plasma classes
373 2007-06-19  Richard Dale  <rdale@foton.es>
375         * Released Qt4 QtRuby 1.4.8 on Rubyforge
376         * Fixed an error in the QGraphicsPixmapItem class which made it
377 impossible
378           to instantiate
379         * Building QtRuby against Qt 4.2 failed because of a reference to 
380           the Qt 4.3 QMdiSubWindow class not being #ifdef'd correctly. Thanks
382           mhlmi on #qtruby irc for reporting these two bugs.
384 2007-06-18  Richard Dale  <rdale@foton.es>
386         * When a Qt::Object is subclassed more than once, a Qt::MetaObject is
387           now correctly constructed for each subclass. Before a half-working
388           hack was used where a Qt::MetaObject containing all the slots and
389           signal of its superclass too, was constructed for the twice
390 sub-classed
391           class. Fixes problems reported by Caleb Tennis amoungst several
392 others.
393         * When a signal is defined, and Ruby method is created to call it.
394 Before
395           the signal methods were only being created when the Qt::MetaObject
397           a class was created. This caused problems if the signal was emitted
398           before the Qt::MetaObject was created. Fixes problem reported for
400           QtRuby by Gadi Aleksandrowicz on the Korundum Rubyforge help forum.
402 2007-06-12  Richard Dale  <rdale@foton.es>
404         * Added some missing list marshallers
405         * Fixed a bug in the resolution of QGraphicsItem subclass names
407 2007-04-19  Richard Dale  <rdale@foton.es>
409         * Fixed a bug in resolving overloaded methods where an enum passed as
411           quint64 arg type needed to be given a lower priority that an
412 Integer one
413         * Added two models useful for Rails ActiveRecord or ActiveResource
414 with Qt
415           widgets
416         * Fixed a bug in the Qt::HttpRequestHeader method() method
418 2007-04-05  Richard Dale  <rdale@foton.es>
420         * Add some marshallers for the QVector types in the new Qt 4.3
421 QXmlStream*
422           classes
423         * Improved the cannon game t14 code
425 2007-03-17  Richard Dale  <rdale@foton.es>
427         * The code to allow the type() method to be used for Qt::GraphicsItem 
428           classes had the wrong names for the classes
429         * Improved the resolution of QGraphicsItem classes in
430 resolve_classname()
432 2007-04-16  Richard Dale  <rdale@foton.es>
434         * Added some marshallers for Qt 4.3 classes
435         * Fixed bug in deleting Qt::StandardItems when they had a parent or
436 model
438 2007-03-13  Richard Dale  <rdale@foton.es>
440         * When a ruby string was converted to a 'char *' arg, a copy was
441 malloc'd
442           and then never freed. This behaviour was added to fix a problem
443 with the
444           small number of methods that 'took ownership' of the string and
445 expected
446           it to stay around after the method call. However, it introduces a 
447           memory leak for the 95% of methods that don't need it, and also
448 means
449           that if the 'char *' is changed during the method call, the changes 
450           aren't reflected in the ruby string. Thanks to Jan Wedekind for the
451           discussion leading up to changing the code. Any methods where this 
452           behaviour is wrong will now need to be special cased.
454 2007-03-06  Richard Dale  <rdale@foton.es>
456         * Call rb_gc_mark() on the internalPointer VALUE within a
457 Qt::ModelIndex 
458           to prevent it being GC'd too early
459         * Added 'double&' and 'double*' marshallers
460         * Fixed memory leak when creating new Qt::ModelIndexes
462 2007-02-27  Richard Dale  <rdale@foton.es>
464         * Added marshallers for QwtArray<double> and QwtArray<int> 
465           (ie QVector<int>)
466         * Added a fix from Knut Franke to make the QVector<double> marshaller
467           work with any sort of Ruby number. Thanks Knut..
469 2007-02-22  Richard Dale  <rdale@foton.es>
471         * Made 'Qt::Variant.new(nil)' a synonym for 'Qt::Variant.new'
473 2007-02-19  Richard Dale  <rdale@foton.es>
475         * Added inspect and pp methods for Qt::MetaEnums
476         * Qt::Variants can be constructed from ruby Dates, Times and
477 DateTimes.
478           Qt::Dates, Qt::Times and Qt::DateTimes can also be constructed from
479           their ruby equivalents as a single arg. This makes it easier to
480           integrate Qt::AbstractItemModels with Rails ActiveRecord and 
481           ActiveResource
483 2007-02-17  Richard Dale  <rdale@foton.es>
485         * If a new Ruby class is created for a custom C++ QObject derived
486 class,
487           then create Ruby constants in the class for any enums defined via 
488           Q_ENUMS which are in the same scope as the new class. For instance:
490                 class TestObject : public QObject
491                 {
492                         Q_OBJECT
493                         Q_ENUMS(Priority)
494                         public:
495                                 enum Priority { High, Low, VeryHigh, VeryLow };
497                 ...
499                 irb(main):001:0> app = Qt::Application.new(ARGV)
500                 => #<Qt::Application:0xb6aaaf58 objectName="irb">
501                 irb(main):002:0> require 'testqobject'
502                 => true
503                 irb(main):003:0> test = app.findChild(Qt::Object, "QtRuby
504 TestObject")
505                 => #<TestObject:0xb6aa5184 objectName="QtRuby TestObject">
506                 irb(main):004:0> TestObject::High
507                 => 0
508                 irb(main):005:0> TestObject::Low
509                 => 1
510                 irb(main):006:0> TestObject::VeryHigh
511                 => 2
513 2007-02-16  Richard Dale  <rdale@foton.es>
515         * Thomas Moenicke fixed the qtruby cmake build so it works on
516           all machines by adding a KDE_EXPORT macro to Init_qtruby4()
517           Big thanks to Thomas and Guillaume Laurent for getting it all
518 working.
519         * Added calling slots directly in custom C++ QObject classes.
520           If a method isn't found in the Smoke library, and the instance is
521           a kind of QObject with a class not in the Smoke library, then look
522           for a slot matching the method name and invoke it. Thanks to Eric
523 Landuy
524           for the idea and discussion leading to implementing it.
525         * Added a check for QtDBus in the qtruby cmake file and set a define
526           of -DQT_QTDBUS if the library was found
527         * Changed the ADD_LIBRARY line in the qtruby cmake file to use MODULE
528           so that a bundle should be built on Mac OS X.
530 2007-02-08  Richard Dale  <rdale@foton.es>
532         * Fixed bugs in the debug dump of QMetaObjects created at runtime
533         * When a block was used as a slot, a new entry was being added to
534           the QMetaObject object every time they were connected. A new
535           entry is now only created if a slot with the same signature didn't
536           already exist.
538 2007-02-04  Richard Dale  <rdale@foton.es>
540         * The ListModel internal class was being wrongly named as TableModel
542 2007-02-01  Richard Dale  <rdale@foton.es>
544         * Added the qdbus/complexpingpong example
545         * Qt::DBusVariant have to be passed Qt::Variants, and a suitable
546           Qt::Variant will be created
547         * Improved the format of debugging info for the contents of a
548 QMetaObject
549         * A Qt::Variant can now be obtained when contained in a
550 Qt::DBusVariant
552 2007-01-31  Richard Dale  <rdale@foton.es>
554         * Added a Qt::DBusVariant class and a marshaller for it
556 2007-01-17  Richard Dale  <rdale@foton.es>
558         * QtRuby was crashing in virtual method callbacks with a memory
559 corruption
560           problem. The stack of ruby VALUES for the arguments to the callback
561 is 
562           now allocated via ALLOCA_N, rather than calloc which cures the
563 crashes.
564         * Changed tabs to spaces in the pixelator example
566 2007-01-15  Richard Dale  <rdale@foton.es>
568         * Code generated with the rbuic tool '-x' option has a require 'Qt4'
569           option. Fixes problem reported by Sylvain Joyeux
570         * Add setup_ui() and retranslate_ui() methods as aliases for the
571 camel
572           case ones as suggested by Sylvain Joyeux
574 2006-12-16  Richard Dale  <rdale@foton.es>
576         * Added the painting/fontsampler example
577         * There is no way to distinguish between the two constructors:
578                  QTreeWidgetItem (const QTreeWidgetItem & other) 
579                  QTreeWidgetItem (QTreeWidgetItem * parent, const QStringList & 
580            strings, int type = Type)
581           when the latter has a single argument. So force the second variant
582 to 
583       be called
584         * Added the desktop/screenshot example
585         * Added the desktop/systray example
587 2006-12-14  Richard Dale  <rdale@foton.es>
589         * Added the painting/svgviewer example
590         * Added the painting/imagecomposition example
591         * Added a convenience method Qt::Image.fromImage() to assign one
592 image
593           from another. This is because the C++ QImage::operator=(const
594 QImage&)
595           method isn't easily called from QtRuby
596         * Fixed do_method_missing() so that 'operator=' methods don't get 
597           transformed into setOperator() methods
599 2006-12-12  Richard Dale  <rdale@foton.es>
601         * Removed the qtrubyinit program as it's a pita to build, and isn't
602 very
603           useful
605 2006-12-04  Richard Dale  <rdale@foton.es>
607         * Add a QMap<int,QVariant> marshaller
608         * When marhalling QMap types with QVariant values, if the Ruby value
609 isn't
610           a Qt::Variant then one is created
611         * Qt::Variants can now be constructed with Hash's of
612 String/Qt::Variant
613           pairs, and from Arrays of Qt::Variants
614         * Custom types know to the QMetaType system, such as some QtDBus
615 types,
616           can be used to construct Qt::Variant via the
617 QMetaType::constructor() call
618         * Fixed a bug in Qt::AbstractItemModel.createIndex() which meant it
619 wouldn't
620           work on 64 bit machines
621         * When marshalling QList<QVariant> types from Ruby to C++, if any
622 elements
623           aren't Ruby Qt::Variants, they are automatically converted. Hence,
625           following will work:
627                 v = Qt::Variant.new([1, 2, 3])
629           The Qt::Variant v will contain a list of 3 QVariants with
630 typeName 'int'
632         * Add an option extra argument to Qt::Variant.fromValue() and
633 qVariantFromValue
634           to specify a type string, for use with QtDBus args. For example:
636                 v = Qt::Variant.fromValue(5, "uint")
638           Will force the Qt::Variant to be a specific type
639         * Change all instances of strcmp() to qstrcmp()
641 2006-11-30  Richard Dale  <rdale@foton.es>
643         * The Qt::KeySequence constructor wasn't working when passed a
644           Qt::Key enum type and it needed to be cast to an Integer via 
645           a to_i() call.
646         * When a Qt::DBusInterface.call() method was invoked without using
647           the call() method, but by calling the method directly, and the
648 method
649           returned a QVariant Qt::DBusArgument value, the QVariant return
650           value was converted to nil.
651         * Fixed some errors in the mainwindows/mdi example, thanks to shirk
652           and |Vargas| for pointing them out.
653           
654 2006-11-23  Richard Dale  <rdale@foton.es>
656         * Made Qt::TreeWidgetItem and Qt::TreeWidget Enumerable
657         * Added a Qt::TreeWidgetItemIterator.current() method to get the
658           current value of the iterator without needing to use 'operator*'
659         * Added inspect() and pretty_print() methods to Qt::TreeWidgetItem,
660           Qt::ListWidgetItem and Qt::TableWidgetItem
661         * Removed instructions for creating a 'rubyw' executable in Mac OS X
662           as it isn't needed anymore with Qt 4.x. Thanks to Hans Fugal for 
663           pointing that out.
665 2006-11-21  Richard Dale  <rdale@foton.es>
667         * The rbuic and rbrcc tools were being built with a .app extension
668           on Mac OS X when using qmake. Fixed the .pro files so this doesn't
669           happen. Thanks to Hans Fugel for reporting the problem.
671 2006-11-15  Richard Dale  <rdale@foton.es>
673         * When Qt::DBusInterface.call() was called with a single argument,
674           it was failing with a method_missing() error. Fixes problem
675           reported by Carsten Niehaus.
677 2006-11-07  Richard Dale  <rdale@foton.es>
679         * Fixed a crash when a slot was inherited by a subclass, and the
680           subclass had no slots or signals of its own
682 2006-10-30  Richard Dale  <rdale@foton.es>
684         * Upped the QtRuby version to 1.4.7 for the RubyForge release
686 2006-10-20  Richard Dale  <rdale@foton.es>
688         * All allocs and frees for the smokeruby_object struct now go through
689           two methods alloc_smokeruby_object() and free_smokeruby_object().
690           Before some instances were being allocated with Ruby's ALLOC, and
691           some with malloc(). Now they are all created with malloc().
692         * Removed a call to ALLOC_N and replaced it will calloc().
694         * Reversed the decision to get rid of ALLOC, and replaced all mallocs
695           with ALLOC and all callocs with ALLOCA_N
696         * Commented out some code that mapped an instance which was allocated
697           in the C++ world onto the corresponding ruby instance. It doesn't
698           work if the C++ address is reused and the Ruby side doesn't know
699           about it.
701 2006-10-19  Richard Dale  <rdale@foton.es>
703         * A Qt::DBusArgument can be obtained via a call to qVariantValue(),
704 like
705           this:
707                 qVariantValue(Qt::DBusArgument, variant)
709 2006-10-16  Richard Dale  <rdale@foton.es>
711         * Fixed Qt::DBusInterface.call() so it automatically wraps the
712 arguments
713           as Qt::Variants. Thanks to prullmann for testing and finding
714 problems.
716         * Improved the pingpong example to be more like the C++ version.
718 2006-10-13  Richard Dale  <rdale@foton.es>
720         * Added marshallers for QList<QPair<QString,QString> > and
721 QGradiantStops
722           (QPair<qreal,QColor>) types
724 2006-10-06  Richard Dale  <rdale@foton.es>
726         * Added the QtDBus pingpong example
728         * Fixed a bug in slot return values where they were only
729           working when a signal was emitted in Ruby, and not when
730           a C++ signal was emitted. The zeroth element in the array
731           of 'void*'s passed to qt_metacall() was being overwritten
732           by a pointer to the result of the slot invocation. Instead
733           the pointer in the zeroth element is now correctly deref'd,
734           and the result put where it points to.
736 2006-10-05  Richard Dale  <rdale@foton.es>
738         * Each rbuic generated class is now wrapped in a Ui module so that as 
739           well as class 'Ui_Foobar' there is a 'Ui::Foobar' version.
741         * Added the QtDBus chat example
743         * Made the Qt::DBusMessage '<<' create a Qt::Variant if the arg
744 passed
745           to it wasn't already a Qt::Variant
747 2006-10-04  Richard Dale  <rdale@foton.es>
749         * Added the QtDBus remote contoller car example
751         * Fixed warning messsage caused be the Qt::Variant::Time value
753 2006-10-03  Richard Dale  <rdale@foton.es>
755         * Added ruby implementations of
756 Qt::DBusConnectionInterface.serviceOwner(), 
757           registeredServiceNames(), isServiceRegistered(), servicePid(),
758 serviceUid()
759           and startService()
761         * Added a Qt::DBusMessage.value() method to return the Ruby value of
762 the Qt::Variant
763           at the beginning of the arguments array, or nil if the message
764 wasn't a ReplyMessage.
766         * Fixed incorrect Qt::Variant.toUInt() method name
768         * Added a ruby version of the Qt::DBusReply class
770         * Converted the qdbus/listnames example to Ruby
772 2006-10-02  Richard Dale  <rdale@foton.es>
774         * qVariantFromValue() wasn't working with non-Qt classes as
775 arguments,
776           such as Ruby Strings and Integers
778         * The rbuic4 tool was not setting up slot/signal connections.
780         * It is now possible to call on a Qt::DBusInterface instance directly
781 like
782           this:
784                 app = Qt::Application.new(ARGV)
785                 bus = Qt::DBusConnection.sessionBus()
786                 proxy = Qt::DBusInterface.new(  "org.freedesktop.DBus", 
787                                                 "/org/freedesktop/DBus", 
788                                                 "org.freedesktop.DBus", 
789                                                 bus )
790                 
791                 result = proxy.ListNames()
793                 # result is
794 ["org.freedesktop.DBus", ":1.0", "com.trolltech.Assistant", ":1.15"]
796         * Fixed bugs in Qt::Variant where some constants were missing, and
797 the one for 'String'
798                 gave a warning
800 2006-10-01  Richard Dale  <rdale@foton.es>
802         * The Qt::DBusMessage.type method now works. Fixes problem reported
803 by 
804           Peter Rullmann.
806 2006-09-28  Richard Dale  <rdale@foton.es>
808         * Redone the rbuic tool based on the Qt 4.2 code with the
809 ruby-specific
810           code generation in a 'ruby' subdirectory.
812         * The rbuic tool has been renamed 'rbuic4' so it can be used at the
813 same
814           time as the Qt3 one.
816         * Changed 'setShortcut' method calls so a string can be passed to
817 them
818           as well as a Qt::KeySequence to be more similar to the C++ api.
820 2006-09-26  Richard Dale  <rdale@foton.es>
822         * Sym links 'rbqt3api' and 'rbqt4api' to rbqtapi created so that the
824           and Qt4 apis can still be queried when both QtRuby versions are
825 installed
827 2006-09-25  Richard Dale  <rdale@foton.es>
829         * Renamed 'qtruby.rb' as qtruby4.rb, and qtruby.so as qtruby4.so
831         * Qt4.rb and Qt3.rb files are installed to allow either Qt3 or
832           Qt4 versions of QtRuby to be used with require 'Qt4' or 
833           require 'Qt3' statements
835         * A Qt.rb symbolic link is created by the install so that by default
836           a require 'Qt' statement will use Qt4 QtRuby
838 2006-09-17  Richard Dale  <rdale@foton.es>
840         * Fixed bug reported by Caleb Tennis where temporary QString const
841 arguments
842           were only being deleting after marshalling if they weren't const
843 types.
845 2006-09-15  Richard Dale  <rdale@foton.es>
847         * Fixed bug reported by Henri Sundelin where Qwt classes in .ui files
848 weren't
849           being correctly given Qwt:: module namespaces
851 2006-09-14  Richard Dale  <rdale@foton.es>
853         * Added a new variant of connect, which takes a SIGNAL as an
854 argument, along with
855           a block. For example:
857                 quit.connect(SIGNAL(:clicked)) { puts 'quit pressed' }
859           The block is called in the context of where the connect call was
860 made, and 'self'
861           needn't be a Qt::Object. It is similar to the signal_connect()
862 method in
863           ruby-gnome. This was suggested by rickdangerous on the #qtruby irc
864 channel.
866 2006-09-13  Richard Dale  <rdale@foton.es>
868         * Blocks can now be used as slots in Qt::Object.connect() calls.
869 There are two
870           versions, a singleton method and an instance method. 
872         * Here is an example of the class method connect() call with a block
873 as a target:
875                 app = Qt::Application.new(ARGV)
876                 quit = Qt::PushButton.new('Quit')
877                 Qt::Object.connect(quit, SIGNAL('clicked()'), app) { puts 'quit
878 clicked' }
880           The block is executed in the context of the target instance, 'app'
881 in this 
882           case.
884         * And the instance method form:
886                 class MyButton < Qt::Button
887                         def initialize(text)
888                                 super(text)
889                                 connect(self, SIGNAL('clicked()')) { puts 'button clicked' }
890                         end
891                         ...
893           The block is executed in the context of self - the instance making
894 the 
895           connect() call.
897         * The Rails version of the Ruby 1.9 method Object#instance_exec was
898 used
899           to invoke the block. Thanks to kelko on the #kde-ruby channel for
901           idea and the code, and rickdangerous for further discussion.
903 2006-09-04  Richard Dale  <rdale@foton.es>
905         * The 'default.txt' file was missing from the
906 itemviews/simpletreemodel
907           example. Added it, and converted the example to use the rbrcc tool.
909         * Fixed a bug in the rbrcc compiler in the code generation for the
910           qt_resource_struct.
912         * Fixed some bugs in the network/ftp and itemviews/chart examples
914         * Made marshall_primitives.h compile
916 2006-08-25  Richard Dale  <rdale@foton.es>
918         * Fixed bug in the rbuic tool where a QTextEdit::AutoNone value
919 wasn't
920           being converted into the Qt::TextEdit::AutoNone qtruby form.
921 Reported
922           by #freqmod on the irc channel #kde-ruby.
924         * Brought the rbrcc code in line with the latest Qt 4.2 version with
925           changes to the locale handling.
927 2006-08-21  Richard Dale  <rdale@foton.es>
929         * Reimplemented the Qt::Object.findChild() and findChildren() methods
930           using code based on the implementation in qobject.cpp. Fixes
931 problem
932           reported by Robert Gstoehl. It is now possible to pass a regular
933           expression to findChildren() in the same way as the C++ original:
935                 mywidget.findChildren(Qt::Pushbutton, /^foo/)
937         * Added a Qt::Object.staticMetaObject method to work round the
938 problem
939           of it being missing from the Smoke runtime.
941 2006-08-18  Richard Dale  <rdale@foton.es>
943         * Some more leak fixing and minimising use of the heap
945 2006-08-17  Richard Dale  <rdale@foton.es>
947         * Used the excellent MallocDebug tool on Mac OS X to track down and
949           some memory leaks. Some QRegExps and QByteArrays are now allocated
950           statically to minimise memory usage.
952 2006-07-18  Richard Dale  <rdale@foton.es>
954         * The code to change a Ruby 'foo?' method call to a Qt C++ 'setFoo()'
955 was 
956           using QStrings to change the text. However, it then converted the
957 result
958           to a QByteArray via toLatin() and referenced the contents of the 
959           QByteArray via a 'const char *' cast when the QByteArray had gone
960 out of
961           scope and had been deleted. Thanks to Carlto Wang again for
962 reporting 
963       this bug.
965         * Some of the code for debug logging of garbage collection wrote
966 spurious
967           newlines
969 2006-07-17  Richard Dale  <rdale@foton.es>
971         * Some QtRuby QHash based caches were defined with QStrings, and when
972 the value
973           was accessed the QString was converted to a QByteArray via toLatin
974 () and then
975           to a 'char *'. However, the 'char *' only lasted as long as the
976 QByteArray,
977           and this caused memory corruption if the 'char *' was still in use
978 after the
979           QByteArray was freed. So the QHash's are now defined like this:
981                 QHash<QByteArray, Smoke::Index *> methcache;
982                 QHash<QByteArray, Smoke::Index *> classcache;
983                 QHash<int, QByteArray> classname;
985           This doesn't completely fix a crash in QtRuby though, although it
986 does seem to
987           improve things. Thanks to Charlton Wang for tracking down where the
988 string was
989           being corrupted.
991 2006-07-16  Richard Dale  <rdale@foton.es>
993         * Added a QVariantList marshaller
994         * The correct QGraphicsScene event class instance is instantianted
995 from
996           the event.type()'s
997         * The Qt::GraphicsItems in a Qt::GraphicsScene are marked so they
998 won't
999           won't get garbage collected prematurely
1000         * Added QT_TR_NOOP() and QT_TRANSLATE_NOOP() methods for completeness
1001         * Added Qt::Graphics examples: graphicsview/collidingmice and
1002 dragdroprobot
1004 2006-07-05  Richard Dale  <rdale@foton.es>
1006         * Added some marshallers for Qt 4.2, for QList<QGraphicsItem*>,
1007           QList<QStandardItem*> and QList<QUndoStack*> types.
1008         * The Ruby String to 'char *' and String to 'unsigned char *' were
1009 using
1010           the pointer within the Ruby String directly which meant they were
1011           deleted when the Ruby String was gc'd. So they are copied with
1012           strdup () instead.
1014 2006-06-26  Richard Dale  <rdale@foton.es>
1016         * Applied a fix from Cvetoslav Ludmiloff to make 
1017           Qt::AbstractItemModel.createIndex() work without conversion errrors
1018           for large Ruby BigNum values.
1020 2006-06-19  Richard Dale  <rdale@foton.es>
1022         * The 'EmitSignal' class in marshall_types.cpp was not linking
1023 against
1024           the code calling it from Qt.cpp with some versions of the gcc
1025           compiler/linker. So the code was moved to Qt.cpp so that it should
1026           build on all environments.
1027         * Added a 'designer/calculatorbuilder' example using the
1028 Qt::UiBuilder
1029           class to load .ui files from a .qrc file compiled with the rbrcc
1030           resource compiler
1031         * Added some extra marshallers for QList<QWidget*> and QVector<qreal>
1032           types.
1034 2006-06-13  Richard Dale  <rdale@foton.es>
1036         * Slot and signals can now have return types and return values.
1037           For example:
1039                 class Foo < Qt::PushButton
1040                         slots 'int greeting(QString)'
1041                         signals 'int doit(QString)'
1042                 
1043                         def initialize
1044                                 super
1045                                 connect(self, SIGNAL('doit(QString)'), self,
1046 SLOT('greeting(QString)'))
1047                         end
1048                         ...
1049         * Added some missing marshaller types for QTreeWidgetItem and
1050 QListWidgetItem
1051           lists
1053 2006-06-07  Richard Dale  <rdale@foton.es>
1055         * qt_metacall() was returning an incorrect value when called with, 
1056           Ruby slots. This doesn't normally matter, but was causing D-BUS
1057           slot invocations via qt-dbus to fail.
1059 2006-06-05  Richard Dale  <rdale@foton.es>
1061         * Added support for q_classinfo() attributes, equivalent to the c++
1062           Q_CLASSINFO() macro. If the key of the q_classinfo is 'D-Bus
1063 Interface'
1064           the slots in the class are marked as Q_SCRIPTABLE in the
1065 QMetaObject.
1066           For example:
1068                 class LCDRange < Qt::Widget
1069                         q_classinfo('D-Bus Interface', 'MyInterface')
1070                 signals 'valueChanged(int)'
1071                 slots 'setValue(int)'
1072                         ...
1074         * The metaObject methods for slots and signals are no longer added
1075 when
1076           a Qt::Object is constructed, but when slots or signals are added to
1077           a class. This means that signals as well as slots can be added to
1079           existing instance.
1081 2006-06-04  Richard Dale  <rdale@foton.es>
1083         * For Qt::QObject classes which are immediate subclasses of Qt::Base,
1084           don't add C metaObject() and qt_metacall() methods as they aren't
1085           needed. This means that a QMetaObject is no longer constructed for
1086           these classes, and the one that the corresponding C++ class has is
1087           returned instead.
1088         * Bring the itemviews/pixelator example code in line with the current
1089           C++ version.
1091 2006-06-01  Richard Dale  <rdale@foton.es>
1093         * Added a rbrcc resource compiler, a ruby version of rcc
1094         * Two new module methods Qt.qRegisterResourceData() and
1095           Qt.qRegisterResourceData() were added to Qt.cpp to support the
1096           resource compiler.
1098 2006-05-23  Richard Dale  <rdale@foton.es>
1100         * With code like the following, the QtRuby runtime was choosing
1101           an operator method which took a QByteArray and a QString and
1102           returned a QString. So the 'block' became a Ruby String, rather
1103           than staying as a Qt::ByteArray:
1105         block = Qt::ByteArray.new
1106     
1107         if comment
1108             block += "/*\n"
1109             block += "    " + header + "\n"
1111           So the operator '+' for Qt::ByteArray is special cased to return
1112           a Qt::ByteArray.
1113         * The example dialogs/simplewizard now works correctly
1115 2006-05-22  Richard Dale  <rdale@foton.es>
1117         * Fix regression for dynamic class creation via QMetaObject info
1118 causing
1119           a crash.
1120         * A list of properties is now returned via
1121 Qt::MetaObject.propertyNames
1122           for a Qt::Object with properties for the inspect and pretty_print 
1123           methods.
1124         * Fixed a pile of errors in the itemviews/chart example
1125         * Added Qt::ItemSelection.at, [], count and length methods
1127 2006-05-19  Richard Dale  <rdale@foton.es>
1129         * When an unknown C++ class is found, a corresponding Ruby class is
1131           created. For instance, if a KPresenter KPart is loaded, a 
1132           KDE::PresenterDoc class is created.
1133         * It is now possible to set and get properties without needing to use
1134           Qt::Object.property() and Qt::Object.setProperty(). For instance:
1136                 factory = KDE::LibLoader.self().factory("libkpresenterpart")
1137                 @kpresenter = factory.create(self)
1138                 p @kpresenter.presentationDuration
1139                 @kpresenter.presentationDuration = true
1141         * A Qt::Variant.to_ruby method has been added which returns a Ruby
1142 value
1143           corresponding to the current value of a Qt::Variant
1144         * Added a Qt::MetaObject.propertyNames method to return a list of
1145 property
1146           names
1148 2006-05-15  Richard Dale  <rdale@foton.es>
1150         * Added an entry for a missing marshaller for QModelIndexLists.
1151           Thanks to Daniel Morris for the bug report and fix.
1153 2006-05-07  Richard Dale  <rdale@foton.es>
1155         * Added a Qt3:: module for the Q3* support classes
1156         * The rbuic now correctly gives Q3* classes a Qt3::
1157           module prefix.
1159 2006-05-04  Richard Dale  <rdale@foton.es>
1161         * A spurious warning was be output when Qt::ContextMenuEvent.type
1162           was called. Fixes problem reported by Alessio Caiazza
1164 2006-04-25  Richard Dale  <rdale@foton.es>
1166         * Added a namespace of Qwt:: for use with widgets from the Qwt
1167           3D plotting library
1169 2006-04-20  Richard Dale  <rdale@foton.es>
1171         * Added marshalling for WId and Q_PID types which will work
1172           on Windows.
1173         * Fixed the rbuic qmake project file so it will build on Windows
1175 2006-04-19  Richard Dale  <rdale@foton.es>
1177         * Removed a call to vasprintf() as it didn't compile with mingw
1178           on Windows. Replaced with qvsnprintf() using a statically
1179           allocated buffer.
1180         * Fixed bugs in slot/signal marshalling. The qint64 type is now
1181           marshalled correctly.
1182         * Added a line to extconf.rb for the libraries needed to link the
1183           QtRuby extension on Window.
1185 2006-04-18  Richard Dale  <rdale@foton.es>
1187         * Added the network/http and loopback examples
1188         * Slots with 'qint64' arg types don't yet work
1189     * Fixed bug where qtruby failed to link on some machines
1190           such as Windows, where the 'char' type defaults to
1191           unsigned, so define them as 'signed char' instead.
1193 2006-04-17  Richard Dale  <rdale@foton.es>
1195         * Added the network/ftp, broadcastreceiver and broadcastsender
1196 examples
1198 2006-04-12  Richard Dale  <rdale@foton.es>
1200         * Change source files to headers to make it easier to build the
1201 qtruby
1202           extension on Windows and Mac OS X. marshall_basetypes.cpp,
1203 marshall_complex.cpp
1204           and marshall_primitives.cpp are now all headers. marshall_types.cpp
1205 is now split
1206           into an implementation source file and a header.
1208 2006-04-11  Richard Dale  <rdale@foton.es>
1210         * Added xml/saxbookmarks, xml/dombookmarks and widgets/tooltips
1211 examples
1212         * Improved garbage collection marking, Children QTreeWidgets and 
1213           QListWidgets are now marked. QObject tree instances are only marked
1214           starting at an instance which has no parent to improved efficiency,
1215           otherwise the same sub trees would be marked several times as a
1216           traversal is started for each node in the heirarchy.
1217         * The 'type' method in QEvent subclasses now works correctly.
1218         * Added inspect and pretty_print methods to the Qt::WidgetTreeItem
1219 class
1221 2006-04-10  Richard Dale  <rdale@foton.es>
1223         * Added mainwindows/dockwidgets example
1224         * Added mainwindows/mdi example
1225         * Added widgets/movie example
1227 2006-04-10  Richard Dale  <rdale@foton.es>
1229         * Added draganddrop/dropsite example
1230         * Fixed bug where non-primitive signal types weren't working
1232 2006-04-10  Richard Dale  <rdale@foton.es>
1234         * Various fixes to the rbuic tool:
1235                 * Variable names were not always correct. Now they always start with
1236                   a '@' if they are ruby instances variables, and all have an
1237 initial
1238                   lower case letter.
1239                 * The various names used in signal/slot connect statements should
1241                   be correct.
1242                 * Qt::SizePolicy literals were not always correct
1243                 * The code for embedded icons is now translated into Ruby
1244                 * Multiline string literals are now terminated with a '\' on each
1245 line
1247 2006-04-07  Richard Dale  <rdale@foton.es>
1249         * Added the dialogs/configdialog example
1250         * Fixed bug in slot invocation marshalling where non-primitive
1251           types, apart from QStrings weren't working
1252         * Fixed crash caused by recently introduced 'fix',
1253           deleting 'argv' passed to QApplication
1255 2006-04-06  Richard Dale  <rdale@foton.es>
1257         * Marshalling of Value lists to Ruby wasn't working at all. The
1258           bug was because the following two lines are not equivalent:
1260             void *p = &valuelist[i];
1261             void *p = (void *) &(valuelist->at(i));
1263           The first line doesn't work correctly, but the second was does.
1265         * The marshaller for QList<QImageTextKeyLang> was defined wrongly.
1267 2006-04-05  Richard Dale  <rdale@foton.es>
1268         
1269         * Added the itemviews/puzzle example
1270         * Added a QModelIndexList marshaller
1271         * Added inspect and pretty_print methods for Qt::ModelIndex
1273 2006-04-05  Richard Dale  <rdale@foton.es>
1275         * Added the itemviews/sortingmodel example
1277 2006-04-05  Richard Dale  <rdale@foton.es>
1279         * Simplify the Qt::AbstractItemModel.createIndex() code
1280         * Fix bug where return values from rb_call_super() were being ignored
1281         * Make :foobar a synonym for 'foobar()' in SLOT()/SIGNAL() calls and
1282           slot/signal declarations
1284 2006-04-04  Richard Dale  <rdale@foton.es>
1286         * Added the itemviews/simpledommodel and itemviews/simpletreemodel
1287           examples
1289         * Special cased the Qt::AbstractItemModel.createIndex() and 
1290           Qt::ModelIndex.internalPointer() methods so they can save
1291           and restore Ruby VALUE instances.
1293 2006-04-03  Richard Dale  <rdale@foton.es>
1295         * The QtRuby runtime's overloaded method resolution mechanism can't
1296 currently
1297           distinguish between Ruby Arrays containing different sort of
1298 instances.
1299           Unfortunately Qt::Painter.drawLines() and Qt::Painter.drawRects()
1300 methods can
1301           be passed a Ruby Array as an argument containing either Qt::Points
1302 or Qt::PointFs
1303           for instance. These methods need to call the correct Qt C++
1304 methods, so special case
1305           the overload method resolution for now..
1307 2006-04-03  Richard Dale  <rdale@foton.es>
1308         
1309         * The models used for QTableView and QListView are the private
1310 classes
1311           QTableModel and QListModel. They are accessed as
1312 QAbstractItemModels
1313           via the apis for the view classes. Unfortunately,
1314 QAbstractItemModel
1315           has pure virtual functions which don't appear in the corresponding
1316           Ruby class Qt::AbstractItemModel. So Ruby implementations of
1317 Qt::TableModel
1318           and Qt::ListModel need to be special cased, and given the missing
1319           methods in order to access the model data.
1321 2006-03-29  Richard Dale  <rdale@foton.es>
1323         * Don't special case open() in virtual method callbacks,
1324 because all
1325           the Qt classes with open methods now have explicit open()
1326 method
1327           calls. So it isn't possible that Kernel.open() will be
1328 called
1329           wrongly anymore.
1331 2006-03-14  Richard Dale  <rdale@foton.es>
1333         * Added various explicit calls to method_missing() for methods which
1334           are defined in Kernel and Object, such
1335 as 'exec', 'select', 'format'
1336           etc. Otherwise, the corresponding methods in the Smoke library were 
1337           not being invoked correctly.
1338         * Removed a virtual destructor compile warning
1339         * Removed obsolete qtruby-only.patch and kdevelop project file
1341 2006-03-14  Richard Dale  <rdale@foton.es>
1343         * Fixed bugs in const lists marshallers, where the items in the ruby
1344 Array
1345           were wrongly being updated after a method call
1347 2006-02-20  Richard Dale  <rdale@foton.es>
1349         * Added a '-x' option to the rbuic tool to generate a ruby top level
1350           code for testing a compiled .ui file
1351         * Removed spurious "Warning: action `%s' not declared\n" message
1352         * Fixed bug in code generation where the top level arg name in
1353           setupUI() was being wrongly referenced as an instance variable.
1354           Fixes bug reported by Florent Ruard-Dumaine
1355         * Fixed bug in const pointer lists, where the items in the ruby Array
1356           were wrongly being updated after a method call
1358 2006-02-20  Richard Dale  <rdale@foton.es>
1360         * After a const value based list such as QVector<QPointF> was passed
1361           to a C++ method, the correspoding Ruby Array was being updating 
1362           with the values when it didn't need to be. There is also a bug
1363 which
1364           meant the the values in the Ruby Array were being set to nil. That
1365           bug still isn't fixed. Partly fixes bug reported by akincisor on
1367           #qtruby irc channel.
1368          
1369 2006-02-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1370         
1371         * In Qt4 when the type signature of a slot or signal argument type is
1372           normalized, any '&' character for a reference type is removed,
1373 along
1374           with any 'const' qualifiers. So 'const QString&' becomes 'QString'.
1375           After a 'QString' slot type has been marshalled to a Ruby string it
1376           is deleted, as it was assumed to be a temporary copy. However, this
1377           caused a crash with QString references such as in the
1378 widgets/wiggly
1379           example. Fixes a problem reported by mserms on #qtruby.
1381         * Added the correct Qt4 libs to the extconf.rb compile command
1383 2006-01-19  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1385         * Improved the debug logging of virtual method callbacks so that the
1386           arg types are shown too
1388 2005-12-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1390         * Restored Caleb Tennis's refactored marshall_types.cpp code after
1391           accidently deleting it in August.
1393 2005-12-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1395         * The logger_backend() function has been removed and replaced with 
1396           qWarning() calls. This was because of problems with getting the 
1397           logger_backend() code to work on Windows.
1399 2005-12-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1401         * The ruby display() method was clashing with a display() method in
1402 some
1403           QtRuby classes, and so it was aliased to _display(). However, this
1404 caused
1405           problems with the ruby RMagick extension. The display methods are
1407           special cased in Qt::LCDNumber. Fixes problem reported by David
1408 Corbin.
1409         * The slots and signals methods are now module methods of Qt::Base,
1410           rather than defined as ordinary methods in class Module, reducing
1411 name
1412           space pollution. Thanks to Esteban Manchado for pointing this out.
1414 2005-12-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1416         * QtRuby didn't work with versions of ruby > 1.8.3, as it didn't call
1417           initialize methods correctly. It used the rb_respond_to() method
1418           to check it a newly created qt instance responded to :initialize.
1419           However, in newer versions of ruby rb_responds_to() ignores
1420           private methods such as initialize(). The solution was to just
1421 remove
1422           the test, as it was redundant anyway.
1423         * Fixes problem reported by Hans Fugel and Caleb Tennis.
1425 2005-11-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1427         * When dispose() was used to delete a ruby instance, the mapping
1428 between
1429           the C++ ptr and corresponding ruby instance was not being removed,
1431           this caused a crash. Fixes problem reported by Christopher
1432 Chan-Nui.
1434 2005-11-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1436         * 'signed int&' types were not being matched or marshalled correctly
1438 2005-10-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1440         * Argument types of 'unsigned short int' were not working. Fixes
1441           problem reported by Ian Monroe
1443 2005-10-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1445         * Added network/fortuneserver and fortuneclient examples
1446         * The Qt::ByteArray class is now a normal Smoke class, 
1447           rather than a special case, as it's easier to make a
1448           Qt::ByteArray look like a ruby String, than the other way
1449           round.
1450         * The overloaded method resolution for enum arg types has been 
1451           improved
1452         * Added missing relational operators to Qt::Integer
1453         * Fixed bug in marshalling unsigned shorts
1455 2005-10-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1457         * Ported the RuBoids OpenGL artificial life example to Qt4 and 
1458           added opengl/grabber
1460 2005-10-01  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1462         * The the value of a Qt::Variant can now be accessed with
1463           with to_s, to_i, to_a and to_f methods
1464         * Deleted the svn:mime-type property from the qtruby.rb source
1465           so that diffs will be shown on checkin
1467 2005-09-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1469         * Added richtext/calendar, orderform and syntaxhighlighter examples
1470         * Fix bug in '>', '<=', '<' and '<=' operator methods where they were
1471           clashing with methods in Kernel
1472         * The struct Qt::TextLayout::FormatRange is now in QtRuby
1474 2005-09-24  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1476         * Added painting/basicdrawing,  concentriccircles,  painterpaths  and
1477           transformations examples
1479 2005-09-23  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1481         * Added mainwindows/application, menus, recentfiles and sdi examples
1483 2005-09-22  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1485         * Added layouts/basiclayouts, borderlayout and flowlayouts examples
1486         * Either a Qt::Layout, Qt::WidgetItem or Qt::SpacerItem ruby instance
1487           is created to wrap a C++ QLayoutItem instance, using
1488           QLayoutItem::widget() and QLayoutItem::spacerItem() methods to
1489           determine the exact class.
1491 2005-09-18  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1493         * Initial checkin of the Qt4 version of the rbuic tool
1494         * Added designer/calculatorform example
1496 2005-09-11  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1498         * Fixed problem with Qt::SqlTableModel.select() reported by
1499           Daniel Morris as a Qt3 QtRuby bug
1501 2005-09-01  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1503         * Added draganddrop/draggabletext, draggableicons, fridgemagnets, 
1504           puzzle examples.
1505         * Added itemviews/dirview, chart and pixelator Qt4 examples.
1506         * Fixed bug in QtByteArray marshalling where an underlying QByteArray
1507           was not being created if the Qt::ByteArray was created by passing a
1508           ruby String to the constructor.
1509         * Qt::ModelIndex's are not deleted on garbage collection as it caused
1511           crash
1512         * Added qVariantValue() and qVariantFromValue() methods
1514 2005-08-25 Caleb Tennsi <caleb@aei-tech.com>
1515         * Changed metaobject creation to not use d pointers per the comment
1516 in the
1517           code.
1519 2005-08-24  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1521         * Added dialogs examples; complexwizard, extension,  findfiles,  
1522           simplewizard,  standarddialogs and  tabdialog
1523         * Changed the types of Qt3 long longs and other Q_* types to the 
1524           Qt4 equivalents
1526 2005-08-24  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1528         * Added windowflags example
1529         * Some enum names for Qt::WindowFlags were clashing with QtRuby
1530           class names, such as Qt::Dialog. So some constants were added to
1531           use instead, renamed with an ending of 'Type'.
1533 2005-08-23  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1535         * Fixed some code to obtain a Qt::Object's properties for Qt4. Added 
1536           property inspecting code for the new QPointF, QRectF etc types
1537         * Fixed a missing attr accessor bug in Qt::Enum
1538         * Added the sliders, spinboxes and tetrix code examples
1540 2005-08-22  Caleb Tennis <caleb@aei-tech.com>
1541         * Started a migration to more template based classes. 
1542 Hopefully this is
1543           just a start, but this *should* reduce redundant code by
1544 making use of
1545           C++ templates for marshalling the various types.
1547 2005-08-22  Caleb Tennis <caleb@aei-tech.com>
1549         * Readded findChildren and findChild methods in C code under
1550 Qt::Object
1552 2005-08-22  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1554         * It isn't an error to pass a NULL void** stack to a qt_metacall()
1555 invocation.
1556           So don't throw a ruby exception, and assume it's for a slot with no
1557 args and
1558           no return type.
1559         * Added the icons, imageviewer, lineedits, screenshot and scribble
1560 example
1561           programs
1562         * Qt::Enum is no longer a subclass of Qt::Integer, and it handles its
1564           arithmetic ops. A logical or arithmetic op on a Qt::Enum always
1565 returns a
1566           ruby Integer, rather than a Qt::Enum as before.
1569 2005-08-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1571         * Added calculator, charactermap, groupbox and wiggly to code
1572 examples
1573         * Fixed crash in ruby QString signal types
1574         * Improved runtime resolution of the Qt4 Qt::Event classes
1575         * Added a Qt::Char.to_s method for converting a Qt::Char to a ruby
1576           string
1578 2005-08-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1580         * Added digitalclock example
1582 2005-08-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1584         * Added various marshallers for QVector list types
1585         * Added the analogclock example from Qt4
1586         * Added inspect methods for the new Qt::PointF, Qt::RectF etc
1587           types
1589 2005-08-19  Caleb Tennis <caleb@aei-tech.com>
1590         * For marshalling ItemLists, prefer using ->at(index) over an
1591 iterator
1593         * Add findChild and findChildren methods which attempt to mimic their
1594 Qt::Object
1595           counterparts.  Unit tests included.  e.g.:   
1596             object.findChildren(Qt::Widget) 
1597             object.findChildren(Qt::Object, "ObjectName")
1598             object.findChildren(Qt::Object, /SomeName*/)
1600             findChild just returns the closest child to the parent
1601 from findChildren
1603 2005-08-19  Caleb Tennis <caleb@aei-tech.com>
1605         * Added a unittests.rb file as the start of a unit test suite
1607           verifying QtRuby things are working properly and we don't
1608 create
1609           regressions.
1611         * Qt4ify some of the code in handlers.cpp
1613         * Modified new_qobject to only add method definitions if the
1614 kclass
1615           doesn't respond_to qt_metacall (was a TODO item).
1617         * Prefer using Ruby's ALLOCA_N over calloc in new_qt
1619 2005-08-19  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1621         * Added various marshallers for converting Qt4 C++ lists to and from
1622           ruby Arrays
1624 2005-08-19  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1626         * Added marshaller to convert QMap<int,QVariant> to ruby Hash
1628 2005-08-18  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1630         * When a QMetaObject was constructed on the fly, the metaObject
1631           for the superClass was being obtained via Qbject::staticMetaClass()
1632           which returns a copy. However, this messed up qobject_cast() and
1633           QMetaObject::cast(), so now the parent metaObject is obtained via
1634           QObject::metaObject() which returns a pointer to a QMetaObject.
1636 2005-08-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1638         * Added Qt::MetaObject.slotNames() and signalNames() from Qt3 as they
1639           are very useful when using the KDevelop debugger
1640         * If Qt::Object.metacall() can't be found in the Smoke library a ruby
1641 exception
1642           is thrown
1644 2005-08-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1646         * Left some debugging code in. qt_metacall() was not being called 
1647           correctly for non-ruby C++ slots.
1649 2005-08-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1651         * QtRuby now ported to Qt4. Pure Qt4 code with no dependencies on
1652           libQt3Support
1653         * Qt4 style QMetaObjects are created on the fly. Slots and signals
1654 work
1655           using QObject::qt_metacall() and QMetaObject::activate()
1656         * The Cannon games tutorials t1 to t14 have been ported to Qt4
1657 QtRuby.
1658         * More work needed on the garbage collection mark() function. For
1659 instance,
1660           it isn't possible to iterate through the items in a QListView in
1661 the same way as
1662           before.
1664 2005-08-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1665         
1666         * Caleb Tennis wrote:
1667           One nice feature would be to allow Qt::Object::inherits() to use
1668 the QtRuby 
1669           naming scheme for valid lookups.  For example, right now:
1671             irb(main):001:0> w = Qt::Widget.new(nil)
1672             irb(main):002:0> w.inherits("Qt::Widget")
1673             => true
1674             irb(main):003:0> w.inherits("Qt::Object")
1675             => false
1676             irb(main):004:0> w.inherits("QWidget")
1677             => true
1678             irb(main):005:0> w.inherits("QObject")
1679             => true
1681         * Inherits now works for "QObject", and for "Qt::Object" as well.
1683 2005-08-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1685         * Added a file called 'COPYING' to the qtruby project, with a
1686 note that
1687           the 'Qt' trademark in the QtRuby name is used with
1688 Trolltech's permission,
1689           followed by the text of the GPL v2 license.
1691 2005-07-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1693         * Qt4 port, initial checkin
1694         * Very little works yet, just hello world
1696 2005-07-15  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1698         * Qt::Socket started working correctly when I and regenerated and
1699 rebuilt 
1700           my Smoke library. Before then it was calling the wrong version of 
1701           QSocket::at() for some reason, and wasn't discarding bytes that had 
1702           already been read.
1703         * Removed comment from the client.rb example about
1704 Qt::Socket.canReadLine
1705           always returning true now it works.
1707 2005-07-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1709         * Added example programs for client/server programming with
1710 Qt::Socket
1711           and associated classes. client.rb illustrates current bugs in
1712 QtRuby
1713         * Qt::Socket.canReadLine() always returns true
1714         * Qt::readLine() seg faults when called a second time
1715         * A memory leak and seg faulting problems like the above were
1716 reported
1717           by Caleb Tennis
1719 2005-07-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1721         * When a Qt method returned a QString value type, such as:
1722                QString QSocket::readLine()
1723           A temporary QString was being created that wasn't deleted and
1724 caused a 
1725           memory leak. Fixes problem reported by Caleb Tennis.
1727 2005-06-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1729         * Improved display of Qt::Enums in the KDevelop debugger. With a p
1730           command it just looks like a constant, but a pretty print pp
1731 command
1732           shows the type of the underlying C++ enum:
1734           (rdb:1) p AlignTop 
1735           16
1737           (rdb:1) pp AlignTop 
1738           #<Qt::Enum:0x1825db68 @type=Qt::AlignmentFlags, @value=16>
1740 2005-06-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1741         
1742         * Upped the version to 1.0.10
1744 2005-06-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1746         * The Object.id method was clashing with the one in Qt::WidgetStack.
1747           Both methods now work correctly. Fixes problem reported by Dave M.
1749 2005-05-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1751         * The rbuic '-subimpl' option now works correctly
1753 2005-05-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1755         * The initialize methods in code generated by the rbuic tool, now
1756 have
1757           named parameters with default values, rather than '*k'
1759 2005-05-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1761         * Fixed bug where the rbuic tool was generating incorrect code
1762           for an array of strings used as a combo box value
1764 2005-05-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1766         * Added support for the QScintilla text editing widget, including an
1767 optional 
1768            '--enable-qscintilla=yes' configure option. The QScintilla classes
1769 are included in a
1770           Qext:: namespace. Thanks to Blackshack for the idea and configure
1771 code.
1772         * The KDE namespace modules are only created if the Korundum
1773 extension is used.
1774           Otherwise the Object namespace was being polluted with unused
1775 constants.
1776         * Some enums in the QScintilla headers had a spurious comma after
1777           the last enum value, and kalyptus was failing with a parse error.
1778           The comma is now ignored.
1780 2005-05-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1782         * '!=' operator methods in the Smoke library were being shown via
1783 ruby introspection when they
1784           can't actually be written in ruby, and are derived from the
1785 corresponding '==' operator method.
1786         * '==' operator methods can now be called.
1788 2005-05-22  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1790         * Fixed bug in Smoke code generation where spaces were not
1791 being removed from operator
1792           methods such as 'operator *'
1793         * Operator methods are now displayed correctly via ruby
1794 introspection
1796 2005-05-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1798         * Improved the format of enums displayed by rbqtapi and rbkdeapi
1800 2005-05-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1802         * Removed unused Qt::Internal functions
1803         * Added KNS:: to the namespaces expected by the rbkdeapi tool
1804         * Introspection via Object#methods, public_methods, protected_methods
1805 and singleton_methods
1806           or Module#constants, instance_methods, protected_instance_methods
1807 and public_instance_methods
1808           now all include methods from the Smoke runtime. This fixes part of
1809 the request in bug 105772, but
1810           not enabling 'respond_to?' to be used with Smoke methods.
1812 2005-05-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1814         * The Kernel.format() method was clashing with the
1815 Qt::MimeSource.format() method.
1816           The correct method is now called according to the type of the first
1817 argument. Fixes
1818           problem reported by Armin Joellenbeck
1820 2005-04-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1822         * Removed superfluous "require 'pp'" statement
1824 2005-04-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1826         *  Upped the version to 1.0.9 for the RubyForge release
1828 2005-04-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1830         * Fixed regressions in the rbqtapi and rbkdeapi utilities caused by
1831 the Qt::Internal namespace
1832           tidy up
1833         * Qt::version and Qt::ruby_version had wrongly been moved to the
1834 Qt::Internal module
1836 2005-04-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1838         * Upped the version to 1.0.8 for the RubyForge release
1840 2005-03-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1842         * An 'include Qt' statement in qtruby.rb where a couple of methods
1843 were being added to
1844           class Module was causing all the Qt methods to be added to Module.
1845 Oops, this a really
1846           serious bug. Various methods in qtruby.rb are now module methods in
1847 the Qt::Internal
1848           module. Big thanks to Eric Veensta and Samir Patel for pointing out
1849 this can of worms.
1851         * It also fixes a problem reported by David Crosby where
1852 a "require 'time'" statement was
1853           incompatible with a "require 'Qt'" statement. As the cause was
1854 unknown, a hacky workround
1855           had to be added, which is no longer needed.
1857 2005-03-24  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1859         * When a subclass of QObject is instantiated in the C++ world, and
1860 the exact class doesn't
1861           exist in ruby, then scan up the inheritance heirarchy via
1862 QObject::metaObject() until a
1863           class is found which does have a ruby equivalent. Fixes problem
1864 reported by Dmitry Morozhnikor
1865           where a KViewPart was being returned as a Qt::Object, rather than a
1866 KParts::ReadOnlyPart.
1867         * The internal method 'cast_object_to()' now takes a class literal as
1868 a second parameter,
1869           rather than the class name as a string
1871 2005-03-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1873         * Moved Qt.rb from qtruby/lib/Qt to qtruby/lib. Fixes problem
1874 building qtruby on Mac OS X
1875           with extconf.rb reported by Michael Doppler
1876         * Rename 'README.build' as INSTALL
1878 2005-02-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1880         * Upped the version to 1.0.7 for the KDE 3.4 release
1881         * Removed the khtml:: namespace as it wasn't being used
1883 2005-02-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1885         * Added a KNS:: namespace for the KNewStuff library
1887 2005-02-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1889         * The KDE::Win::WindowInfo nested class is included in the Korundum
1890 runtime
1892 2005-01-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1894         * Made some changes to get code generated by the rbkconfig_compiler
1895           to work. When an argument is a non-const reference to a primitive 
1896           type, or a QString or QStringList, then don't delete it after the
1897           method call. This is because a class like KConfigSkeleton takes
1898           references, and then 'squirrels them away' - before the references
1899           were just pointing to junk on the stack.
1900         * The method 'isImmutable' is added to KDE::ConfigSkeletonItems
1902 2005-01-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1904         * If a ruby Array is passed as an argument to an overloaded method,
1905 give
1906           priority to QStringList args.
1908 2005-01-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1910         * rbuic was giving widgets names containing a '@' to match the ruby
1911 instance variable
1912           name. However, this doesn't work with KDE::ConfigDialog which
1913 expects the names to
1914           match the ones generated in a KDE::ConfigSkeleton by
1915 rbkconfig_compiler so '@' is no
1916           longer added.
1918 2005-01-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1920         * Fixed bug reported by Ian Monroe where the KIO.copy() method wasn't
1921 being found in
1922           the Smoke runtime. Modules methods are now trapped with
1923 method_missing and
1924           despatched to call Smoke methods correctly
1925         * Added support for the KDE::ConfigSkeleton and subclasses.
1926 Constructors for nested
1927           classes can now be called correctly
1929         CCMAIL: ian.monroe@gmail.com
1931 2005-01-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1933         * Added a Qt::Integer.coerce method so that Qt::Integers and
1934 Qt::Enums can be
1935           combined in arithmetic expressions with ruby Integers. 
1937 2005-01-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1939         * Upped the version to 1.0.6 for the KDE 3.4 beta 1 release
1941 2005-01-02  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1943         * The Qt::Object pretty_print method now shows the class name of enum
1944 properties
1946 2004-12-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1948         * Fixed an interesting bug reported by Stephan Oehlert. Kernel has a
1949 method called 
1950           open() which takes a String as the first argument. But when a call
1951 is made to an open() 
1952           method in the Qt classes, it messes up the method_missing() logic
1953 to divert it to the 
1954           Smoke library. Instead it attempts to call the Kernel method with
1955 the wrong arg types.
1957         * The problem is fixed by calling the appropriate method based on the 
1958           type of the first arg. However, it is no longer possible to
1959 override virtual methods
1960           called 'open'.
1962         CCMAIL: stephan.oehlert@gmx.net
1964 2004-12-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1966         * Added a parent attribute to the Qt::Object pretty_print() method
1967         * Removed all the properties from the Qt::Object inspect() method
1968 except name,
1969           x, y, width, height (the last four for for Qt::Widgets only). This
1970 speeds up fetching
1971           the details of Qt::Objects that have more than just a handful of
1972 children.
1973           The full details can still be fetched with a pretty_print() call
1974 via a debugger 'pp'
1975           command.
1977 2004-12-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1979         * The qtruby runtime needs to be able to run the code for an
1980 initialize() method up
1981           to the point where the C++ instance has been constructed and
1982 wrapped, and then
1983           jump out. It then re-runs initialize() with the wrapped instance.
1984 Before a callcc() call
1985           had been used for the jumping which worked fine. However, it made
1986 the frame stack
1987           look strange when debugging code with the KDevelop debugger. The
1988 fix is to use 
1989           catch and throw instead, as they leave the stack in a more normal
1990 looking state.
1992 2004-12-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
1994         * Added a work round for a bug caused by an incompatibility between
1995 QtRuby
1996           the 'require time' statement, reported by David Crosby
1997         
1998         CCMAIL: dcrosby42@gmail.com
2000 2004-12-18  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2002         * Added a 'receivers' property to the Qt::Object inspector. This
2003 allows the active signal
2004           connections for a Qt::Object instance to be viewed in the KDevelop
2005 debugger as a 
2006           Hash. The hash keys are the signal names, and the hash values are
2007 arrays of the target 
2008           signals/slots as Qt::Connection instances.
2010 2004-12-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2012         * Added 'metaObject' as an expandable property for Qt::Objects. This
2013 allows the
2014           Qt::MetaClass class heirarchy to be browsed, and signals/slots
2015 declarations inspected.
2017 2004-12-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2019         * Fixed bug in lower case/underscore method naming to camel case
2020 conversion
2022 2004-12-15  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2024  * Added an attribute of 'children' to the Qt::Object inspect method,
2025 which is an array
2026    of the Qt::Object's children
2027  * The QObjects in a QObjectList were not being created with the exact
2028 ruby class
2029    if they hadn't been allocated from within the ruby code, and just
2030 left as Qt::Objects
2032 2004-12-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2034  * Qt::Object properities of type enum are shown by name in the
2035 KDevelop debugger,
2036    and not as numeric literals
2038 2004-12-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2040  * Changed the format of the Qt::Color inspect string to
2041 #<Qt::Color:0x0 #ffffff>
2042  * Added some more attributes to the Qt::Font inspector
2043  * Added a Qt::Cursor inspector
2045 2004-12-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2047  * Fixed a bug where the debugger was calling an inspect method on an
2048 instance
2049    which wasn't fully initialized yet, and not of type T_DATA.
2051 2004-12-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2053  * Added inspect() and pretty_print() methods for Qt::SizePolicy
2054  * Greatly improved the Qt::Object Qt property based inspect() and
2055 pretty_print()
2056    methods. Property types such as Qt::Point, Qt::Font and Qt::Rect
2057 can be 
2058    viewed as expandable items in the KDevelop debugger variable tree.
2060 2004-12-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2062  * More inspect() and pretty_print() methods for common classes to
2063 improve debugging -
2064    Qt::Color, Qt::Font, Qt::Point, Qt::Rect, Qt::Size, Qt::Date,
2065 Qt::DateTime and Qt::Time
2066    
2067 2004-12-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2069  * Added inspect() and pretty_print() methods for Qt::Objects that get
2070 the QObject properties and
2071    show them as 'name=value' pairs. This means the KDevelop debugger
2072 can make Qt::Object 
2073    variables expandable and show their properties.
2075 2004-11-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2077  * Upped the QtRuby version to 1.0.5 for the KDE 3.3.2 release
2079 2004-10-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2081  * qError(), qWarning() and qFatal() are now Object instance methods,
2082 rather than Qt module
2083    methods. This means they don't need to be referenced with an
2084 ugly 'Qt.' module scope anymore.
2086 2004-10-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2088  * If a class method was called before super, it was wrongly throwing
2089 an exception
2090    as an error. For instance, this call to i18n():
2092                def initialize()
2093                    super(TreeList, i18n("My App Preferences"),
2094                             Help|Default|Ok|Apply|Cancel, Ok)
2095       ...
2098 2004-10-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2100  * Until super has been called in an initialize() method, Qt methods
2101 can't be called on
2102    it. An exception is now thrown 'Instance not initialized', instead
2103 of it causing a seg fault.
2104  * For instance:
2106      class MyWidget < Qt::ComboBox
2107          def initialize
2108              # Must call super first
2109              insertItem('abc')
2110              super
2111          end
2112      end
2114  * Fixes problem reported by Han Holl
2115  CCMAIL: kde-bindings@kde.org
2117 2004-10-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2119  * Upped the version to 1.0.4 for the RubyForge release
2120  * Added some names to AUTHORS from the ChangeLog
2122 2004-10-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2124  * If the smokeruby_mark() function was called for an instance of a
2125 QObject, it should
2126    mark all the instances below it in the QObject tree, as not needing
2127 garbage collection. 
2128    However, if a node in the tree didn't have a mapping onto a ruby
2129 instance the marking 
2130    process stopped there, even though the grandchildren and their
2131 descendants might 
2132    have a valid mapping onto ruby instances.
2133  * The solution is to always traverse the entire tree. Fixes problem
2134 reported by Han Holl.
2136  CCMAIL: kde-bindings@kde.org
2138 2004-10-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2140  * All the Qt::CanvasItems owned by a Qt::Canvas are marked with
2141 rb_gc_mark() to
2142    prevent them being garbage collected
2143  * The top level widgets are no longer disposed() on Qt::Application
2144 exit
2145  * Fixed some bugs in the chart example. 
2147 2004-10-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2149  * Fixed arg matching to give priority to 'int' or 'signed' when
2150 passed a ruby Integer, or
2151    'double' when passed a ruby Float
2152  * The chart example can now save and load chart files
2154 2004-10-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2156  * Added greater than and less than operators to Qt::Enum, so that
2157 enums can be compared with
2158    Integers
2159  * Added the chart example for Qt Tutorial #2
2161 2004-10-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2163  * Added Qt::Application.ARGV. It returns the original ruby ARGV array
2164 with Qt command line 
2165    options removed.
2167 2004-10-11  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2169  * Added a global flag 'application_terminated'. Once this is set the
2170 QtRuby runtime will no longer
2171    delete any C++ instances. This will hopefully fix crash on
2172 application exit problems reported 
2173    by Thibauld Favre.
2175  CCMAIL: kde-bindings@kde.org
2177 2004-10-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2179  * The recent fix for checking invalid arg types, didn't work with nil
2180 passed as a value
2182 2004-10-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2184  * A QRgb[] color table was being wrongly deleted after marshalling
2186 2004-10-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2188  * If a ruby method overriding a virtual method returned a primitive
2189 type when an instance of a class
2190    was expected, it caused a seg fault. A ruby exception is now thrown
2191 instead. Fixes problem reported by
2192    Han Holl.
2194  * For instance,
2195                     class ContainerGrid < Qt::Widget
2196                         def sizeHint
2197                             # next line should return a Qt::Size, not
2198 an integer
2199                             100
2200                         end
2201                      end
2203    Now gives the following error:
2205                qsize.rb:12:in `method_missing': Invalid type,
2206 expecting QSize (ArgumentError)
2207                    from qsize.rb:12
2209  CCMAIL: kde-bindings@kde.org
2211 2004-10-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2213  * The smokeruby_mark() function was only marking the immediate
2214 children of a
2215    Qt::Object for not being garbage collected. It now marks all the
2216 Qt::Objects
2217    in the object tree below it.
2219 2004-10-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2221  * Added Qt Designer Tutorial 'Creating Dialogs' translated into
2222 QtRuby. It
2223    shows how you can combine ruby code generated from .ui files with
2224 the rbuic
2225    tool, with your own code.
2227  * The .ui files and images are identical to the original C++
2228 versions.
2230  * It features a simple Makefile to run rbuic when you change the .ui
2231 files, and
2232    regenerate the ruby sources.
2234 2004-10-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2236  * Fixed rbuic '-embed' option which had been broken after adding DCOP
2237 suppot
2238    to Korundum, after changes in the Qt::ByteArray class.
2239  * Fixed QRgb* marshalling problem where the ruby value was
2240 overflowing a signed int.
2241    The target for marshalling is now an array of unsigned ints.
2242  * When a Qt::Application exits after returning for an
2243 Qt::Application.exec() call, the top
2244    level widgets are deleted as well as the Qt::Application itself.
2245 This fixes a problem where
2246    ruby does garbage collection in an arbitrary order after the ruby
2247 app has exited. It destroys
2248    a ruby Hash of QMetaData info that the Qt::Application or
2249 Qt::MainWindow need to clean up.
2250  * The layout of the ruby code generated by rbuic has been improved
2251 with better indenting.
2252  * attr_reader attribute accessors have been added for the most
2253 important instance variables 
2254    in an rbuic generated class to make them more easily accessed from
2255 another class.
2257 2004-10-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2259  * Given a C++ instance and an approximate classname, the QtRuby
2260 runtime uses the
2261    various Qt rtti mechanisms such as QObject::className() to improve
2262 the resolution
2263    of the name. However, the numeric classId into the array of
2264 classnames in the Smoke
2265    runtime was not being updated in line with the more accurate name. 
2266  * This caused problems with method argument matching which uses the
2267 numeric classId
2268    rather than the ruby object's classname, and so QtRuby wrongly
2269 assumed that a an
2270    instance of a Qt::Widget was a Qt::Object.
2271  * Fixes problem reported by Han Holl
2273  CCMAIL: kde-bindings@kde.org
2275 2004-10-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2277  * Fixed a couple of errors in the rbuic generated code found as a
2278 result of
2279    the recently improved stricter arg type matching.
2281 2004-10-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2283  * When a ruby app exits, rb_gc_call_finalizer_at_exit() is called and
2284 all the ruby
2285    instances are garbage collected. The problem is that this is done
2286 in an arbitrary
2287    order, and Qt::Application was occasionally crashing in its
2288 destructor because 
2289    QMetaObject info it still needed was being deleted before then.
2291  * Fixes problem reported by Thibauld Favre
2293  CCMAIL: <tfavre@mandrakesoft.com>
2295 2004-10-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2297  * When a QMetaData object was contructed the class name was a pointer
2298 from a ruby
2299    string, and was being corrupted when the string was freed. The
2300 string is now copied.
2302 2004-10-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2304  * Han Holl's report about a when you pass an incorrect arg type to a
2305 QtRuby
2306    method, it caused a crash has opened a 'can of worms'. This was
2307 because there
2308    was no arg type checking if there was only one candidate method in
2310    Smoke runtime. Now that arg type checking is applied to all QtRuby
2311 method calls, not
2312    not just those that after lookup in Smoke map onto a single method,
2313 the overloaded
2314    method resolution via the arg types has had to be greatly improved.
2315 This has
2316    been done, and so the arg type matching is now extremely fussy.
2318  CCMAIL: kde-bindings@kde.org
2320 2004-10-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2322  * An optimization in the overloaded method resolution matching causes
2323 a crash;
2324    instead of throwing a ruby exception when a programming error is
2325 made.
2326    If there is only one method found in the Smoke runtime, it assumes
2327 that it must 
2328    be the right one and just takes that.
2330  * For example:
2332      lay = Qt::HBoxLayout.new(self)
2333      ed = Qt::LineEdit.new('blah',self)
2334      # The next line should be: lay.addWidget(ed)
2335      lay.addLayout(ed)
2337   * Fixes problem reported by Han Holl
2339   CCMAIL: kde-bindings@kde.org
2341 2004-10-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2343  * A common programming error is to accidently leave off the 'new'
2344 method call when
2345    creating an instance. The QtRuby runtime wasn't correctly trapping
2346 an attempt to
2347    call an instance method on a class object, and was seg faulting
2348 rather than
2349    throwing an exception.
2351  * For example:
2353                     # The next line should be:  lay =
2354 Qt::HBoxLayout.new(self)
2355                    lay = Qt::HBoxLayout
2356                    ed = Qt::LineEdit.new('blah',self)
2357                    lay.addWidget(ed)
2359  * Fixes problem reported by Han Holl
2361  CCMAIL: kde-bindings@kde.org
2363 2004-10-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2365  * Upped version to 1.0.3 for the KDE 3.3.1 release
2367 2004-10-02  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2369  * Added Ruby Array to QPair<int,int>& marshaller
2371 2004-09-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2373  * The resolve_classname() function in handlers.cpp uses the various
2374 Qt rtti mechanisms to
2375    get a more accurate classname to instantiate as a ruby instance. It
2376 has now been extended
2377    with a callback to the Korundum library to do the same for KDE
2378 classes.
2380  CCMAIL: zack@kde.org
2382 2004-09-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2384  * Added Jim Menard's ruboids as an OpenGL/Qt::GL* Widgets example
2385  * Improved instructions and exconf.rb for building the gui extension
2386 from Michal 'hramrach' Suchanek
2388 2004-09-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2390  * Upped the version to 1.0.2 for Rubyforge release
2392 2004-09-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2394  * Added a 'qui' extension for reading in .ui Qt Designer files at
2395 runtime
2396  * For example:
2398      require 'Qt'
2399      require 'qui'
2401      a = Qt::Application.new(ARGV)
2402      if ARGV.length == 0
2403          exit
2404      end
2406      if ARGV.length == 2
2407          QUI::WidgetFactory.loadImages( ARGV[ 0 ] )
2408              w = QUI::WidgetFactory.create( ARGV[ 1 ] )
2409              if w.nil?
2410              exit
2411          end
2412              w.show()
2413             a.connect( a, SIGNAL('lastWindowClosed()'), a,
2414 SLOT('quit()') )
2415             a.exec()
2416      end
2419 2004-09-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2421  * Upped the version to 1.0.1 for the current Rubyforge release
2423 2004-09-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2425  * Added Kate:: and KTextEdit:: namespaces for writing Kate plugins
2427 2004-09-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2429  * Some newer changes from the uic were added to the rbuic tool.
2431 2004-09-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2433  * Brought the rbuic code to uncompress zip files in line with the
2434 current uic code
2435  * Added a qmake project file for building the rbuic tool on Mac OS X,
2436 and some
2437    notes on how to build QtRuby on a Mac.
2439 2004-08-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2441  * Added Kontact module to provide a namespace for the kontact plugin
2444 2004-08-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2446  * Underscore naming for can be used for method names instead of camel
2447 case if
2448    preferred. Any underscores in method names are removed, and the
2449 following
2450    character is capitalised. For example, either of these two forms
2451 can be used
2452    to call the same method:
2453   
2454      create_standard_status_bar_action()
2455   
2456      createStandardStatusBarAction()
2458 2004-08-23  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2460  * A 'thing?' ruby method can now be used as a synonym for either
2461 isThing() or hasThing() in the Smoke runtime
2463 2004-08-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2465  * Upped the QtRuby version to 1.0.0 - it must work now then..
2467 2004-08-02  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2469  * Added 'long long' and 'unsigned long long' marshallers
2471 2004-07-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2473  * The smokeruby_mark() gc marking f'n now marks the QTableItems owned
2474    by a QTable so they don't get garbage collected, even if there are
2476    remaining references in the user code.
2478 2004-07-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2480  * Added a template based method for QValueList marshallers, and
2481 several
2482    QValueList types.
2484 2004-07-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2486  * Removed any marshaller types that weren't in the Smoke runtime from
2488    type name to marshaller function lookup table.
2490 2004-07-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2492  * If a class doesn't have a virtual destructor, then no mapping was
2493 being
2494    kept from the C++ instance to the corresponding ruby value. If the
2495 class
2496    had virtual method callbacks, this meant that the ruby instance
2497 couldn't
2498    be found, and the callback couldn't be made.
2500  * Hence, the Qt::ToolTip callback in examples/qt-examples/tooltip
2501 didn't
2502    work, as that class doesn't have a virtual destructor.
2504  * Added an 'isEnum()' function to use when matching args in
2505 overloaded
2506    method resolution.
2508  * QCString arg types are chosen in preference to QByteArray ones,
2509 matching
2510    against ruby strings, when resolving an overloaded method call.
2512  * Qt::Enums and Qt::Integers can be marshalled to uints, longs and
2513 ulongs as
2514    well as ints.
2515    
2516  * Added a '==' operator to Qt::Enums so they can be compared with
2517 ruby Integers
2519 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2521  * Qt::Integer arithmetic and bit operations return Qt::Integers,
2522 rather
2523    than ruby Integers so that ops can be nested as for Qt::Enums.
2525 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2527  * The recently added Qt::Integer bit operators were returning a ruby
2528 Integer
2529    type. When they were nested, the Integer didn't know how to convert
2531    Enum it was being or'd with to an Integer.
2533  * The solution is to add bit operators to the Enum class which return
2534 Enums
2535    rather than Integers.
2537  * The following code didn't work:
2538      
2539      def initialize(message)
2540          super(nil, "passivedlg",
2541                  Qt::WStyle_Customize | Qt::WX11BypassWM |
2542 Qt::WStyle_StaysOnTop |
2543                  Qt::WStyle_Tool | Qt::WStyle_NoBorder)
2545 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2547  * Replaced QString casts to 'const char *' with latin1() calls
2549 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2551  * The Qt::Enum class was missing bit operations, so various bit
2552 methods
2553    were added to Qt::Enum's superclass, Qt::Integer.
2555  * This was causing this line from examples/uimodules/uidialogs.rb to
2556 fail:
2558      dlg =   KDE::DialogBase.new(parent, "sample_dialog", false,
2559 caption,
2560                                         KDE::DialogBase::Ok |
2561 KDE::DialogBase::Cancel, 
2562                                  KDE::DialogBase::Ok, true )
2564 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2566         * Added error messages for invalid slot or signal declarations
2568 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2570         * The standard ruby error message for missing constants and methods
2572           now used when they can't be found in the Smoke library. Removed
2573 Alex's
2574           comment about the previous approach, now I agree this is the best
2575 way 
2576           to show errors.
2578         CCMAIL: me@lypanov.ne
2580 2004-07-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2582         * Added qDebug(), qFatal() and qWarning() module methods
2584 2004-07-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2586         * The parsing of types passed to slots, (or returned from dcop slots)
2587 didn't
2588           work with template types containing commas such
2589 as 'QMap<QString,QString>'.
2590         * Added 'QMap<QString,QString>&' and 'QMap<QString,QVariant>&' to the
2591           handlers.cpp string to marshaller lookup table.
2593 2004-07-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2595         * Added marshallers for QMap<QString,QString> and
2596 QMap<QString,QVariant> to and from ruby hashes
2598 2004-07-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2600         * The error messages for missing methods or missing constants now
2601 give the
2602           name of the missing item.
2603         * For example, this incorrect line:
2605             color_group.setColor( ColorGroup::MyMissingConst, blue )
2606           
2607           Gives this error:
2609             splitter.rb:16:in `const_missing': unresolved constant 
2610                 reference MyMissingConst (ArgumentError)
2612         * Implements suggestion from Jeff on the kdebindings list
2614         CCMAIL: kde-bindings@kde.org
2616 2004-07-19  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2618         * Added Qt::Enum type. Before a C++ enum was being marshalled to a
2619 ruby
2620           Integer, and the type name of the enum was lost. A Qt::Enum is a
2621 subclass
2622           of Integer with an extra type name.
2623         * This fixes a problem with overloaded method resolution where two
2624 methods differ
2625           only be an enum type such as this:
2627             # KPasswordEdit(EchoMode echoMode, QWidget *parent, const char
2628 *name);
2629             # KPasswordEdit(EchoModes echoMode, QWidget *parent, const char
2630 *name);
2632             pw2 = KDE::PasswordEdit.new(KDE::PasswordEdit::ThreeStars,
2633 page, "")
2635 2004-07-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2637         * After a non-const string arg was passed to a method, the value of
2638 the QString
2639           is copied into the ruby value. But it wasn't being correctly
2640 converted to the
2641           correct string format according to $KCODE.
2642         * QString to ruby string conversions in QStringLists were not
2643 localised either.
2645 2004-07-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2647         * Removed superfluous '(void *)' cast which was causing compilation
2648           problems with gcc 3.4
2649         * Fixes problem reported by Jochen Immend�fer on comp.lang.ruby
2650           CCMAIL: kde-bindings@kde.org
2652 2004-07-11  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2654         * Qt eucJP and Shift-JIS codecs used to support ruby $KCODE values
2655 of 's' 
2656           for SJIS and 'e' for EUC
2658 2004-07-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2660         * Added support for strings in QtRuby programs being written in
2661 UTF-8.
2662           Use the '-Ku' command line option or '$KCODE=u' in the program.
2663         * Removed recently added QChar marshalling as it wasn't very i18n
2664 friendly
2666 2004-07-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2668         * Added QChar marshalling
2670 2004-07-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2672         * Fix for passing C++ 'bool*' and 'bool&' argument types
2673           There is a similar problem for bool arg types as with ints, and the
2674 mutable
2675           Qt::Boolean class can be used like this:
2676                 
2677             # QFont getFont(bool * ok, const QFont&initial, QWidget* parent =
2678 0);             
2679                 
2680             ok = Qt::Boolean.new
2681             font = Qt::FontDialog.getFont(ok, Qt::Font.new("Helvetica
2682 [Cronyx]", 10), self)
2683             if !ok.nil? 
2684                 # font is set to the font the user selected
2685             else 
2686                 # the user canceled the dialog
2687             end
2688                 
2689           Use 'nil?' to test the value returned in the Boolean
2690         * Signal and slot type signatures are 'normalized' and any unwanted
2691 white space
2692           removed
2693         * Fixed problem with QByteArray arg type matching in overloaded
2694 method resolution
2696 2004-07-04  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2698         * Fix for passing C++ 'int*' and 'int&' argument types
2699           Ruby passes numeric values by value, and so they can't be changed
2700 when passed to a
2701           method. The Qt::Integer class provides a mutable numeric type which
2702 does get updated
2703           when passed as an argument. For example, this C++
2704 method 'findByFileContent()':
2705                 
2706                 # static Ptr findByFileContent( const QString &fileName, int
2707 *accuracy=0 );
2709                 acc = Qt::Integer.new(0)
2710                 fc = KDE::MimeType.findByFileContent("mimetype.rb", acc)
2711                 
2712           It supports the arithmetic operators, and so expressions such
2713 as 'acc + 3' 
2714           will work.
2716 2004-07-02  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2718         * Replaced obsolete STR2CSTR() calls with StringValuePtr()
2720 2004-06-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2722         * The internal findAllMethods() method now returns nil rather than an
2723 empty array
2724           if the given classid is greater than 'smoke->numClasses'.
2725 Otherwise, it wasn't 
2726           possible to distinguish between a class with no methods, or
2727 reaching the end of
2728           the classes array.
2730 2004-06-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2732         * Added QStrList marshalling
2734 2004-06-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2736         * Improved Garbage Collection, dispose() and isDisposed() methods
2737           - When a ruby instance is garbage collected, the underlying C++
2738 instance will only be
2739             deleted if it isn't 'owned' by a parent object. Normally this
2740 will 'just work', but
2741             there are occasions when you need to delete the C++ ahead of
2742 garbage collection, and
2743             whether or not it has a parent. Use the dispose() and
2744 isDisposed() methods like
2745             this:
2746                 
2747                 item0.takeItem(item1)  
2748                 item0.insertItem(item1)  
2749                 
2750                 item2.dispose
2751                 if item2.isDisposed
2752                     puts "item2 is disposed"
2753                 end
2755           - Fixes problem reported by Hans Fugel
2756         
2757 2004-06-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2759         * The marshalling TypeHandler function pointers are now looked up in
2761           QAsciiDict, rather than a ruby Hash.
2762         * Some unused functions removed
2763         * QtRuby version upped to 0.9.8
2765 2004-06-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2767         * New flags were added for Smoke methods - mf_internal and
2768 mf_copyctor.
2769           This allows copy constructors which are only used internally by the
2770 ruby
2771           runtime, to be excluded from the standard api.
2774 2004-05-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2776         * When ARGV was passed to the Qt::Application constructor, it was
2777 being
2778           altered, and the name of the ruby program added as a first entry.
2780           constructor now uses a copy of the array, and ARGV is left
2781 unchanged.
2783 2004-05-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2785         * Added a '-kde' option to the rbuic tool to generate
2786 require 'Korundum'
2787           instead of require 'Qt' statements, and use KDE widgets.
2789 2004-04-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2791         * Applied patch from Marek Janukowicz.
2792         * The patch fixes some perlisms, that caused errors on loading a Ruby
2793 file
2794           generated from .ui file for Qt::MainWindow subclass
2796 2004-04-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2798         * The rbuic now correctly names KDE widgets with a KDE:: prefix
2799         * If the rbuic -x option is used, a KDE top level is generated if any
2800           KDE widgets have been found.
2802 2004-04-17  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2804         * Fixed bug in rbuic generated code for setResizeMode()
2806 2004-04-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2808         * Improved classname resolution for QListViewItem and QTableItem
2809 subclasses using rtti() calls
2811 2004-03-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2813         * Ruby slots and signals are now inherited correctly
2814         * This causes problems with code generated by the rbuic utility
2815         * Fixes bug 78273 reported by Imobach Sosa
2817 2004-03-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2819         * When a mutable, non-const QString, int*, int&, bool* or bool& is
2820 passed
2821           to a method, the corresponding ruby value is now updated after the 
2822           method call.
2823         * Some f'ns are no longer static, so that the korundum extension can
2824 link
2825           against them.
2827 2004-03-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2829         * The f'n new_qobject is no longer static, and can be called from
2830 korundum
2832 2004-03-01  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2834         * Fixed bugs in QCString, QString and QByteArray marshalling.
2835           - When a C++ method with a mutable, non-const QCString arg type 
2836             is called from ruby, the C++ arg value is copied back into the
2837             corresponding ruby arg VALUE after the call.
2838           - A pointer to a locally allocated QString was being returned,
2839             giving memory corruption problems.
2840         * The default debug level in qtruby.rb is DebugLevel::OFF, otherwise
2841           very verbose error messages are produced.
2843 2004-01-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2845         * Fixed bug where a QCString was being ranked equally with a QString,
2846           when resolving ambiguous method overloading. Caused the KDE::URL
2847           constructor to fail with a string arg.
2849 2003-11-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2851         * Added DOM:: namespace for the DOM:: classes in the Smoke library.
2852         * The scope operator in nested classnames is now '::' rather
2853           than '__', so changed the qtruby runtime to expect that.
2855 2003-11-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2857         * Added the KillerFilter event filtering example from chapter 16
2858           of 'Programming with Qt'
2859         * Improved classname resolution via the Qt rtti mechanisms in
2860           QObject, QEvent and QCanvasItem. This fixed a problem in the
2861           KillerFilter example when a QMouseEvent was passed to the ruby 
2862           event handler, it was being instantiated as a ruby Qt::Event, 
2863           rather than a Qt::MouseEvent.
2865 2003-11-11  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2867         * Improved nil argument matching, and nil can match any type now
2868           not just classes. Translated the code from the Qt.pm in PerlQt,
2869           after discussion on the kde-perl list.
2870         * Fixed bug in rbuic where a C++ 'QString::null' was "" in ruby, and
2871           should have been a nil.
2873 2003-11-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2875         * Finally fixed huge leak, causing the progress.rb example to grow by
2876           1 Mb a minute.
2877         * Added a cache from ruby classname to Smoke class id
2878         * Speeded up method selector look ups
2879         * Put some C++ code inside blocks to ensure that the destructor clean
2880           up code was called, when the current f'n longjmp's up the stack
2881 rather
2882           than returns normally.
2883         * QtRuby looking good, raised the version to 0.9.6 to celebrate
2885 2003-11-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2887         * Fixed some memory leaks
2888         * Ensured that any instance 'owned' by ruby, ie with the the
2889 allocated
2890           flag set to true, is always added to the pointer_map.
2891           Otherwise, the same C++ instance can be wrapped twice and will be
2892 deleted
2893           twice.
2895 2003-11-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2897         * When marshalling a const ref type to a ruby VALUE, it is now copied
2898         * Applied some fixes for construct_copy() from the PerlQt version of
2899           handlers.cpp
2900         * Fixed some minor bugs in the progress.rb Qt example
2902 2003-11-03  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2904         * Added method selector caching for class methods and constructors,
2905           although performance still 'sedate' compared with C++ or Perl.
2907 2003-10-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2909         * The smokeruby_mark() f'n now marks the QListViewItems in a
2910 QListView
2911         * Fixed a QLayoutItem crash in smokeruby_free()
2913 2003-10-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2915         * The smokeruby_mark() f'n was completely wrong, as it is only called
2916 if 
2917           the current object is already marked. So marking the current object
2918           doesn't make a lot of sense. Instead, if the instance is a kind of
2919           QObject then its childeren are marked.
2920         * The smokeruby_delete() object doesn't delete instances which have
2921           parents of one sort or another.
2922         * Made some fixes to the tutorial examples
2923         * Removed equality '==' operator overloading as it only expects a
2924 single
2925           arg in ruby, and not two.
2927 2003-10-22  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2929         * Changed some error messages in do_method_missing() to be 'debug
2930 only' for now.
2932 2003-10-22  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2934         * Got the checklists.rb example working after bug report from Mikhail
2935 Yakshin
2936           - Corrected some coding errors in the example itself.
2937           - The arg matching code in method_missing() has been improved and
2938 simplified.
2939           - In the overloaded arg type resolution matching, an enum is
2940 type 'long'
2941           - A class which matches exactly is a better match than a subclass.
2942             Multiple matches are allowed as long as there is a 'best match'.
2943           - Operator overloading now looks for methods of the
2944 form 'operator+=',
2945             'operator-=' etc in the Smoke runtime.
2947 2003-10-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2949         * Fixed serious random crash problem
2950           - qt_invoke() and qt_emit() were not calling super if a ruby signal
2952             slot hadn't been found, which stopped C++ signals from working. 
2953           - This prevented destroy() signals from invoking event filter list
2954 clean
2955             up when a QObject was deleted, leaving deleted instances in the
2956 list.
2957           - 'QUObject*' args are now marshalled as a ruby list with a single
2958             entry of a VALUE wrapping the pointer.
2959         * The ruby ALLOCA_N macro is no longer used as it is based on
2960 alloca(),
2961           which doesn't seem a good idea. malloc(), calloc() and free() are
2962 used
2963           instead
2965 2003-10-11  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2967         * Added khtml:: namespace, although it isn't in the SmokeKDE runtime
2969         * Improved method_missing error messages if a method can't be
2970 resolved
2972 2003-10-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2974         * Added KIO:: and KParts:: namespaces for the new classes in
2975 libsmokekde
2977 2003-10-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2979         * Korundum KDE ruby extension 
2980           - made various changes so it can be linked against the QtRuby code
2982 2003-09-18  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2984         * Removed leading 'K' from class names of when adding to KDE::
2985 namespace.
2986           As per Germain Garand's suggestion on the kde-bindings list:
2988           ..actually, I used the same scheme as for Qt when possible, that
2990                 $class =~ s/^Q/Qt::/ or
2991                 $class =~ s/^K/KDE::/ or
2992                 $class = "KDE::" . $class
2993                 unless $class eq "Qt";
2995 2003-09-18  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
2997         * Added support for KDE classes under module KDE:: for use with
2998           the new libsmokekde.so. You can now write KDE programs in Ruby,
2999           here is Hello World:
3001             about = KDE::KAboutData.new("one", "two", "three")
3002             KDE::KCmdLineArgs.init(1, ["four"], about)
3003             a = KDE::KApplication.new()
3004             hello = KDE::KPushButton.new(nil) { setText "Hello World" }
3005             a.setMainWidget(hello)
3006             hello.show()
3007             a.exec()
3009 2003-09-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3011         * The rbuic -embed option finally works. Fixed QByteArray
3012 marshalling.
3014 2003-09-13  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3016         * Improved the rbuic -embed option, and added some fixes
3018 2003-09-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3020         * More passing blocks to constructors fun! You can now also pass 
3021           an arg to the block, and it will be run in the context of the arg:
3022                 
3023                 w = MyWidget.new { |theWidget| theWidget.setCaption "foobar" }
3025         I got this idea from the FXRuby bindings, from the ChangeLog:
3027         "This approach has the advantage that the initialization code now has
3028         access to the outer scope, as blocks normally would. Thanks to
3029         Rich Kilmer for this suggestion."
3031         If you don't pass an arg to the block, the block is run in the
3032 context 
3033           of the new instance as before.
3035         * Debugging left in handlers.cpp (must stop doing this)
3037 2003-09-12  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3039         * Marshallers now return Qnil, rather than Qundef (for internal use
3040 only)
3042 2003-09-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3044         * Improved garbage collection with various 'ad hoc' rules from the
3045           QtJava bindings about when it's ok/not ok to destruct an instance.
3046           Not always just a 'parent() != 0' check in Qt.
3048 2003-09-10  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3050         * Added QByteArray <-> Ruby string marshaller
3052 2003-09-09  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3054         * Blocks can now be passed to constructors, like this:
3055             w = MyWidget.new { setCaption("foobar") }
3057 2003-09-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3059         * Added method selector caching, scribbling may be slightly faster..
3061 2003-09-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3063         * GC getting closer to working. Debugging code improved.
3065 2003-09-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3067         * From below 'watch out for extra crashes!' - indeed! Have now
3068 disabled
3069           smokeruby_free() and smokeruby_mark() until garbage collection
3070 works.
3072 2003-09-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3074         * The pointer_map is now a QPtrDict rather than a ruby Hash, and
3075           the entries are weak references. An implementation was tried 
3076           using the ruby WeakRef class, but it didn't work because
3077 rb_gc_mark()
3078           didn't prevent them being garbage collected.
3079         * smokeruby_free() and smokeruby_mark() have been implemented
3080         * The C++ instance for a ruby object is deleted in smokeruby_free(),
3081           so watch out for extra crashes!
3082         * Improved README with more details about QtRuby
3084 2003-09-07  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3086         * Improved error message handling, changed rb_error() calls to
3087 rb_raise()
3088         * Decided changing method calls like foobar? to isFoobar() not a good
3089 idea,
3090           as the Qt property could just as also be hasFoobar() or foobar() 
3092 2003-09-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3094         * Set methods such as autoMask= are converted to setAutoMask()
3095         * Get methods such as modal? are converted to isModal()
3097 2003-08-31  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3099         * rbuic code generation brought up to date wrt Qt 3.2 uic
3100           Main change is that a 'languageChanged()' method is generated
3102 2003-08-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3104         * rbuic() code generation fixes
3106 2003-08-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3108         * Added 'Run Selection' menu option to the QtRuby shell
3110 2003-08-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3112         * Operator methods are now called 'operator..' in QGlobalSpace and
3113 not renamed
3114         * Added unary minus, and a test in opoverloading.rb
3116 2003-08-29  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3118         * Updated TODO list, improved rbuic code generation for images
3120 2003-08-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3122         * Improved operator overloading to work with operators not in
3123 QGlobalSpace
3125 2003-08-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3127         * Changed the operator overloading implementation to be more like
3128 PerlQt
3130 2003-08-27  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3132         * Translated the rbqtsh filePrint() method from perl
3134 2003-08-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3136         * Added 'changed' attribute to the MetaInfo class, so that the C++
3137 metaObject
3138           is reconstructed if the slots or signals are changed.
3139         * Changed window title on rbqtsh to 'QtRuby'. The example slot now
3140 works
3141           correctly. Only just tried this utility - Wow Alex!!
3143 2003-08-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3145         * findMethod() now looks in the QGlobalSpace pseudo class as well as
3146 the normal target class.
3147         * The bitBlt() code in the scribble example works correctly
3149 2003-08-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3151         * Removed ugly _current_object global variable. 
3152           The current target object is now passed to the MethodCall
3153 constructor.
3155 2003-08-25  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3157         * Removed obsolete rb_enable_super() calls
3158         * Removed test for _current_object in class_method_missing()
3159         * Fixed missing index in signalInfo() method
3160         * Added Qt scribble example - TODO add Qt::PaintDevice.bitBlt() calls
3161 to SMOKE runtime
3163 2003-08-23  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3165         * Added rbuic tool for ruby Qt Designer support
3167 2003-08-12  Alexander Kellett   <lypanov@kde.org>
3169         * Add debug level setting via Qt::debug_level
3170         * When calling .new on a Qt object with a incorrect prototype
3171           the list of appropriate constructors is printed
3172         * Fix a number of cases in which imperfect code would cause a crash
3174 2003-08-11  Alex Zepeda   <zipzippy@sonic.net>
3176         * Various fixes to get QStringList marshalling working
3177         * Treat Ruby strings as UTF-8 strings in order to fix the QFont
3178 examples
3180 2003-08-09  Alexander Kellett   <lypanov@kde.org>
3182         * Added support for operator overloading
3184 2003-08-07  Alexander Kellett   <lypanov@kde.org>
3186         * Added rbqtapi and rbqt tools (port of the PerlQt tools of the same
3187 name)
3189 2003-08-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3191         * Added some TODO list entries, added Alex to the AUTHORS list
3193 2003-08-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3195         * Fixed 'int&' marshalling so script name appears in window title
3197 2003-08-12  Alexander Kellett   <lypanov@kde.org>
3199         * Add several new marshalling types - QCanvasItemList for example,
3200           unfortuantely due to several improvements in Qt 3.2 these 
3201           improvements will not be seen when compiling against Qt 3.1.2
3203 2003-08-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3205         * Moved SLOT(), SIGNAL() and emit() to global scope
3207 2003-08-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3209         * Removed redundant 'rb_eval_string("include Qt")' call from
3210 extension initialization.
3212 2003-08-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3214         * Qt::Application constructor safer, but program name still not
3215 appearing in the window title
3217 2003-08-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3219         * Fixed bug in resolution of overloaded Qt::Popup.insertItem()
3220 methods
3222 2003-08-05  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3224         * Use new const_missing from ruby 1.8.x to allow for constant access
3225 from base class, for example "Qt::RichText"
3226         * QString::null now maps onto Qnil, rather than a zero length ruby
3227 string
3229 2003-08-04  Alexander Kellett   <lypanov@kde.org>
3231         * Allow for accumulative slots/signals declarations in a class
3232         * Minor build fixes
3234 2003-08-02  Alexander Kellett   <lypanov@kde.org>
3236         * Fix several deprecation warnings when running under 1.8.x
3237         * Several more build fixes
3239 2003-08-01  Alexander Kellett   <lypanov@kde.org>
3241         * Slightly improve ease of debugging of qtruby programs 
3242           which subclass Qt base classes by print out some useful
3243           debugging informationn when/if method_missing ever 
3244           fails to find a matching function in the baseclass.
3246 2003-08-01  Alex Zepeda   <zipzippy@sonic.net>
3248         * Remove need to manually run extconf.rb by some automation via a
3249 configure.in.in
3250         * Various other build fixes
3252 2003-07-31  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3254         * Fixed bug in marshalling QString::null to a ruby VALUE
3256 2003-07-31  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3258         * Changed require in Qt.cpp to 'Qt/Qt.rb' instead of 'lib/Qt/Qt.rb'
3260 2003-07-31  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3262         * Fixed problem with non-working installed version, lib/Qt.rb moved
3263 to lib/Qt/Qt.rb
3265 2003-07-30  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>
3267         * QtRuby - a Ruby SMOKE adaptor for Qt, initial checkin