2007-03-05 Richard Dale <rdale@foton.es> * Added a marshaller for TQValueList<WId>& as requested by volty on #qtruby 2007-07-06 Richard Dale <rdale@foton.es> * Fixed bug in DCOPRef's reported by Han Holl, but how has it ever worked? 2007-02-19 Richard Dale <rdale@foton.es> * Fixed a bug where the sort method of KDE::ListView and KDE::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-11-21 Richard Dale <rdale@foton.es> * Made KDE::ListView, KDE::ListViewItem Enumerable with implementations of each() so they don't need to use the Qt External iterators like TQt::ListViewItemIterator anymore. For instance: lv = KDE::ListView.new do ["one", "two", "three", "four"].each do |label| KDE::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 KDE::ListViewItem so that they show the text of their columns 2006-10-22 Richard Dale <rdale@foton.es> * Special case TQValueList<int> as a DCOPRef return type. Fixes problem reported by Brian Bart. 2006-08-18 Richard Dale <rdale@foton.es> * Added a TDEActionPtrList marshaller. Fixes problem reported by eskatos on the #qtruby irc channel. 2006-06-05 Richard Dale <rdale@foton.es> * 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-05-16 Richard Dale <rdale@foton.es> * Fixed regression causing KDE::UniqueApplication.exec to not work * Removed the konsole_part_metaobject() C function as it isn't needed anymore 2006-03-29 Richard Dale <rdale@foton.es> * Added a KDE::KonsolePart class for when a konsolePart KPart is dynamically loaded. It adds the five methods from the ExtTerminalInterface to the KParts::ReadOnlyPart for interacting with the konsolePart. * Example usage: factory = KDE::LibLoader.self().factory("libkonsolepart") if ! factory.nil? @konsole = factory.create(self) end @konsole.autoStartShell = true @konsole.startProgram("/bin/echo", ["echo", "-n"]) @konsole.showShellInDir( TQt::Dir.home.path ) @konsole.sendInput( "puts 'hello there konsole'" ) * Fixes problem reported by Ranjan Ghosh 2006-03-21 Richard Dale <rdale@foton.es> * 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. 2006-02-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * When KDE::CmdLineArgs.init() was called with just a single KDE::AboutData arg, it crashed. Fixes problem reported by Han Holl. * KDE::CmdLineArgs and KDE::AboutData instances are no longer deleted by qtruby on garbage collection. Fixes another problem reported by Han Holl. 2005-12-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * A marshaller was defined for 'KFileItemList' as a value type, but not for a 'KFileItemList*' pointer type. Fixes problem reported by Diego 'Flameeyes' Pettenò 2005-10-05 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Changed DCOP code now that TQt::ByteArray class is in the Smoke library * Fixed some examples derived from PyKDE with 0 or 1 passed as a boolean instead of true or false for Ruby. A bug in the overloaded method resolution meant it worked when it shouldn't have. 2005-09-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Removed get and set methods for accessing fields on the structs TDEIO::UDSAtom and KDE::ConfigSkeleton::MenuItem::Choice as they aren't needed any more now that accessor methods are generated in the Smoke library. 2005-06-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * DCOP signals were failing with a 'undefined method `fullSignalName'' error * Fixes problem reported by Chris Gow 2005-05-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * At the moment require 'Qt' and require 'Korundum' statements can't appear in the same ruby program. Suitable fatal error messages are now displayed to indicate the cause of the problem. Fixes bug reported by Caleb Tennis and Dave M 2005-05-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * KDE::DCOPRef.methods now returns remote DCOP methods as well as the local methods in the DCOPRef. So now irb tab completion works with dynamically discovered DCOP methods, in a DCOPRef. 2005-04-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added some #ifdefs so the bindings build with KDE 3.1.x * Fixed problem with rbtdeconfig_compile Makefile.am 2005-03-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Fixed problems caused ''include Qt'' and "include KDE" statements in korundum.rb where a couple of methods were being added to class Module was causing all the Qt and KDE methods to be added to Module. 2005-02-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added marshallers for TDEIO::UDSEntry and TDEIO::UDSEntryList, and accessor methods for fields in the TDEIO::UDSAtom struct. Fixes problem reported by Ian Monroe. 2005-01-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added some fixes for the rbtdeconfig_compiler code generation and example code. * The method 'isImmutable' is added to KDE::ConfigSkeletonItems as a special case - it's missing from the Smoke runtime as it's from a template based superclass. 2005-01-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Translated the rbtdeconfig_compiler examples from C++ to ruby, and improved the build rules in the Makefile.ams 2005-01-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The rbtdeconfig_compiler now uses TQt::Variants to hold the values in KDE::ConfigSkeleton instance variables. * The values of the KDE::ConfigSkeletonItems are then set as properties with the TQt::Variants. It wasn't possible to handle references to primitive types such as 'int&' via ruby, so properties are a more 'scripting language' oriented approach. * The embedded code in the .kcfg examples was converted from C++ to ruby 2005-01-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Tidied up the rbtdeconfig_compiler code * Added marshaller for TDEConfigSkeleton::ItemEnum::Choice lists to and from ruby Arrays, and accessor methods for the Item::Enum::Choice struct. 2005-01-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added rbtdeconfig_compiler for compiling .kcfg files to ruby 2004-12-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added inspect() and pretty_print() methods for KDE::AboutPerson and KDE::AboutTranslator, along with some more fields in the KDE::AboutData inspector 2004-12-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The DCOPObject inspect method was crashing if the instance hadn't been fully constructed * The kde_resolve_classname function's arg types were changed to match the new ones in the resolve_classname() function of QtRuby/handlers.cpp. 2004-12-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * DCOPObject inspect() and pretty_print() methods added 2004-12-09 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * More inspect() and pretty_print() methods for common classes to improve debugging - KDE::DCOPRef, KDE::Service, KDE::URL, KDE::AboutData. 2004-10-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * References to Qt.tqWarning() changed to tqWarning() 2004-10-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Fixed crashes in the KURL::List marshalling. A copy is now made of each KURL item in the list when being marshalled to a ruby Array. When a KURL::List is deleted the contents are all deleted too as it's a TQValueList. Hence, the need to make copies. 2004-10-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The RESTORE() method is no longer an KDE::Mainwindow method, but a globally available Object method 2004-10-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added I18N_NOOP() and I18N_NOOP2() methods 2004-10-11 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Set global flag 'application_terminated' when KDE::Application or KDE::UniqueApplication has returned from exec(). 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: kde-bindings@kde.org 2004-10-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Reverted recent fix for crash on exit, as it only occured with a TQt::Application and seems to introduce a crash in KDE apps where none existed before. CCMAIL: kde-bindings@kde.org CCMAIL: thibauld.favre@laposte.net 2004-10-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * When a Korundum application exits, the top level widgets are now destroyed as well as the KDE::Application itself. This fixes a problem where the ruby garbage collection frees instances in an arbitrary order afer the program has exited, and destroys a Hash containing TQMetaData info needed for tidying up. 2004-10-04 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * 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 KDE::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: <tfavre@mandrakesoft.com> 2004-10-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Removed warning about '*' being used as an argument prefix 2004-09-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added some rtti tests for DOM::Node to instantiate a more accurate ruby class 2004-09-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The resolve_classname() function in qtruby 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. * This fixes a problem reported by Zack Rusin where a KArchiveEntry returned to ruby was not being correctly constructed as either a KArchiveDirectory or KArchiveFile according to the KArchiveEntry::isDirectory() method CCMAIL: zack@kde.org 2004-09-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added marshallers for KPluginInfo::List and TQPtrList<KParts::Plugin> 2004-09-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The KDE::UniqueApplication constructor now sets up the $kapp global variable 2004-09-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added $kapp global variable, example usage: config = $kapp.config() 2004-08-29 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added Kontact module to provide a namespace for the kontact plugin api 2004-08-25 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Underscore naming for can be used for DCOP 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 dcop function: process_can_be_reused(1234) processCanBeReused(1234) 2004-08-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The form 'foo?' can be used as a synonym for isFoo() or hasFoo() dcop methods. * Instead of: result = dcopRef.isFoo() * Use this more rubyish form: result = dcopRef.foo? if result.nil? puts "DCOP predicate failed" else puts "foo? is #{result}" end 2004-08-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The 'qWarning()' calls in korundum.rb needed to be prefixed with the 'Qt.'' module otherwise a missing dcop call causes an infinite loop. 2004-08-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added KServiceGroup::List to ruby array marshaller 2004-08-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Fixed regression bug in emitting dcop signals 2004-08-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added a KMountPoint::List marshaller 2004-07-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Removed the various TQ_INT32 etc types from the Smoke stack <--> TQDataStream marshalling. This was because the code generated by the dcopidl2cpp tool doesn't have them. So if a machine has native 64 bit ints, then that width will be used rather than TQ_INT32. 2004-07-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added a couple of template methods for marshalling TQValueLists and TQMaps. * Included a quite a few new marshaller functions for TQPtrLists, as well as the two types above. 2004-07-28 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Fixed crash in marshalling KMimeTypes and KServiceGroups to ruby values 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Replaced TQString casts to 'const char *' with latin1() calls 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added error messages for invalid dcop slot or signal declarations 2004-07-27 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * DCOP error messages now go via tqWarning() rather than puts() 2004-07-26 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added TQMap<TQCString,DCOPRef> marshalling to and from Smoke as well as dcop 2004-07-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * DCOP reply types can now contain colons * Added KURL::List to ruby Array marshalling, fixed crash when marshalling from a ruby Array to a KURL::List * Add KURL::List ruby <--> dcop marshalling 2004-07-24 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added TQMap<TQString,DCOPRef> ruby <--> dcop marshalling 2004-07-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Tidied up the dcop meta object code a bit 2004-07-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * If a ruby class with 'k_dcop' declarations isn't a subclass of DCOPObject, only one instance of a DCOPObject is created no matter how many instances are instantiated. 2004-07-23 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Tidied code - removed unnecessary action_map_to_list helper method 2004-07-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * TQDataStream temporary variables added for the TQ_INT32 etc types when writing to a Smoke stack from a TQDataStream. 2004-07-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added casts to the various macros like 'TQ_INT32' when writing a Smoke stack to a TQDataStream 2004-07-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added TQValueList<TQCString> marshalling ruby <--> dcop 2004-07-21 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Ruby dcop slots can now return actionMaps and windowLists as 'TQMap<TQString,DCOPRef>' and 'TQValueList<DCOPRef>' types 2004-07-20 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added missing 'TQMap<TQString,DCOPRef>' dcop reply marshalling * The recently added dcop reply type 'TQValueList<DCOPRef>' now works * The parsing of a dcop function type signature to add it to the cache was wrong if the reply type contained angle brackets or commas 2004-07-19 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added dynamic ruby to C++ argument type resolution in DCOPRef calls. When a call of the form 'dcopRef.getPoint(5, "foobar")' is made, the C++ type signature is obtained from the list of those returned by DCOPRef.functions(). If the function name is overloaded, the ruby arg types are used to pick the correct call. 2004-07-18 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Made 'parrot.age = 7' a synonym for 'parrot.setAge(7)' with dcop refs 2004-07-17 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * More missing DCOP marshallers - TQStringList and QCStringList * A class with a 'k_dcop' slots declaration can now be an instance of DCOPObject * Converted the 'petshop' DCOP server example from pytde python 2004-07-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added missing TQCString DCOP marshalling 2004-07-16 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Removed the recently added TQValueList<DCOPRef> marshaller as no '<<' or '<<' TQDataStream marshallers are in the Smoke runtime * Added missing primitive type marshalling to and from a DCOP TQByteArray 2004-07-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Fixed completely non-working DCOP call reply marshalling. An instance wasn't being constructed to read the TQByteArray containing the reply via a TQDataStream. 2004-07-15 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added TQValueList<DCOPRef> marshalling 2004-07-14 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Converted various example app templates from pytde to ruby Korundum 2004-07-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * A DCOP send() now correctly returns true or false according to success * DCOP call()s with void or ASYNC return types return true on success, or nil on failure 2004-07-13 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Improved the KSharePtr item marshalling so that a copy of the item is constructed with no accompanying smart pointer. The new item can be owned by ruby without needing to special case deref'ing the pointer on destruction. Apart from KService's don't have a public copy constructor, where the ref count is incremented to prevent their destruction. 2004-07-12 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * The full C++ type signature is no longer needed in DCOP calls: dcopRef = KDE::DCOPRef.new("dcopslot", "MyWidget") There are three different ways to specify the call: 1) res = dcopRef.call("getPoint(TQString)", "Hello from dcopsend") 2) res = dcopRef.call("getPoint", "Hello from dcopsend") 3) res = dcopRef.getPoint("Hello from dcopsend") puts "result class: #{res.class.name} x: #{res.x} y: #{res.y}" * Send to a DCOPRef is similar: 1) dcopRef.send("mySlot(TQString)", "Hello from dcopsend") 2) dcopRef.send("mySlot", "Hello from dcopsend") * If the type signature of the target dcop slot is ommited it is derived from the ruby argument types: String => TQString Float => double Integer => int TQt::Widget etc => TQWidget KDE::URL etc => KURL [] => TQStringList 2004-07-08 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Reverted fix for TQChar args being passed as ruby strings after discussion with Germain Garand. A TQChar arg is now passed like this: cs = KDE::CharSelect.new(self, "chselect", nil, TQt::Char.new(0), 0) This will no longer work for now: cs = KDE::CharSelect.new(self, "chselect", nil, ' ', 0) 2004-07-07 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Translated the excellent pytde 'UISampler' app to ruby * Added TDEAction list marshalling * KDE::MainWindow.RESTORE() and kRestoreMainWindows() methods added. 2004-07-06 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added more translated pytde examples * The type signatures of dcop signals and slots are now normalized and unwanted white space is removed 2004-07-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Translated some pytde example programs from python to ruby * Added various marshallers for the TDESharedPtr related methods/classes 2004-07-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Replaced obsolete STR2CSTR() calls with StringValuePtr() 2004-07-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * DCOP Signals now work, they are defined like this: k_dcop_signals 'void testEmitSignal(TQString)' def doit() puts "In doit.." emit testEmitSignal("Hello DCOP Slot") end * Connect slot 'mySlot' to a DCOP signal like this: res = slottest.connectDCOPSignal("dcopsignal", "SenderWidget", "testEmitSignal(TQString)", "mySlot(TQString)", true) 2004-06-30 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added DCOPRef.call() and send() support. * Define a dcop slot like this in one ruby program: k_dcop 'TQPoint getPoint(TQString)' def getPoint(msg) puts "message: #{msg}" return TQt::Point.new(50, 100) end * Call it from another program and print the reply, like this: dcopRef = KDE::DCOPRef.new("dcopslot", "MyWidget") res = dcopRef.call("TQPoint getPoint(TQString)", "Hello from dcopsend") puts "result class: #{res.class.name} x: #{res.x} y: #{res.y}" * Send to a DCOPRef is similar: dcopRef = KDE::DCOPRef.new("dcopslot", "MyWidget") dcopRef.send("mySlot(TQString)", "Hello from dcopsend") * Note that the full type signature of the target dcop slot must be specified at present. 2004-03-10 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Added marshaller for TDETrader::OfferList to ruby array * Used DOM::Node rtti to instantiate a ruby value with the correct subclass 2004-03-03 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * If the DCOP reply type is 'void' or 'ASYNC', it isn't marshalled into the TQByteArray 'replyData' arg of DCOPObject::process(). 2004-03-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Slots and signals couldn't be added to KDE classes, such as KDE::PushButton 2004-03-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * A DCOPClient instance is now created for classes with a 'k_dcop_signals' declaration, and emitDCOPSignal() is called on that. 2004-03-01 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Ruby DCOP support now working - here is some example code: require 'Korundum' class MyWidget < KDE::PushButton k_dcop 'TQPoint mySlot(int,TQString)' def initialize(parent, name) super end def mySlot(counter,greeting) return TQt::Point.new(50, 100) end end - This slot is passed an integer and a string, and returns a TQt::Point. - Note that the class doesn't have to inherit from DCOPObject. If you include a 'k_dcop' slots declaration a 'listener' dcop object instance is created automatically. 2004-01-08 Alexander Kellett <lypanov@kde.org> * Imported krubyinit sources, thus at last fixing the startup segv's with gentoo/x86/qt 3.2. 2003-12-02 Richard Dale <Richard_Dale@tipitina.demon.co.uk> * Korundum - a Ruby SMOKE adaptor for KDE, initial checkin (proxy commit from lypanov)