summaryrefslogtreecommitdiffstats
path: root/qtruby/ChangeLog
blob: 1b276ab5f0a35a9478f1c0373a0ae9a452b512cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
2007-02-19  Richard Dale  <[email protected]>

	* Fixed a bug where the sort method of TQt::ListView and TQt::ListViewItem
	  was no longer working, as the classes are 'Enumerable' and ruby was
	  calling the ruby sort method instead. Thanks to kelko for reporting it
	  on #kde-ruby.

2006-12-05  Richard Dale  <[email protected]>

	* Backported some improvements to TQt::Variants from Qt4 QtRuby
	* When marhalling TQMap types with TQVariant values, if the Ruby value isn't
	  a TQt::Variant then one is created
	* TQt::Variants can now be constructed with Hash's of String/TQt::Variant
	  pairs, and from Arrays of TQt::Variants
	* When marshalling TQValueList<TQVariant> types from Ruby to C++, if any elements
	  aren't Ruby TQt::Variants, they are automatically converted. Hence, the
	  following will work:

		v = TQt::Variant.new([1, 2, 3])

	  The TQt::Variant v will contain a list of 3 TQVariants with typeName 'int'
	* Change all instances of strcmp() to tqstrcmp()

2006-11-20  Richard Dale  <[email protected]>

	* Made TQt::ListView, TQt::ListViewItem, TQt::BoxLayout, TQt::HBoxLayout,
	  TQt::VBoxLayout and TQt::GridLayout Enumerable with implementations
	  of each() so they don't need to use the Qt External iterators like
	  TQt::LayoutIterator anymore. For instance:

		lv = TQt::ListView.new do
			["one", "two", "three", "four"].each do |label|
				TQt::ListViewItem.new(self, label, "zzz")
			end
		end

		lv.each do |item|
			p item.inspect
			pp item.inspect
		end

	* Add inspect() and pretty_print() methods to TQt::ListViewItem so that
	  they show the text of their columns

2006-09-19  Richard Dale  <[email protected]>

	* Upped the QtRuby version to 1.0.13 for the KDE 3.5.5 release

	* Fixed a crash when a slot was inherited by a subclass, and the
	  subclass had no slots or signals of its own

2006-09-17  Richard Dale  <[email protected]>

	* Fixed bug reported by Caleb Tennis where temporary TQString const arguments
	  were only being deleting after marshalling if they weren't const types.

2006-09-14  Richard Dale  <[email protected]>

	* Added a new variant of connect, which takes a SIGNAL as an argument, along with
	  a block. For example:

		quit.connect(SIGNAL(:clicked)) { puts 'quit pressed' }

	  The block is called in the context of where the connect call was made, and 'self'
	  needn't be a TQt::Object. It is similar to the signal_connect() method in
	  ruby-gnome. This was suggested by rickdangerous on the #qtruby irc channel.

2006-09-13  Richard Dale  <[email protected]>

	* Blocks can now be used as slots in TQt::Object.connect() calls. There are two
	  versions, a singleton method and an instance method. 

	* Here is an example of the class method connect() call with a block as a target:

		app = TQt::Application.new(ARGV)
		quit = TQt::PushButton.new('Quit')
		TQt::Object.connect(quit, SIGNAL('clicked()'), app) { puts 'quit clicked' }

	  The block is executed in the context of the target instance, 'app' in this 
	  case.

	* And the instance method form:

		class MyButton < TQt::Button
			def initialize(text)
				super(text)
				connect(self, SIGNAL('clicked()')) { puts 'button clicked' }
			end
			...

	  The block is executed in the context of self - the instance making the 
	  connect() call.

	* The Rails version of the Ruby 1.9 method Object#instance_exec was used
	  to invoke the block. Thanks to kelko on the #kde-ruby channel for the
	  idea and the code, and #rickdangerous for further discussion.

2006-08-29  Richard Dale  <[email protected]>

	* Backported some memory leak fixes from Qt4 QtRuby

2006-08-10  Richard Dale  <[email protected]>

	* The Ruby VALUE to 'uchar *' marshaller wasn't working correctly if the
	  Ruby string contained nulls. Fixed by Dirk Mueller (thanks) and also 
	  applied for 'char *' types.

2006-07-12  Richard Dale  <[email protected]>

	* The Ruby String to 'char *' and String to 'unsigned char *' were using
	  the pointer within the Ruby String directly which meant they were
	  deleted when the Ruby String was gc'd. So they are copied with
	  strdup () instead.

2006-06-05  Richard Dale  <[email protected]>

	* The metaObject methods for slots and signals are no longer added when
	  a TQt::Object is constructed, but when slots or signals are added to
	  a class. This means that signals as well as slots can be added to an
	  existing instance.

2006-06-04  Richard Dale  <[email protected]>

	* For TQt::TQObject classes which are immediate subclasses of TQt::Base,
	  don't add C metaObject() and tqt_invoke() methods as they aren't
	  needed. This means that a TQMetaObject is no longer constructed for
	  these classes, and the one that the corresponding C++ class has is
	  returned instead.

2006-05-20  Richard Dale  <[email protected]>

	* Fix regression for dynamic class creation via TQMetaObject info causing
	  a crash.
	* A list of properties is now returned via TQt::MetaObject.propertyNames
	  for a TQt::Object with properties for the inspect and pretty_print 
	  methods.

2006-05-15  Richard Dale  <[email protected]>

	* Removed the customized version of Kernel.exec, Kernel.open etc
	  as they aren't needed anymore.

2006-05-14  Richard Dale  <[email protected]>

	* When an unknown C++ class is found, a corresponding Ruby class is now
	  created. For instance, if a KPresenter KPart is loaded, a 
	  KDE::PresenterDoc class is created.
	* It is now possible to set and get properties without needing to use
	  TQt::Object.property() and TQt::Object.setProperty(). For instance:

		factory = KDE::LibLoader.self().factory("libkpresenterpart")
		@kpresenter = factory.create(self)
		p @kpresenter.presentationDuration
		@kpresenter.presentationDuration = true

	* A TQt::Variant.to_ruby method has been added which returns a Ruby value
	  corresponding to the current value of a TQt::Variant
	* A boolean TQt::Variant can now be constructed with a TQt::Variant.new(true)
	  call, and a dummy second arg (as for C++) is no longer needed.

2006-05-07  Richard Dale  <[email protected]>

	* An an type of TQ_UINT16 wasn't working with QtRuby. Fixes problem
	  reported by maelclerambault.

2006-05-03  Richard Dale  <[email protected]>

	* The tqt_emit() and tqt_invoke() methods are overriden by the QtRuby
	  runtime. When they are called the runtime looks for a Ruby slot or
	  signal matching the call, and invokes it if found. If a Ruby version
	  wasn't found for a signal however, the tqt_invoke() method was being
	  called in the Smoke library instead of tqt_emit(). This occasionally
	  caused a crash in code using KDE::HTMLPart.

2006-04-17  Richard Dale  <[email protected]>

	* Made :foobar a synonym for 'foobar()' for slots and signals
	* Added some calls for TQt::Event.type methods to force them
	  to go via method_missing()

2006-03-29  Richard Dale  <[email protected]>

	* Don't special case open() in virtual method callbacks, because all
	  the Qt classes with open methods now have explicit open() method 
	  calls. So it isn't possible that Kernel.open() will be called 
	  wrongly anymore.

2006-03-29  Richard Dale  <[email protected]>

	* Added a KDE::KonsolePart class for when a konsolePart KPart is
	  dynamically loaded.

2006-03-21  Richard Dale  <[email protected]>

	* Added various explicit calls to method_missing() for methods which
	  are defined in Kernel and Object, such as 'exec', 'select', 'format'
	  etc. Otherwise, the corresponding methods in the Smoke library were 
	  not being invoked correctly.
	* Removed a virtual destructor compile warning
	* Removed obsolete qtruby-only.patch and tdevelop project file

