Rename *.docbook -> *.xml
Mon May 11 22:23:03 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Rename *.docbook -> *.xml
diff -rN -u old-doc/Makefile new-doc/Makefile
--- old-doc/Makefile 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/Makefile 2014-10-30 06:55:25.000000000 +0100
@@ -5,15 +5,15 @@
all: manual.html index.html
-DEPENDANCIES := *docbook *.xsl ../qt.examples/src/*.lisp ../kde.examples/src/*.lisp *.dtd
+DEPENDANCIES := *.xml *.xsl ../qt.examples/src/*.lisp ../kde.examples/src/*.lisp *.dtd
manual.html: $(DEPENDANCIES)
- xmllint --xinclude --postvalid manual.docbook > /dev/null
- xsltproc --xinclude -o $@ manual.xsl manual.docbook
+ xmllint --xinclude --postvalid manual.xml > /dev/null
+ xsltproc --xinclude -o $@ manual.xsl manual.xml
index.html: $(DEPENDANCIES)
-# xsltproc --xinclude --stringparam base.dir "manual/" chunk.xsl manual.docbook
- xsltproc --xinclude chunk.xsl manual.docbook
+# xsltproc --xinclude --stringparam base.dir "manual/" chunk.xsl manual.xml
+ xsltproc --xinclude chunk.xsl manual.xml
diff -rN -u old-doc/introduction.docbook new-doc/introduction.docbook
--- old-doc/introduction.docbook 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/introduction.docbook 1970-01-01 01:00:00.000000000 +0100
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="introduction">
-<title>Introduction</title>
-<para>
- CL-Smoke provides CLOS bindings for the Qt and KDE libraries.
-</para>
-<section><title>Related</title>
-<itemizedlist>
- <listitem><para><ulink url="http://common-lisp.net/project/commonqt/">
- CommonQt</ulink> (No CLOS, no startup overhead)</para></listitem>
- <listitem><para><ulink url="http://sourceforge.net/projects/lisp-cffi-qt4">
- Lisp-CFFI-Qt4</ulink> (dead)</para></listitem>
-</itemizedlist>
-</section>
-<section><title>Status</title>
-<para>
-GUI creation should work and API will probably remain compatible.
-The next goal is to reorganize the argument conversion / overload resolution and to
-integrate more conversions between Lisp and C++ (<code>QList</code> etc.).
-</para>
-
-<section><title>Limitation</title>
-<itemizedlist>
- <listitem><para>Bad multithreaded performance
- due to a lock for the global hash-tables.</para></listitem>
- <listitem><para>Limited conversions. E.g. <code>QList&lt;T&gt;</code> is missing.
- </para></listitem>
- <listitem><para>10 seconds startup time (for <package>qt.examples</package>) on a
- Pentium M 1.7GHz. (Compilation ~20 seconds)</para></listitem>
- <listitem><para>Needs to be recompiled when the Smoke library is updated.</para></listitem>
- <listitem><para>Saving a core image is not supported.</para></listitem>
- <listitem><para>Does not recover well from errors
- <footnote><para>Thus you often need to restart the Lisp process
- during interactive developement.</para></footnote>.</para></listitem>
-</itemizedlist>
-</section>
-</section>
-<section><title>Installation</title>
-<section><title>Dependencies</title>
-<itemizedlist>
- <listitem><para><ulink
- url="http://techbase.kde.org/Development/Languages/Smoke">Smoke2</ulink>
- bindings 4.2 or later</para></listitem>
- <listitem><para><ulink url="http://qtsoftware.com">Qt</ulink>
- (development package)</para></listitem>
- <listitem><para>
- <ulink url="http://cmake.org">CMake</ulink> 2.6
- </para></listitem>
- <listitem><para>a make program (preferably Gnu Make)</para></listitem>
- <listitem><para>a C++ compiler (GCC)</para></listitem>
-</itemizedlist>
-<para>
-On the Lisp side you need <ulink url="http://mudballs.com">mudballs</ulink>
-and <ulink url="http://tobias.rautenkranz.ch/lisp/sysdef.cmake">sysdef.cmake</ulink>.
-</para>
-</section>
-
-<section><title>Supported Platforms</title>
-<para>
- <ulink url="http://www.sbcl.org">SBCL</ulink> on Linux x86 in works;
- <ulink url="http://www.cons.org/cmucl/">CMUCL</ulink>
- and
- <ulink url="http://clisp.cons.org/">CLISP</ulink> currently do not.
- It should be possible to get it to work (with SBCL) on
- other platforms. Contact me if you have any questions.
-</para>
-</section>
-<section><title>Installation</title>
-<para>
- You need to checkout the darcs repositories:
- <programlisting>
-cd <userinput>SOME_DIR</userinput>
-for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples; do
- darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r"
-done
- </programlisting>
- Then add the directory <userinput>SOME_DIR</userinput> to the mudballs search paths by adding
- <programlisting>
-(push (wildcard-searcher "<userinput>SOME_DIR</userinput>/*/*.mbd")
- *custom-search-modules*)
- </programlisting>
- to <filename>~/.mudballs</filename>.
-</para>
-<note>
-<para>
- Loading the packages with <code>mb:load</code> compiles the C wrapper libraries as needed.
-</para>
-</note>
-</section>
-</section>
-</chapter>
diff -rN -u old-doc/introduction.xml new-doc/introduction.xml
--- old-doc/introduction.xml 1970-01-01 01:00:00.000000000 +0100
+++ new-doc/introduction.xml 2014-10-30 06:55:25.000000000 +0100
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="introduction">
+<title>Introduction</title>
+<para>
+ CL-Smoke provides CLOS bindings for the Qt and KDE libraries.
+</para>
+<section><title>Related</title>
+<itemizedlist>
+ <listitem><para><ulink url="http://common-lisp.net/project/commonqt/">
+ CommonQt</ulink> (No CLOS, no startup overhead)</para></listitem>
+ <listitem><para><ulink url="http://sourceforge.net/projects/lisp-cffi-qt4">
+ Lisp-CFFI-Qt4</ulink> (dead)</para></listitem>
+</itemizedlist>
+</section>
+<section><title>Status</title>
+<para>
+GUI creation should work and API will probably remain compatible.
+The next goal is to reorganize the argument conversion / overload resolution and to
+integrate more conversions between Lisp and C++ (<code>QList</code> etc.).
+</para>
+
+<section><title>Limitation</title>
+<itemizedlist>
+ <listitem><para>Bad multithreaded performance
+ due to a lock for the global hash-tables.</para></listitem>
+ <listitem><para>Limited conversions. E.g. <code>QList&lt;T&gt;</code> is missing.
+ </para></listitem>
+ <listitem><para>10 seconds startup time (for <package>qt.examples</package>) on a
+ Pentium M 1.7GHz. (Compilation ~20 seconds)</para></listitem>
+ <listitem><para>Needs to be recompiled when the Smoke library is updated.</para></listitem>
+ <listitem><para>Saving a core image is not supported.</para></listitem>
+ <listitem><para>Does not recover well from errors
+ <footnote><para>Thus you often need to restart the Lisp process
+ during interactive developement.</para></footnote>.</para></listitem>
+</itemizedlist>
+</section>
+</section>
+<section><title>Installation</title>
+<section><title>Dependencies</title>
+<itemizedlist>
+ <listitem><para><ulink
+ url="http://techbase.kde.org/Development/Languages/Smoke">Smoke2</ulink>
+ bindings 4.2 or later</para></listitem>
+ <listitem><para><ulink url="http://qtsoftware.com">Qt</ulink>
+ (development package)</para></listitem>
+ <listitem><para>
+ <ulink url="http://cmake.org">CMake</ulink> 2.6
+ </para></listitem>
+ <listitem><para>a make program (preferably Gnu Make)</para></listitem>
+ <listitem><para>a C++ compiler (GCC)</para></listitem>
+</itemizedlist>
+<para>
+On the Lisp side you need <ulink url="http://mudballs.com">mudballs</ulink>
+and <ulink url="http://tobias.rautenkranz.ch/lisp/sysdef.cmake">sysdef.cmake</ulink>.
+</para>
+</section>
+
+<section><title>Supported Platforms</title>
+<para>
+ <ulink url="http://www.sbcl.org">SBCL</ulink> on Linux x86 in works;
+ <ulink url="http://www.cons.org/cmucl/">CMUCL</ulink>
+ and
+ <ulink url="http://clisp.cons.org/">CLISP</ulink> currently do not.
+ It should be possible to get it to work (with SBCL) on
+ other platforms. Contact me if you have any questions.
+</para>
+</section>
+<section><title>Installation</title>
+<para>
+ You need to checkout the darcs repositories:
+ <programlisting>
+cd <userinput>SOME_DIR</userinput>
+for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples; do
+ darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r"
+done
+ </programlisting>
+ Then add the directory <userinput>SOME_DIR</userinput> to the mudballs search paths by adding
+ <programlisting>
+(push (wildcard-searcher "<userinput>SOME_DIR</userinput>/*/*.mbd")
+ *custom-search-modules*)
+ </programlisting>
+ to <filename>~/.mudballs</filename>.
+</para>
+<note>
+<para>
+ Loading the packages with <code>mb:load</code> compiles the C wrapper libraries as needed.
+</para>
+</note>
+</section>
+</section>
+</chapter>
diff -rN -u old-doc/kde.docbook new-doc/kde.docbook
--- old-doc/kde.docbook 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/kde.docbook 1970-01-01 01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="kde">
-<title>KDE</title>
-<para>
-Besides the <package>:kde</package> package there
-is <package>:kde.tests</package> for the unit tests and
-<package>:kde.examples</package> containing the examples.
-</para>
-
-<section><title>Examples</title>
-<para>
-The examples can be run with:
-<programlisting>
-(mb:load <package>:kde.examples</package>)
-</programlisting>
-An the running the function of the example; e.g.:
-<programlisting>
-(<methodname>kde.examples:mandelbrot</methodname>)
-</programlisting>
-</para>
-<example>
-<title>Hello World</title>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="kde.hello-world.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-<programlisting language="lisp">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../kde.examples/src/hello-world.lisp" parse="text" />
-</programlisting>
-</example>
-
-<example>
-<title>KMandelbrot</title>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="kmandelbrot.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-<para>
- A port of the
- <ulink url="http://doc.trolltech.com/4.5/threads-mandelbrot.html">
- Qt Mandelbrot example</ulink> to KDE.
- <blockquote>
- <para>
-The Mandelbrot example shows how to use a worker thread to perform heavy computations without blocking the main thread's event loop.
- </para>
- </blockquote>
- The sources can be found in the
- <filename><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/kde.examples;a=tree;f=/src/mandelbrot">src/mandelbrot/</ulink></filename>
- directory of the <package>:kde.examples</package> package
-
-</para>
-</example>
-</section>
-
-</chapter>
diff -rN -u old-doc/kde.xml new-doc/kde.xml
--- old-doc/kde.xml 1970-01-01 01:00:00.000000000 +0100
+++ new-doc/kde.xml 2014-10-30 06:55:25.000000000 +0100
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="kde">
+<title>KDE</title>
+<para>
+Besides the <package>:kde</package> package there
+is <package>:kde.tests</package> for the unit tests and
+<package>:kde.examples</package> containing the examples.
+</para>
+
+<section><title>Examples</title>
+<para>
+The examples can be run with:
+<programlisting>
+(mb:load <package>:kde.examples</package>)
+</programlisting>
+An the running the function of the example; e.g.:
+<programlisting>
+(<methodname>kde.examples:mandelbrot</methodname>)
+</programlisting>
+</para>
+<example>
+<title>Hello World</title>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="kde.hello-world.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+<programlisting language="lisp">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../kde.examples/src/hello-world.lisp" parse="text" />
+</programlisting>
+</example>
+
+<example>
+<title>KMandelbrot</title>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="kmandelbrot.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+<para>
+ A port of the
+ <ulink url="http://doc.trolltech.com/4.5/threads-mandelbrot.html">
+ Qt Mandelbrot example</ulink> to KDE.
+ <blockquote>
+ <para>
+The Mandelbrot example shows how to use a worker thread to perform heavy computations without blocking the main thread's event loop.
+ </para>
+ </blockquote>
+ The sources can be found in the
+ <filename><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/kde.examples;a=tree;f=/src/mandelbrot">src/mandelbrot/</ulink></filename>
+ directory of the <package>:kde.examples</package> package
+
+</para>
+</example>
+</section>
+
+</chapter>
diff -rN -u old-doc/manual.docbook new-doc/manual.docbook
--- old-doc/manual.docbook 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/manual.docbook 1970-01-01 01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % link-api SYSTEM "link-api.dtd">
- %link-api;
- ]>
-<book id="cl-smoke" lang="en">
-
-<bookinfo>
-<title>CL-Smoke</title>
-<authorgroup>
-<author>
-<firstname>Tobias</firstname>
-<surname>Rautenkranz</surname>
-<email>mail #\@ tobias #\. rautenkranz #\. ch</email>
-</author>
-</authorgroup>
-
-<copyright>
-<year>2009</year>
-<holder>Tobias Rautenkranz</holder>
-</copyright>
-<legalnotice><para>
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3
-or any later version published by the Free Software Foundation;
-with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-</para></legalnotice>
-<date>2009-03-25</date>
-<releaseinfo>0.0.1</releaseinfo>
-<abstract>
-<para>
-Common Lisp bindings for Qt and KDE using Smoke.
-</para>
-</abstract>
-</bookinfo>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="smoke.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="qt.docbook" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kde.docbook" />
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fdl-1.3.xml" />
-
-</book>
diff -rN -u old-doc/manual.xml new-doc/manual.xml
--- old-doc/manual.xml 1970-01-01 01:00:00.000000000 +0100
+++ new-doc/manual.xml 2014-10-30 06:55:25.000000000 +0100
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % link-api SYSTEM "link-api.dtd">
+ %link-api;
+ ]>
+<book id="cl-smoke" lang="en">
+
+<bookinfo>
+<title>CL-Smoke</title>
+<authorgroup>
+<author>
+<firstname>Tobias</firstname>
+<surname>Rautenkranz</surname>
+<email>mail #\@ tobias #\. rautenkranz #\. ch</email>
+</author>
+</authorgroup>
+
+<copyright>
+<year>2009</year>
+<holder>Tobias Rautenkranz</holder>
+</copyright>
+<legalnotice><para>
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+</para></legalnotice>
+<date>2009-03-25</date>
+<releaseinfo>0.0.1</releaseinfo>
+<abstract>
+<para>
+Common Lisp bindings for Qt and KDE using Smoke.
+</para>
+</abstract>
+</bookinfo>
+
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="smoke.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="qt.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kde.xml" />
+
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fdl-1.3.xml" />
+
+</book>
diff -rN -u old-doc/qt.docbook new-doc/qt.docbook
--- old-doc/qt.docbook 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/qt.docbook 1970-01-01 01:00:00.000000000 +0100
@@ -1,181 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="qt">
-<title>Qt</title>
-<para>
-Besides the <package>:qt</package> there are these packages: with
-<itemizedlist>
- <listitem><para>
- <package>:qt.uitools</package>
- <ulink url="http://doc.trolltech.com/4.5/qtuitools.html">
- QtUiTools</ulink></para></listitem>
- <listitem><para><package>:qt.test</package>
- <ulink url="http://doc.trolltech.com/4.5/qttest.html">
- QtTest</ulink></para></listitem>
- <listitem><para><package>:qt.webkit</package>
- <ulink url="http://doc.trolltech.com/4.5/qtwebkit.html">
- QtWebKit</ulink>
- </para></listitem>
-</itemizedlist>
-which provide bindings for their Qt module.
-Additionally there is the <package>:qt.tests</package> system, containing
-the unit tests and <package>:qt.examples</package> for various examples.
-</para>
-
-<section><title>qt:application</title>
-<para>
-The <classname>qt:application</classname> object should created with:
-<macro>qt:with-app</macro>. In its body the event loop can be
-started with <methodname>qt:exec</methodname>.
-</para>
-<example>
-<title>Hello World</title>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="hello-world.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-<programlisting language="lisp">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world.lisp" parse="text" />
-</programlisting>
-</example>
-</section>
-
-<section><title>Signal-Slot</title>
-<para>
-<genericfunction>qt:connect</genericfunction> connects a signal to a slot.
-The signal is either a <classname>qt:qsignal</classname> created with
-<methodname>qt:make-signal</methodname> or a C++ signal by using
-<methodname>qt:get-signal</methodname>.
-The slot can be a slot returned by <classname>qt:make-slot</classname>, a function
-or a C++ slot a return from <methodname>qt:get-slot</methodname>.
-</para>
-<example><title>Quit</title>
-<programlisting>
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world-quit.lisp" parse="text" />
-</programlisting>
-</example>
-<para>
-When the argument types for a slot or signal are not specified they are determined when
-the first connection is made. Note that when connecting a <classname>qt:qsignal</classname>
-to a <classname>qt:qslot</classname> at least one must have its arguments types specified.
-</para>
-
-<para>
-The functionality of the Qt <code>SIGNAL</code> and <code>SLOT</code> macros is
-provided by <methodname>qt:qsignal</methodname> and <methodname>qt:qslot</methodname>.
-</para>
-</section>
-
-<section><title>Properties</title>
-<para>
-<classname>qt:object</classname> properties can be accessed with
-<methodname>qt:property</methodname> (setf-able).
-The name of the property can be either a string in C++ style or a symbol in Lisp style.
-</para>
-<informalexample>
-<programlisting>
-(let ((object (make-instance '<classname>qt:object</classname>)))
- (setf (<methodname>qt:property</methodname> object 'object-name) "Foo")
- (assert (string= "Foo" (<methodname>qt:property</methodname> object "objectName"))))
-</programlisting>
-</informalexample>
-
-</section>
-
-<section><title>Variant</title>
-<para>
-A <classname>qt:variant</classname> can be constructed with <methodname>qt:make-variant</methodname>
-or to pass a Lisp object with <methodname>qt:make-lisp-variant</methodname>.
-Its value is returned by <genericfunction>qt:value</genericfunction>.
-</para>
-</section>
-
-<section><title>i18n</title>
-<para>
-You can use <methodname>qt:tr</methodname> to translate strings.
-</para>
-<example>
-<title>i18n Hello World</title>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="i18n-hello-world.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-
-<programlisting language="po">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
-href="../qt.examples/src/i18n-hello-world.lisp" parse="text" />
-</programlisting>
-
-<formalpara>
-<title><filename>hello-world_de.po</filename></title>
-<para>
-<programlisting language="po">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world_de.po" parse="text" />
-</programlisting>
-</para>
-</formalpara>
-</example>
-
-<para>
-Gettext is used to extract the i18n strings and compile the message catalog.
-See <filename><ulink url="../qt.examples/src/CMakeLists.txt">CMakeLists.txt</ulink></filename>
-and <filename><ulink url="../qt.examples/src/UseClQti18n.cmake">UseClQti18n.cmake</ulink></filename>
-in the <filename class="directory">src</filename> directory of <package>:qt.examples</package> how to do this.
-</para>
-</section>
-
-<section><title>Examples</title>
-<para>
-You can run the examples with:
-<programlisting>
-(mb:load <package>:qt.examples</package>)
-(<methodname>qt.examples:launcher</methodname>)
-</programlisting>
-</para>
-
-<example>
-<title>Repl</title>
-<para>
-Use a <classname>qt:string-list-model</classname> with a <classname>qt:list-view</classname>
-to show evaluated lisp expressions.
-</para>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="repl.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-<programlisting language="lisp">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/repl.lisp" parse="text" />
-</programlisting>
-</example>
-
-<example>
-<title>Class Browser</title>
-<para>Qt Classes browser using <package>:qt.webkit</package> to display the
-API doc and a custom <classname>qt:list-model</classname>
-for the <classname>qt:list-view</classname> of the available classes.
-</para>
-<screenshot>
-<mediaobject>
-<imageobject>
- <imagedata fileref="class-browser.png" format="PNG"/>
-</imageobject>
-</mediaobject>
-</screenshot>
-<programlisting language="lisp">
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/class-browser.lisp" parse="text" />
-</programlisting>
-</example>
-
-</section>
-
-</chapter>
diff -rN -u old-doc/qt.xml new-doc/qt.xml
--- old-doc/qt.xml 1970-01-01 01:00:00.000000000 +0100
+++ new-doc/qt.xml 2014-10-30 06:55:25.000000000 +0100
@@ -0,0 +1,181 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="qt">
+<title>Qt</title>
+<para>
+Besides the <package>:qt</package> there are these packages: with
+<itemizedlist>
+ <listitem><para>
+ <package>:qt.uitools</package>
+ <ulink url="http://doc.trolltech.com/4.5/qtuitools.html">
+ QtUiTools</ulink></para></listitem>
+ <listitem><para><package>:qt.test</package>
+ <ulink url="http://doc.trolltech.com/4.5/qttest.html">
+ QtTest</ulink></para></listitem>
+ <listitem><para><package>:qt.webkit</package>
+ <ulink url="http://doc.trolltech.com/4.5/qtwebkit.html">
+ QtWebKit</ulink>
+ </para></listitem>
+</itemizedlist>
+which provide bindings for their Qt module.
+Additionally there is the <package>:qt.tests</package> system, containing
+the unit tests and <package>:qt.examples</package> for various examples.
+</para>
+
+<section><title>qt:application</title>
+<para>
+The <classname>qt:application</classname> object should created with:
+<macro>qt:with-app</macro>. In its body the event loop can be
+started with <methodname>qt:exec</methodname>.
+</para>
+<example>
+<title>Hello World</title>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="hello-world.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+<programlisting language="lisp">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world.lisp" parse="text" />
+</programlisting>
+</example>
+</section>
+
+<section><title>Signal-Slot</title>
+<para>
+<genericfunction>qt:connect</genericfunction> connects a signal to a slot.
+The signal is either a <classname>qt:qsignal</classname> created with
+<methodname>qt:make-signal</methodname> or a C++ signal by using
+<methodname>qt:get-signal</methodname>.
+The slot can be a slot returned by <classname>qt:make-slot</classname>, a function
+or a C++ slot a return from <methodname>qt:get-slot</methodname>.
+</para>
+<example><title>Quit</title>
+<programlisting>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world-quit.lisp" parse="text" />
+</programlisting>
+</example>
+<para>
+When the argument types for a slot or signal are not specified they are determined when
+the first connection is made. Note that when connecting a <classname>qt:qsignal</classname>
+to a <classname>qt:qslot</classname> at least one must have its arguments types specified.
+</para>
+
+<para>
+The functionality of the Qt <code>SIGNAL</code> and <code>SLOT</code> macros is
+provided by <methodname>qt:qsignal</methodname> and <methodname>qt:qslot</methodname>.
+</para>
+</section>
+
+<section><title>Properties</title>
+<para>
+<classname>qt:object</classname> properties can be accessed with
+<methodname>qt:property</methodname> (setf-able).
+The name of the property can be either a string in C++ style or a symbol in Lisp style.
+</para>
+<informalexample>
+<programlisting>
+(let ((object (make-instance '<classname>qt:object</classname>)))
+ (setf (<methodname>qt:property</methodname> object 'object-name) "Foo")
+ (assert (string= "Foo" (<methodname>qt:property</methodname> object "objectName"))))
+</programlisting>
+</informalexample>
+
+</section>
+
+<section><title>Variant</title>
+<para>
+A <classname>qt:variant</classname> can be constructed with <methodname>qt:make-variant</methodname>
+or to pass a Lisp object with <methodname>qt:make-lisp-variant</methodname>.
+Its value is returned by <genericfunction>qt:value</genericfunction>.
+</para>
+</section>
+
+<section><title>i18n</title>
+<para>
+You can use <methodname>qt:tr</methodname> to translate strings.
+</para>
+<example>
+<title>i18n Hello World</title>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="i18n-hello-world.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+
+<programlisting language="po">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+href="../qt.examples/src/i18n-hello-world.lisp" parse="text" />
+</programlisting>
+
+<formalpara>
+<title><filename>hello-world_de.po</filename></title>
+<para>
+<programlisting language="po">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/hello-world_de.po" parse="text" />
+</programlisting>
+</para>
+</formalpara>
+</example>
+
+<para>
+Gettext is used to extract the i18n strings and compile the message catalog.
+See <filename><ulink url="../qt.examples/src/CMakeLists.txt">CMakeLists.txt</ulink></filename>
+and <filename><ulink url="../qt.examples/src/UseClQti18n.cmake">UseClQti18n.cmake</ulink></filename>
+in the <filename class="directory">src</filename> directory of <package>:qt.examples</package> how to do this.
+</para>
+</section>
+
+<section><title>Examples</title>
+<para>
+You can run the examples with:
+<programlisting>
+(mb:load <package>:qt.examples</package>)
+(<methodname>qt.examples:launcher</methodname>)
+</programlisting>
+</para>
+
+<example>
+<title>Repl</title>
+<para>
+Use a <classname>qt:string-list-model</classname> with a <classname>qt:list-view</classname>
+to show evaluated lisp expressions.
+</para>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="repl.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+<programlisting language="lisp">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/repl.lisp" parse="text" />
+</programlisting>
+</example>
+
+<example>
+<title>Class Browser</title>
+<para>Qt Classes browser using <package>:qt.webkit</package> to display the
+API doc and a custom <classname>qt:list-model</classname>
+for the <classname>qt:list-view</classname> of the available classes.
+</para>
+<screenshot>
+<mediaobject>
+<imageobject>
+ <imagedata fileref="class-browser.png" format="PNG"/>
+</imageobject>
+</mediaobject>
+</screenshot>
+<programlisting language="lisp">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../qt.examples/src/class-browser.lisp" parse="text" />
+</programlisting>
+</example>
+
+</section>
+
+</chapter>
diff -rN -u old-doc/smoke.docbook new-doc/smoke.docbook
--- old-doc/smoke.docbook 2014-10-30 06:55:25.000000000 +0100
+++ new-doc/smoke.docbook 1970-01-01 01:00:00.000000000 +0100
@@ -1,204 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="smoke">
-<title>Usage</title>
-<para></para>
-<section><title>Symbols</title>
-<para>
-C++ names are converted to Lisp symbols by converting <code>camelCase</code>
-to <code>camel-case</code>. Underscores <code>#\_</code> are replaced with
-<code>#\-</code> and a leading uppercase K or Q is removed.
-</para>
-<para>
-E.g.: <code>QHelloWorld_foo</code> becomes <code>hello-world-foo</code>.
-</para>
-</section>
-
-<section><title>Class</title>
-<para>
-C++ classes have a corresponding CLOS class. The can be used like any CLOS class; E.g:
-to make a <code>QObject</code> instance:
-<informalexample>
-<programlisting>
-(make-instance '<classname>qt:object</classname>)
-</programlisting>
-</informalexample>
-Supply arguments as list to the <code>:args</code> keyword:
-<informalexample>
-<programlisting>
-(let ((parent (make-instance '<classname>qt:object</classname>)))
- (make-instance '<classname>qt:object</classname> :args (list parent)))
-</programlisting>
-</informalexample>
-</para>
-<para>
-To extend a C++ class you have to use <classname>cxx:class</classname> as metaclass:
-<informalexample>
-<programlisting>
-(defclass my-object (<classname>qt:object</classname>)
- ()
- (:metaclass <classname>cxx:class</classname>))
-</programlisting>
-</informalexample>
-</para>
-</section>
-
-<section><title>Methods</title>
-<para>
-C++ methods are generic functions in the <code>:cxx</code> package.
-</para>
-<para>
-The C++ method call: <code>myInstance->frob(1);</code> is in Lisp:
-<informalexample>
-<programlisting>(frob my-instance 1)</programlisting>
-</informalexample>
-</para>
-<section><title>Overload Resolution</title>
-<para>
-C++ style overload resolution with conversion sequences is suppored. For example this:
-<informalexample>
-<programlisting>
-(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) (make-instance '<classname>qt:color</classname> :args '("green")))
-</programlisting>
-</informalexample>
-is equivalent to:
-<informalexample>
-<programlisting>
-(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) "green")
-</programlisting>
-</informalexample>
-In the second case a temporary <classname>qt:color</classname> instance is implicitly created.
-</para>
-</section>
-
-<section><title>Setter Methods</title>
-<para>
-Instead of calling a setter method that takes no additional arguments,
-<informalexample>
-<programlisting>
-(<genericfunction>cxx:set-object-name</genericfunction> (make-instance '<classname>qt:object</classname>) "foo")
-</programlisting>
-</informalexample>
-you can use its <code>setf</code>able getter.
-<informalexample>
-<programlisting>
-(setf (<genericfunction>cxx:object-name</genericfunction> (make-instance '<classname>qt:object</classname>)) "foo")
-</programlisting>
-</informalexample>
-</para>
-</section>
-
-<section><title><code>defmethod</code></title>
-<para>
-You can extend the <package>:cxx</package> generic functions by
-adding methods. <code>:around</code>, <code>:before</code>, <code>:after</code>
-and <code>(call-next-method)</code> are supported.
-</para>
-<informalexample>
-<programlisting>(defclass the-object-does-nothing (<classname>qt:object</classname>)
- ()
- (:metaclass <classname>cxx:class</classname>))
-
-(defmethod <genericfunction>cxx:timer-event</genericfunction> ((object the-object-does-nothing) event)
- (declare (ignore object event))
- (call-next-method))
-</programlisting>
-</informalexample>
-<para>
-<package>:cxx</package> generic functions can be overload by argument count. Lambda list
-keywords (e.g.: <code>&amp;rest</code> and <code>&amp;key</code>) are not supported.
-</para>
-<note><para>
-Make sure you have the right number of arguments when adding a method; otherwise it will
-not be called.
-</para></note>
-</section>
-<section><title>Operators</title>
-<para>
-Instead of using the various <code>cxx:operator</code> methods you can use their Lisp equivalent
-in the <package>:cxx</package> package.
-<simplelist type='horiz' columns='4'>
-<member><code>cxx:&gt;</code></member> <!-- FIXME mb.document handling of no alphnum chars !-->
-<member><code>cxx:&gt;=</code></member>
-</simplelist>
-<simplelist type='horiz' columns='4'>
-<member><code>cxx:=</code></member>
-<member><code>cxx:/=</code></member>
-</simplelist>
-<simplelist type='horiz' columns='4'>
-<member><code>cxx:&lt;=</code></member>
-<member><code>cxx:&lt;</code></member>
-</simplelist>
-<simplelist type='horiz' columns='4'>
-<member><code>cxx:+</code></member>
-<member><code>cxx:-</code></member>
-<member><code>cxx:*</code></member>
-<member><code>cxx:/</code></member>
-<member><code>cxx:1+</code></member>
-<member><code>cxx:1-</code></member>
-</simplelist>
-<simplelist type='horiz' columns='4'>
-<member><methodname>cxx:incf</methodname></member>
-<member><methodname>cxx:decf</methodname></member>
-</simplelist>
-<simplelist>
-<member><methodname>cxx:aref</methodname></member>
-</simplelist>
-</para>
-</section>
-</section>
-
-<section><title>Static Methods</title>
-<para>
-The static C++ method <code>QByteArray::number(int n, int base=10)</code>
-can be called by:
-<informalexample>
-<programlisting>(<methodname>qt:byte-array.number</methodname> 37)</programlisting>
-</informalexample>
-which is equivalent to the C++ code <code>QByteArray::number(37);</code>.
-Or with:
-<informalexample>
-<programlisting>(<genericfunction>cxx:number</genericfunction> (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
-</informalexample>
-or:
-<informalexample>
-<programlisting>(<genericfunction>cxx:number</genericfunction> (make-instance '<classname>qt:byte-array</classname>) 37)</programlisting>
-</informalexample>
-</para>
-</section>
-
-<section><title>Constants</title>
-<para>
- C++ Class enums available as constants. E.g.:
- <code>QColor::Rgb</code> is <constant>qt:color.+rgb+</constant>.
- See <package>:cxx-support</package>.
-</para>
-</section>
-
-<section><title>Garbage Collection</title>
-<para>
-You should be able to use C++ Class instances like normal Lisp object.
-</para>
-<para>
-C++ classes are automatically deleted when their lisp object gets garbage collected;
-except when they (QObjects) have a parent and thus the parent is responsible for
-their deletion. When a <classname>qt:object</classname> has a parent, a strong
-reference is kept to prevent its garbage collection until the parent is deleted.
-</para>
-<caution>
-<para>
-An instance may depend on an other one.
-It is a bad idea to do something like this:
-<programlisting>
-(defvar *meta* (<genericfunction>cxx:meta-object</genericfunction> (make-instance 'qt:object)))
-</programlisting>
-<code>*meta*</code> references a <classname>qt:meta-class</classname>
-that can become invalid at any time, since the <classname>qt:object</classname> instance can
-be garbage collected, and then the <code>QMetaObject</code> instance is deleted along
-with the <code>QObject</code>.
-</para>
-</caution>
-</section>
-
-</chapter>
diff -rN -u old-doc/smoke.xml new-doc/smoke.xml
--- old-doc/smoke.xml 1970-01-01 01:00:00.000000000 +0100
+++ new-doc/smoke.xml 2014-10-30 06:55:25.000000000 +0100
@@ -0,0 +1,204 @@
+<?xml version="1.0"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="smoke">
+<title>Usage</title>
+<para></para>
+<section><title>Symbols</title>
+<para>
+C++ names are converted to Lisp symbols by converting <code>camelCase</code>
+to <code>camel-case</code>. Underscores <code>#\_</code> are replaced with
+<code>#\-</code> and a leading uppercase K or Q is removed.
+</para>
+<para>
+E.g.: <code>QHelloWorld_foo</code> becomes <code>hello-world-foo</code>.
+</para>
+</section>
+
+<section><title>Class</title>
+<para>
+C++ classes have a corresponding CLOS class. The can be used like any CLOS class; E.g:
+to make a <code>QObject</code> instance:
+<informalexample>
+<programlisting>
+(make-instance '<classname>qt:object</classname>)
+</programlisting>
+</informalexample>
+Supply arguments as list to the <code>:args</code> keyword:
+<informalexample>
+<programlisting>
+(let ((parent (make-instance '<classname>qt:object</classname>)))
+ (make-instance '<classname>qt:object</classname> :args (list parent)))
+</programlisting>
+</informalexample>
+</para>
+<para>
+To extend a C++ class you have to use <classname>cxx:class</classname> as metaclass:
+<informalexample>
+<programlisting>
+(defclass my-object (<classname>qt:object</classname>)
+ ()
+ (:metaclass <classname>cxx:class</classname>))
+</programlisting>
+</informalexample>
+</para>
+</section>
+
+<section><title>Methods</title>
+<para>
+C++ methods are generic functions in the <code>:cxx</code> package.
+</para>
+<para>
+The C++ method call: <code>myInstance->frob(1);</code> is in Lisp:
+<informalexample>
+<programlisting>(frob my-instance 1)</programlisting>
+</informalexample>
+</para>
+<section><title>Overload Resolution</title>
+<para>
+C++ style overload resolution with conversion sequences is suppored. For example this:
+<informalexample>
+<programlisting>
+(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) (make-instance '<classname>qt:color</classname> :args '("green")))
+</programlisting>
+</informalexample>
+is equivalent to:
+<informalexample>
+<programlisting>
+(<genericfunction>cxx:set-pen</genericfunction> (make-instance '<classname>qt:painter</classname>) "green")
+</programlisting>
+</informalexample>
+In the second case a temporary <classname>qt:color</classname> instance is implicitly created.
+</para>
+</section>
+
+<section><title>Setter Methods</title>
+<para>
+Instead of calling a setter method that takes no additional arguments,
+<informalexample>
+<programlisting>
+(<genericfunction>cxx:set-object-name</genericfunction> (make-instance '<classname>qt:object</classname>) "foo")
+</programlisting>
+</informalexample>
+you can use its <code>setf</code>able getter.
+<informalexample>
+<programlisting>
+(setf (<genericfunction>cxx:object-name</genericfunction> (make-instance '<classname>qt:object</classname>)) "foo")
+</programlisting>
+</informalexample>
+</para>
+</section>
+
+<section><title><code>defmethod</code></title>
+<para>
+You can extend the <package>:cxx</package> generic functions by
+adding methods. <code>:around</code>, <code>:before</code>, <code>:after</code>
+and <code>(call-next-method)</code> are supported.
+</para>
+<informalexample>
+<programlisting>(defclass the-object-does-nothing (<classname>qt:object</classname>)
+ ()
+ (:metaclass <classname>cxx:class</classname>))
+
+(defmethod <genericfunction>cxx:timer-event</genericfunction> ((object the-object-does-nothing) event)
+ (declare (ignore object event))
+ (call-next-method))
+</programlisting>
+</informalexample>
+<para>
+<package>:cxx</package> generic functions can be overload by argument count. Lambda list
+keywords (e.g.: <code>&amp;rest</code> and <code>&amp;key</code>) are not supported.
+</para>
+<note><para>
+Make sure you have the right number of arguments when adding a method; otherwise it will
+not be called.
+</para></note>
+</section>
+<section><title>Operators</title>
+<para>
+Instead of using the various <code>cxx:operator</code> methods you can use their Lisp equivalent
+in the <package>:cxx</package> package.
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:&gt;</code></member> <!-- FIXME mb.document handling of no alphnum chars !-->
+<member><code>cxx:&gt;=</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:=</code></member>
+<member><code>cxx:/=</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:&lt;=</code></member>
+<member><code>cxx:&lt;</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><code>cxx:+</code></member>
+<member><code>cxx:-</code></member>
+<member><code>cxx:*</code></member>
+<member><code>cxx:/</code></member>
+<member><code>cxx:1+</code></member>
+<member><code>cxx:1-</code></member>
+</simplelist>
+<simplelist type='horiz' columns='4'>
+<member><methodname>cxx:incf</methodname></member>
+<member><methodname>cxx:decf</methodname></member>
+</simplelist>
+<simplelist>
+<member><methodname>cxx:aref</methodname></member>
+</simplelist>
+</para>
+</section>
+</section>
+
+<section><title>Static Methods</title>
+<para>
+The static C++ method <code>QByteArray::number(int n, int base=10)</code>
+can be called by:
+<informalexample>
+<programlisting>(<methodname>qt:byte-array.number</methodname> 37)</programlisting>
+</informalexample>
+which is equivalent to the C++ code <code>QByteArray::number(37);</code>.
+Or with:
+<informalexample>
+<programlisting>(<genericfunction>cxx:number</genericfunction> (find-class '<classname>qt:byte-array</classname>) 37)</programlisting>
+</informalexample>
+or:
+<informalexample>
+<programlisting>(<genericfunction>cxx:number</genericfunction> (make-instance '<classname>qt:byte-array</classname>) 37)</programlisting>
+</informalexample>
+</para>
+</section>
+
+<section><title>Constants</title>
+<para>
+ C++ Class enums available as constants. E.g.:
+ <code>QColor::Rgb</code> is <constant>qt:color.+rgb+</constant>.
+ See <package>:cxx-support</package>.
+</para>
+</section>
+
+<section><title>Garbage Collection</title>
+<para>
+You should be able to use C++ Class instances like normal Lisp object.
+</para>
+<para>
+C++ classes are automatically deleted when their lisp object gets garbage collected;
+except when they (QObjects) have a parent and thus the parent is responsible for
+their deletion. When a <classname>qt:object</classname> has a parent, a strong
+reference is kept to prevent its garbage collection until the parent is deleted.
+</para>
+<caution>
+<para>
+An instance may depend on an other one.
+It is a bad idea to do something like this:
+<programlisting>
+(defvar *meta* (<genericfunction>cxx:meta-object</genericfunction> (make-instance 'qt:object)))
+</programlisting>
+<code>*meta*</code> references a <classname>qt:meta-class</classname>
+that can become invalid at any time, since the <classname>qt:object</classname> instance can
+be garbage collected, and then the <code>QMetaObject</code> instance is deleted along
+with the <code>QObject</code>.
+</para>
+</caution>
+</section>
+
+</chapter>