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 Q_INT32 etc types from the Smoke stack <--> QDataStream
	  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 Q_INT32.

2004-07-28  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added a couple of template methods for marshalling QValueLists and QMaps.
	* Included a quite a few new marshaller functions for QPtrLists, 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 QString 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 qWarning() rather than puts()

2004-07-26  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added QMap<QCString,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 QMap<QString,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>

	* QDataStream temporary variables added for the Q_INT32 etc types when
	  writing to a Smoke stack from a QDataStream.

2004-07-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added casts to the various macros like 'Q_INT32' when writing a Smoke
	  stack to a QDataStream

2004-07-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added QValueList<QCString> marshalling ruby <--> dcop

2004-07-21  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Ruby dcop slots can now return actionMaps and windowLists as
	  'QMap<QString,DCOPRef>' and 'QValueList<DCOPRef>' types

2004-07-20  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added missing 'QMap<QString,DCOPRef>' dcop reply marshalling
	* The recently added dcop reply type 'QValueList<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 - QStringList and QCStringList
	* A class with a 'k_dcop' slots declaration can now be an instance
	  of DCOPObject
	* Converted the 'petshop' DCOP server example from pykde python

2004-07-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added missing QCString DCOP marshalling

2004-07-16  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Removed the recently added QValueList<DCOPRef> marshaller as no '<<'
	  or '<<' QDataStream marshallers are in the Smoke runtime
	* Added missing primitive type marshalling to and from a DCOP QByteArray

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 QByteArray containing the reply via a QDataStream.

2004-07-15  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added QValueList<DCOPRef> marshalling

2004-07-14  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Converted various example app templates from pykde 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(QString)", "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(QString)", "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 => QString
	    Float => double
	    Integer => int
	    Qt::Widget etc => QWidget
	    KDE::URL etc => KURL
	    [] => QStringList

2004-07-08  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Reverted fix for QChar args being passed as ruby strings after
	  discussion with Germain Garand. A QChar arg is now passed like this:

	    cs = KDE::CharSelect.new(self, "chselect", nil, Qt::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 pykde 'UISampler' app to ruby
	* Added KAction list marshalling
	* KDE::MainWindow.RESTORE() and kRestoreMainWindows() methods added.

2004-07-06  Richard Dale  <Richard_Dale@tipitina.demon.co.uk>

	* Added more translated pykde 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 pykde example programs from python to ruby
	* Added various marshallers for the KSharedPtr 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(QString)'
		
	    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(QString)", "mySlot(QString)", 
					      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 'QPoint getPoint(QString)'

	    def getPoint(msg)
		puts "message: #{msg}"
		return Qt::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("QPoint getPoint(QString)", "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(QString)", "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 KTrader::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
	  QByteArray '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 'QPoint mySlot(int,QString)'
	
			def initialize(parent, name)
				super
			end
			
			def mySlot(counter,greeting)
				return Qt::Point.new(50, 100)
			end
		end

	  - This slot is passed an integer and a string, and returns a Qt::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)