2006-03-14  Richard Dale  <[email protected]>

    * Fixed bugs in const lists marshallers, where the items in the ruby
	  Array were wrongly being updated after a method call

2006-02-09  Richard Dale  <[email protected]>

	* The Kernel#select method was being redefined as it clashed with
	  TQt::SqlCursor#select and TQt::SqlSelectCursor#select methods. This
	  caused a problem when QtRuby was used with Rails ActiveRecord which
	  also has a select method. So the methods are now defined in the Sql
	  classes, and use method_missing() to explictly invoke the methods in
	  the Smoke library. Fixes problem reported by Imo Sosa.

2006-01-18  Richard Dale  <[email protected]>

	* Improved the debug logging of virtual method callbacks so that the
	  arg types are shown too

2005-12-16  Richard Dale  <[email protected]>

	* The logger_backend() function has been removed and replaced with 
	  tqWarning() calls. This was because of problems with getting the 
	  logger_backend() code to work on Windows.

2005-12-16  Richard Dale  <[email protected]>

	* Improved the code to call a C++ slot via tqt_invoke() when a ruby slot hasn't 
	  been defined. It now invokes the method in the Smoke lib directly, rather
	  than going via method_missing().

2005-12-08  Richard Dale  <[email protected]>

	* The ruby display() method was clashing with a display() method in some
	  QtRuby classes, and so it was aliased to _display(). However, this caused
	  problems with the ruby RMagick extension. The display methods are now
 	  special cased in TQt::LCDNumber, TQt::WhatsThis and TQt::TimeEdit. Fixes
	  problem reported by David Corbin.
	* The slots and signals methods are now module methods of TQt::Base,
	  rather than defined as ordinary methods in class Module, reducing name
	  space pollution. Thanks to Esteban Manchado for pointing this out.

2005-12-06  Richard Dale  <[email protected]>

	* QtRuby didn't work with versions of ruby > 1.8.3, as it didn't call
	  initialize methods correctly. It used the rb_respond_to() method
	  to check it a newly created qt instance responded to :initialize.
	  However, in newer versions of ruby rb_responds_to() ignores
	  private methods such as initialize(). The solution was to just remove
	  the test, as it was redundant anyway.
	* Fixes problem reported by Hans Fugel and Caleb Tennis.

2005-11-21  Richard Dale  <[email protected]>

	* When dispose() was used to delete a ruby instance, the mapping between
	  the C++ ptr and corresponding ruby instance was not being removed, and
	  this caused a crash. Fixes problem reported by Christopher Chan-Nui.

2005-11-04  Richard Dale  <[email protected]>

	* 'signed int&' types were not being matched or marshalled correctly

2005-11-02  Richard Dale  <[email protected]>

	* A TQt::Canvas owned by a TQt::CanvasItem is marked as in use
	  and not needing garbage collection

2005-10-21  Richard Dale  <[email protected]>

	* Argument types of 'unsigned short int' were not working. Fixes
	  problem reported by Ian Monroe

2005-10-05  Richard Dale  <[email protected]>

	* More fixes from the Qt4 version
	* The TQt::ByteArray class is now a normal Smoke class, 
	  rather than a special case, as it's easier to make a
	  TQt::ByteArray look like a ruby String, than the other way
	  round.
	* The overloaded method resolution for enum arg types has been 
	  improved
	* Added missing relational operators to TQt::Integer


2005-09-26  Richard Dale  <[email protected]>

	* Added some fixes from the Qt4 version of QtRuby
	* There was a clash between operator methods in Kernel
	  for '>', '>=', '<' and '<=' and the ones in the Smoke lib.
	* Fixed a TQt::ByteArray marshalling problem

2005-09-12  Richard Dale  <[email protected]>

	* Fixed various problems with the rbuic code generation for database
	  .ui forms reported by Daniel Morris

2005-09-11  Richard Dale  <[email protected]>

	* Fixed problem with TQt::SqlCursor.select() reported by Daniel Morris

2005-09-02  Richard Dale  <[email protected]>

	* Added a TQt::Char.to_s method for converting a TQt::Char to a ruby
	  string

2005-08-09  Richard Dale  <[email protected]>
	
	* Caleb Tennis wrote:
	  One nice feature would be to allow TQt::Object::inherits() to use the QtRuby 
	  naming scheme for valid lookups.  For example, right now:

	    irb(main):001:0> w = TQt::Widget.new(nil)
	    irb(main):002:0> w.inherits("TQt::Widget")
	    => true
	    irb(main):003:0> w.inherits("TQt::Object")
	    => false
	    irb(main):004:0> w.inherits("TQWidget")
	    => true
	    irb(main):005:0> w.inherits("TQObject")
	    => true

	* Inherits now works for "TQObject", and for "TQt::Object" as well.

2005-08-04  Richard Dale  <[email protected]>

	* Added a file called 'COPYING' to the qtruby project, with a note that
	  the 'Qt' trademark in the QtRuby name is used with Trolltech's permission,
	  followed by the text of the GPL v2 license.

2005-07-30  Richard Dale  <[email protected]>

	* TQt::version and TQt::ruby_version are now module methods

2005-07-15  Richard Dale  <[email protected]>

	* TQt::Socket started working correctly when I and regenerated and rebuilt 
	  my Smoke library. Before then it was calling the wrong version of 
	  TQSocket::at() for some reason, and wasn't discarding bytes that had 
	  already been read.
	* Removed comment from the client.rb example about TQt::Socket.canReadLine
	  always returning true now it works.

2005-07-14  Richard Dale  <[email protected]>

	* Added example programs for client/server programming with TQt::Socket
	  and associated classes. client.rb illustrates current bugs in QtRuby
	* TQt::Socket.canReadLine() always returns true
	* TQt::readLine() seg faults when called a second time
	* A memory leak and seg faulting problems like the above were reported
	  by Caleb Tennis

2005-07-09  Richard Dale  <[email protected]>

	* When a Qt method returned a TQString value type, such as:
	       TQString TQSocket::readLine()
	  A temporary TQString was being created that wasn't deleted and caused a 
	  memory leak. Fixes problem reported by Caleb Tennis.

2005-06-28  Richard Dale  <[email protected]>

	* Improved display of TQt::Enums in the KDevelop debugger. With a p
	  command it just looks like a constant, but a pretty print pp command
	  shows the type of the underlying C++ enum:

	  (rdb:1) p AlignTop 
	  16

	  (rdb:1) pp AlignTop 
	  #<TQt::Enum:0x1825db68 @type=TQt::AlignmentFlags, @value=16>

2005-06-04  Richard Dale  <[email protected]>
	
	* Upped the version to 1.0.10

2005-06-04  Richard Dale  <[email protected]>

	* The Object.id method was clashing with the one in TQt::WidgetStack.
	  Both methods now work correctly. Fixes problem reported by Dave M.

2005-05-29  Richard Dale  <[email protected]>

	* The rbuic '-subimpl' option now works correctly

2005-05-29  Richard Dale  <[email protected]>

	* The initialize methods in code generated by the rbuic tool, now have
	  named parameters with default values, rather than '*k'

2005-05-29  Richard Dale  <[email protected]>

	* Fixed bug where the rbuic tool was generating incorrect code
	  for an array of strings used as a combo box value

2005-05-28  Richard Dale  <[email protected]>

	* Added support for the TQScintilla text editing widget, including an optional 
	   '--enable-qscintilla=yes' configure option. The TQScintilla classes are included in a
	  Qext:: namespace. Thanks to Blackshack for the idea and configure code.
	* The KDE namespace modules are only created if the Korundum extension is used.
	  Otherwise the Object namespace was being polluted with unused constants.
	* Some enums in the TQScintilla headers had a spurious comma after
	  the last enum value, and kalyptus was failing with a parse error.
	  The comma is now ignored.

