1 2009-03-16 Richard Dale <richard.j.dale@gmail.com>
2 * Make the dispose() method always return nil. Otherwise, when an instance
3 is deleted from within irb, it makes irb crash when it tries to run
4 run inspect() on the newly deleted value returned by dispose(). Thanks
5 to Stefano Crocco for finding the problem.
6 * A problem has been found with QtRuby when it is run with Ruby 1.9.1
7 and GC.stess is true. Thanks to Davor Ocelic for reporting it.
8 In the smokeruby_mark() function called during garbage collection,
9 any virtual methods which are called on the instances being checked
10 could have overriden by Ruby methods. So the Wt::Ruby runtime uses
11 'respond_to()' to find out whether they have been overriden.
12 However, this involves calling 'rb_intern()' on the method name,
13 which means memory could be allocated, giving an error when running under
14 GC.stress mode. So workround it by pre-allocating any strings with
15 rb_intern() for all the C++ methods used in smokeruby_mark()
17 2009-03-13 Richard Dale <richard.j.dale@gmail.com>
18 * Improved the rbqtapi '-s' option
20 2009-03-11 Richard Dale <richard.j.dale@gmail.com>
21 * Rewritten the rbqtapi command line tool to simplify the code
22 - Added a '-r' or '--require' option for specifying QtRuby extension.
23 This means that there is no longer a need for different sym links to
24 the script for each QtRuby extension.
25 - One or more class names can be specifed. If no class name is given
26 it means that all of the classes in the loaded QtRuby extensions
28 - A '-s' option attempts to show matching methods with Ruby types
29 * Removed the rbqtsh program as it was never really very useful
30 * The 'Type' enum was not working with the Qt::Graphics* classes, and so
31 special case them as Ruby constants
33 2009-03-10 Richard Dale <richard.j.dale@gmail.com>
34 * Change the license text in the QtRuby headers to LGPL
36 2009-03-02 Richard Dale <richard.j.dale@gmail.com>
37 * Add method_missing and const_missing handlers for top level modules such
40 2009-02-25 Richard Dale <richard.j.dale@gmail.com>
41 * Restored the note in the COPYING file about having permission from
42 Trolltech, now Qt Software, to use the 'Qt' in QtRuby.
44 2009-02-07 Richard Dale <richard.j.dale@gmail.com>
45 * Add a Qt::dynamic_cast method as a synonym with a less clunky name for
46 Qt::Internal.cast_object_to
48 2009-02-04 Richard Dale <richard.j.dale@gmail.com>
49 * In Ruby 1.9.1 the arity of a block with no arguments is 0, whereas in
50 Ruby 1.8.x it is -1. This meant that blocks passed to QtRuby
51 constructors with no args weren't working with Ruby 1.9.1
53 2009-02-02 Richard Dale <richard.j.dale@gmail.com>
54 * Set up a RUBY_VERSION macro to use to test for whether QtRuby is being
55 built for Ruby 1.9 or not. Add patches from Mr Napalm for building with
56 Ruby 1.9, for the new 'per string' encoding. Also add conditional code
57 for whether to use the new rb_frame_callee() function or the old
58 rb_frame_last_func() one.
60 2009-02-01 Richard Dale <richard.j.dale@gmail.com>
61 * The construct_copy() function was using the full classname of the class
62 to construct which meant that it didn't work with classnames containing
63 '::' scope operators. So strip out the scope part of the classname to
64 create the consructor name.
65 * Make Qt::Internal#try_initialize catch a ':newqt' symbol rather than a
68 2009-01-14 Richard Dale <richard.j.dale@gmail.com>
69 * For the enum values whose names clashed with Ruby classes, make them
70 Qt::Enums instead of just Fixnums
72 2009-01-13 Richard Dale <richard.j.dale@gmail.com>
73 * Upped the QtRuby version number to 2.0.0
74 * Special cased some constants whose names clashed with Ruby classes.
76 2008-12-19 Richard Dale <richard.j.dale@gmail.com>
77 * When the construct_copy() function was used to copy and instance, it
78 wasn't initializing the binding for the new instance. This caused a
79 crash when the destructor for the instance tried to make a callback with
80 the null binding. Fixes a crash in a Qt::Image destructor reported by David
83 2008-12-18 Richard Dale <richard.j.dale@gmail.com>
84 * Added another patch from Davor Ocelic for Ruby 1.9 compatible RSTRING
87 2008-12-12 Richard Dale <richard.j.dale@gmail.com>
88 * When resolving overloaded methods with 'uchar*' and 'const uchar*' arg
89 types prefer the non-const version of the arg. Thanks to Davor Ocelic
90 for explaining why this was a good idea in the case of the Qt::Image
92 * Revert the recent change for marshalling 'unsigned char*' types which
93 expected them to be null terminated. After more thought it is pretty
94 likely they won't be null terminated because if they were they would
95 have been defined as just 'char *' instead. It better to have a clear
96 message saying they aren't supported and need special casing, rather
97 than needing to track down possible random buggy effects.
98 * Added Davor Ocelic's patch for Ruby 1.9 compatible RSTRING usage and
99 improved instructions for building QtRuby without KDE.
100 * When an overriden virtual method with a non-const QVector/QList argument
101 was called, such as Generator.openDocument() in Okular, the Ruby values
102 in the Ruby Array were not being converted back to the values in the
103 C++ list after the method call. Thanks to David Palacio for the bug
106 2008-12-11 Richard Dale <richard.j.dale@gmail.com>
107 * Make some changes from the patch at
108 http://napalm.sf.cz/qt4-qtruby-ruby1.9.patch to make it easier to port
109 qtruby to Ruby 1.9. Thanks to Davor Ocelic and Mr Napalm.
111 2008-12-10 Richard Dale <richard.j.dale@gmail.com>
112 * Special case the Qt::Image.bits() method. Use the const variant so that
113 Qt doesn't make a deep copy. Is that what Davor Ocelic and David Palacio
115 * For other uses of 'uchar *' return types add a marshaller, hoping that
116 will be null terminated.
117 * Add a Qt::Image.scanLine() method
119 2008-12-09 Richard Dale <richard.j.dale@gmail.com>
120 * Added an ancestors() method to Qt::Base that returns an Array of the
121 super classes of a class in the Smoke library. For instance:
123 irb(main):001:0> Qt::Widget.ancestors
124 => [Qt::Widget, Qt::Object, Qt::PaintDevice, Object, Kernel]
126 * Fixed regression caused by adding to Qt::Object.connect() the feature
127 to connect an arbitrary ruby method to a signal. It was causing the
128 standard three argument form of connect() to not work.
129 * Renamed the QHash of smoke index against class name as 'IdToClassNameMap'
130 instead of 'classname'.
131 * The child items of a QGraphicsItem are marked as not needing garbage
132 collection of they have corresponding ruby instances.
134 2008-12-04 Richard Dale <richard.j.dale@gmail.com>
136 * From Bartosz Wadolowski (thanks for the patch):
138 unsigned char* marshalling in qtruby didn't work. The patch works as char*
139 case does - I simply copied code and added one casting.
140 It also fixes method matching with string argument in qtruby4.rb. In
141 cases when method could take constant or regular (unsigned)char
142 pointer Qt::Internal.checkarg was returning the same value. Now in
143 case of constant arguments it returns lower value. I also made this
144 part of code a little bit more readable.
145 Those changes made possible to use those QImage constructors and
146 probably some other methods:
148 QImage ( uchar * data, int width, int height, Format format )
149 QImage ( const uchar * data, int width, int height, Format format )
150 QImage ( uchar * data, int width, int height, int bytesPerLine, Format
152 QImage ( const uchar * data, int width, int height, int bytesPerLine,
156 Some Qt/KDE objects use Ruby String*, passed as (unsigned )char*
157 method argument, as internal buffer/array(call it as you like). In
158 those cases programmer need to make sure that Ruby String object is
159 not being garbage collected or changed(in most cases) for the time its
160 being used by Qt/KDE object. It is also quite possible that Qt/KDE
161 object will change Ruby String (or rather its internal C char array).
163 2008-11-24 Richard Dale <richard.j.dale@gmail.com>
164 * Added a DEF_MAP_MARSHALLER() macro for defining marshallers for
165 QMaps with QString keys and value types as the values
166 * The YAML library was adding a y() method to Kernel, which was messing
167 up the inspect() methods for Qt::Rects and Qt::RectFs. So instead of
168 calling y(), call self.y() instead. Thanks to Stefano Crocco for the
171 2008-11-17 Richard Dale <richard.j.dale@gmail.com>
172 * Comparisons between Qt instances and nil were causing QtRuby to
173 crash. Fixes bug reported by Stefano Crocco.
175 2008-09-22 Richard Dale <richard.j.dale@gmail.com>
177 * Rename get_VALUEtype() as value_to_type_flag()
178 * Change the inspect() method for Qt::Rects and RectFs to use the
179 Qt4 convention of x, y, width, height
180 * module_method_missing() had the Qt:: module hard wired into it, and
181 so constants in other modules wouldn't be found
183 2008-08-22 Richard Dale <richard.j.dale@gmail.com>
185 * Argument types of 'unsigned short' were not being matched in the
186 overloaded method resolution code which was causing a Qt::KeyEvent
187 constructor to fail. Fixes a problem reported by Stefano Crocco.
189 2008-08-18 Richard Dale <richard.j.dale@gmail.com>
191 * The disposed? method was round the wrong way, and true if an instance
192 had not been disposed. Thanks to Stefano Crocco for finding the bug.
194 2008-08-12 Richard Dale <richard.j.dale@gmail.com>
196 * The new qobject_cast() method was wrongly changing the smoke classId of
197 the Ruby source instance. This was messing up method calls such as
198 empty?, and fixes a problem reported by Stefano Crocco (thanks again
199 Stefano for all these reports!).
201 2008-08-11 Richard Dale <richard.j.dale@gmail.com>
203 * Added a qobject_cast() method that uses qt_metacast() to cast one
204 instance of QObject to another. This allow the KTextEditor::
205 interface classes to be used. Fixes a problem reported by Stefano
206 Crocco. Example usage:
208 doc = KTextEditor::EditorChooser.editor('katepart').create_document( nil)
209 annotator = doc.qobject_cast(KTextEditor::AnnotationInterface)
210 * Special case the Qt::SignalMapper#mapping and Qt::SignalMapper#setMapping
211 methods so they work with both Qt::Object and Qt::Widget arguments as it
212 confuses the method overloading resolution code at present.
213 * Add lower case/underscore methods as well as camel case for special cased
216 2008-08-10 Richard Dale <richard.j.dale@gmail.com>
218 * Fix a bug reported by Stefano Crocco where primitives types and QStrings
219 were not working as arguments to slots and signals in smoke libs outside
222 2008-08-07 Richard Dale <richard.j.dale@gmail.com>
224 * Fix the Qt::CoreApplication constructor so it handles the ARGV array
227 2008-07-28 Richard Dale <richard.j.dale@gmail.com>
229 * The code to look up the types of slot arguments was failing for types
230 in the KTextEditor library
232 2008-07-21 Richard Dale <richard.j.dale@gmail.com>
234 * Qt::Variant.fromValue() and Qt::Variant.value() now both work correctly
235 with custom types, after a regression in the change to modular smoke.
236 It should no longer be necessary to use qVariantValue() or
238 * In the smoke library method calls for pure virtual methods were not
239 being generated, only callbacks to override them. However, that
240 meant that interfaces which were based on classes with pure virtual
241 methods, with private implementation classes wouldn't work. This fixes
242 a problem reported by Stefano Crocco where he found the ktexteditor
243 ruby extension didn't work.
245 2008-07-20 Arno Rehn <arno@arnorehn.de>
247 * Put the classes derived from Marshall in the 'QtRuby' namespace.
248 * Set the SmokeBinding for each class individually by calling the
249 method with index 0 on the instance.
251 2008-07-18 Richard Dale <richard.j.dale@gmail.com>
253 * Fixed the Qt::Application constructor so that it can subclassed. Thanks
254 to Stefano Crocco for reporting the bug
256 2008-07-13 Cyrille Berger <cberger@cberger.net>
257 * Reverting kross2smoke to use a pointer, since that what kross use for now.
259 2008-07-13 Richard Dale <richard.j.dale@gmail.com>
261 * Remove the smoke2kross() function as it isn't needed anymore. Change
262 the kross2smoke() function so that it assumes Kross will return a
263 pointer to a pointer, instead of just a pointer to the C++ instance.
265 2008-07-12 Richard Dale <richard.j.dale@gmail.com>
267 * Change the layout of the smokeruby_object struct so that the ptr to
268 the C++ instance is at the start. This should make it easier for
269 QtRuby to interoperate with Kross
270 * The type of a slot arg should always be in the smoke module of the slot
271 being invoked. However, that isn't true for a dataUpdated() slot in a
272 PlasmaScripting::Applet. So make GetMocArguments search through all the
273 loaded smoke modules if the arg type isn't found at first.
274 * In the GC mark function the tests for a QObject type had gone missing, so
277 2008-07-11 Cyrille Berger <cberger@cberger.net>
279 * Make it possible to call set_qtruby_embedded from ruby.
281 2008-07-03 Richard Dale <richard.j.dale@gmail.com>
283 * Fixed bug in the rbuic4 tool where a QPixmap constructor was not being
284 converted to ruby correctly. Thanks to Henrik Tikanvaara for reporting
287 2008-06-30 Richard Dale <richard.j.dale@gmail.com>
289 * When a ruby value was marshalled to C++, and the actual type of
290 the C++ instance was cast to the type of the return value, it
291 was working correctly if the target type for the cast wasn't in
292 the same smoke module as the type of the instance. For instance,
293 an instance of type Plasma::Applet wasn't being correctly cast
294 to a QGraphicsLayoutItem, which caused a crash.
295 * Fixed a similar bug to the above description, but for where the target
296 of a method call was being cast to the correct class. For instance,
297 a call of parentWidget() on a Plasma::Applet() needed the correct cast
298 to a QWidget for it to work. This fixes the strange error messages in
299 Plasma applets like the clock, about zero pixmap sizes and QPainter
302 2008-06-28 Arno Rehn <arno@arnorehn.de>
304 * Special case QDBusVariants in SlotReturnValue and make it behave
305 like the moc. This makes the complexpingpong example work.
306 Maybe more things need to be special cased, like in
307 SigSlotBase::prepareReturnValue().
308 * Add special cases for lists and maps to
309 SigSlotBase::prepareReturnValue().
310 * Add 'QList<QObject*>' to the handlers array.
311 * Small fixes to complexping.rb.
313 2008-06-23 Richard Dale <richard.j.dale@gmail.com>
315 * Change prepareQtReturnType from a standalone function to a method
316 in the SigSlotBase class. It should work with int types, and fix
317 the bug reported by Stefano Crocco.
319 2008-06-22 Richard Dale <richard.j.dale@gmail.com>
321 * Fix bug in resolve_classname_qt() caused by missing break statments
322 * Move list marshaller macro definitions to the top of the
323 marshall_macros.h header, and add a DEF_HASH_MARSHALLER macro
324 * Add a set_qtruby_embedded() function to qtruby for use with plugins
327 2008-06-20 Arno Rehn <arno@arnorehn.de>
329 * Fix bug reported by Stefano Crocco. qt_metacall tried to write
330 data via an uninitialized pointer.
332 2008-06-20 Richard Dale <richard.j.dale@gmail.com>
334 * Partly fix bug reported by Stefan Crocco - this explains why a slot
335 return value of type QPoint was nil. However, it's value is wrong,
336 and the problem with a QString return value crashing is still not
339 2008-06-13 Richard Dale <richard.j.dale@gmail.com>
341 * Remove unnecessary special casing for Qt::TextEdit::ExtraSelection,
342 just make it an ording QtRuby class instead of a Struct, and add a
343 marshaller for QList<QTextEdit::ExtraSelection>
345 2008-06-14 Arno Rehn <arno@arnorehn.de>
347 * Since every smoke module defines a class 'QGlobalSpace', don't rely
348 on Smoke::classMap and search every smoke module for methods of this
351 2008-06-13 Richard Dale <richard.j.dale@gmail.com>
353 * Pass the resolve_classname() functions a 'smokeruby_object *' so that
354 they can change the smoke lib and classId on it.
355 * Added Qt::KeySequence inspect and pretty_print methods
357 2008-06-12 Richard Dale <richard.j.dale@gmail.com>
359 * When resolve_classname_qt() was given a class outside the Qt smoke
360 library, such as KAction, it was failing to resolve it. This was
361 because it was only looking in the smoke library of the arg type
362 declared in the method. Hence, an arg type of 'QAction' was not
363 being resolved to 'KAction'. Thanks to Stefano Crocco for reporting
366 2008-06-09 Richard Dale <richard.j.dale@gmail.com>
368 * The rb_id2name() function has changed to return a 'const char *'
369 in Ruby 1.8.7, which meant the QtRuby wouldn't compile. So attempt
370 to make it build on both 1.8.6 and 1.8.7. Thanks to Stefano Crocco
371 for reporting the bug.
373 2008-06-08 Richard Dale <richard.j.dale@gmail.com>
375 * Move the template based List marshallers to a new header
376 marshall.macros.h and add marshallers for QLinkedList types
378 2008-06-05 Richard Dale <richard.j.dale@gmail.com>
380 * Make the template based QList marshallers more DRY by moving them
381 to marshall_complex.h instead of copied into every extension.
383 2008-06-04 Richard Dale <richard.j.dale@gmail.com>
385 * Make it possible to include marshall_basetypes.h so that korundum
388 2008-05-31 Arno Rehn <arno@arnorehn.de>
390 * Updated qtruby.cpp's header.
392 2008-05-29 Richard Dale <richard.j.dale@gmail.com>
394 * Fixed bug in the FindAllMethods() f'n, and made the debug logging work
395 when a method couldn't be found in do_method_missing()
397 2008-05-28 Richard Dale <richard.j.dale@gmail.com>
399 * The enum Qt::Process::StandardError was clashing with the exception of
400 the same name, so add a constant to the Qt::Process class instead.
401 Thanks to Stefano Crocco for reporting the bug.
403 2008-05-22 Arno Rehn <arno@arnorehn.de>
405 * Fixed dumpCandidates().
407 2008-05-19 Richard Dale <richard.j.dale@gmail.com>
409 * The method selector cache function had an off by one error, which meant
410 it assumed there was one more argument to a method than there actually
411 was. This caused a crash. Why such a major problem hasn't caused any
412 problems before is a mystery - it wasn't a result of the modular smoke
414 * qtruby4.rb calls Kernel#y instead of Qt::Point#y on inspect and
415 pretty_print when the yaml gem is loaded.
416 The attached patch fixes the problem by calling Qt::Point#y and
417 Qt::PointF#y explicitly. Thanks to Paolo Capriotti for the bug report
420 2008-05-16 Arno Rehn <arno@arnorehn.de>
422 * Bring qtruby.cpp up to date with the branch-version.
424 2008-05-16 Richard Dale <richard.j.dale@gmail.com>
426 * Rename the 'modules' global variable qtruby_modules to reduce the chances
429 2008-04-29 Richard Dale <richard.j.dale@gmail.com>
431 * Added a marshaller for references to unsigned ints
432 * Added initialization for the various KDE::ConfigSkeleton classes
434 2008-04-24 Richard Dale <richard.j.dale@gmail.com>
436 * Fixed a couple of differences between C++ code generation and Ruby.
437 The variable names weren't being stripped of any leading 'q' or 'k',
438 and the brush initialization hadn't been updated for Qt 4.4.
440 2008-04-22 Sebastian Sauer <mail@dipe.org>
442 * Fix reported crash on shutdown if QtRuby is used embedded.
444 2008-04-14 Richard Dale <richard.j.dale@gmail.com>
446 * Special case the KDE::DateTime and KDE::TimeZone classes so that
447 nested classes, such as KDE::DateTime::Spec work with them.
448 TODO: make this work automatically without needing extra code.
450 2008-04-10 Richard Dale <richard.j.dale@gmail.com>
452 * When matching arg types, strip off an '::Ptr' or 'Ptr' at the end
453 of the type. This is to ensure that something like a KDE::Service
454 ruby instance can be passed to a method expecting a type of
457 2008-04-07 Richard Dale <richard.j.dale@gmail.com>
459 * Added a QTRUBY_FUNCALL2 macro. If QtRuby is built with the
460 -DRUBY_EMBEDDED option, then the rb_funcall2s for invoking
461 virtual method callbacks and slot invocations in wrapped with
462 a rb_protect() call. Otherwise, rb_funcall() is called directly
463 and any uncaught Ruby exceptions will terminate the app.
464 * Borrowed a function from the kross code to put out an error message
465 and stacktrace on stderr for the current exception, when qtruby
466 has been compiled with the embedded option.
468 2008-04-06 Richard Dale <richard.j.dale@gmail.com>
470 * Change the way the 'MocArgument*' structs are created, instead
471 building them up in a Ruby Array, use a QList<MocArgument*>.
472 Move all the code to C/C++ and don't call Ruby anymore.
473 * Add QTRUBY_INIT_STACK and QTRUBY_RESTORE_STACK macros based on
474 the SWIG_INIT_STACK and SWIG_RESTORE_STACK macros. If QtRuby is
475 compiled with a '-DRUBY_EMBEDDED' option, then before each virtual
476 method callback and slot invocation call, which isn't nested
477 within another, call RUBY_INIT_STACK.
478 * This fixes a problem with Ruby Plasmoids where the Ruby runtime was
479 giving sys stackerror exceptions because the stack underflowed
480 relative to where it was when the krubypluginfactory was loaded.
481 * Add more checking for Qnil in the marshallers for primitive types
482 to make the runtime more robust.
483 * Added some more range=(Range) methods as synonyms for
484 setRange(Integer, Integer)
485 * Changed the examples to use range=
486 * Added a rbplasmaapi command line tool for introspecting the Ruby api
488 2008-04-05 Richard Dale <richard.j.dale@gmail.com>
490 * Added rb_protect() wrappers around virtual method callbacks and
491 slot invocations. When there is a Ruby exception, the app no
492 longer terminates which is useful for Plasma applets.
494 2008-04-04 Richard Dale <richard.j.dale@gmail.com>
496 * Ensure the class and module names in rbuic4 generated code
497 start with an upper case letter, even if they didn't in the
500 2008-04-03 Richard Dale <richard.j.dale@gmail.com>
502 * Updated the rbuic4 to be in line with the Qt 4.4 uic code
503 * Added a '-k' or '-kde' option to the rbuic4 tool, used in
504 conjunction with '-x' to generate a KDE app korundum4 test stub
506 2008-04-01 Richard Dale <richard.j.dale@gmail.com>
508 * Qt::TimeLine.setFrameRange() can now be called like this:
509 time_line.frameRange = 0..90
510 * Qt::Timer.singleShot can now be called with a block:
511 timer = Qt::Timer.singleShot(5000, obj) { puts "In a block" }
512 * Thanks to stefo on #kde-bindings for both suggestions
513 * Added a few more 'range=' methods
514 * Fixed range setters so that both 1..10 and 1...10 work properly
516 2008-03-28 Richard Dale <richard.j.dale@gmail.com>
518 * Added a QList<QTextEdit::ExtraSelection> marshallers as requested
519 by volty on the #qtruby irc channel. Qt::TextEdit::ExtraSelection
520 is a Ruby Struct with cursor and format fields.
522 2008-03-24 Richard Dale <richard.j.dale@gmail.com>
524 * Attempt to improve the marshalling of WIds and assume they are
525 either signed ints (Mac OS) or signed longs.
527 2008-03-14 Richard Dale <richard.j.dale@gmail.com>
529 * Fixed a bug in constructing Qt::Variants with custom types such
530 as Soprano::Statement
531 * Added a Soprano:: namespace
533 2008-03-11 Richard Dale <richard.j.dale@gmail.com>
535 * When a method call began or ended with an underscore, and it
536 was missing from a qtruby instance, it caused ruby to loop,
537 rather than report the method as missing. Thanks to Daniel
538 Brumbaugh Keeney for reporting the bug.
540 2008-03-04 Richard Dale <richard.j.dale@gmail.com>
542 * Make symbolic links to rbqtapi as rbqt3api, rbqt4api, rbkdeapi
545 2008-03-03 Richard Dale <richard.j.dale@gmail.com>
547 * Added some marshallers for new Qt 4.4 QList types
549 2008-03-02 Richard Dale <rdale@foton.es>
551 * The QModelIndex::internalPointer() method was returning nil, as
552 as result of the code change attempting to return nil if the C++
553 pointer is 0. Thanks to CyrilleB for reportin the error
555 2008-02-18 Richard Dale <rdale@foton.es>
557 * Ignore the WebCore:: and std:: namespaces when loading classes
558 * Added marshallers for the WebKit QList types
560 2007-12-19 Richard Dale <rdale@foton.es>
562 * The Qt::Polygon and Qt::PolygonF classes had no means of getting
563 the array of Qt::Points that they hold. Added count() and size()
564 methods and made the classes Enumerable, so this is now possible:
566 irb(main):002:0> poly = Qt::Polygon.new([Qt::Point.new(1,2),
568 => #<Qt::Polygon:0xb5ee3094>
569 irb(main):003:0> poly.each {|t| p t}
570 #<Qt::Point:0xb5ee0510 x=1, y=2>
571 #<Qt::Point:0xb5ee018c x=3, y=4>
573 * Thanks to Sylvain Sauvage for reporting the problem on the Korundum
576 2007-11-21 � Sebastian Sauer <mail@dipe.org>
578 * Fixed crash on shutdown of Ruby cause of a partly destroyed
581 2007-11-19 Richard Dale <rdale@foton.es>
583 * Slot arguments types of 'uint', 'long' and 'ulong' weren't working.
584 Thanks to maniel for the bug report.
585 * When calling a slot directly, it wouldn't work when then slot had
588 * Special case any classes which are sub classes of
589 QDBusAbstractInterface
590 when calling slots directly as the slots will be remote.
591 * When there is more than one return value in a Qt::DBusMessage the
593 method now will return a Ruby Array
595 2007-11-18 Richard Dale <rdale@foton.es>
597 * At the suggestion of Vincent Fourmond added a Qt::DateTime.to_time
598 method which returns a Ruby time. Also enhanced the Qt::DateTime
599 constructor so that it can be passed a Ruby Time.
600 * Qt::Variants containing either QDBusObjectPaths or QDBusSignatures
601 can now be converted to Ruby Strings with a Qt::Variant.value call.
602 Fixes bug reported by maniel on the #qtruby IRC channel.
604 2007-11-12 Richard Dale <rdale@foton.es>
606 * If QModelIndex.internalPointer() is zero, return Qnil
607 * Don't attempt to mark a zero internalPointer() for the garbage
608 collector. Thanks to cheiron for reporting the bug.
610 2007-11-11 Richard Dale <rdale@foton.es>
612 * Fixed a regression introduced when slots were made directly
614 It broke the code to invoke remote QtDBus methods because the
615 remote methods become slots in the QMetaObject of the
617 being used as a proxy. The code was trying to invoke those slots
618 directly which didn't work. So special case any QMetaObjects which
619 have classNames of "local::Merge" as it means they are remote.
621 2007-10-31 Richard Dale <rdale@foton.es>
623 * Don't build the qtrubyinternal library anymore as it gave trouble
625 AMD64 machines and needed an '-fPIC' option there. Instead just
626 include the qtruby sources in the korundum (and plasma) projects.
628 2007-10-30 Richard Dale <rdale@foton.es>
630 * The Qt::KeyEvent#type method wasn't working. Fixes problem reported
631 by Magicloud Magiclouds
633 2007-10-19 Richard Dale <rdale@foton.es>
635 * Ruby signal declared in superclasses were not being inherited by
636 subclasses correctly. Fixed bug reported by cheiron on the #qtruby
637 irc channel - thanks for the report and test program.
639 2007-10-14 Richard Dale <rdale@foton.es>
641 * The QScintilla class names now all start with Qsci instead of Qext,
642 so change the QtRuby module name from Qext:: to Qsci::
643 * Fixes a seg fault pointed out by Adreas Pakulat
645 2007-10-08 Richard Dale <rdale@foton.es>
647 * Added some missing modules for namespaces in the KDE4 classes
649 2007-09-07 Richard Dale <rdale@foton.es>
651 * Added a kross2qtruby method from Cyrille Berger to convert from a
653 instance to a qtruby instance
654 * Fixed bug in overloaded method resolution where a quint32 was being
656 equal priority to a qint32 type. Thanks to joseph/vista on #qtruby
660 2007-07-28 Richard Dale <rdale@foton.es>
662 * Up the version to 1.4.9
663 * Add a Plasma:: module for the plasma classes
665 2007-06-19 Richard Dale <rdale@foton.es>
667 * Released Qt4 QtRuby 1.4.8 on Rubyforge
668 * Fixed an error in the QGraphicsPixmapItem class which made it
671 * Building QtRuby against Qt 4.2 failed because of a reference to
672 the Qt 4.3 QMdiSubWindow class not being #ifdef'd correctly. Thanks
674 mhlmi on #qtruby irc for reporting these two bugs.
676 2007-06-18 Richard Dale <rdale@foton.es>
678 * When a Qt::Object is subclassed more than once, a Qt::MetaObject is
679 now correctly constructed for each subclass. Before a half-working
680 hack was used where a Qt::MetaObject containing all the slots and
681 signal of its superclass too, was constructed for the twice
683 class. Fixes problems reported by Caleb Tennis amoungst several
685 * When a signal is defined, and Ruby method is created to call it.
687 the signal methods were only being created when the Qt::MetaObject
689 a class was created. This caused problems if the signal was emitted
690 before the Qt::MetaObject was created. Fixes problem reported for
692 QtRuby by Gadi Aleksandrowicz on the Korundum Rubyforge help forum.
694 2007-06-12 Richard Dale <rdale@foton.es>
696 * Added some missing list marshallers
697 * Fixed a bug in the resolution of QGraphicsItem subclass names
699 2007-04-19 Richard Dale <rdale@foton.es>
701 * Fixed a bug in resolving overloaded methods where an enum passed as
703 quint64 arg type needed to be given a lower priority that an
705 * Added two models useful for Rails ActiveRecord or ActiveResource
708 * Fixed a bug in the Qt::HttpRequestHeader method() method
710 2007-04-05 Richard Dale <rdale@foton.es>
712 * Add some marshallers for the QVector types in the new Qt 4.3
715 * Improved the cannon game t14 code
717 2007-03-17 Richard Dale <rdale@foton.es>
719 * The code to allow the type() method to be used for Qt::GraphicsItem
720 classes had the wrong names for the classes
721 * Improved the resolution of QGraphicsItem classes in
724 2007-04-16 Richard Dale <rdale@foton.es>
726 * Added some marshallers for Qt 4.3 classes
727 * Fixed bug in deleting Qt::StandardItems when they had a parent or
730 2007-03-13 Richard Dale <rdale@foton.es>
732 * When a ruby string was converted to a 'char *' arg, a copy was
734 and then never freed. This behaviour was added to fix a problem
736 small number of methods that 'took ownership' of the string and
738 it to stay around after the method call. However, it introduces a
739 memory leak for the 95% of methods that don't need it, and also
741 that if the 'char *' is changed during the method call, the changes
742 aren't reflected in the ruby string. Thanks to Jan Wedekind for the
743 discussion leading up to changing the code. Any methods where this
744 behaviour is wrong will now need to be special cased.
746 2007-03-06 Richard Dale <rdale@foton.es>
748 * Call rb_gc_mark() on the internalPointer VALUE within a
750 to prevent it being GC'd too early
751 * Added 'double&' and 'double*' marshallers
752 * Fixed memory leak when creating new Qt::ModelIndexes
754 2007-02-27 Richard Dale <rdale@foton.es>
756 * Added marshallers for QwtArray<double> and QwtArray<int>
758 * Added a fix from Knut Franke to make the QVector<double> marshaller
759 work with any sort of Ruby number. Thanks Knut..
761 2007-02-22 Richard Dale <rdale@foton.es>
763 * Made 'Qt::Variant.new(nil)' a synonym for 'Qt::Variant.new'
765 2007-02-19 Richard Dale <rdale@foton.es>
767 * Added inspect and pp methods for Qt::MetaEnums
768 * Qt::Variants can be constructed from ruby Dates, Times and
770 Qt::Dates, Qt::Times and Qt::DateTimes can also be constructed from
771 their ruby equivalents as a single arg. This makes it easier to
772 integrate Qt::AbstractItemModels with Rails ActiveRecord and
775 2007-02-17 Richard Dale <rdale@foton.es>
777 * If a new Ruby class is created for a custom C++ QObject derived
779 then create Ruby constants in the class for any enums defined via
780 Q_ENUMS which are in the same scope as the new class. For instance:
782 class TestObject : public QObject
787 enum Priority { High, Low, VeryHigh, VeryLow };
791 irb(main):001:0> app = Qt::Application.new(ARGV)
792 => #<Qt::Application:0xb6aaaf58 objectName="irb">
793 irb(main):002:0> require 'testqobject'
795 irb(main):003:0> test = app.findChild(Qt::Object, "QtRuby
797 => #<TestObject:0xb6aa5184 objectName="QtRuby TestObject">
798 irb(main):004:0> TestObject::High
800 irb(main):005:0> TestObject::Low
802 irb(main):006:0> TestObject::VeryHigh
805 2007-02-16 Richard Dale <rdale@foton.es>
807 * Thomas Moenicke fixed the qtruby cmake build so it works on
808 all machines by adding a KDE_EXPORT macro to Init_qtruby4()
809 Big thanks to Thomas and Guillaume Laurent for getting it all
811 * Added calling slots directly in custom C++ QObject classes.
812 If a method isn't found in the Smoke library, and the instance is
813 a kind of QObject with a class not in the Smoke library, then look
814 for a slot matching the method name and invoke it. Thanks to Eric
816 for the idea and discussion leading to implementing it.
817 * Added a check for QtDBus in the qtruby cmake file and set a define
818 of -DQT_QTDBUS if the library was found
819 * Changed the ADD_LIBRARY line in the qtruby cmake file to use MODULE
820 so that a bundle should be built on Mac OS X.
822 2007-02-08 Richard Dale <rdale@foton.es>
824 * Fixed bugs in the debug dump of QMetaObjects created at runtime
825 * When a block was used as a slot, a new entry was being added to
826 the QMetaObject object every time they were connected. A new
827 entry is now only created if a slot with the same signature didn't
830 2007-02-04 Richard Dale <rdale@foton.es>
832 * The ListModel internal class was being wrongly named as TableModel
834 2007-02-01 Richard Dale <rdale@foton.es>
836 * Added the qdbus/complexpingpong example
837 * Qt::DBusVariant have to be passed Qt::Variants, and a suitable
838 Qt::Variant will be created
839 * Improved the format of debugging info for the contents of a
841 * A Qt::Variant can now be obtained when contained in a
844 2007-01-31 Richard Dale <rdale@foton.es>
846 * Added a Qt::DBusVariant class and a marshaller for it
848 2007-01-17 Richard Dale <rdale@foton.es>
850 * QtRuby was crashing in virtual method callbacks with a memory
852 problem. The stack of ruby VALUES for the arguments to the callback
854 now allocated via ALLOCA_N, rather than calloc which cures the
856 * Changed tabs to spaces in the pixelator example
858 2007-01-15 Richard Dale <rdale@foton.es>
860 * Code generated with the rbuic tool '-x' option has a require 'Qt4'
861 option. Fixes problem reported by Sylvain Joyeux
862 * Add setup_ui() and retranslate_ui() methods as aliases for the
864 case ones as suggested by Sylvain Joyeux
866 2006-12-16 Richard Dale <rdale@foton.es>
868 * Added the painting/fontsampler example
869 * There is no way to distinguish between the two constructors:
870 QTreeWidgetItem (const QTreeWidgetItem & other)
871 QTreeWidgetItem (QTreeWidgetItem * parent, const QStringList &
872 strings, int type = Type)
873 when the latter has a single argument. So force the second variant
876 * Added the desktop/screenshot example
877 * Added the desktop/systray example
879 2006-12-14 Richard Dale <rdale@foton.es>
881 * Added the painting/svgviewer example
882 * Added the painting/imagecomposition example
883 * Added a convenience method Qt::Image.fromImage() to assign one
885 from another. This is because the C++ QImage::operator=(const
887 method isn't easily called from QtRuby
888 * Fixed do_method_missing() so that 'operator=' methods don't get
889 transformed into setOperator() methods
891 2006-12-12 Richard Dale <rdale@foton.es>
893 * Removed the qtrubyinit program as it's a pita to build, and isn't
897 2006-12-04 Richard Dale <rdale@foton.es>
899 * Add a QMap<int,QVariant> marshaller
900 * When marhalling QMap types with QVariant values, if the Ruby value
902 a Qt::Variant then one is created
903 * Qt::Variants can now be constructed with Hash's of
905 pairs, and from Arrays of Qt::Variants
906 * Custom types know to the QMetaType system, such as some QtDBus
908 can be used to construct Qt::Variant via the
909 QMetaType::constructor() call
910 * Fixed a bug in Qt::AbstractItemModel.createIndex() which meant it
912 work on 64 bit machines
913 * When marshalling QList<QVariant> types from Ruby to C++, if any
915 aren't Ruby Qt::Variants, they are automatically converted. Hence,
919 v = Qt::Variant.new([1, 2, 3])
921 The Qt::Variant v will contain a list of 3 QVariants with
924 * Add an option extra argument to Qt::Variant.fromValue() and
926 to specify a type string, for use with QtDBus args. For example:
928 v = Qt::Variant.fromValue(5, "uint")
930 Will force the Qt::Variant to be a specific type
931 * Change all instances of strcmp() to qstrcmp()
933 2006-11-30 Richard Dale <rdale@foton.es>
935 * The Qt::KeySequence constructor wasn't working when passed a
936 Qt::Key enum type and it needed to be cast to an Integer via
938 * When a Qt::DBusInterface.call() method was invoked without using
939 the call() method, but by calling the method directly, and the
941 returned a QVariant Qt::DBusArgument value, the QVariant return
942 value was converted to nil.
943 * Fixed some errors in the mainwindows/mdi example, thanks to shirk
944 and |Vargas| for pointing them out.
946 2006-11-23 Richard Dale <rdale@foton.es>
948 * Made Qt::TreeWidgetItem and Qt::TreeWidget Enumerable
949 * Added a Qt::TreeWidgetItemIterator.current() method to get the
950 current value of the iterator without needing to use 'operator*'
951 * Added inspect() and pretty_print() methods to Qt::TreeWidgetItem,
952 Qt::ListWidgetItem and Qt::TableWidgetItem
953 * Removed instructions for creating a 'rubyw' executable in Mac OS X
954 as it isn't needed anymore with Qt 4.x. Thanks to Hans Fugal for
957 2006-11-21 Richard Dale <rdale@foton.es>
959 * The rbuic and rbrcc tools were being built with a .app extension
960 on Mac OS X when using qmake. Fixed the .pro files so this doesn't
961 happen. Thanks to Hans Fugel for reporting the problem.
963 2006-11-15 Richard Dale <rdale@foton.es>
965 * When Qt::DBusInterface.call() was called with a single argument,
966 it was failing with a method_missing() error. Fixes problem
967 reported by Carsten Niehaus.
969 2006-11-07 Richard Dale <rdale@foton.es>
971 * Fixed a crash when a slot was inherited by a subclass, and the
972 subclass had no slots or signals of its own
974 2006-10-30 Richard Dale <rdale@foton.es>
976 * Upped the QtRuby version to 1.4.7 for the RubyForge release
978 2006-10-20 Richard Dale <rdale@foton.es>
980 * All allocs and frees for the smokeruby_object struct now go through
981 two methods alloc_smokeruby_object() and free_smokeruby_object().
982 Before some instances were being allocated with Ruby's ALLOC, and
983 some with malloc(). Now they are all created with malloc().
984 * Removed a call to ALLOC_N and replaced it will calloc().
986 * Reversed the decision to get rid of ALLOC, and replaced all mallocs
987 with ALLOC and all callocs with ALLOCA_N
988 * Commented out some code that mapped an instance which was allocated
989 in the C++ world onto the corresponding ruby instance. It doesn't
990 work if the C++ address is reused and the Ruby side doesn't know
993 2006-10-19 Richard Dale <rdale@foton.es>
995 * A Qt::DBusArgument can be obtained via a call to qVariantValue(),
999 qVariantValue(Qt::DBusArgument, variant)
1001 2006-10-16 Richard Dale <rdale@foton.es>
1003 * Fixed Qt::DBusInterface.call() so it automatically wraps the
1005 as Qt::Variants. Thanks to prullmann for testing and finding
1008 * Improved the pingpong example to be more like the C++ version.
1010 2006-10-13 Richard Dale <rdale@foton.es>
1012 * Added marshallers for QList<QPair<QString,QString> > and
1014 (QPair<qreal,QColor>) types
1016 2006-10-06 Richard Dale <rdale@foton.es>
1018 * Added the QtDBus pingpong example
1020 * Fixed a bug in slot return values where they were only
1021 working when a signal was emitted in Ruby, and not when
1022 a C++ signal was emitted. The zeroth element in the array
1023 of 'void*'s passed to qt_metacall() was being overwritten
1024 by a pointer to the result of the slot invocation. Instead
1025 the pointer in the zeroth element is now correctly deref'd,
1026 and the result put where it points to.
1028 2006-10-05 Richard Dale <rdale@foton.es>
1030 * Each rbuic generated class is now wrapped in a Ui module so that as
1031 well as class 'Ui_Foobar' there is a 'Ui::Foobar' version.
1033 * Added the QtDBus chat example
1035 * Made the Qt::DBusMessage '<<' create a Qt::Variant if the arg
1037 to it wasn't already a Qt::Variant
1039 2006-10-04 Richard Dale <rdale@foton.es>
1041 * Added the QtDBus remote contoller car example
1043 * Fixed warning messsage caused be the Qt::Variant::Time value
1045 2006-10-03 Richard Dale <rdale@foton.es>
1047 * Added ruby implementations of
1048 Qt::DBusConnectionInterface.serviceOwner(),
1049 registeredServiceNames(), isServiceRegistered(), servicePid(),
1053 * Added a Qt::DBusMessage.value() method to return the Ruby value of
1055 at the beginning of the arguments array, or nil if the message
1056 wasn't a ReplyMessage.
1058 * Fixed incorrect Qt::Variant.toUInt() method name
1060 * Added a ruby version of the Qt::DBusReply class
1062 * Converted the qdbus/listnames example to Ruby
1064 2006-10-02 Richard Dale <rdale@foton.es>
1066 * qVariantFromValue() wasn't working with non-Qt classes as
1068 such as Ruby Strings and Integers
1070 * The rbuic4 tool was not setting up slot/signal connections.
1072 * It is now possible to call on a Qt::DBusInterface instance directly
1076 app = Qt::Application.new(ARGV)
1077 bus = Qt::DBusConnection.sessionBus()
1078 proxy = Qt::DBusInterface.new( "org.freedesktop.DBus",
1079 "/org/freedesktop/DBus",
1080 "org.freedesktop.DBus",
1083 result = proxy.ListNames()
1086 ["org.freedesktop.DBus", ":1.0", "com.trolltech.Assistant", ":1.15"]
1088 * Fixed bugs in Qt::Variant where some constants were missing, and
1089 the one for 'String'
1092 2006-10-01 Richard Dale <rdale@foton.es>
1094 * The Qt::DBusMessage.type method now works. Fixes problem reported
1098 2006-09-28 Richard Dale <rdale@foton.es>
1100 * Redone the rbuic tool based on the Qt 4.2 code with the
1102 code generation in a 'ruby' subdirectory.
1104 * The rbuic tool has been renamed 'rbuic4' so it can be used at the
1106 time as the Qt3 one.
1108 * Changed 'setShortcut' method calls so a string can be passed to
1110 as well as a Qt::KeySequence to be more similar to the C++ api.
1112 2006-09-26 Richard Dale <rdale@foton.es>
1114 * Sym links 'rbqt3api' and 'rbqt4api' to rbqtapi created so that the
1116 and Qt4 apis can still be queried when both QtRuby versions are
1119 2006-09-25 Richard Dale <rdale@foton.es>
1121 * Renamed 'qtruby.rb' as qtruby4.rb, and qtruby.so as qtruby4.so
1123 * Qt4.rb and Qt3.rb files are installed to allow either Qt3 or
1124 Qt4 versions of QtRuby to be used with require 'Qt4' or
1125 require 'Qt3' statements
1127 * A Qt.rb symbolic link is created by the install so that by default
1128 a require 'Qt' statement will use Qt4 QtRuby
1130 2006-09-17 Richard Dale <rdale@foton.es>
1132 * Fixed bug reported by Caleb Tennis where temporary QString const
1134 were only being deleting after marshalling if they weren't const
1137 2006-09-15 Richard Dale <rdale@foton.es>
1139 * Fixed bug reported by Henri Sundelin where Qwt classes in .ui files
1141 being correctly given Qwt:: module namespaces
1143 2006-09-14 Richard Dale <rdale@foton.es>
1145 * Added a new variant of connect, which takes a SIGNAL as an
1146 argument, along with
1147 a block. For example:
1149 quit.connect(SIGNAL(:clicked)) { puts 'quit pressed' }
1151 The block is called in the context of where the connect call was
1153 needn't be a Qt::Object. It is similar to the signal_connect()
1155 ruby-gnome. This was suggested by rickdangerous on the #qtruby irc
1158 2006-09-13 Richard Dale <rdale@foton.es>
1160 * Blocks can now be used as slots in Qt::Object.connect() calls.
1162 versions, a singleton method and an instance method.
1164 * Here is an example of the class method connect() call with a block
1167 app = Qt::Application.new(ARGV)
1168 quit = Qt::PushButton.new('Quit')
1169 Qt::Object.connect(quit, SIGNAL('clicked()'), app) { puts 'quit
1172 The block is executed in the context of the target instance, 'app'
1176 * And the instance method form:
1178 class MyButton < Qt::Button
1179 def initialize(text)
1181 connect(self, SIGNAL('clicked()')) { puts 'button clicked' }
1185 The block is executed in the context of self - the instance making
1189 * The Rails version of the Ruby 1.9 method Object#instance_exec was
1191 to invoke the block. Thanks to kelko on the #kde-ruby channel for
1193 idea and the code, and rickdangerous for further discussion.
1195 2006-09-04 Richard Dale <rdale@foton.es>
1197 * The 'default.txt' file was missing from the
1198 itemviews/simpletreemodel
1199 example. Added it, and converted the example to use the rbrcc tool.
1201 * Fixed a bug in the rbrcc compiler in the code generation for the
1204 * Fixed some bugs in the network/ftp and itemviews/chart examples
1206 * Made marshall_primitives.h compile
1208 2006-08-25 Richard Dale <rdale@foton.es>
1210 * Fixed bug in the rbuic tool where a QTextEdit::AutoNone value
1212 being converted into the Qt::TextEdit::AutoNone qtruby form.
1214 by #freqmod on the irc channel #kde-ruby.
1216 * Brought the rbrcc code in line with the latest Qt 4.2 version with
1217 changes to the locale handling.
1219 2006-08-21 Richard Dale <rdale@foton.es>
1221 * Reimplemented the Qt::Object.findChild() and findChildren() methods
1222 using code based on the implementation in qobject.cpp. Fixes
1224 reported by Robert Gstoehl. It is now possible to pass a regular
1225 expression to findChildren() in the same way as the C++ original:
1227 mywidget.findChildren(Qt::Pushbutton, /^foo/)
1229 * Added a Qt::Object.staticMetaObject method to work round the
1231 of it being missing from the Smoke runtime.
1233 2006-08-18 Richard Dale <rdale@foton.es>
1235 * Some more leak fixing and minimising use of the heap
1237 2006-08-17 Richard Dale <rdale@foton.es>
1239 * Used the excellent MallocDebug tool on Mac OS X to track down and
1241 some memory leaks. Some QRegExps and QByteArrays are now allocated
1242 statically to minimise memory usage.
1244 2006-07-18 Richard Dale <rdale@foton.es>
1246 * The code to change a Ruby 'foo?' method call to a Qt C++ 'setFoo()'
1248 using QStrings to change the text. However, it then converted the
1250 to a QByteArray via toLatin() and referenced the contents of the
1251 QByteArray via a 'const char *' cast when the QByteArray had gone
1253 scope and had been deleted. Thanks to Carlto Wang again for
1257 * Some of the code for debug logging of garbage collection wrote
1261 2006-07-17 Richard Dale <rdale@foton.es>
1263 * Some QtRuby QHash based caches were defined with QStrings, and when
1265 was accessed the QString was converted to a QByteArray via toLatin
1267 to a 'char *'. However, the 'char *' only lasted as long as the
1269 and this caused memory corruption if the 'char *' was still in use
1271 QByteArray was freed. So the QHash's are now defined like this:
1273 QHash<QByteArray, Smoke::Index *> methcache;
1274 QHash<QByteArray, Smoke::Index *> classcache;
1275 QHash<int, QByteArray> classname;
1277 This doesn't completely fix a crash in QtRuby though, although it
1279 improve things. Thanks to Charlton Wang for tracking down where the
1283 2006-07-16 Richard Dale <rdale@foton.es>
1285 * Added a QVariantList marshaller
1286 * The correct QGraphicsScene event class instance is instantianted
1289 * The Qt::GraphicsItems in a Qt::GraphicsScene are marked so they
1291 won't get garbage collected prematurely
1292 * Added QT_TR_NOOP() and QT_TRANSLATE_NOOP() methods for completeness
1293 * Added Qt::Graphics examples: graphicsview/collidingmice and
1296 2006-07-05 Richard Dale <rdale@foton.es>
1298 * Added some marshallers for Qt 4.2, for QList<QGraphicsItem*>,
1299 QList<QStandardItem*> and QList<QUndoStack*> types.
1300 * The Ruby String to 'char *' and String to 'unsigned char *' were
1302 the pointer within the Ruby String directly which meant they were
1303 deleted when the Ruby String was gc'd. So they are copied with
1306 2006-06-26 Richard Dale <rdale@foton.es>
1308 * Applied a fix from Cvetoslav Ludmiloff to make
1309 Qt::AbstractItemModel.createIndex() work without conversion errrors
1310 for large Ruby BigNum values.
1312 2006-06-19 Richard Dale <rdale@foton.es>
1314 * The 'EmitSignal' class in marshall_types.cpp was not linking
1316 the code calling it from Qt.cpp with some versions of the gcc
1317 compiler/linker. So the code was moved to Qt.cpp so that it should
1318 build on all environments.
1319 * Added a 'designer/calculatorbuilder' example using the
1321 class to load .ui files from a .qrc file compiled with the rbrcc
1323 * Added some extra marshallers for QList<QWidget*> and QVector<qreal>
1326 2006-06-13 Richard Dale <rdale@foton.es>
1328 * Slot and signals can now have return types and return values.
1331 class Foo < Qt::PushButton
1332 slots 'int greeting(QString)'
1333 signals 'int doit(QString)'
1337 connect(self, SIGNAL('doit(QString)'), self,
1338 SLOT('greeting(QString)'))
1341 * Added some missing marshaller types for QTreeWidgetItem and
1345 2006-06-07 Richard Dale <rdale@foton.es>
1347 * qt_metacall() was returning an incorrect value when called with,
1348 Ruby slots. This doesn't normally matter, but was causing D-BUS
1349 slot invocations via qt-dbus to fail.
1351 2006-06-05 Richard Dale <rdale@foton.es>
1353 * Added support for q_classinfo() attributes, equivalent to the c++
1354 Q_CLASSINFO() macro. If the key of the q_classinfo is 'D-Bus
1356 the slots in the class are marked as Q_SCRIPTABLE in the
1360 class LCDRange < Qt::Widget
1361 q_classinfo('D-Bus Interface', 'MyInterface')
1362 signals 'valueChanged(int)'
1363 slots 'setValue(int)'
1366 * The metaObject methods for slots and signals are no longer added
1368 a Qt::Object is constructed, but when slots or signals are added to
1369 a class. This means that signals as well as slots can be added to
1373 2006-06-04 Richard Dale <rdale@foton.es>
1375 * For Qt::QObject classes which are immediate subclasses of Qt::Base,
1376 don't add C metaObject() and qt_metacall() methods as they aren't
1377 needed. This means that a QMetaObject is no longer constructed for
1378 these classes, and the one that the corresponding C++ class has is
1380 * Bring the itemviews/pixelator example code in line with the current
1383 2006-06-01 Richard Dale <rdale@foton.es>
1385 * Added a rbrcc resource compiler, a ruby version of rcc
1386 * Two new module methods Qt.qRegisterResourceData() and
1387 Qt.qRegisterResourceData() were added to Qt.cpp to support the
1390 2006-05-23 Richard Dale <rdale@foton.es>
1392 * With code like the following, the QtRuby runtime was choosing
1393 an operator method which took a QByteArray and a QString and
1394 returned a QString. So the 'block' became a Ruby String, rather
1395 than staying as a Qt::ByteArray:
1397 block = Qt::ByteArray.new
1401 block += " " + header + "\n"
1403 So the operator '+' for Qt::ByteArray is special cased to return
1405 * The example dialogs/simplewizard now works correctly
1407 2006-05-22 Richard Dale <rdale@foton.es>
1409 * Fix regression for dynamic class creation via QMetaObject info
1412 * A list of properties is now returned via
1413 Qt::MetaObject.propertyNames
1414 for a Qt::Object with properties for the inspect and pretty_print
1416 * Fixed a pile of errors in the itemviews/chart example
1417 * Added Qt::ItemSelection.at, [], count and length methods
1419 2006-05-19 Richard Dale <rdale@foton.es>
1421 * When an unknown C++ class is found, a corresponding Ruby class is
1423 created. For instance, if a KPresenter KPart is loaded, a
1424 KDE::PresenterDoc class is created.
1425 * It is now possible to set and get properties without needing to use
1426 Qt::Object.property() and Qt::Object.setProperty(). For instance:
1428 factory = KDE::LibLoader.self().factory("libkpresenterpart")
1429 @kpresenter = factory.create(self)
1430 p @kpresenter.presentationDuration
1431 @kpresenter.presentationDuration = true
1433 * A Qt::Variant.to_ruby method has been added which returns a Ruby
1435 corresponding to the current value of a Qt::Variant
1436 * Added a Qt::MetaObject.propertyNames method to return a list of
1440 2006-05-15 Richard Dale <rdale@foton.es>
1442 * Added an entry for a missing marshaller for QModelIndexLists.
1443 Thanks to Daniel Morris for the bug report and fix.
1445 2006-05-07 Richard Dale <rdale@foton.es>
1447 * Added a Qt3:: module for the Q3* support classes
1448 * The rbuic now correctly gives Q3* classes a Qt3::
1451 2006-05-04 Richard Dale <rdale@foton.es>
1453 * A spurious warning was be output when Qt::ContextMenuEvent.type
1454 was called. Fixes problem reported by Alessio Caiazza
1456 2006-04-25 Richard Dale <rdale@foton.es>
1458 * Added a namespace of Qwt:: for use with widgets from the Qwt
1461 2006-04-20 Richard Dale <rdale@foton.es>
1463 * Added marshalling for WId and Q_PID types which will work
1465 * Fixed the rbuic qmake project file so it will build on Windows
1467 2006-04-19 Richard Dale <rdale@foton.es>
1469 * Removed a call to vasprintf() as it didn't compile with mingw
1470 on Windows. Replaced with qvsnprintf() using a statically
1472 * Fixed bugs in slot/signal marshalling. The qint64 type is now
1473 marshalled correctly.
1474 * Added a line to extconf.rb for the libraries needed to link the
1475 QtRuby extension on Window.
1477 2006-04-18 Richard Dale <rdale@foton.es>
1479 * Added the network/http and loopback examples
1480 * Slots with 'qint64' arg types don't yet work
1481 * Fixed bug where qtruby failed to link on some machines
1482 such as Windows, where the 'char' type defaults to
1483 unsigned, so define them as 'signed char' instead.
1485 2006-04-17 Richard Dale <rdale@foton.es>
1487 * Added the network/ftp, broadcastreceiver and broadcastsender
1490 2006-04-12 Richard Dale <rdale@foton.es>
1492 * Change source files to headers to make it easier to build the
1494 extension on Windows and Mac OS X. marshall_basetypes.cpp,
1495 marshall_complex.cpp
1496 and marshall_primitives.cpp are now all headers. marshall_types.cpp
1498 into an implementation source file and a header.
1500 2006-04-11 Richard Dale <rdale@foton.es>
1502 * Added xml/saxbookmarks, xml/dombookmarks and widgets/tooltips
1504 * Improved garbage collection marking, Children QTreeWidgets and
1505 QListWidgets are now marked. QObject tree instances are only marked
1506 starting at an instance which has no parent to improved efficiency,
1507 otherwise the same sub trees would be marked several times as a
1508 traversal is started for each node in the heirarchy.
1509 * The 'type' method in QEvent subclasses now works correctly.
1510 * Added inspect and pretty_print methods to the Qt::WidgetTreeItem
1513 2006-04-10 Richard Dale <rdale@foton.es>
1515 * Added mainwindows/dockwidgets example
1516 * Added mainwindows/mdi example
1517 * Added widgets/movie example
1519 2006-04-10 Richard Dale <rdale@foton.es>
1521 * Added draganddrop/dropsite example
1522 * Fixed bug where non-primitive signal types weren't working
1524 2006-04-10 Richard Dale <rdale@foton.es>
1526 * Various fixes to the rbuic tool:
1527 * Variable names were not always correct. Now they always start with
1528 a '@' if they are ruby instances variables, and all have an
1531 * The various names used in signal/slot connect statements should
1534 * Qt::SizePolicy literals were not always correct
1535 * The code for embedded icons is now translated into Ruby
1536 * Multiline string literals are now terminated with a '\' on each
1539 2006-04-07 Richard Dale <rdale@foton.es>
1541 * Added the dialogs/configdialog example
1542 * Fixed bug in slot invocation marshalling where non-primitive
1543 types, apart from QStrings weren't working
1544 * Fixed crash caused by recently introduced 'fix',
1545 deleting 'argv' passed to QApplication
1547 2006-04-06 Richard Dale <rdale@foton.es>
1549 * Marshalling of Value lists to Ruby wasn't working at all. The
1550 bug was because the following two lines are not equivalent:
1552 void *p = &valuelist[i];
1553 void *p = (void *) &(valuelist->at(i));
1555 The first line doesn't work correctly, but the second was does.
1557 * The marshaller for QList<QImageTextKeyLang> was defined wrongly.
1559 2006-04-05 Richard Dale <rdale@foton.es>
1561 * Added the itemviews/puzzle example
1562 * Added a QModelIndexList marshaller
1563 * Added inspect and pretty_print methods for Qt::ModelIndex
1565 2006-04-05 Richard Dale <rdale@foton.es>
1567 * Added the itemviews/sortingmodel example
1569 2006-04-05 Richard Dale <rdale@foton.es>
1571 * Simplify the Qt::AbstractItemModel.createIndex() code
1572 * Fix bug where return values from rb_call_super() were being ignored
1573 * Make :foobar a synonym for 'foobar()' in SLOT()/SIGNAL() calls and
1574 slot/signal declarations
1576 2006-04-04 Richard Dale <rdale@foton.es>
1578 * Added the itemviews/simpledommodel and itemviews/simpletreemodel
1581 * Special cased the Qt::AbstractItemModel.createIndex() and
1582 Qt::ModelIndex.internalPointer() methods so they can save
1583 and restore Ruby VALUE instances.
1585 2006-04-03 Richard Dale <rdale@foton.es>
1587 * The QtRuby runtime's overloaded method resolution mechanism can't
1589 distinguish between Ruby Arrays containing different sort of
1591 Unfortunately Qt::Painter.drawLines() and Qt::Painter.drawRects()
1593 be passed a Ruby Array as an argument containing either Qt::Points
1595 for instance. These methods need to call the correct Qt C++
1596 methods, so special case
1597 the overload method resolution for now..
1599 2006-04-03 Richard Dale <rdale@foton.es>
1601 * The models used for QTableView and QListView are the private
1603 QTableModel and QListModel. They are accessed as
1605 via the apis for the view classes. Unfortunately,
1607 has pure virtual functions which don't appear in the corresponding
1608 Ruby class Qt::AbstractItemModel. So Ruby implementations of
1610 and Qt::ListModel need to be special cased, and given the missing
1611 methods in order to access the model data.
1613 2006-03-29 Richard Dale <rdale@foton.es>
1615 * Don't special case open() in virtual method callbacks,
1617 the Qt classes with open methods now have explicit open()
1619 calls. So it isn't possible that Kernel.open() will be
1623 2006-03-14 Richard Dale <rdale@foton.es>
1625 * Added various explicit calls to method_missing() for methods which
1626 are defined in Kernel and Object, such
1627 as 'exec', 'select', 'format'
1628 etc. Otherwise, the corresponding methods in the Smoke library were
1629 not being invoked correctly.
1630 * Removed a virtual destructor compile warning
1631 * Removed obsolete qtruby-only.patch and kdevelop project file
1633 2006-03-14 Richard Dale <rdale@foton.es>
1635 * Fixed bugs in const lists marshallers, where the items in the ruby
1637 were wrongly being updated after a method call
1639 2006-02-20 Richard Dale <rdale@foton.es>
1641 * Added a '-x' option to the rbuic tool to generate a ruby top level
1642 code for testing a compiled .ui file
1643 * Removed spurious "Warning: action `%s' not declared\n" message
1644 * Fixed bug in code generation where the top level arg name in
1645 setupUI() was being wrongly referenced as an instance variable.
1646 Fixes bug reported by Florent Ruard-Dumaine
1647 * Fixed bug in const pointer lists, where the items in the ruby Array
1648 were wrongly being updated after a method call
1650 2006-02-20 Richard Dale <rdale@foton.es>
1652 * After a const value based list such as QVector<QPointF> was passed
1653 to a C++ method, the correspoding Ruby Array was being updating
1654 with the values when it didn't need to be. There is also a bug
1656 meant the the values in the Ruby Array were being set to nil. That
1657 bug still isn't fixed. Partly fixes bug reported by akincisor on
1659 #qtruby irc channel.
1661 2006-02-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1663 * In Qt4 when the type signature of a slot or signal argument type is
1664 normalized, any '&' character for a reference type is removed,
1666 with any 'const' qualifiers. So 'const QString&' becomes 'QString'.
1667 After a 'QString' slot type has been marshalled to a Ruby string it
1668 is deleted, as it was assumed to be a temporary copy. However, this
1669 caused a crash with QString references such as in the
1671 example. Fixes a problem reported by mserms on #qtruby.
1673 * Added the correct Qt4 libs to the extconf.rb compile command
1675 2006-01-19 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1677 * Improved the debug logging of virtual method callbacks so that the
1678 arg types are shown too
1680 2005-12-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1682 * Restored Caleb Tennis's refactored marshall_types.cpp code after
1683 accidently deleting it in August.
1685 2005-12-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1687 * The logger_backend() function has been removed and replaced with
1688 qWarning() calls. This was because of problems with getting the
1689 logger_backend() code to work on Windows.
1691 2005-12-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1693 * The ruby display() method was clashing with a display() method in
1695 QtRuby classes, and so it was aliased to _display(). However, this
1697 problems with the ruby RMagick extension. The display methods are
1699 special cased in Qt::LCDNumber. Fixes problem reported by David
1701 * The slots and signals methods are now module methods of Qt::Base,
1702 rather than defined as ordinary methods in class Module, reducing
1704 space pollution. Thanks to Esteban Manchado for pointing this out.
1706 2005-12-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1708 * QtRuby didn't work with versions of ruby > 1.8.3, as it didn't call
1709 initialize methods correctly. It used the rb_respond_to() method
1710 to check it a newly created qt instance responded to :initialize.
1711 However, in newer versions of ruby rb_responds_to() ignores
1712 private methods such as initialize(). The solution was to just
1714 the test, as it was redundant anyway.
1715 * Fixes problem reported by Hans Fugel and Caleb Tennis.
1717 2005-11-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1719 * When dispose() was used to delete a ruby instance, the mapping
1721 the C++ ptr and corresponding ruby instance was not being removed,
1723 this caused a crash. Fixes problem reported by Christopher
1726 2005-11-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1728 * 'signed int&' types were not being matched or marshalled correctly
1730 2005-10-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1732 * Argument types of 'unsigned short int' were not working. Fixes
1733 problem reported by Ian Monroe
1735 2005-10-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1737 * Added network/fortuneserver and fortuneclient examples
1738 * The Qt::ByteArray class is now a normal Smoke class,
1739 rather than a special case, as it's easier to make a
1740 Qt::ByteArray look like a ruby String, than the other way
1742 * The overloaded method resolution for enum arg types has been
1744 * Added missing relational operators to Qt::Integer
1745 * Fixed bug in marshalling unsigned shorts
1747 2005-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1749 * Ported the RuBoids OpenGL artificial life example to Qt4 and
1750 added opengl/grabber
1752 2005-10-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1754 * The the value of a Qt::Variant can now be accessed with
1755 with to_s, to_i, to_a and to_f methods
1756 * Deleted the svn:mime-type property from the qtruby.rb source
1757 so that diffs will be shown on checkin
1759 2005-09-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1761 * Added richtext/calendar, orderform and syntaxhighlighter examples
1762 * Fix bug in '>', '<=', '<' and '<=' operator methods where they were
1763 clashing with methods in Kernel
1764 * The struct Qt::TextLayout::FormatRange is now in QtRuby
1766 2005-09-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1768 * Added painting/basicdrawing, concentriccircles, painterpaths and
1769 transformations examples
1771 2005-09-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1773 * Added mainwindows/application, menus, recentfiles and sdi examples
1775 2005-09-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1777 * Added layouts/basiclayouts, borderlayout and flowlayouts examples
1778 * Either a Qt::Layout, Qt::WidgetItem or Qt::SpacerItem ruby instance
1779 is created to wrap a C++ QLayoutItem instance, using
1780 QLayoutItem::widget() and QLayoutItem::spacerItem() methods to
1781 determine the exact class.
1783 2005-09-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1785 * Initial checkin of the Qt4 version of the rbuic tool
1786 * Added designer/calculatorform example
1788 2005-09-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1790 * Fixed problem with Qt::SqlTableModel.select() reported by
1791 Daniel Morris as a Qt3 QtRuby bug
1793 2005-09-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1795 * Added draganddrop/draggabletext, draggableicons, fridgemagnets,
1797 * Added itemviews/dirview, chart and pixelator Qt4 examples.
1798 * Fixed bug in QtByteArray marshalling where an underlying QByteArray
1799 was not being created if the Qt::ByteArray was created by passing a
1800 ruby String to the constructor.
1801 * Qt::ModelIndex's are not deleted on garbage collection as it caused
1804 * Added qVariantValue() and qVariantFromValue() methods
1806 2005-08-25 Caleb Tennsi <caleb@aei-tech.com>
1807 * Changed metaobject creation to not use d pointers per the comment
1811 2005-08-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1813 * Added dialogs examples; complexwizard, extension, findfiles,
1814 simplewizard, standarddialogs and tabdialog
1815 * Changed the types of Qt3 long longs and other Q_* types to the
1818 2005-08-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1820 * Added windowflags example
1821 * Some enum names for Qt::WindowFlags were clashing with QtRuby
1822 class names, such as Qt::Dialog. So some constants were added to
1823 use instead, renamed with an ending of 'Type'.
1825 2005-08-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1827 * Fixed some code to obtain a Qt::Object's properties for Qt4. Added
1828 property inspecting code for the new QPointF, QRectF etc types
1829 * Fixed a missing attr accessor bug in Qt::Enum
1830 * Added the sliders, spinboxes and tetrix code examples
1832 2005-08-22 Caleb Tennis <caleb@aei-tech.com>
1833 * Started a migration to more template based classes.
1835 just a start, but this *should* reduce redundant code by
1837 C++ templates for marshalling the various types.
1839 2005-08-22 Caleb Tennis <caleb@aei-tech.com>
1841 * Readded findChildren and findChild methods in C code under
1844 2005-08-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1846 * It isn't an error to pass a NULL void** stack to a qt_metacall()
1848 So don't throw a ruby exception, and assume it's for a slot with no
1851 * Added the icons, imageviewer, lineedits, screenshot and scribble
1854 * Qt::Enum is no longer a subclass of Qt::Integer, and it handles its
1856 arithmetic ops. A logical or arithmetic op on a Qt::Enum always
1858 ruby Integer, rather than a Qt::Enum as before.
1861 2005-08-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1863 * Added calculator, charactermap, groupbox and wiggly to code
1865 * Fixed crash in ruby QString signal types
1866 * Improved runtime resolution of the Qt4 Qt::Event classes
1867 * Added a Qt::Char.to_s method for converting a Qt::Char to a ruby
1870 2005-08-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1872 * Added digitalclock example
1874 2005-08-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1876 * Added various marshallers for QVector list types
1877 * Added the analogclock example from Qt4
1878 * Added inspect methods for the new Qt::PointF, Qt::RectF etc
1881 2005-08-19 Caleb Tennis <caleb@aei-tech.com>
1882 * For marshalling ItemLists, prefer using ->at(index) over an
1885 * Add findChild and findChildren methods which attempt to mimic their
1887 counterparts. Unit tests included. e.g.:
1888 object.findChildren(Qt::Widget)
1889 object.findChildren(Qt::Object, "ObjectName")
1890 object.findChildren(Qt::Object, /SomeName*/)
1892 findChild just returns the closest child to the parent
1895 2005-08-19 Caleb Tennis <caleb@aei-tech.com>
1897 * Added a unittests.rb file as the start of a unit test suite
1899 verifying QtRuby things are working properly and we don't
1903 * Qt4ify some of the code in handlers.cpp
1905 * Modified new_qobject to only add method definitions if the
1907 doesn't respond_to qt_metacall (was a TODO item).
1909 * Prefer using Ruby's ALLOCA_N over calloc in new_qt
1911 2005-08-19 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1913 * Added various marshallers for converting Qt4 C++ lists to and from
1916 2005-08-19 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1918 * Added marshaller to convert QMap<int,QVariant> to ruby Hash
1920 2005-08-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1922 * When a QMetaObject was constructed on the fly, the metaObject
1923 for the superClass was being obtained via Qbject::staticMetaClass()
1924 which returns a copy. However, this messed up qobject_cast() and
1925 QMetaObject::cast(), so now the parent metaObject is obtained via
1926 QObject::metaObject() which returns a pointer to a QMetaObject.
1928 2005-08-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1930 * Added Qt::MetaObject.slotNames() and signalNames() from Qt3 as they
1931 are very useful when using the KDevelop debugger
1932 * If Qt::Object.metacall() can't be found in the Smoke library a ruby
1936 2005-08-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1938 * Left some debugging code in. qt_metacall() was not being called
1939 correctly for non-ruby C++ slots.
1941 2005-08-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1943 * QtRuby now ported to Qt4. Pure Qt4 code with no dependencies on
1945 * Qt4 style QMetaObjects are created on the fly. Slots and signals
1947 using QObject::qt_metacall() and QMetaObject::activate()
1948 * The Cannon games tutorials t1 to t14 have been ported to Qt4
1950 * More work needed on the garbage collection mark() function. For
1952 it isn't possible to iterate through the items in a QListView in
1956 2005-08-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1958 * Caleb Tennis wrote:
1959 One nice feature would be to allow Qt::Object::inherits() to use
1961 naming scheme for valid lookups. For example, right now:
1963 irb(main):001:0> w = Qt::Widget.new(nil)
1964 irb(main):002:0> w.inherits("Qt::Widget")
1966 irb(main):003:0> w.inherits("Qt::Object")
1968 irb(main):004:0> w.inherits("QWidget")
1970 irb(main):005:0> w.inherits("QObject")
1973 * Inherits now works for "QObject", and for "Qt::Object" as well.
1975 2005-08-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1977 * Added a file called 'COPYING' to the qtruby project, with a
1979 the 'Qt' trademark in the QtRuby name is used with
1980 Trolltech's permission,
1981 followed by the text of the GPL v2 license.
1983 2005-07-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1985 * Qt4 port, initial checkin
1986 * Very little works yet, just hello world
1988 2005-07-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
1990 * Qt::Socket started working correctly when I and regenerated and
1992 my Smoke library. Before then it was calling the wrong version of
1993 QSocket::at() for some reason, and wasn't discarding bytes that had
1995 * Removed comment from the client.rb example about
1996 Qt::Socket.canReadLine
1997 always returning true now it works.
1999 2005-07-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2001 * Added example programs for client/server programming with
2003 and associated classes. client.rb illustrates current bugs in
2005 * Qt::Socket.canReadLine() always returns true
2006 * Qt::readLine() seg faults when called a second time
2007 * A memory leak and seg faulting problems like the above were
2011 2005-07-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2013 * When a Qt method returned a QString value type, such as:
2014 QString QSocket::readLine()
2015 A temporary QString was being created that wasn't deleted and
2017 memory leak. Fixes problem reported by Caleb Tennis.
2019 2005-06-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2021 * Improved display of Qt::Enums in the KDevelop debugger. With a p
2022 command it just looks like a constant, but a pretty print pp
2024 shows the type of the underlying C++ enum:
2030 #<Qt::Enum:0x1825db68 @type=Qt::AlignmentFlags, @value=16>
2032 2005-06-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2034 * Upped the version to 1.0.10
2036 2005-06-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2038 * The Object.id method was clashing with the one in Qt::WidgetStack.
2039 Both methods now work correctly. Fixes problem reported by Dave M.
2041 2005-05-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2043 * The rbuic '-subimpl' option now works correctly
2045 2005-05-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2047 * The initialize methods in code generated by the rbuic tool, now
2049 named parameters with default values, rather than '*k'
2051 2005-05-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2053 * Fixed bug where the rbuic tool was generating incorrect code
2054 for an array of strings used as a combo box value
2056 2005-05-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2058 * Added support for the QScintilla text editing widget, including an
2060 '--enable-qscintilla=yes' configure option. The QScintilla classes
2062 Qext:: namespace. Thanks to Blackshack for the idea and configure
2064 * The KDE namespace modules are only created if the Korundum
2066 Otherwise the Object namespace was being polluted with unused
2068 * Some enums in the QScintilla headers had a spurious comma after
2069 the last enum value, and kalyptus was failing with a parse error.
2070 The comma is now ignored.
2072 2005-05-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2074 * '!=' operator methods in the Smoke library were being shown via
2075 ruby introspection when they
2076 can't actually be written in ruby, and are derived from the
2077 corresponding '==' operator method.
2078 * '==' operator methods can now be called.
2080 2005-05-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2082 * Fixed bug in Smoke code generation where spaces were not
2083 being removed from operator
2084 methods such as 'operator *'
2085 * Operator methods are now displayed correctly via ruby
2088 2005-05-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2090 * Improved the format of enums displayed by rbqtapi and rbkdeapi
2092 2005-05-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2094 * Removed unused Qt::Internal functions
2095 * Added KNS:: to the namespaces expected by the rbkdeapi tool
2096 * Introspection via Object#methods, public_methods, protected_methods
2097 and singleton_methods
2098 or Module#constants, instance_methods, protected_instance_methods
2099 and public_instance_methods
2100 now all include methods from the Smoke runtime. This fixes part of
2101 the request in bug 105772, but
2102 not enabling 'respond_to?' to be used with Smoke methods.
2104 2005-05-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2106 * The Kernel.format() method was clashing with the
2107 Qt::MimeSource.format() method.
2108 The correct method is now called according to the type of the first
2110 problem reported by Armin Joellenbeck
2112 2005-04-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2114 * Removed superfluous "require 'pp'" statement
2116 2005-04-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2118 * Upped the version to 1.0.9 for the RubyForge release
2120 2005-04-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2122 * Fixed regressions in the rbqtapi and rbkdeapi utilities caused by
2123 the Qt::Internal namespace
2125 * Qt::version and Qt::ruby_version had wrongly been moved to the
2128 2005-04-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2130 * Upped the version to 1.0.8 for the RubyForge release
2132 2005-03-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2134 * An 'include Qt' statement in qtruby.rb where a couple of methods
2136 class Module was causing all the Qt methods to be added to Module.
2138 serious bug. Various methods in qtruby.rb are now module methods in
2140 module. Big thanks to Eric Veensta and Samir Patel for pointing out
2143 * It also fixes a problem reported by David Crosby where
2144 a "require 'time'" statement was
2145 incompatible with a "require 'Qt'" statement. As the cause was
2146 unknown, a hacky workround
2147 had to be added, which is no longer needed.
2149 2005-03-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2151 * When a subclass of QObject is instantiated in the C++ world, and
2152 the exact class doesn't
2153 exist in ruby, then scan up the inheritance heirarchy via
2154 QObject::metaObject() until a
2155 class is found which does have a ruby equivalent. Fixes problem
2156 reported by Dmitry Morozhnikor
2157 where a KViewPart was being returned as a Qt::Object, rather than a
2158 KParts::ReadOnlyPart.
2159 * The internal method 'cast_object_to()' now takes a class literal as
2161 rather than the class name as a string
2163 2005-03-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2165 * Moved Qt.rb from qtruby/lib/Qt to qtruby/lib. Fixes problem
2166 building qtruby on Mac OS X
2167 with extconf.rb reported by Michael Doppler
2168 * Rename 'README.build' as INSTALL
2170 2005-02-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2172 * Upped the version to 1.0.7 for the KDE 3.4 release
2173 * Removed the khtml:: namespace as it wasn't being used
2175 2005-02-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2177 * Added a KNS:: namespace for the KNewStuff library
2179 2005-02-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2181 * The KDE::Win::WindowInfo nested class is included in the Korundum
2184 2005-01-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2186 * Made some changes to get code generated by the rbkconfig_compiler
2187 to work. When an argument is a non-const reference to a primitive
2188 type, or a QString or QStringList, then don't delete it after the
2189 method call. This is because a class like KConfigSkeleton takes
2190 references, and then 'squirrels them away' - before the references
2191 were just pointing to junk on the stack.
2192 * The method 'isImmutable' is added to KDE::ConfigSkeletonItems
2194 2005-01-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2196 * If a ruby Array is passed as an argument to an overloaded method,
2198 priority to QStringList args.
2200 2005-01-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2202 * rbuic was giving widgets names containing a '@' to match the ruby
2204 name. However, this doesn't work with KDE::ConfigDialog which
2205 expects the names to
2206 match the ones generated in a KDE::ConfigSkeleton by
2207 rbkconfig_compiler so '@' is no
2210 2005-01-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2212 * Fixed bug reported by Ian Monroe where the KIO.copy() method wasn't
2214 the Smoke runtime. Modules methods are now trapped with
2216 despatched to call Smoke methods correctly
2217 * Added support for the KDE::ConfigSkeleton and subclasses.
2218 Constructors for nested
2219 classes can now be called correctly
2221 CCMAIL: ian.monroe@gmail.com
2223 2005-01-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2225 * Added a Qt::Integer.coerce method so that Qt::Integers and
2227 combined in arithmetic expressions with ruby Integers.
2229 2005-01-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2231 * Upped the version to 1.0.6 for the KDE 3.4 beta 1 release
2233 2005-01-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2235 * The Qt::Object pretty_print method now shows the class name of enum
2238 2004-12-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2240 * Fixed an interesting bug reported by Stephan Oehlert. Kernel has a
2242 open() which takes a String as the first argument. But when a call
2243 is made to an open()
2244 method in the Qt classes, it messes up the method_missing() logic
2246 Smoke library. Instead it attempts to call the Kernel method with
2247 the wrong arg types.
2249 * The problem is fixed by calling the appropriate method based on the
2250 type of the first arg. However, it is no longer possible to
2251 override virtual methods
2254 CCMAIL: stephan.oehlert@gmx.net
2256 2004-12-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2258 * Added a parent attribute to the Qt::Object pretty_print() method
2259 * Removed all the properties from the Qt::Object inspect() method
2261 x, y, width, height (the last four for for Qt::Widgets only). This
2263 the details of Qt::Objects that have more than just a handful of
2265 The full details can still be fetched with a pretty_print() call
2269 2004-12-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2271 * The qtruby runtime needs to be able to run the code for an
2272 initialize() method up
2273 to the point where the C++ instance has been constructed and
2275 jump out. It then re-runs initialize() with the wrapped instance.
2276 Before a callcc() call
2277 had been used for the jumping which worked fine. However, it made
2279 look strange when debugging code with the KDevelop debugger. The
2281 catch and throw instead, as they leave the stack in a more normal
2284 2004-12-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2286 * Added a work round for a bug caused by an incompatibility between
2288 the 'require time' statement, reported by David Crosby
2290 CCMAIL: dcrosby42@gmail.com
2292 2004-12-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2294 * Added a 'receivers' property to the Qt::Object inspector. This
2295 allows the active signal
2296 connections for a Qt::Object instance to be viewed in the KDevelop
2298 Hash. The hash keys are the signal names, and the hash values are
2299 arrays of the target
2300 signals/slots as Qt::Connection instances.
2302 2004-12-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2304 * Added 'metaObject' as an expandable property for Qt::Objects. This
2306 Qt::MetaClass class heirarchy to be browsed, and signals/slots
2307 declarations inspected.
2309 2004-12-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2311 * Fixed bug in lower case/underscore method naming to camel case
2314 2004-12-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2316 * Added an attribute of 'children' to the Qt::Object inspect method,
2318 of the Qt::Object's children
2319 * The QObjects in a QObjectList were not being created with the exact
2321 if they hadn't been allocated from within the ruby code, and just
2324 2004-12-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2326 * Qt::Object properities of type enum are shown by name in the
2328 and not as numeric literals
2330 2004-12-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2332 * Changed the format of the Qt::Color inspect string to
2333 #<Qt::Color:0x0 #ffffff>
2334 * Added some more attributes to the Qt::Font inspector
2335 * Added a Qt::Cursor inspector
2337 2004-12-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2339 * Fixed a bug where the debugger was calling an inspect method on an
2341 which wasn't fully initialized yet, and not of type T_DATA.
2343 2004-12-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2345 * Added inspect() and pretty_print() methods for Qt::SizePolicy
2346 * Greatly improved the Qt::Object Qt property based inspect() and
2348 methods. Property types such as Qt::Point, Qt::Font and Qt::Rect
2350 viewed as expandable items in the KDevelop debugger variable tree.
2352 2004-12-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2354 * More inspect() and pretty_print() methods for common classes to
2356 Qt::Color, Qt::Font, Qt::Point, Qt::Rect, Qt::Size, Qt::Date,
2357 Qt::DateTime and Qt::Time
2359 2004-12-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2361 * Added inspect() and pretty_print() methods for Qt::Objects that get
2362 the QObject properties and
2363 show them as 'name=value' pairs. This means the KDevelop debugger
2365 variables expandable and show their properties.
2367 2004-11-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2369 * Upped the QtRuby version to 1.0.5 for the KDE 3.3.2 release
2371 2004-10-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2373 * qError(), qWarning() and qFatal() are now Object instance methods,
2374 rather than Qt module
2375 methods. This means they don't need to be referenced with an
2376 ugly 'Qt.' module scope anymore.
2378 2004-10-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2380 * If a class method was called before super, it was wrongly throwing
2382 as an error. For instance, this call to i18n():
2385 super(TreeList, i18n("My App Preferences"),
2386 Help|Default|Ok|Apply|Cancel, Ok)
2390 2004-10-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2392 * Until super has been called in an initialize() method, Qt methods
2394 it. An exception is now thrown 'Instance not initialized', instead
2395 of it causing a seg fault.
2398 class MyWidget < Qt::ComboBox
2400 # Must call super first
2406 * Fixes problem reported by Han Holl
2407 CCMAIL: kde-bindings@kde.org
2409 2004-10-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2411 * Upped the version to 1.0.4 for the RubyForge release
2412 * Added some names to AUTHORS from the ChangeLog
2414 2004-10-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2416 * If the smokeruby_mark() function was called for an instance of a
2418 mark all the instances below it in the QObject tree, as not needing
2420 However, if a node in the tree didn't have a mapping onto a ruby
2421 instance the marking
2422 process stopped there, even though the grandchildren and their
2424 have a valid mapping onto ruby instances.
2425 * The solution is to always traverse the entire tree. Fixes problem
2426 reported by Han Holl.
2428 CCMAIL: kde-bindings@kde.org
2430 2004-10-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2432 * All the Qt::CanvasItems owned by a Qt::Canvas are marked with
2434 prevent them being garbage collected
2435 * The top level widgets are no longer disposed() on Qt::Application
2437 * Fixed some bugs in the chart example.
2439 2004-10-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2441 * Fixed arg matching to give priority to 'int' or 'signed' when
2442 passed a ruby Integer, or
2443 'double' when passed a ruby Float
2444 * The chart example can now save and load chart files
2446 2004-10-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2448 * Added greater than and less than operators to Qt::Enum, so that
2449 enums can be compared with
2451 * Added the chart example for Qt Tutorial #2
2453 2004-10-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2455 * Added Qt::Application.ARGV. It returns the original ruby ARGV array
2456 with Qt command line
2459 2004-10-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2461 * Added a global flag 'application_terminated'. Once this is set the
2462 QtRuby runtime will no longer
2463 delete any C++ instances. This will hopefully fix crash on
2464 application exit problems reported
2467 CCMAIL: kde-bindings@kde.org
2469 2004-10-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2471 * The recent fix for checking invalid arg types, didn't work with nil
2474 2004-10-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2476 * A QRgb[] color table was being wrongly deleted after marshalling
2478 2004-10-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2480 * If a ruby method overriding a virtual method returned a primitive
2481 type when an instance of a class
2482 was expected, it caused a seg fault. A ruby exception is now thrown
2483 instead. Fixes problem reported by
2487 class ContainerGrid < Qt::Widget
2489 # next line should return a Qt::Size, not
2495 Now gives the following error:
2497 qsize.rb:12:in `method_missing': Invalid type,
2498 expecting QSize (ArgumentError)
2501 CCMAIL: kde-bindings@kde.org
2503 2004-10-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2505 * The smokeruby_mark() function was only marking the immediate
2507 Qt::Object for not being garbage collected. It now marks all the
2509 in the object tree below it.
2511 2004-10-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2513 * Added Qt Designer Tutorial 'Creating Dialogs' translated into
2515 shows how you can combine ruby code generated from .ui files with
2517 tool, with your own code.
2519 * The .ui files and images are identical to the original C++
2522 * It features a simple Makefile to run rbuic when you change the .ui
2524 regenerate the ruby sources.
2526 2004-10-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2528 * Fixed rbuic '-embed' option which had been broken after adding DCOP
2530 to Korundum, after changes in the Qt::ByteArray class.
2531 * Fixed QRgb* marshalling problem where the ruby value was
2532 overflowing a signed int.
2533 The target for marshalling is now an array of unsigned ints.
2534 * When a Qt::Application exits after returning for an
2535 Qt::Application.exec() call, the top
2536 level widgets are deleted as well as the Qt::Application itself.
2537 This fixes a problem where
2538 ruby does garbage collection in an arbitrary order after the ruby
2539 app has exited. It destroys
2540 a ruby Hash of QMetaData info that the Qt::Application or
2541 Qt::MainWindow need to clean up.
2542 * The layout of the ruby code generated by rbuic has been improved
2543 with better indenting.
2544 * attr_reader attribute accessors have been added for the most
2545 important instance variables
2546 in an rbuic generated class to make them more easily accessed from
2549 2004-10-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2551 * Given a C++ instance and an approximate classname, the QtRuby
2553 various Qt rtti mechanisms such as QObject::className() to improve
2555 of the name. However, the numeric classId into the array of
2556 classnames in the Smoke
2557 runtime was not being updated in line with the more accurate name.
2558 * This caused problems with method argument matching which uses the
2560 rather than the ruby object's classname, and so QtRuby wrongly
2562 instance of a Qt::Widget was a Qt::Object.
2563 * Fixes problem reported by Han Holl
2565 CCMAIL: kde-bindings@kde.org
2567 2004-10-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2569 * Fixed a couple of errors in the rbuic generated code found as a
2571 the recently improved stricter arg type matching.
2573 2004-10-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2575 * When a ruby app exits, rb_gc_call_finalizer_at_exit() is called and
2577 instances are garbage collected. The problem is that this is done
2579 order, and Qt::Application was occasionally crashing in its
2581 QMetaObject info it still needed was being deleted before then.
2583 * Fixes problem reported by Thibauld Favre
2585 CCMAIL: <tfavre@mandrakesoft.com>
2587 2004-10-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2589 * When a QMetaData object was contructed the class name was a pointer
2591 string, and was being corrupted when the string was freed. The
2592 string is now copied.
2594 2004-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2596 * Han Holl's report about a when you pass an incorrect arg type to a
2598 method, it caused a crash has opened a 'can of worms'. This was
2600 was no arg type checking if there was only one candidate method in
2602 Smoke runtime. Now that arg type checking is applied to all QtRuby
2604 not just those that after lookup in Smoke map onto a single method,
2606 method resolution via the arg types has had to be greatly improved.
2608 been done, and so the arg type matching is now extremely fussy.
2610 CCMAIL: kde-bindings@kde.org
2612 2004-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2614 * An optimization in the overloaded method resolution matching causes
2616 instead of throwing a ruby exception when a programming error is
2618 If there is only one method found in the Smoke runtime, it assumes
2620 be the right one and just takes that.
2624 lay = Qt::HBoxLayout.new(self)
2625 ed = Qt::LineEdit.new('blah',self)
2626 # The next line should be: lay.addWidget(ed)
2629 * Fixes problem reported by Han Holl
2631 CCMAIL: kde-bindings@kde.org
2633 2004-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2635 * A common programming error is to accidently leave off the 'new'
2637 creating an instance. The QtRuby runtime wasn't correctly trapping
2639 call an instance method on a class object, and was seg faulting
2641 throwing an exception.
2645 # The next line should be: lay =
2646 Qt::HBoxLayout.new(self)
2647 lay = Qt::HBoxLayout
2648 ed = Qt::LineEdit.new('blah',self)
2651 * Fixes problem reported by Han Holl
2653 CCMAIL: kde-bindings@kde.org
2655 2004-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2657 * Upped version to 1.0.3 for the KDE 3.3.1 release
2659 2004-10-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2661 * Added Ruby Array to QPair<int,int>& marshaller
2663 2004-09-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2665 * The resolve_classname() function in handlers.cpp uses the various
2666 Qt rtti mechanisms to
2667 get a more accurate classname to instantiate as a ruby instance. It
2668 has now been extended
2669 with a callback to the Korundum library to do the same for KDE
2672 CCMAIL: zack@kde.org
2674 2004-09-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2676 * Added Jim Menard's ruboids as an OpenGL/Qt::GL* Widgets example
2677 * Improved instructions and exconf.rb for building the gui extension
2678 from Michal 'hramrach' Suchanek
2680 2004-09-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2682 * Upped the version to 1.0.2 for Rubyforge release
2684 2004-09-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2686 * Added a 'qui' extension for reading in .ui Qt Designer files at
2693 a = Qt::Application.new(ARGV)
2699 QUI::WidgetFactory.loadImages( ARGV[ 0 ] )
2700 w = QUI::WidgetFactory.create( ARGV[ 1 ] )
2705 a.connect( a, SIGNAL('lastWindowClosed()'), a,
2711 2004-09-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2713 * Upped the version to 1.0.1 for the current Rubyforge release
2715 2004-09-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2717 * Added Kate:: and KTextEdit:: namespaces for writing Kate plugins
2719 2004-09-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2721 * Some newer changes from the uic were added to the rbuic tool.
2723 2004-09-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2725 * Brought the rbuic code to uncompress zip files in line with the
2727 * Added a qmake project file for building the rbuic tool on Mac OS X,
2729 notes on how to build QtRuby on a Mac.
2731 2004-08-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2733 * Added Kontact module to provide a namespace for the kontact plugin
2736 2004-08-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2738 * Underscore naming for can be used for method names instead of camel
2740 preferred. Any underscores in method names are removed, and the
2742 character is capitalised. For example, either of these two forms
2744 to call the same method:
2746 create_standard_status_bar_action()
2748 createStandardStatusBarAction()
2750 2004-08-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2752 * A 'thing?' ruby method can now be used as a synonym for either
2753 isThing() or hasThing() in the Smoke runtime
2755 2004-08-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2757 * Upped the QtRuby version to 1.0.0 - it must work now then..
2759 2004-08-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2761 * Added 'long long' and 'unsigned long long' marshallers
2763 2004-07-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2765 * The smokeruby_mark() gc marking f'n now marks the QTableItems owned
2766 by a QTable so they don't get garbage collected, even if there are
2768 remaining references in the user code.
2770 2004-07-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2772 * Added a template based method for QValueList marshallers, and
2776 2004-07-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2778 * Removed any marshaller types that weren't in the Smoke runtime from
2780 type name to marshaller function lookup table.
2782 2004-07-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2784 * If a class doesn't have a virtual destructor, then no mapping was
2786 kept from the C++ instance to the corresponding ruby value. If the
2788 had virtual method callbacks, this meant that the ruby instance
2790 be found, and the callback couldn't be made.
2792 * Hence, the Qt::ToolTip callback in examples/qt-examples/tooltip
2794 work, as that class doesn't have a virtual destructor.
2796 * Added an 'isEnum()' function to use when matching args in
2800 * QCString arg types are chosen in preference to QByteArray ones,
2802 against ruby strings, when resolving an overloaded method call.
2804 * Qt::Enums and Qt::Integers can be marshalled to uints, longs and
2808 * Added a '==' operator to Qt::Enums so they can be compared with
2811 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2813 * Qt::Integer arithmetic and bit operations return Qt::Integers,
2815 than ruby Integers so that ops can be nested as for Qt::Enums.
2817 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2819 * The recently added Qt::Integer bit operators were returning a ruby
2821 type. When they were nested, the Integer didn't know how to convert
2823 Enum it was being or'd with to an Integer.
2825 * The solution is to add bit operators to the Enum class which return
2827 rather than Integers.
2829 * The following code didn't work:
2831 def initialize(message)
2832 super(nil, "passivedlg",
2833 Qt::WStyle_Customize | Qt::WX11BypassWM |
2834 Qt::WStyle_StaysOnTop |
2835 Qt::WStyle_Tool | Qt::WStyle_NoBorder)
2837 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2839 * Replaced QString casts to 'const char *' with latin1() calls
2841 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2843 * The Qt::Enum class was missing bit operations, so various bit
2845 were added to Qt::Enum's superclass, Qt::Integer.
2847 * This was causing this line from examples/uimodules/uidialogs.rb to
2850 dlg = KDE::DialogBase.new(parent, "sample_dialog", false,
2852 KDE::DialogBase::Ok |
2853 KDE::DialogBase::Cancel,
2854 KDE::DialogBase::Ok, true )
2856 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2858 * Added error messages for invalid slot or signal declarations
2860 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2862 * The standard ruby error message for missing constants and methods
2864 now used when they can't be found in the Smoke library. Removed
2866 comment about the previous approach, now I agree this is the best
2870 CCMAIL: me@lypanov.ne
2872 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2874 * Added qDebug(), qFatal() and qWarning() module methods
2876 2004-07-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2878 * The parsing of types passed to slots, (or returned from dcop slots)
2880 work with template types containing commas such
2881 as 'QMap<QString,QString>'.
2882 * Added 'QMap<QString,QString>&' and 'QMap<QString,QVariant>&' to the
2883 handlers.cpp string to marshaller lookup table.
2885 2004-07-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2887 * Added marshallers for QMap<QString,QString> and
2888 QMap<QString,QVariant> to and from ruby hashes
2890 2004-07-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2892 * The error messages for missing methods or missing constants now
2894 name of the missing item.
2895 * For example, this incorrect line:
2897 color_group.setColor( ColorGroup::MyMissingConst, blue )
2901 splitter.rb:16:in `const_missing': unresolved constant
2902 reference MyMissingConst (ArgumentError)
2904 * Implements suggestion from Jeff on the kdebindings list
2906 CCMAIL: kde-bindings@kde.org
2908 2004-07-19 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2910 * Added Qt::Enum type. Before a C++ enum was being marshalled to a
2912 Integer, and the type name of the enum was lost. A Qt::Enum is a
2914 of Integer with an extra type name.
2915 * This fixes a problem with overloaded method resolution where two
2917 only be an enum type such as this:
2919 # KPasswordEdit(EchoMode echoMode, QWidget *parent, const char
2921 # KPasswordEdit(EchoModes echoMode, QWidget *parent, const char
2924 pw2 = KDE::PasswordEdit.new(KDE::PasswordEdit::ThreeStars,
2927 2004-07-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2929 * After a non-const string arg was passed to a method, the value of
2931 is copied into the ruby value. But it wasn't being correctly
2933 correct string format according to $KCODE.
2934 * QString to ruby string conversions in QStringLists were not
2937 2004-07-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2939 * Removed superfluous '(void *)' cast which was causing compilation
2940 problems with gcc 3.4
2941 * Fixes problem reported by Jochen Immend�fer on comp.lang.ruby
2942 CCMAIL: kde-bindings@kde.org
2944 2004-07-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2946 * Qt eucJP and Shift-JIS codecs used to support ruby $KCODE values
2948 for SJIS and 'e' for EUC
2950 2004-07-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2952 * Added support for strings in QtRuby programs being written in
2954 Use the '-Ku' command line option or '$KCODE=u' in the program.
2955 * Removed recently added QChar marshalling as it wasn't very i18n
2958 2004-07-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2960 * Added QChar marshalling
2962 2004-07-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2964 * Fix for passing C++ 'bool*' and 'bool&' argument types
2965 There is a similar problem for bool arg types as with ints, and the
2967 Qt::Boolean class can be used like this:
2969 # QFont getFont(bool * ok, const QFont&initial, QWidget* parent =
2972 ok = Qt::Boolean.new
2973 font = Qt::FontDialog.getFont(ok, Qt::Font.new("Helvetica
2974 [Cronyx]", 10), self)
2976 # font is set to the font the user selected
2978 # the user canceled the dialog
2981 Use 'nil?' to test the value returned in the Boolean
2982 * Signal and slot type signatures are 'normalized' and any unwanted
2985 * Fixed problem with QByteArray arg type matching in overloaded
2988 2004-07-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
2990 * Fix for passing C++ 'int*' and 'int&' argument types
2991 Ruby passes numeric values by value, and so they can't be changed
2993 method. The Qt::Integer class provides a mutable numeric type which
2995 when passed as an argument. For example, this C++
2996 method 'findByFileContent()':
2998 # static Ptr findByFileContent( const QString &fileName, int
3001 acc = Qt::Integer.new(0)
3002 fc = KDE::MimeType.findByFileContent("mimetype.rb", acc)
3004 It supports the arithmetic operators, and so expressions such
3008 2004-07-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3010 * Replaced obsolete STR2CSTR() calls with StringValuePtr()
3012 2004-06-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3014 * The internal findAllMethods() method now returns nil rather than an
3016 if the given classid is greater than 'smoke->numClasses'.
3017 Otherwise, it wasn't
3018 possible to distinguish between a class with no methods, or
3022 2004-06-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3024 * Added QStrList marshalling
3026 2004-06-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3028 * Improved Garbage Collection, dispose() and isDisposed() methods
3029 - When a ruby instance is garbage collected, the underlying C++
3030 instance will only be
3031 deleted if it isn't 'owned' by a parent object. Normally this
3032 will 'just work', but
3033 there are occasions when you need to delete the C++ ahead of
3034 garbage collection, and
3035 whether or not it has a parent. Use the dispose() and
3036 isDisposed() methods like
3039 item0.takeItem(item1)
3040 item0.insertItem(item1)
3044 puts "item2 is disposed"
3047 - Fixes problem reported by Hans Fugel
3049 2004-06-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3051 * The marshalling TypeHandler function pointers are now looked up in
3053 QAsciiDict, rather than a ruby Hash.
3054 * Some unused functions removed
3055 * QtRuby version upped to 0.9.8
3057 2004-06-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3059 * New flags were added for Smoke methods - mf_internal and
3061 This allows copy constructors which are only used internally by the
3063 runtime, to be excluded from the standard api.
3066 2004-05-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3068 * When ARGV was passed to the Qt::Application constructor, it was
3070 altered, and the name of the ruby program added as a first entry.
3072 constructor now uses a copy of the array, and ARGV is left
3075 2004-05-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3077 * Added a '-kde' option to the rbuic tool to generate
3079 instead of require 'Qt' statements, and use KDE widgets.
3081 2004-04-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3083 * Applied patch from Marek Janukowicz.
3084 * The patch fixes some perlisms, that caused errors on loading a Ruby
3086 generated from .ui file for Qt::MainWindow subclass
3088 2004-04-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3090 * The rbuic now correctly names KDE widgets with a KDE:: prefix
3091 * If the rbuic -x option is used, a KDE top level is generated if any
3092 KDE widgets have been found.
3094 2004-04-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3096 * Fixed bug in rbuic generated code for setResizeMode()
3098 2004-04-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3100 * Improved classname resolution for QListViewItem and QTableItem
3101 subclasses using rtti() calls
3103 2004-03-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3105 * Ruby slots and signals are now inherited correctly
3106 * This causes problems with code generated by the rbuic utility
3107 * Fixes bug 78273 reported by Imobach Sosa
3109 2004-03-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3111 * When a mutable, non-const QString, int*, int&, bool* or bool& is
3113 to a method, the corresponding ruby value is now updated after the
3115 * Some f'ns are no longer static, so that the korundum extension can
3119 2004-03-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3121 * The f'n new_qobject is no longer static, and can be called from
3124 2004-03-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3126 * Fixed bugs in QCString, QString and QByteArray marshalling.
3127 - When a C++ method with a mutable, non-const QCString arg type
3128 is called from ruby, the C++ arg value is copied back into the
3129 corresponding ruby arg VALUE after the call.
3130 - A pointer to a locally allocated QString was being returned,
3131 giving memory corruption problems.
3132 * The default debug level in qtruby.rb is DebugLevel::OFF, otherwise
3133 very verbose error messages are produced.
3135 2004-01-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3137 * Fixed bug where a QCString was being ranked equally with a QString,
3138 when resolving ambiguous method overloading. Caused the KDE::URL
3139 constructor to fail with a string arg.
3141 2003-11-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3143 * Added DOM:: namespace for the DOM:: classes in the Smoke library.
3144 * The scope operator in nested classnames is now '::' rather
3145 than '__', so changed the qtruby runtime to expect that.
3147 2003-11-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3149 * Added the KillerFilter event filtering example from chapter 16
3150 of 'Programming with Qt'
3151 * Improved classname resolution via the Qt rtti mechanisms in
3152 QObject, QEvent and QCanvasItem. This fixed a problem in the
3153 KillerFilter example when a QMouseEvent was passed to the ruby
3154 event handler, it was being instantiated as a ruby Qt::Event,
3155 rather than a Qt::MouseEvent.
3157 2003-11-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3159 * Improved nil argument matching, and nil can match any type now
3160 not just classes. Translated the code from the Qt.pm in PerlQt,
3161 after discussion on the kde-perl list.
3162 * Fixed bug in rbuic where a C++ 'QString::null' was "" in ruby, and
3163 should have been a nil.
3165 2003-11-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3167 * Finally fixed huge leak, causing the progress.rb example to grow by
3169 * Added a cache from ruby classname to Smoke class id
3170 * Speeded up method selector look ups
3171 * Put some C++ code inside blocks to ensure that the destructor clean
3172 up code was called, when the current f'n longjmp's up the stack
3174 than returns normally.
3175 * QtRuby looking good, raised the version to 0.9.6 to celebrate
3177 2003-11-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3179 * Fixed some memory leaks
3180 * Ensured that any instance 'owned' by ruby, ie with the the
3182 flag set to true, is always added to the pointer_map.
3183 Otherwise, the same C++ instance can be wrapped twice and will be
3187 2003-11-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3189 * When marshalling a const ref type to a ruby VALUE, it is now copied
3190 * Applied some fixes for construct_copy() from the PerlQt version of
3192 * Fixed some minor bugs in the progress.rb Qt example
3194 2003-11-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3196 * Added method selector caching for class methods and constructors,
3197 although performance still 'sedate' compared with C++ or Perl.
3199 2003-10-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3201 * The smokeruby_mark() f'n now marks the QListViewItems in a
3203 * Fixed a QLayoutItem crash in smokeruby_free()
3205 2003-10-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3207 * The smokeruby_mark() f'n was completely wrong, as it is only called
3209 the current object is already marked. So marking the current object
3210 doesn't make a lot of sense. Instead, if the instance is a kind of
3211 QObject then its childeren are marked.
3212 * The smokeruby_delete() object doesn't delete instances which have
3213 parents of one sort or another.
3214 * Made some fixes to the tutorial examples
3215 * Removed equality '==' operator overloading as it only expects a
3217 arg in ruby, and not two.
3219 2003-10-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3221 * Changed some error messages in do_method_missing() to be 'debug
3224 2003-10-22 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3226 * Got the checklists.rb example working after bug report from Mikhail
3228 - Corrected some coding errors in the example itself.
3229 - The arg matching code in method_missing() has been improved and
3231 - In the overloaded arg type resolution matching, an enum is
3233 - A class which matches exactly is a better match than a subclass.
3234 Multiple matches are allowed as long as there is a 'best match'.
3235 - Operator overloading now looks for methods of the
3237 'operator-=' etc in the Smoke runtime.
3239 2003-10-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3241 * Fixed serious random crash problem
3242 - qt_invoke() and qt_emit() were not calling super if a ruby signal
3244 slot hadn't been found, which stopped C++ signals from working.
3245 - This prevented destroy() signals from invoking event filter list
3247 up when a QObject was deleted, leaving deleted instances in the
3249 - 'QUObject*' args are now marshalled as a ruby list with a single
3250 entry of a VALUE wrapping the pointer.
3251 * The ruby ALLOCA_N macro is no longer used as it is based on
3253 which doesn't seem a good idea. malloc(), calloc() and free() are
3257 2003-10-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3259 * Added khtml:: namespace, although it isn't in the SmokeKDE runtime
3261 * Improved method_missing error messages if a method can't be
3264 2003-10-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3266 * Added KIO:: and KParts:: namespaces for the new classes in
3269 2003-10-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3271 * Korundum KDE ruby extension
3272 - made various changes so it can be linked against the QtRuby code
3274 2003-09-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3276 * Removed leading 'K' from class names of when adding to KDE::
3278 As per Germain Garand's suggestion on the kde-bindings list:
3280 ..actually, I used the same scheme as for Qt when possible, that
3282 $class =~ s/^Q/Qt::/ or
3283 $class =~ s/^K/KDE::/ or
3284 $class = "KDE::" . $class
3285 unless $class eq "Qt";
3287 2003-09-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3289 * Added support for KDE classes under module KDE:: for use with
3290 the new libsmokekde.so. You can now write KDE programs in Ruby,
3291 here is Hello World:
3293 about = KDE::KAboutData.new("one", "two", "three")
3294 KDE::KCmdLineArgs.init(1, ["four"], about)
3295 a = KDE::KApplication.new()
3296 hello = KDE::KPushButton.new(nil) { setText "Hello World" }
3297 a.setMainWidget(hello)
3301 2003-09-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3303 * The rbuic -embed option finally works. Fixed QByteArray
3306 2003-09-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3308 * Improved the rbuic -embed option, and added some fixes
3310 2003-09-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3312 * More passing blocks to constructors fun! You can now also pass
3313 an arg to the block, and it will be run in the context of the arg:
3315 w = MyWidget.new { |theWidget| theWidget.setCaption "foobar" }
3317 I got this idea from the FXRuby bindings, from the ChangeLog:
3319 "This approach has the advantage that the initialization code now has
3320 access to the outer scope, as blocks normally would. Thanks to
3321 Rich Kilmer for this suggestion."
3323 If you don't pass an arg to the block, the block is run in the
3325 of the new instance as before.
3327 * Debugging left in handlers.cpp (must stop doing this)
3329 2003-09-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3331 * Marshallers now return Qnil, rather than Qundef (for internal use
3334 2003-09-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3336 * Improved garbage collection with various 'ad hoc' rules from the
3337 QtJava bindings about when it's ok/not ok to destruct an instance.
3338 Not always just a 'parent() != 0' check in Qt.
3340 2003-09-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3342 * Added QByteArray <-> Ruby string marshaller
3344 2003-09-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3346 * Blocks can now be passed to constructors, like this:
3347 w = MyWidget.new { setCaption("foobar") }
3349 2003-09-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3351 * Added method selector caching, scribbling may be slightly faster..
3353 2003-09-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3355 * GC getting closer to working. Debugging code improved.
3357 2003-09-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3359 * From below 'watch out for extra crashes!' - indeed! Have now
3361 smokeruby_free() and smokeruby_mark() until garbage collection
3364 2003-09-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3366 * The pointer_map is now a QPtrDict rather than a ruby Hash, and
3367 the entries are weak references. An implementation was tried
3368 using the ruby WeakRef class, but it didn't work because
3370 didn't prevent them being garbage collected.
3371 * smokeruby_free() and smokeruby_mark() have been implemented
3372 * The C++ instance for a ruby object is deleted in smokeruby_free(),
3373 so watch out for extra crashes!
3374 * Improved README with more details about QtRuby
3376 2003-09-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3378 * Improved error message handling, changed rb_error() calls to
3380 * Decided changing method calls like foobar? to isFoobar() not a good
3382 as the Qt property could just as also be hasFoobar() or foobar()
3384 2003-09-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3386 * Set methods such as autoMask= are converted to setAutoMask()
3387 * Get methods such as modal? are converted to isModal()
3389 2003-08-31 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3391 * rbuic code generation brought up to date wrt Qt 3.2 uic
3392 Main change is that a 'languageChanged()' method is generated
3394 2003-08-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3396 * rbuic() code generation fixes
3398 2003-08-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3400 * Added 'Run Selection' menu option to the QtRuby shell
3402 2003-08-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3404 * Operator methods are now called 'operator..' in QGlobalSpace and
3406 * Added unary minus, and a test in opoverloading.rb
3408 2003-08-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3410 * Updated TODO list, improved rbuic code generation for images
3412 2003-08-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3414 * Improved operator overloading to work with operators not in
3417 2003-08-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3419 * Changed the operator overloading implementation to be more like
3422 2003-08-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3424 * Translated the rbqtsh filePrint() method from perl
3426 2003-08-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3428 * Added 'changed' attribute to the MetaInfo class, so that the C++
3430 is reconstructed if the slots or signals are changed.
3431 * Changed window title on rbqtsh to 'QtRuby'. The example slot now
3433 correctly. Only just tried this utility - Wow Alex!!
3435 2003-08-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3437 * findMethod() now looks in the QGlobalSpace pseudo class as well as
3438 the normal target class.
3439 * The bitBlt() code in the scribble example works correctly
3441 2003-08-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3443 * Removed ugly _current_object global variable.
3444 The current target object is now passed to the MethodCall
3447 2003-08-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3449 * Removed obsolete rb_enable_super() calls
3450 * Removed test for _current_object in class_method_missing()
3451 * Fixed missing index in signalInfo() method
3452 * Added Qt scribble example - TODO add Qt::PaintDevice.bitBlt() calls
3455 2003-08-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3457 * Added rbuic tool for ruby Qt Designer support
3459 2003-08-12 Alexander Kellett <lypanov@kde.org>
3461 * Add debug level setting via Qt::debug_level
3462 * When calling .new on a Qt object with a incorrect prototype
3463 the list of appropriate constructors is printed
3464 * Fix a number of cases in which imperfect code would cause a crash
3466 2003-08-11 Alex Zepeda <zipzippy@sonic.net>
3468 * Various fixes to get QStringList marshalling working
3469 * Treat Ruby strings as UTF-8 strings in order to fix the QFont
3472 2003-08-09 Alexander Kellett <lypanov@kde.org>
3474 * Added support for operator overloading
3476 2003-08-07 Alexander Kellett <lypanov@kde.org>
3478 * Added rbqtapi and rbqt tools (port of the PerlQt tools of the same
3481 2003-08-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3483 * Added some TODO list entries, added Alex to the AUTHORS list
3485 2003-08-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3487 * Fixed 'int&' marshalling so script name appears in window title
3489 2003-08-12 Alexander Kellett <lypanov@kde.org>
3491 * Add several new marshalling types - QCanvasItemList for example,
3492 unfortuantely due to several improvements in Qt 3.2 these
3493 improvements will not be seen when compiling against Qt 3.1.2
3495 2003-08-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3497 * Moved SLOT(), SIGNAL() and emit() to global scope
3499 2003-08-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3501 * Removed redundant 'rb_eval_string("include Qt")' call from
3502 extension initialization.
3504 2003-08-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3506 * Qt::Application constructor safer, but program name still not
3507 appearing in the window title
3509 2003-08-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3511 * Fixed bug in resolution of overloaded Qt::Popup.insertItem()
3514 2003-08-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3516 * Use new const_missing from ruby 1.8.x to allow for constant access
3517 from base class, for example "Qt::RichText"
3518 * QString::null now maps onto Qnil, rather than a zero length ruby
3521 2003-08-04 Alexander Kellett <lypanov@kde.org>
3523 * Allow for accumulative slots/signals declarations in a class
3526 2003-08-02 Alexander Kellett <lypanov@kde.org>
3528 * Fix several deprecation warnings when running under 1.8.x
3529 * Several more build fixes
3531 2003-08-01 Alexander Kellett <lypanov@kde.org>
3533 * Slightly improve ease of debugging of qtruby programs
3534 which subclass Qt base classes by print out some useful
3535 debugging informationn when/if method_missing ever
3536 fails to find a matching function in the baseclass.
3538 2003-08-01 Alex Zepeda <zipzippy@sonic.net>
3540 * Remove need to manually run extconf.rb by some automation via a
3542 * Various other build fixes
3544 2003-07-31 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3546 * Fixed bug in marshalling QString::null to a ruby VALUE
3548 2003-07-31 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3550 * Changed require in Qt.cpp to 'Qt/Qt.rb' instead of 'lib/Qt/Qt.rb'
3552 2003-07-31 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3554 * Fixed problem with non-working installed version, lib/Qt.rb moved
3557 2003-07-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk>
3559 * QtRuby - a Ruby SMOKE adaptor for Qt, initial checkin