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
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
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
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
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
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
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
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
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
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
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
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),
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
284 2007-11-21 Â Sebastian Sauer <mail@dipe.org>
286 * Fixed crash on shutdown of Ruby cause of a partly destroyed
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
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
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
322 It broke the code to invoke remote QtDBus methods because the
323 remote methods become slots in the QMetaObject of the
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
361 instance to a qtruby instance
362 * Fixed bug in overloaded method resolution where a quint32 was being
364 equal priority to a qint32 type. Thanks to joseph/vista on #qtruby
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
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
391 class. Fixes problems reported by Caleb Tennis amoungst several
393 * When a signal is defined, and Ruby method is created to call it.
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
413 * Added two models useful for Rails ActiveRecord or ActiveResource
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
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
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
438 2007-03-13 Richard Dale <rdale@foton.es>
440 * When a ruby string was converted to a 'char *' arg, a copy was
442 and then never freed. This behaviour was added to fix a problem
444 small number of methods that 'took ownership' of the string and
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
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
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>
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
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
483 2007-02-17 Richard Dale <rdale@foton.es>
485 * If a new Ruby class is created for a custom C++ QObject derived
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
495 enum Priority { High, Low, VeryHigh, VeryLow };
499 irb(main):001:0> app = Qt::Application.new(ARGV)
500 => #<Qt::Application:0xb6aaaf58 objectName="irb">
501 irb(main):002:0> require 'testqobject'
503 irb(main):003:0> test = app.findChild(Qt::Object, "QtRuby
505 => #<TestObject:0xb6aa5184 objectName="QtRuby TestObject">
506 irb(main):004:0> TestObject::High
508 irb(main):005:0> TestObject::Low
510 irb(main):006:0> TestObject::VeryHigh
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
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
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
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
549 * A Qt::Variant can now be obtained when contained in a
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
560 problem. The stack of ruby VALUES for the arguments to the callback
562 now allocated via ALLOCA_N, rather than calloc which cures the
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
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
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
593 from another. This is because the C++ QImage::operator=(const
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
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
610 a Qt::Variant then one is created
611 * Qt::Variants can now be constructed with Hash's of
613 pairs, and from Arrays of Qt::Variants
614 * Custom types know to the QMetaType system, such as some QtDBus
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
620 work on 64 bit machines
621 * When marshalling QList<QVariant> types from Ruby to C++, if any
623 aren't Ruby Qt::Variants, they are automatically converted. Hence,
627 v = Qt::Variant.new([1, 2, 3])
629 The Qt::Variant v will contain a list of 3 QVariants with
632 * Add an option extra argument to Qt::Variant.fromValue() and
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
646 * When a Qt::DBusInterface.call() method was invoked without using
647 the call() method, but by calling the method directly, and the
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.
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
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
701 2006-10-19 Richard Dale <rdale@foton.es>
703 * A Qt::DBusArgument can be obtained via a call to qVariantValue(),
707 qVariantValue(Qt::DBusArgument, variant)
709 2006-10-16 Richard Dale <rdale@foton.es>
711 * Fixed Qt::DBusInterface.call() so it automatically wraps the
713 as Qt::Variants. Thanks to prullmann for testing and finding
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
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
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(),
761 * Added a Qt::DBusMessage.value() method to return the Ruby value of
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
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
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",
791 result = proxy.ListNames()
794 ["org.freedesktop.DBus", ":1.0", "com.trolltech.Assistant", ":1.15"]
796 * Fixed bugs in Qt::Variant where some constants were missing, and
800 2006-10-01 Richard Dale <rdale@foton.es>
802 * The Qt::DBusMessage.type method now works. Fixes problem reported
806 2006-09-28 Richard Dale <rdale@foton.es>
808 * Redone the rbuic tool based on the Qt 4.2 code with the
810 code generation in a 'ruby' subdirectory.
812 * The rbuic tool has been renamed 'rbuic4' so it can be used at the
816 * Changed 'setShortcut' method calls so a string can be passed to
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
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
842 were only being deleting after marshalling if they weren't const
845 2006-09-15 Richard Dale <rdale@foton.es>
847 * Fixed bug reported by Henri Sundelin where Qwt classes in .ui files
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
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
861 needn't be a Qt::Object. It is similar to the signal_connect()
863 ruby-gnome. This was suggested by rickdangerous on the #qtruby irc
866 2006-09-13 Richard Dale <rdale@foton.es>
868 * Blocks can now be used as slots in Qt::Object.connect() calls.
870 versions, a singleton method and an instance method.
872 * Here is an example of the class method connect() call with a block
875 app = Qt::Application.new(ARGV)
876 quit = Qt::PushButton.new('Quit')
877 Qt::Object.connect(quit, SIGNAL('clicked()'), app) { puts 'quit
880 The block is executed in the context of the target instance, 'app'
884 * And the instance method form:
886 class MyButton < Qt::Button
889 connect(self, SIGNAL('clicked()')) { puts 'button clicked' }
893 The block is executed in the context of self - the instance making
897 * The Rails version of the Ruby 1.9 method Object#instance_exec was
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
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
920 being converted into the Qt::TextEdit::AutoNone qtruby form.
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
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
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()'
956 using QStrings to change the text. However, it then converted the
958 to a QByteArray via toLatin() and referenced the contents of the
959 QByteArray via a 'const char *' cast when the QByteArray had gone
961 scope and had been deleted. Thanks to Carlto Wang again for
965 * Some of the code for debug logging of garbage collection wrote
969 2006-07-17 Richard Dale <rdale@foton.es>
971 * Some QtRuby QHash based caches were defined with QStrings, and when
973 was accessed the QString was converted to a QByteArray via toLatin
975 to a 'char *'. However, the 'char *' only lasted as long as the
977 and this caused memory corruption if the 'char *' was still in use
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
987 improve things. Thanks to Charlton Wang for tracking down where the
991 2006-07-16 Richard Dale <rdale@foton.es>
993 * Added a QVariantList marshaller
994 * The correct QGraphicsScene event class instance is instantianted
997 * The Qt::GraphicsItems in a Qt::GraphicsScene are marked so they
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
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
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
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
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
1029 class to load .ui files from a .qrc file compiled with the rbrcc
1031 * Added some extra marshallers for QList<QWidget*> and QVector<qreal>
1034 2006-06-13 Richard Dale <rdale@foton.es>
1036 * Slot and signals can now have return types and return values.
1039 class Foo < Qt::PushButton
1040 slots 'int greeting(QString)'
1041 signals 'int doit(QString)'
1045 connect(self, SIGNAL('doit(QString)'), self,
1046 SLOT('greeting(QString)'))
1049 * Added some missing marshaller types for QTreeWidgetItem and
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
1064 the slots in the class are marked as Q_SCRIPTABLE in the
1068 class LCDRange < Qt::Widget
1069 q_classinfo('D-Bus Interface', 'MyInterface')
1070 signals 'valueChanged(int)'
1071 slots 'setValue(int)'
1074 * The metaObject methods for slots and signals are no longer added
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
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
1088 * Bring the itemviews/pixelator example code in line with the current
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
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
1109 block += " " + header + "\n"
1111 So the operator '+' for Qt::ByteArray is special cased to return
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
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
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
1143 corresponding to the current value of a Qt::Variant
1144 * Added a Qt::MetaObject.propertyNames method to return a list of
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::
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
1169 2006-04-20 Richard Dale <rdale@foton.es>
1171 * Added marshalling for WId and Q_PID types which will work
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
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
1198 2006-04-12 Richard Dale <rdale@foton.es>
1200 * Change source files to headers to make it easier to build the
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
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
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
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
1239 * The various names used in signal/slot connect statements should
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
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>
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
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
1297 distinguish between Ruby Arrays containing different sort of
1299 Unfortunately Qt::Painter.drawLines() and Qt::Painter.drawRects()
1301 be passed a Ruby Array as an argument containing either Qt::Points
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>
1309 * The models used for QTableView and QListView are the private
1311 QTableModel and QListModel. They are accessed as
1313 via the apis for the view classes. Unfortunately,
1315 has pure virtual functions which don't appear in the corresponding
1316 Ruby class Qt::AbstractItemModel. So Ruby implementations of
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,
1325 the Qt classes with open methods now have explicit open()
1327 calls. So it isn't possible that Kernel.open() will be
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
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
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.
1369 2006-02-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
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,
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
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
1403 QtRuby classes, and so it was aliased to _display(). However, this
1405 problems with the ruby RMagick extension. The display methods are
1407 special cased in Qt::LCDNumber. Fixes problem reported by David
1409 * The slots and signals methods are now module methods of Qt::Base,
1410 rather than defined as ordinary methods in class Module, reducing
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
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
1429 the C++ ptr and corresponding ruby instance was not being removed,
1431 this caused a crash. Fixes problem reported by Christopher
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
1450 * The overloaded method resolution for enum arg types has been
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,
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
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
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
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.
1543 just a start, but this *should* reduce redundant code by
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
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()
1556 So don't throw a ruby exception, and assume it's for a slot with no
1559 * Added the icons, imageviewer, lineedits, screenshot and scribble
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
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
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
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
1589 2005-08-19 Caleb Tennis <caleb@aei-tech.com>
1590 * For marshalling ItemLists, prefer using ->at(index) over an
1593 * Add findChild and findChildren methods which attempt to mimic their
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
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
1611 * Qt4ify some of the code in handlers.cpp
1613 * Modified new_qobject to only add method definitions if the
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
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
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
1653 * Qt4 style QMetaObjects are created on the fly. Slots and signals
1655 using QObject::qt_metacall() and QMetaObject::activate()
1656 * The Cannon games tutorials t1 to t14 have been ported to Qt4
1658 * More work needed on the garbage collection mark() function. For
1660 it isn't possible to iterate through the items in a QListView in
1664 2005-08-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1666 * Caleb Tennis wrote:
1667 One nice feature would be to allow Qt::Object::inherits() to use
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")
1674 irb(main):003:0> w.inherits("Qt::Object")
1676 irb(main):004:0> w.inherits("QWidget")
1678 irb(main):005:0> w.inherits("QObject")
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
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
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
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
1711 and associated classes. client.rb illustrates current bugs in
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
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
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
1732 shows the type of the underlying C++ enum:
1738 #<Qt::Enum:0x1825db68 @type=Qt::AlignmentFlags, @value=16>
1740 2005-06-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
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
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
1768 '--enable-qscintilla=yes' configure option. The QScintilla classes
1770 Qext:: namespace. Thanks to Blackshack for the idea and configure
1772 * The KDE namespace modules are only created if the Korundum
1774 Otherwise the Object namespace was being polluted with unused
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
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
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
1833 * Qt::version and Qt::ruby_version had wrongly been moved to the
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
1844 class Module was causing all the Qt methods to be added to Module.
1846 serious bug. Various methods in qtruby.rb are now module methods in
1848 module. Big thanks to Eric Veensta and Samir Patel for pointing out
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
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
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,
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
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
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
1922 the Smoke runtime. Modules methods are now trapped with
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
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
1946 2004-12-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1948 * Fixed an interesting bug reported by Stephan Oehlert. Kernel has a
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
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
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
1969 x, y, width, height (the last four for for Qt::Widgets only). This
1971 the details of Qt::Objects that have more than just a handful of
1973 The full details can still be fetched with a pretty_print() call
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
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
1987 look strange when debugging code with the KDevelop debugger. The
1989 catch and throw instead, as they leave the stack in a more normal
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
1996 the 'require time' statement, reported by David Crosby
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
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
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
2022 2004-12-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2024 * Added an attribute of 'children' to the Qt::Object inspect method,
2026 of the Qt::Object's children
2027 * The QObjects in a QObjectList were not being created with the exact
2029 if they hadn't been allocated from within the ruby code, and just
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
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
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
2056 methods. Property types such as Qt::Point, Qt::Font and Qt::Rect
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
2064 Qt::Color, Qt::Font, Qt::Point, Qt::Rect, Qt::Size, Qt::Date,
2065 Qt::DateTime and Qt::Time
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
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
2090 as an error. For instance, this call to i18n():
2093 super(TreeList, i18n("My App Preferences"),
2094 Help|Default|Ok|Apply|Cancel, Ok)
2098 2004-10-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2100 * Until super has been called in an initialize() method, Qt methods
2102 it. An exception is now thrown 'Instance not initialized', instead
2103 of it causing a seg fault.
2106 class MyWidget < Qt::ComboBox
2108 # Must call super first
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
2126 mark all the instances below it in the QObject tree, as not needing
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
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
2142 prevent them being garbage collected
2143 * The top level widgets are no longer disposed() on Qt::Application
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
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
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
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
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
2195 class ContainerGrid < Qt::Widget
2197 # next line should return a Qt::Size, not
2203 Now gives the following error:
2205 qsize.rb:12:in `method_missing': Invalid type,
2206 expecting QSize (ArgumentError)
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
2215 Qt::Object for not being garbage collected. It now marks all the
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
2223 shows how you can combine ruby code generated from .ui files with
2225 tool, with your own code.
2227 * The .ui files and images are identical to the original C++
2230 * It features a simple Makefile to run rbuic when you change the .ui
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
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
2257 2004-10-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2259 * Given a C++ instance and an approximate classname, the QtRuby
2261 various Qt rtti mechanisms such as QObject::className() to improve
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
2268 rather than the ruby object's classname, and so QtRuby wrongly
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
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
2285 instances are garbage collected. The problem is that this is done
2287 order, and Qt::Application was occasionally crashing in its
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
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
2306 method, it caused a crash has opened a 'can of worms'. This was
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
2312 not just those that after lookup in Smoke map onto a single method,
2314 method resolution via the arg types has had to be greatly improved.
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
2324 instead of throwing a ruby exception when a programming error is
2326 If there is only one method found in the Smoke runtime, it assumes
2328 be the right one and just takes that.
2332 lay = Qt::HBoxLayout.new(self)
2333 ed = Qt::LineEdit.new('blah',self)
2334 # The next line should be: lay.addWidget(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'
2345 creating an instance. The QtRuby runtime wasn't correctly trapping
2347 call an instance method on a class object, and was seg faulting
2349 throwing an exception.
2353 # The next line should be: lay =
2354 Qt::HBoxLayout.new(self)
2355 lay = Qt::HBoxLayout
2356 ed = Qt::LineEdit.new('blah',self)
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
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
2401 a = Qt::Application.new(ARGV)
2407 QUI::WidgetFactory.loadImages( ARGV[ 0 ] )
2408 w = QUI::WidgetFactory.create( ARGV[ 1 ] )
2413 a.connect( a, SIGNAL('lastWindowClosed()'), a,
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
2435 * Added a qmake project file for building the rbuic tool on Mac OS X,
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
2448 preferred. Any underscores in method names are removed, and the
2450 character is capitalised. For example, either of these two forms
2452 to call the same method:
2454 create_standard_status_bar_action()
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
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
2494 kept from the C++ instance to the corresponding ruby value. If the
2496 had virtual method callbacks, this meant that the ruby instance
2498 be found, and the callback couldn't be made.
2500 * Hence, the Qt::ToolTip callback in examples/qt-examples/tooltip
2502 work, as that class doesn't have a virtual destructor.
2504 * Added an 'isEnum()' function to use when matching args in
2508 * QCString arg types are chosen in preference to QByteArray ones,
2510 against ruby strings, when resolving an overloaded method call.
2512 * Qt::Enums and Qt::Integers can be marshalled to uints, longs and
2516 * Added a '==' operator to Qt::Enums so they can be compared with
2519 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2521 * Qt::Integer arithmetic and bit operations return Qt::Integers,
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
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
2535 rather than Integers.
2537 * The following code didn't work:
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
2553 were added to Qt::Enum's superclass, Qt::Integer.
2555 * This was causing this line from examples/uimodules/uidialogs.rb to
2558 dlg = KDE::DialogBase.new(parent, "sample_dialog", false,
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
2574 comment about the previous approach, now I agree this is the best
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)
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
2602 name of the missing item.
2603 * For example, this incorrect line:
2605 color_group.setColor( ColorGroup::MyMissingConst, blue )
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
2620 Integer, and the type name of the enum was lost. A Qt::Enum is a
2622 of Integer with an extra type name.
2623 * This fixes a problem with overloaded method resolution where two
2625 only be an enum type such as this:
2627 # KPasswordEdit(EchoMode echoMode, QWidget *parent, const char
2629 # KPasswordEdit(EchoModes echoMode, QWidget *parent, const char
2632 pw2 = KDE::PasswordEdit.new(KDE::PasswordEdit::ThreeStars,
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
2639 is copied into the ruby value. But it wasn't being correctly
2641 correct string format according to $KCODE.
2642 * QString to ruby string conversions in QStringLists were not
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
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
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
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
2675 Qt::Boolean class can be used like this:
2677 # QFont getFont(bool * ok, const QFont&initial, QWidget* parent =
2680 ok = Qt::Boolean.new
2681 font = Qt::FontDialog.getFont(ok, Qt::Font.new("Helvetica
2682 [Cronyx]", 10), self)
2684 # font is set to the font the user selected
2686 # the user canceled the dialog
2689 Use 'nil?' to test the value returned in the Boolean
2690 * Signal and slot type signatures are 'normalized' and any unwanted
2693 * Fixed problem with QByteArray arg type matching in overloaded
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
2701 method. The Qt::Integer class provides a mutable numeric type which
2703 when passed as an argument. For example, this C++
2704 method 'findByFileContent()':
2706 # static Ptr findByFileContent( const QString &fileName, int
2709 acc = Qt::Integer.new(0)
2710 fc = KDE::MimeType.findByFileContent("mimetype.rb", acc)
2712 It supports the arithmetic operators, and so expressions such
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
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
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
2747 item0.takeItem(item1)
2748 item0.insertItem(item1)
2752 puts "item2 is disposed"
2755 - Fixes problem reported by Hans Fugel
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
2769 This allows copy constructors which are only used internally by the
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
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
2783 2004-05-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2785 * Added a '-kde' option to the rbuic tool to generate
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
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
2821 to a method, the corresponding ruby value is now updated after the
2823 * Some f'ns are no longer static, so that the korundum extension can
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
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
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
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
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
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
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
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
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
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
2932 2003-10-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2934 * Got the checklists.rb example working after bug report from Mikhail
2936 - Corrected some coding errors in the example itself.
2937 - The arg matching code in method_missing() has been improved and
2939 - In the overloaded arg type resolution matching, an enum is
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
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
2955 up when a QObject was deleted, leaving deleted instances in the
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
2961 which doesn't seem a good idea. malloc(), calloc() and free() are
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
2972 2003-10-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2974 * Added KIO:: and KParts:: namespaces for the new classes in
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::
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)
3009 2003-09-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3011 * The rbuic -embed option finally works. Fixed QByteArray
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:
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
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
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
3069 smokeruby_free() and smokeruby_mark() until garbage collection
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
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
3088 * Decided changing method calls like foobar? to isFoobar() not a good
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
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
3125 2003-08-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3127 * Changed the operator overloading implementation to be more like
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++
3138 is reconstructed if the slots or signals are changed.
3139 * Changed window title on rbqtsh to 'QtRuby'. The example slot now
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
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
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
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
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()
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
3229 2003-08-04 Alexander Kellett <lypanov@kde.org>
3231 * Allow for accumulative slots/signals declarations in a class
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
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
3265 2003-07-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3267 * QtRuby - a Ruby SMOKE adaptor for Qt, initial checkin