2005-05-25  Richard Dale  <[email protected]>

	* '!=' operator methods in the Smoke library were being shown via ruby introspection when they
	  can't actually be written in ruby, and are derived from the corresponding '==' operator method.
	* '==' operator methods can now be called.

2005-05-22  Richard Dale  <[email protected]>

        * Fixed bug in Smoke code generation where spaces were not being removed from operator
          methods such as 'operator *'
        * Operator methods are now displayed correctly via ruby introspection

2005-05-21  Richard Dale  <[email protected]>

	* Improved the format of enums displayed by rbqtapi and rbkdeapi

2005-05-20  Richard Dale  <[email protected]>

	* Removed unused TQt::Internal functions
	* Added KNS:: to the namespaces expected by the rbkdeapi tool
	* Introspection via Object#methods, public_methods, protected_methods and singleton_methods
	  or Module#constants, instance_methods, protected_instance_methods and public_instance_methods
	  now all include methods from the Smoke runtime. This fixes part of the request in bug 105772, but
	  not enabling 'respond_to?' to be used with Smoke methods.

2005-05-16  Richard Dale  <[email protected]>

	* The Kernel.format() method was clashing with the TQt::MimeSource.format() method.
	  The correct method is now called according to the type of the first argument. Fixes
	  problem reported by Armin Joellenbeck

2005-04-29  Richard Dale  <[email protected]>

	* Removed superfluous "require 'pp'" statement

2005-04-25  Richard Dale  <[email protected]>

	*  Upped the version to 1.0.9 for the RubyForge release

2005-04-09  Richard Dale  <[email protected]>

	* Fixed regressions in the rbqtapi and rbkdeapi utilities caused by the TQt::Internal namespace
	  tidy up
	* TQt::version and TQt::ruby_version had wrongly been moved to the TQt::Internal module

2005-04-03  Richard Dale  <[email protected]>

	* Upped the version to 1.0.8 for the RubyForge release

2005-03-30  Richard Dale  <[email protected]>

	* An 'include Qt' statement in qtruby.rb where a couple of methods were being added to
	  class Module was causing all the Qt methods to be added to Module. Oops, this a really
	  serious bug. Various methods in qtruby.rb are now module methods in the TQt::Internal
	  module. Big thanks to Eric Veensta and Samir Patel for pointing out this can of worms.

	* It also fixes a problem reported by David Crosby where a "require 'time'" statement was
	  incompatible with a "require 'Qt'" statement. As the cause was unknown, a hacky workround
	  had to be added, which is no longer needed.

2005-03-24  Richard Dale  <[email protected]>

	* When a subclass of TQObject is instantiated in the C++ world, and the exact class doesn't
	  exist in ruby, then scan up the inheritance heirarchy via TQObject::metaObject() until a
	  class is found which does have a ruby equivalent. Fixes problem reported by Dmitry Morozhnikor
	  where a KViewPart was being returned as a TQt::Object, rather than a KParts::ReadOnlyPart.
	* The internal method 'cast_object_to()' now takes a class literal as a second parameter,
	  rather than the class name as a string

2005-03-21  Richard Dale  <[email protected]>

	* Moved Qt.rb from qtruby/lib/Qt to qtruby/lib. Fixes problem building qtruby on Mac OS X
	  with extconf.rb reported by Michael Doppler
	* Rename 'README.build' as INSTALL

2005-02-21  Richard Dale  <[email protected]>

	* Upped the version to 1.0.7 for the KDE 3.4 release
	* Removed the tdehtml:: namespace as it wasn't being used

2005-02-07  Richard Dale  <[email protected]>

	* Added a KNS:: namespace for the KNewStuff library

2005-02-06  Richard Dale  <[email protected]>

	* The KDE::Win::WindowInfo nested class is included in the Korundum runtime

2005-01-27  Richard Dale  <[email protected]>

	* Made some changes to get code generated by the rbtdeconfig_compiler
	  to work. When an argument is a non-const reference to a primitive 
	  type, or a TQString or TQStringList, then don't delete it after the
	  method call. This is because a class like TDEConfigSkeleton takes
	  references, and then 'stquirrels them away' - before the references
	  were just pointing to junk on the stack.
	* The method 'isImmutable' is added to KDE::ConfigSkeletonItems

2005-01-26  Richard Dale  <[email protected]>

	* If a ruby Array is passed as an argument to an overloaded method, give
	  priority to TQStringList args.

2005-01-21  Richard Dale  <[email protected]>

	* rbuic was giving widgets names containing a '@' to match the ruby instance variable
	  name. However, this doesn't work with KDE::ConfigDialog which expects the names to
	  match the ones generated in a KDE::ConfigSkeleton by rbtdeconfig_compiler so '@' is no
	  longer added.

2005-01-20  Richard Dale  <[email protected]>

	* Fixed bug reported by Ian Monroe where the KIO.copy() method wasn't being found in
	  the Smoke runtime. Modules methods are now trapped with method_missing and
	  despatched to call Smoke methods correctly
	* Added support for the KDE::ConfigSkeleton and subclasses. Constructors for nested
	  classes can now be called correctly

	CCMAIL: [email protected]

2005-01-16  Richard Dale  <[email protected]>

	* Added a TQt::Integer.coerce method so that TQt::Integers and TQt::Enums can be
	  combined in arithmetic expressions with ruby Integers. 

2005-01-04  Richard Dale  <[email protected]>

	* Upped the version to 1.0.6 for the KDE 3.4 beta 1 release

2005-01-02  Richard Dale  <[email protected]>

	* The TQt::Object pretty_print method now shows the class name of enum properties

2004-12-30  Richard Dale  <[email protected]>

	* Fixed an interesting bug reported by Stephan Oehlert. Kernel has a method called 
	  open() which takes a String as the first argument. But when a call is made to an open() 
	  method in the Qt classes, it messes up the method_missing() logic to divert it to the 
	  Smoke library. Instead it attempts to call the Kernel method with the wrong arg types.

	* The problem is fixed by calling the appropriate method based on the 
	  type of the first arg. However, it is no longer possible to override virtual methods
	  called 'open'.

	CCMAIL: [email protected]

2004-12-28  Richard Dale  <[email protected]>

	* Added a parent attribute to the TQt::Object pretty_print() method
	* Removed all the properties from the TQt::Object inspect() method except name,
	  x, y, width, height (the last four for for TQt::Widgets only). This speeds up fetching
	  the details of TQt::Objects that have more than just a handful of children.
	  The full details can still be fetched with a pretty_print() call via a debugger 'pp'
	  command.

2004-12-21  Richard Dale  <[email protected]>

	* The qtruby runtime needs to be able to run the code for an initialize() method up
	  to the point where the C++ instance has been constructed and wrapped, and then
	  jump out. It then re-runs initialize() with the wrapped instance. Before a callcc() call
	  had been used for the jumping which worked fine. However, it made the frame stack
	  look strange when debugging code with the KDevelop debugger. The fix is to use 
	  catch and throw instead, as they leave the stack in a more normal looking state.

2004-12-20  Richard Dale  <[email protected]>

	* Added a work round for a bug caused by an incompatibility between QtRuby
	  the 'require time' statement, reported by David Crosby
	
	CCMAIL: [email protected]

2004-12-18  Richard Dale  <[email protected]>

	* Added a 'receivers' property to the TQt::Object inspector. This allows the active signal
	  connections for a TQt::Object instance to be viewed in the KDevelop debugger as a 
	  Hash. The hash keys are the signal names, and the hash values are arrays of the target 
	  signals/slots as TQt::Connection instances.

2004-12-17  Richard Dale  <[email protected]>

	* Added 'metaObject' as an expandable property for TQt::Objects. This allows the
	  TQt::MetaClass class heirarchy to be browsed, and signals/slots declarations inspected.

2004-12-17  Richard Dale  <[email protected]>

	* Fixed bug in lower case/underscore method naming to camel case conversion

2004-12-15  Richard Dale  <[email protected]>

 * Added an attribute of 'children' to the TQt::Object inspect method, which is an array
   of the TQt::Object's children
 * The TQObjects in a TQObjectList were not being created with the exact ruby class
   if they hadn't been allocated from within the ruby code, and just left as TQt::Objects

2004-12-14  Richard Dale  <[email protected]>

 * TQt::Object properities of type enum are shown by name in the KDevelop debugger,
   and not as numeric literals

2004-12-14  Richard Dale  <[email protected]>

 * Changed the format of the TQt::Color inspect string to #<TQt::Color:0x0 #ffffff>
 * Added some more attributes to the TQt::Font inspector
 * Added a TQt::Cursor inspector

2004-12-12  Richard Dale  <[email protected]>

 * Fixed a bug where the debugger was calling an inspect method on an instance
   which wasn't fully initialized yet, and not of type T_DATA.

2004-12-10  Richard Dale  <[email protected]>

 * Added inspect() and pretty_print() methods for TQt::SizePolicy
 * Greatly improved the TQt::Object Qt property based inspect() and pretty_print()
   methods. Property types such as TQt::Point, TQt::Font and TQt::Rect can be 
   viewed as expandable items in the KDevelop debugger variable tree.

2004-12-09  Richard Dale  <[email protected]>

 * More inspect() and pretty_print() methods for common classes to improve debugging -
   TQt::Color, TQt::Font, TQt::Point, TQt::Rect, TQt::Size, TQt::Date, TQt::DateTime and TQt::Time
   
2004-12-08  Richard Dale  <[email protected]>

 * Added inspect() and pretty_print() methods for TQt::Objects that get the TQObject properties and
   show them as 'name=value' pairs. This means the KDevelop debugger can make TQt::Object 
   variables expandable and show their properties.

2004-11-29  Richard Dale  <[email protected]>

 * Upped the QtRuby version to 1.0.5 for the KDE 3.3.2 release

2004-10-30  Richard Dale  <[email protected]>

 * qError(), tqWarning() and tqFatal() are now Object instance methods, rather than Qt module
   methods. This means they don't need to be referenced with an ugly 'Qt.' module scope anymore.

2004-10-21  Richard Dale  <[email protected]>

 * If a class method was called before super, it was wrongly throwing an exception
   as an error. For instance, this call to i18n():

               def initialize()
                   super(TreeList, i18n("My App Preferences"),
                            Help|Default|Ok|Apply|Cancel, Ok)
      ...


2004-10-16  Richard Dale  <[email protected]>

 * Until super has been called in an initialize() method, Qt methods can't be called on
   it. An exception is now thrown 'Instance not initialized', instead of it causing a seg fault.
 * For instance:

     class MyWidget < TQt::ComboBox
         def initialize
             # Must call super first
             insertItem('abc')
             super
         end
     end

 * Fixes problem reported by Han Holl
 CCMAIL: [email protected]

2004-10-16  Richard Dale  <[email protected]>

 * Upped the version to 1.0.4 for the RubyForge release
 * Added some names to AUTHORS from the ChangeLog

2004-10-14  Richard Dale  <[email protected]>

 * If the smokeruby_mark() function was called for an instance of a TQObject, it should
   mark all the instances below it in the TQObject tree, as not needing garbage collection. 
   However, if a node in the tree didn't have a mapping onto a ruby instance the marking 
   process stopped there, even though the grandchildren and their descendants might 
   have a valid mapping onto ruby instances.
 * The solution is to always traverse the entire tree. Fixes problem reported by Han Holl.

 CCMAIL: [email protected]

2004-10-13  Richard Dale  <[email protected]>

 * All the TQt::CanvasItems owned by a TQt::Canvas are marked with rb_gc_mark() to
   prevent them being garbage collected
 * The top level widgets are no longer disposed() on TQt::Application exit
 * Fixed some bugs in the chart example. 

2004-10-13  Richard Dale  <[email protected]>

 * Fixed arg matching to give priority to 'int' or 'signed' when passed a ruby Integer, or
   'double' when passed a ruby Float
 * The chart example can now save and load chart files

2004-10-13  Richard Dale  <[email protected]>

 * Added greater than and less than operators to TQt::Enum, so that enums can be compared with
   Integers
 * Added the chart example for Qt Tutorial #2

2004-10-12  Richard Dale  <[email protected]>

 * Added TQt::Application.ARGV. It returns the original ruby ARGV array with Qt command line 
   options removed.

2004-10-11  Richard Dale  <[email protected]>

 * Added a global flag 'application_terminated'. Once this is set the QtRuby runtime will no longer
   delete any C++ instances. This will hopefully fix crash on application exit problems reported 
   by Thibauld Favre.

 CCMAIL: [email protected]

2004-10-10  Richard Dale  <[email protected]>

 * The recent fix for checking invalid arg types, didn't work with nil passed as a value

2004-10-10  Richard Dale  <[email protected]>

 * A TQRgb[] color table was being wrongly deleted after marshalling

2004-10-10  Richard Dale  <[email protected]>

 * If a ruby method overriding a virtual method returned a primitive type when an instance of a class
   was expected, it caused a seg fault. A ruby exception is now thrown instead. Fixes problem reported by
   Han Holl.

 * For instance,
                    class ContainerGrid < TQt::Widget
                        def sizeHint
                            # next line should return a TQt::Size, not an integer
                            100
                        end
                     end
 
   Now gives the following error:

               qsize.rb:12:in `method_missing': Invalid type, expecting TQSize (ArgumentError)
                   from qsize.rb:12

 CCMAIL: [email protected]

2004-10-10  Richard Dale  <[email protected]>

 * The smokeruby_mark() function was only marking the immediate children of a
   TQt::Object for not being garbage collected. It now marks all the TQt::Objects
   in the object tree below it.

2004-10-07  Richard Dale  <[email protected]>

 * Added Qt Designer Tutorial 'Creating Dialogs' translated into QtRuby. It
   shows how you can combine ruby code generated from .ui files with the rbuic
   tool, with your own code.

 * The .ui files and images are identical to the original C++ versions.

 * It features a simple Makefile to run rbuic when you change the .ui files, and
   regenerate the ruby sources.

2004-10-06  Richard Dale  <[email protected]>

 * Fixed rbuic '-embed' option which had been broken after adding DCOP suppot
   to Korundum, after changes in the TQt::ByteArray class.
 * Fixed TQRgb* marshalling problem where the ruby value was overflowing a signed int.
   The target for marshalling is now an array of unsigned ints.
 * When a TQt::Application exits after returning for an TQt::Application.exec() call, the top
   level widgets are deleted as well as the TQt::Application itself. This fixes a problem where
   ruby does garbage collection in an arbitrary order after the ruby app has exited. It destroys
   a ruby Hash of TQMetaData info that the TQt::Application or TQt::MainWindow need to clean up.
 * The layout of the ruby code generated by rbuic has been improved with better indenting.
 * attr_reader attribute accessors have been added for the most important instance variables 
   in an rbuic generated class to make them more easily accessed from another class.

2004-10-05  Richard Dale  <[email protected]>

 * Given a C++ instance and an approximate classname, the QtRuby runtime uses the
   various Qt rtti mechanisms such as TQObject::className() to improve the resolution
   of the name. However, the numeric classId into the array of classnames in the Smoke
   runtime was not being updated in line with the more accurate name. 
 * This caused problems with method argument matching which uses the numeric classId
   rather than the ruby object's classname, and so QtRuby wrongly assumed that a an
   instance of a TQt::Widget was a TQt::Object.
 * Fixes problem reported by Han Holl

 CCMAIL: [email protected]

2004-10-05  Richard Dale  <[email protected]>

 * Fixed a couple of errors in the rbuic generated code found as a result of
   the recently improved stricter arg type matching.

2004-10-04  Richard Dale  <[email protected]>

 * When a ruby app exits, rb_gc_call_finalizer_at_exit() is called and all the ruby
   instances are garbage collected. The problem is that this is done in an arbitrary
   order, and TQt::Application was occasionally crashing in its destructor because 
   TQMetaObject info it still needed was being deleted before then.

 * Fixes problem reported by Thibauld Favre

 CCMAIL: <[email protected]>

2004-10-04  Richard Dale  <[email protected]>

 * When a TQMetaData object was contructed the class name was a pointer from a ruby
   string, and was being corrupted when the string was freed. The string is now copied.

2004-10-03  Richard Dale  <[email protected]>

 * Han Holl's report about a when you pass an incorrect arg type to a QtRuby
   method, it caused a crash has opened a 'can of worms'. This was because there
   was no arg type checking if there was only one candidate method in the
   Smoke runtime. Now that arg type checking is applied to all QtRuby method calls, not
   not just those that after lookup in Smoke map onto a single method, the overloaded
   method resolution via the arg types has had to be greatly improved. This has
   been done, and so the arg type matching is now extremely fussy.

 CCMAIL: [email protected]

2004-10-03  Richard Dale  <[email protected]>

 * An optimization in the overloaded method resolution matching causes a crash;
   instead of throwing a ruby exception when a programming error is made.
   If there is only one method found in the Smoke runtime, it assumes that it must 
   be the right one and just takes that.

 * For example:

     lay = TQt::HBoxLayout.new(self)
     ed = TQt::LineEdit.new('blah',self)
     # The next line should be: lay.addWidget(ed)
     lay.addLayout(ed)

  * Fixes problem reported by Han Holl

  CCMAIL: [email protected]

2004-10-03  Richard Dale  <[email protected]>

 * A common programming error is to accidently leave off the 'new' method call when
   creating an instance. The QtRuby runtime wasn't correctly trapping an attempt to
   call an instance method on a class object, and was seg faulting rather than
   throwing an exception.

 * For example:

                    # The next line should be:  lay = TQt::HBoxLayout.new(self)
                   lay = TQt::HBoxLayout
                   ed = TQt::LineEdit.new('blah',self)
                   lay.addWidget(ed)

 * Fixes problem reported by Han Holl

 CCMAIL: [email protected]

2004-10-03  Richard Dale  <[email protected]>

 * Upped version to 1.0.3 for the KDE 3.3.1 release

2004-10-02  Richard Dale  <[email protected]>

 * Added Ruby Array to TQPair<int,int>& marshaller

2004-09-30  Richard Dale  <[email protected]>

 * The resolve_classname() function in handlers.cpp uses the various Qt rtti mechanisms to
   get a more accurate classname to instantiate as a ruby instance. It has now been extended
   with a callback to the Korundum library to do the same for KDE classes.

 CCMAIL: [email protected]

2004-09-29  Richard Dale  <[email protected]>

 * Added Jim Menard's ruboids as an OpenGL/TQt::GL* Widgets example
 * Improved instructions and exconf.rb for building the gui extension from Michal 'hramrach' Suchanek

2004-09-13  Richard Dale  <[email protected]>

 * Upped the version to 1.0.2 for Rubyforge release

2004-09-12  Richard Dale  <[email protected]>

 * Added a 'tqui' extension for reading in .ui Qt Designer files at runtime
 * For example:

     require 'Qt'
     require 'tqui'

     a = TQt::Application.new(ARGV)
     if ARGV.length == 0
         exit
     end

     if ARGV.length == 2
         QUI::WidgetFactory.loadImages( ARGV[ 0 ] )
             w = QUI::WidgetFactory.create( ARGV[ 1 ] )
             if w.nil?
             exit
         end
             w.show()
            a.connect( a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()') )
            a.exec()
     end


2004-09-07  Richard Dale  <[email protected]>

 * Upped the version to 1.0.1 for the current Rubyforge release

2004-09-05  Richard Dale  <[email protected]>

 * Added Kate:: and KTextEdit:: namespaces for writing Kate plugins

2004-09-03  Richard Dale  <[email protected]>

 * Some newer changes from the uic were added to the rbuic tool.

2004-09-03  Richard Dale  <[email protected]>

 * Brought the rbuic code to uncompress zip files in line with the current uic code
 * Added a qmake project file for building the rbuic tool on Mac OS X, and some
   notes on how to build QtRuby on a Mac.

2004-08-29  Richard Dale  <[email protected]>

 * Added Kontact module to provide a namespace for the kontact plugin api

2004-08-25  Richard Dale  <[email protected]>

 * Underscore naming for can be used for method names instead of camel case if
   preferred. Any underscores in method names are removed, and the following
   character is capitalised. For example, either of these two forms can be used
   to call the same method:
  
     create_standard_status_bar_action()
  
     createStandardStatusBarAction()

2004-08-23  Richard Dale  <[email protected]>

 * A 'thing?' ruby method can now be used as a synonym for either isThing() or hasThing() in the Smoke runtime

2004-08-04  Richard Dale  <[email protected]>

 * Upped the QtRuby version to 1.0.0 - it must work now then..

2004-08-02  Richard Dale  <[email protected]>

 * Added 'long long' and 'unsigned long long' marshallers

2004-07-29  Richard Dale  <[email protected]>

 * The smokeruby_mark() gc marking f'n now marks the TQTableItems owned
   by a TQTable so they don't get garbage collected, even if there are no
   remaining references in the user code.

2004-07-29  Richard Dale  <[email protected]>

 * Added a template based method for TQValueList marshallers, and several
   TQValueList types.

2004-07-28  Richard Dale  <[email protected]>

 * Removed any marshaller types that weren't in the Smoke runtime from the
   type name to marshaller function lookup table.

2004-07-28  Richard Dale  <[email protected]>

 * If a class doesn't have a virtual destructor, then no mapping was being
   kept from the C++ instance to the corresponding ruby value. If the class
   had virtual method callbacks, this meant that the ruby instance couldn't
   be found, and the callback couldn't be made.
 
 * Hence, the TQt::ToolTip callback in examples/qt-examples/tooltip didn't
   work, as that class doesn't have a virtual destructor.

 * Added an 'isEnum()' function to use when matching args in overloaded
   method resolution.

 * TQCString arg types are chosen in preference to TQByteArray ones, matching
   against ruby strings, when resolving an overloaded method call.

 * TQt::Enums and TQt::Integers can be marshalled to uints, longs and ulongs as
   well as ints.
   
 * Added a '==' operator to TQt::Enums so they can be compared with ruby Integers

2004-07-27  Richard Dale  <[email protected]>

 * TQt::Integer arithmetic and bit operations return TQt::Integers, rather
   than ruby Integers so that ops can be nested as for TQt::Enums.

2004-07-27  Richard Dale  <[email protected]>

 * The recently added TQt::Integer bit operators were returning a ruby Integer
   type. When they were nested, the Integer didn't know how to convert the
   Enum it was being or'd with to an Integer.
 
 * The solution is to add bit operators to the Enum class which return Enums
   rather than Integers.

 * The following code didn't work:
     
     def initialize(message)
         super(nil, "passivedlg",
                 TQt::WStyle_Customize | TQt::WX11BypassWM | TQt::WStyle_StaysOnTop |
                 TQt::WStyle_Tool | TQt::WStyle_NoBorder)

2004-07-27  Richard Dale  <[email protected]>

 * Replaced TQString casts to 'const char *' with latin1() calls

2004-07-27  Richard Dale  <[email protected]>

 * The TQt::Enum class was missing bit operations, so various bit methods
   were added to TQt::Enum's superclass, TQt::Integer.
 
 * This was causing this line from examples/uimodules/uidialogs.rb to fail:

     dlg =   KDE::DialogBase.new(parent, "sample_dialog", false, caption,
                                        KDE::DialogBase::Ok | KDE::DialogBase::Cancel, 
                                 KDE::DialogBase::Ok, true )

2004-07-27  Richard Dale  <[email protected]>

	* Added error messages for invalid slot or signal declarations

2004-07-27  Richard Dale  <[email protected]>

	* The standard ruby error message for missing constants and methods is
	  now used when they can't be found in the Smoke library. Removed Alex's
	  comment about the previous approach, now I agree this is the best way 
	  to show errors.

	CCMAIL: [email protected]

2004-07-27  Richard Dale  <[email protected]>

	* Added tqDebug(), tqFatal() and tqWarning() module methods

2004-07-26  Richard Dale  <[email protected]>

	* The parsing of types passed to slots, (or returned from dcop slots) didn't
	  work with template types containing commas such as 'TQMap<TQString,TQString>'.
	* Added 'TQMap<TQString,TQString>&' and 'TQMap<TQString,TQVariant>&' to the
	  handlers.cpp string to marshaller lookup table.

2004-07-26  Richard Dale  <[email protected]>

	* Added marshallers for TQMap<TQString,TQString> and TQMap<TQString,TQVariant> to and from ruby hashes

2004-07-26  Richard Dale  <[email protected]>

	* The error messages for missing methods or missing constants now give the
	  name of the missing item.
	* For example, this incorrect line:

	    color_group.setColor( ColorGroup::MyMissingConst, blue )
	  
	  Gives this error:

	    splitter.rb:16:in `const_missing': unresolved constant 
	        reference MyMissingConst (ArgumentError)

	* Implements suggestion from Jeff on the tdebindings list

	CCMAIL: [email protected]

2004-07-19  Richard Dale  <[email protected]>

	* Added TQt::Enum type. Before a C++ enum was being marshalled to a ruby
	  Integer, and the type name of the enum was lost. A TQt::Enum is a subclass
	  of Integer with an extra type name.
	* This fixes a problem with overloaded method resolution where two methods differ
	  only be an enum type such as this:

	    # KPasswordEdit(EchoMode echoMode, TQWidget *parent, const char *name);
	    # KPasswordEdit(EchoModes echoMode, TQWidget *parent, const char *name);

	    pw2 = KDE::PasswordEdit.new(KDE::PasswordEdit::ThreeStars, page, "")

2004-07-17  Richard Dale  <[email protected]>

	* After a non-const string arg was passed to a method, the value of the TQString
	  is copied into the ruby value. But it wasn't being correctly converted to the
	  correct string format according to $KCODE.
	* TQString to ruby string conversions in TQStringLists were not localised either.

2004-07-14  Richard Dale  <[email protected]>

	* Removed superfluous '(void *)' cast which was causing compilation
	  problems with gcc 3.4
	* Fixes problem reported by Jochen Immend�fer on comp.lang.ruby
	  CCMAIL: [email protected]

2004-07-11  Richard Dale  <[email protected]>

	* Qt eucJP and Shift-JIS codecs used to support ruby $KCODE values of 's' 
	  for SJIS and 'e' for EUC

2004-07-08  Richard Dale  <[email protected]>

	* Added support for strings in QtRuby programs being written in UTF-8.
	  Use the '-Ku' command line option or '$KCODE=u' in the program.
	* Removed recently added TQChar marshalling as it wasn't very i18n friendly

2004-07-07  Richard Dale  <[email protected]>

	* Added TQChar marshalling

2004-07-06  Richard Dale  <[email protected]>

	* Fix for passing C++ 'bool*' and 'bool&' argument types
	  There is a similar problem for bool arg types as with ints, and the mutable
	  TQt::Boolean class can be used like this:
		
	    # TQFont getFont(bool * ok, const TQFont&initial, TQWidget* parent = 0);		
		
	    ok = TQt::Boolean.new
	    font = TQt::FontDialog.getFont(ok, TQt::Font.new("Helvetica [Cronyx]", 10), self)
	    if !ok.nil? 
                # font is set to the font the user selected
	    else 
                # the user canceled the dialog
	    end
		
	  Use 'nil?' to test the value returned in the Boolean
	* Signal and slot type signatures are 'normalized' and any unwanted white space
	  removed
	* Fixed problem with TQByteArray arg type matching in overloaded method resolution

2004-07-04  Richard Dale  <[email protected]>

	* Fix for passing C++ 'int*' and 'int&' argument types
	  Ruby passes numeric values by value, and so they can't be changed when passed to a
	  method. The TQt::Integer class provides a mutable numeric type which does get updated
	  when passed as an argument. For example, this C++ method 'findByFileContent()':
		
		# static Ptr findByFileContent( const TQString &fileName, int *accuracy=0 );

		acc = TQt::Integer.new(0)
        	fc = KDE::MimeType.findByFileContent("mimetype.rb", acc)
		
	  It supports the arithmetic operators, and so expressions such as 'acc + 3' 
	  will work.

2004-07-02  Richard Dale  <[email protected]>

	* Replaced obsolete STR2CSTR() calls with StringValuePtr()

2004-06-29  Richard Dale  <[email protected]>

	* The internal findAllMethods() method now returns nil rather than an empty array
	  if the given classid is greater than 'smoke->numClasses'. Otherwise, it wasn't 
	  possible to distinguish between a class with no methods, or reaching the end of
	  the classes array.

2004-06-29  Richard Dale  <[email protected]>

	* Added TQStrList marshalling

2004-06-29  Richard Dale  <[email protected]>

	* Improved Garbage Collection, dispose() and isDisposed() methods
	  - When a ruby instance is garbage collected, the underlying C++ instance will only be
	    deleted if it isn't 'owned' by a parent object. Normally this will 'just work', but
	    there are occasions when you need to delete the C++ ahead of garbage collection, and
	    whether or not it has a parent. Use the dispose() and isDisposed() methods like
	    this:
		
		item0.takeItem(item1)  
		item0.insertItem(item1)  
		
		item2.dispose
		if item2.isDisposed
		    puts "item2 is disposed"
		end

	  - Fixes problem reported by Hans Fugel
	
2004-06-26  Richard Dale  <[email protected]>

	* The marshalling TypeHandler function pointers are now looked up in a
	  TQAsciiDict, rather than a ruby Hash.
	* Some unused functions removed
	* QtRuby version upped to 0.9.8

2004-06-09  Richard Dale  <[email protected]>

	* New flags were added for Smoke methods - mf_internal and mf_copyctor.
	  This allows copy constructors which are only used internally by the ruby
	  runtime, to be excluded from the standard api.


2004-05-12  Richard Dale  <[email protected]>

	* When ARGV was passed to the TQt::Application constructor, it was being
	  altered, and the name of the ruby program added as a first entry. The
	  constructor now uses a copy of the array, and ARGV is left unchanged.

2004-05-03  Richard Dale  <[email protected]>

	* Added a '-kde' option to the rbuic tool to generate require 'Korundum'
	  instead of require 'Qt' statements, and use KDE widgets.

2004-04-30  Richard Dale  <[email protected]>

	* Applied patch from Marek Janukowicz.
	* The patch fixes some perlisms, that caused errors on loading a Ruby file
	  generated from .ui file for TQt::MainWindow subclass

2004-04-20  Richard Dale  <[email protected]>

	* The rbuic now correctly names KDE widgets with a KDE:: prefix
	* If the rbuic -x option is used, a KDE top level is generated if any
	  KDE widgets have been found.

2004-04-17  Richard Dale  <[email protected]>

	* Fixed bug in rbuic generated code for setResizeMode()

2004-04-05  Richard Dale  <[email protected]>

	* Improved classname resolution for TQListViewItem and TQTableItem subclasses using rtti() calls

2004-03-26  Richard Dale  <[email protected]>

	* Ruby slots and signals are now inherited correctly
	* This causes problems with code generated by the rbuic utility
	* Fixes bug 78273 reported by Imobach Sosa

2004-03-10  Richard Dale  <[email protected]>

	* When a mutable, non-const TQString, int*, int&, bool* or bool& is passed
	  to a method, the corresponding ruby value is now updated after the 
	  method call.
	* Some f'ns are no longer static, so that the korundum extension can link
	  against them.

2004-03-03  Richard Dale  <[email protected]>

	* The f'n new_qobject is no longer static, and can be called from korundum

2004-03-01  Richard Dale  <[email protected]>

	* Fixed bugs in TQCString, TQString and TQByteArray marshalling.
	  - When a C++ method with a mutable, non-const TQCString arg type 
	    is called from ruby, the C++ arg value is copied back into the
	    corresponding ruby arg VALUE after the call.
	  - A pointer to a locally allocated TQString was being returned,
	    giving memory corruption problems.
	* The default debug level in qtruby.rb is DebugLevel::OFF, otherwise
	  very verbose error messages are produced.

2004-01-28  Richard Dale  <[email protected]>

	* Fixed bug where a TQCString was being ranked equally with a TQString,
	  when resolving ambiguous method overloading. Caused the KDE::URL
	  constructor to fail with a string arg.

2003-11-29  Richard Dale  <[email protected]>

	* Added DOM:: namespace for the DOM:: classes in the Smoke library.
	* The scope operator in nested classnames is now '::' rather
	  than '__', so changed the qtruby runtime to expect that.

2003-11-13  Richard Dale  <[email protected]>

	* Added the KillerFilter event filtering example from chapter 16
	  of 'Programming with Qt'
	* Improved classname resolution via the Qt rtti mechanisms in
	  TQObject, TQEvent and TQCanvasItem. This fixed a problem in the
	  KillerFilter example when a TQMouseEvent was passed to the ruby 
	  event handler, it was being instantiated as a ruby TQt::Event, 
	  rather than a TQt::MouseEvent.

2003-11-11  Richard Dale  <[email protected]>

	* Improved nil argument matching, and nil can match any type now
	  not just classes. Translated the code from the Qt.pm in PerlQt,
	  after discussion on the kde-perl list.
	* Fixed bug in rbuic where a C++ 'TQString::null' was "" in ruby, and
	  should have been a nil.

2003-11-08  Richard Dale  <[email protected]>

	* Finally fixed huge leak, causing the progress.rb example to grow by
	  1 Mb a minute.
	* Added a cache from ruby classname to Smoke class id
	* Speeded up method selector look ups
	* Put some C++ code inside blocks to ensure that the destructor clean
	  up code was called, when the current f'n longjmp's up the stack rather
	  than returns normally.
	* QtRuby looking good, raised the version to 0.9.6 to celebrate

2003-11-07  Richard Dale  <[email protected]>

	* Fixed some memory leaks
	* Ensured that any instance 'owned' by ruby, ie with the the allocated
	  flag set to true, is always added to the pointer_map.
	  Otherwise, the same C++ instance can be wrapped twice and will be deleted
	  twice.

2003-11-03  Richard Dale  <[email protected]>

	* When marshalling a const ref type to a ruby VALUE, it is now copied
	* Applied some fixes for construct_copy() from the PerlQt version of
	  handlers.cpp
	* Fixed some minor bugs in the progress.rb Qt example

2003-11-03  Richard Dale  <[email protected]>

	* Added method selector caching for class methods and constructors,
	  although performance still 'sedate' compared with C++ or Perl.

2003-10-29  Richard Dale  <[email protected]>

	* The smokeruby_mark() f'n now marks the TQListViewItems in a TQListView
	* Fixed a TQLayoutItem crash in smokeruby_free()

2003-10-27  Richard Dale  <[email protected]>

	* The smokeruby_mark() f'n was completely wrong, as it is only called if 
	  the current object is already marked. So marking the current object
	  doesn't make a lot of sense. Instead, if the instance is a kind of
	  TQObject then its childeren are marked.
	* The smokeruby_delete() object doesn't delete instances which have
	  parents of one sort or another.
	* Made some fixes to the tutorial examples
	* Removed equality '==' operator overloading as it only expects a single
	  arg in ruby, and not two.

2003-10-22  Richard Dale  <[email protected]>

	* Changed some error messages in do_method_missing() to be 'debug only' for now.

2003-10-22  Richard Dale  <[email protected]>

	* Got the checklists.rb example working after bug report from Mikhail Yakshin
	  - Corrected some coding errors in the example itself.
	  - The arg matching code in method_missing() has been improved and simplified.
	  - In the overloaded arg type resolution matching, an enum is type 'long'
	  - A class which matches exactly is a better match than a subclass.
	    Multiple matches are allowed as long as there is a 'best match'.
	  - Operator overloading now looks for methods of the form 'operator+=',
	    'operator-=' etc in the Smoke runtime.

2003-10-14  Richard Dale  <[email protected]>

	* Fixed serious random crash problem
	  - tqt_invoke() and tqt_emit() were not calling super if a ruby signal or
	    slot hadn't been found, which stopped C++ signals from working. 
	  - This prevented destroy() signals from invoking event filter list clean
	    up when a TQObject was deleted, leaving deleted instances in the list.
	  - 'TQUObject*' args are now marshalled as a ruby list with a single
	    entry of a VALUE wrapping the pointer.
	* The ruby ALLOCA_N macro is no longer used as it is based on alloca(),
	  which doesn't seem a good idea. malloc(), calloc() and free() are used
	  instead

2003-10-11  Richard Dale  <[email protected]>

	* Added tdehtml:: namespace, although it isn't in the SmokeKDE runtime yet
	* Improved method_missing error messages if a method can't be resolved

2003-10-09  Richard Dale  <[email protected]>

	* Added TDEIO:: and KParts:: namespaces for the new classes in libsmokekde

2003-10-08  Richard Dale  <[email protected]>

	* Korundum KDE ruby extension 
	  - made various changes so it can be linked against the QtRuby code

2003-09-18  Richard Dale  <[email protected]>

	* Removed leading 'K' from class names of when adding to KDE:: namespace.
	  As per Germain Garand's suggestion on the kde-bindings list:

	  ..actually, I used the same scheme as for Qt when possible, that is:
	        $class =~ s/^Q/TQt::/ or
	        $class =~ s/^K/KDE::/ or
	        $class = "KDE::" . $class
	        unless $class eq "Qt";

2003-09-18  Richard Dale  <[email protected]>

	* Added support for KDE classes under module KDE:: for use with
	  the new libsmokekde.so. You can now write KDE programs in Ruby,
	  here is Hello World:

	    about = KDE::TDEAboutData.new("one", "two", "three")
	    KDE::TDECmdLineArgs.init(1, ["four"], about)
	    a = KDE::TDEApplication.new()
	    hello = KDE::KPushButton.new(nil) { setText "Hello World" }
	    a.setMainWidget(hello)
	    hello.show()
	    a.exec()

2003-09-14  Richard Dale  <[email protected]>

	* The rbuic -embed option finally works. Fixed TQByteArray marshalling.

2003-09-13  Richard Dale  <[email protected]>

	* Improved the rbuic -embed option, and added some fixes

2003-09-12  Richard Dale  <[email protected]>

	* More passing blocks to constructors fun! You can now also pass 
	  an arg to the block, and it will be run in the context of the arg:
		
		w = MyWidget.new { |theWidget| theWidget.setCaption "foobar" }

	I got this idea from the FXRuby bindings, from the ChangeLog:

	"This approach has the advantage that the initialization code now has
	access to the outer scope, as blocks normally would. Thanks to
	Rich Kilmer for this suggestion."

	If you don't pass an arg to the block, the block is run in the context 
	  of the new instance as before.

	* Debugging left in handlers.cpp (must stop doing this)

2003-09-12  Richard Dale  <[email protected]>

	* Marshallers now return Qnil, rather than Qundef (for internal use only)

2003-09-10  Richard Dale  <[email protected]>

	* Improved garbage collection with various 'ad hoc' rules from the
	  QtJava bindings about when it's ok/not ok to destruct an instance.
	  Not always just a 'parent() != 0' check in Qt.

2003-09-10  Richard Dale  <[email protected]>

	* Added TQByteArray <-> Ruby string marshaller

2003-09-09  Richard Dale  <[email protected]>

	* Blocks can now be passed to constructors, like this:
	    w = MyWidget.new { setCaption("foobar") }

2003-09-08  Richard Dale  <[email protected]>

	* Added method selector caching, scribbling may be slightly faster..

2003-09-08  Richard Dale  <[email protected]>

	* GC getting closer to working. Debugging code improved.

2003-09-08  Richard Dale  <[email protected]>

	* From below 'watch out for extra crashes!' - indeed! Have now disabled
	  smokeruby_free() and smokeruby_mark() until garbage collection works.

2003-09-08  Richard Dale  <[email protected]>

	* The pointer_map is now a TQPtrDict rather than a ruby Hash, and
	  the entries are weak references. An implementation was tried 
	  using the ruby WeakRef class, but it didn't work because rb_gc_mark()
	  didn't prevent them being garbage collected.
	* smokeruby_free() and smokeruby_mark() have been implemented
	* The C++ instance for a ruby object is deleted in smokeruby_free(),
	  so watch out for extra crashes!
	* Improved README with more details about QtRuby

2003-09-07  Richard Dale  <[email protected]>

	* Improved error message handling, changed rb_error() calls to rb_raise()
	* Decided changing method calls like foobar? to isFoobar() not a good idea,
	  as the Qt property could just as also be hasFoobar() or foobar() 

2003-09-06  Richard Dale  <[email protected]>

	* Set methods such as autoMask= are converted to setAutoMask()
	* Get methods such as modal? are converted to isModal()

2003-08-31  Richard Dale  <[email protected]>

	* rbuic code generation brought up to date wrt Qt 3.2 uic
	  Main change is that a 'languageChanged()' method is generated

2003-08-30  Richard Dale  <[email protected]>

	* rbuic() code generation fixes

2003-08-30  Richard Dale  <[email protected]>

	* Added 'Run Selection' menu option to the QtRuby shell

2003-08-30  Richard Dale  <[email protected]>

	* Operator methods are now called 'operator..' in TQGlobalSpace and not renamed
	* Added unary minus, and a test in opoverloading.rb

2003-08-29  Richard Dale  <[email protected]>

	* Updated TODO list, improved rbuic code generation for images

2003-08-28  Richard Dale  <[email protected]>

	* Improved operator overloading to work with operators not in TQGlobalSpace

2003-08-27  Richard Dale  <[email protected]>

	* Changed the operator overloading implementation to be more like PerlQt

2003-08-27  Richard Dale  <[email protected]>

	* Translated the rbqtsh filePrint() method from perl

2003-08-26  Richard Dale  <[email protected]>

	* Added 'changed' attribute to the MetaInfo class, so that the C++ metaObject
	  is reconstructed if the slots or signals are changed.
	* Changed window title on rbqtsh to 'QtRuby'. The example slot now works
	  correctly. Only just tried this utility - Wow Alex!!

2003-08-26  Richard Dale  <[email protected]>

	* findMethod() now looks in the TQGlobalSpace pseudo class as well as the normal target class.
	* The bitBlt() code in the scribble example works correctly

2003-08-25  Richard Dale  <[email protected]>

	* Removed ugly _current_object global variable. 
          The current target object is now passed to the MethodCall constructor.

2003-08-25  Richard Dale  <[email protected]>

	* Removed obsolete rb_enable_super() calls
	* Removed test for _current_object in class_method_missing()
	* Fixed missing index in signalInfo() method
	* Added Qt scribble example - TODO add TQt::PaintDevice.bitBlt() calls to SMOKE runtime

2003-08-23  Richard Dale  <[email protected]>

	* Added rbuic tool for ruby Qt Designer support

2003-08-12  Alexander Kellett   <[email protected]>

	* Add debug level setting via TQt::debug_level
	* When calling .new on a Qt object with a incorrect prototype
	  the list of appropriate constructors is printed
	* Fix a number of cases in which imperfect code would cause a crash

2003-08-11  Alex Zepeda   <[email protected]>

	* Various fixes to get TQStringList marshalling working
	* Treat Ruby strings as UTF-8 strings in order to fix the TQFont examples

2003-08-09  Alexander Kellett   <[email protected]>

	* Added support for operator overloading

2003-08-07  Alexander Kellett   <[email protected]>

	* Added rbqtapi and rbqt tools (port of the PerlQt tools of the same name)

2003-08-06  Richard Dale  <[email protected]>

	* Added some TODO list entries, added Alex to the AUTHORS list

2003-08-06  Richard Dale  <[email protected]>

	* Fixed 'int&' marshalling so script name appears in window title

2003-08-12  Alexander Kellett   <[email protected]>

	* Add several new marshalling types - TQCanvasItemList for example,
	  unfortuantely due to several improvements in Qt 3.2 these 
	  improvements will not be seen when compiling against Qt 3.1.2

2003-08-05  Richard Dale  <[email protected]>

	* Moved SLOT(), SIGNAL() and emit() to global scope

2003-08-05  Richard Dale  <[email protected]>

	* Removed redundant 'rb_eval_string("include Qt")' call from extension initialization.

2003-08-05  Richard Dale  <[email protected]>

	* TQt::Application constructor safer, but program name still not appearing in the window title

2003-08-05  Richard Dale  <[email protected]>

	* Fixed bug in resolution of overloaded TQt::Popup.insertItem() methods

2003-08-05  Richard Dale  <[email protected]>

	* Use new const_missing from ruby 1.8.x to allow for constant access from base class, for example "TQt::RichText"
	* TQString::null now maps onto Qnil, rather than a zero length ruby string

2003-08-04  Alexander Kellett   <[email protected]>

	* Allow for accumulative slots/signals declarations in a class
	* Minor build fixes

2003-08-02  Alexander Kellett   <[email protected]>

	* Fix several deprecation warnings when running under 1.8.x
	* Several more build fixes

2003-08-01  Alexander Kellett   <[email protected]>

	* Slightly improve ease of debugging of qtruby programs 
	  which subclass Qt base classes by print out some useful
	  debugging informationn when/if method_missing ever 
	  fails to find a matching function in the baseclass.

2003-08-01  Alex Zepeda   <[email protected]>

	* Remove need to manually run extconf.rb by some automation via a configure.in.in
	* Various other build fixes

2003-07-31  Richard Dale  <[email protected]>

	* Fixed bug in marshalling TQString::null to a ruby VALUE

2003-07-31  Richard Dale  <[email protected]>

	* Changed require in Qt.cpp to 'Qt/Qt.rb' instead of 'lib/Qt/Qt.rb'

2003-07-31  Richard Dale  <[email protected]>

	* Fixed problem with non-working installed version, lib/Qt.rb moved to lib/Qt/Qt.rb

2003-07-30  Richard Dale  <[email protected]>

	* QtRuby - a Ruby SMOKE adaptor for Qt, initial checkin