modular smoke. --> to head
Sat Apr 3 21:12:53 CEST 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* KDE is split up in kde.ui and kde.core.
Sat Apr 3 21:12:32 CEST 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* C++ member variable access
Sun Jan 10 09:57:54 CET 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* modular smoke.
diff -rN -u old-doc/introduction.xml new-doc/introduction.xml
--- old-doc/introduction.xml 2014-10-30 07:10:31.000000000 +0100
+++ new-doc/introduction.xml 2014-10-30 07:10:31.000000000 +0100
@@ -24,13 +24,13 @@
when a Lisp to C++ conversion is missing and a pointer will be returned when there is no C++ to Lisp
conversion.
</para></listitem>
- <listitem><para>10 seconds startup time<footnote>
+ <listitem><para>6 seconds startup time<footnote>
<para>
Using a core image it is around 1 second.
(see <xref linkend="core-image"/>)
</para></footnote>
(for <package>qt.examples</package>) on a
- Pentium M 1.7GHz. (Compilation ~20 seconds)</para></listitem>
+ Pentium M 1.7GHz. </para></listitem>
<listitem><para>Needs to be recompiled when the Smoke library is updated.</para></listitem>
<listitem><para>Could be faster</para></listitem>
</itemizedlist>
@@ -49,7 +49,7 @@
<itemizedlist>
<listitem><para><ulink
url="http://techbase.kde.org/Development/Languages/Smoke">Smoke2</ulink>
- bindings from svn; r1061660 or later
+ bindings from svn.
<footnote><para>
The new smokegenerator is needed (developed by Arno Rehn for the GSOC 09).
</para></footnote>
@@ -59,7 +59,6 @@
<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>
@@ -100,13 +99,18 @@
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 qt.phonon; do
+for r in smoke qt.core qt.gui qt.network qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon; do
darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r"
done
</programlisting>
+ <note>
+ <para>
+ There are also the following repositories: qt.svg qt.dbus kde.core kde.ui kde.tests kde.examples
+ </para>
+ </note>
</para>
<para>
- Build and install the <package>:smoke</package> and <package>:qt</package> C wrapper libraries with:
+ Build and install the <package>:smoke</package> and <package>:qt.core</package> C wrapper libraries with:
<informalexample>
<programlisting>cmake ./ &amp;&amp; make &amp;&amp; sudo make install</programlisting>
</informalexample>
@@ -114,7 +118,11 @@
</para>
<para>
When you have symlinked the <filename>.asd</filename> system files, you
- should be able to load the systems.
+ should be able to load the systems. The system name has a
+ <code>:cl-smoke.</code> prefix. e.g.:
+ <informalexample>
+ <programlisting language="lisp">(asdf:oos 'asdf:load-op :cl-smoke.qt.examples) </programlisting>
+ </informalexample>
</para>
</section>
</section>
diff -rN -u old-doc/kde.xml new-doc/kde.xml
--- old-doc/kde.xml 2014-10-30 07:10:31.000000000 +0100
+++ new-doc/kde.xml 2014-10-30 07:10:31.000000000 +0100
@@ -4,7 +4,11 @@
<chapter id="kde">
<title>KDE</title>
<para>
-Besides the <package>:kde</package> package there
+To use the KDE libraries use the <package>:cl-smoke.kde.ui</package>
+(Depends on <package>:cl-smoke.kde.core</package>).
+</para>
+<para>
+Besides these packages there
is <package>:kde.tests</package> for the unit tests and
<package>:kde.examples</package> containing the examples.
</para>
@@ -13,7 +17,7 @@
<para>
The examples can be run with:
<programlisting language="lisp">
-(mb:load <package>:kde.examples</package>)
+(asdf:oos 'asdf:load-op <package>:cl-smoke.kde.examples</package>)
</programlisting>
And then running the function of the example; e.g.:
<programlisting language="lisp">
diff -rN -u old-doc/qt.xml new-doc/qt.xml
--- old-doc/qt.xml 2014-10-30 07:10:31.000000000 +0100
+++ new-doc/qt.xml 2014-10-30 07:10:31.000000000 +0100
@@ -4,31 +4,37 @@
<chapter id="qt">
<title>Qt</title>
<para>
-Besides the <package>:qt</package> there are these modules: with
+Besides the <package>:cl-smoke.qt.gui</package> there are these modules:
<itemizedlist>
<listitem><para>
- <package>:qt.uitools</package>
+ <package>:cl-smoke.qt.uitools</package>
<ulink url="http://doc.trolltech.com/4.5/qtuitools.html">
QtUiTools</ulink></para></listitem>
- <listitem><para><package>:qt.test</package>
+ <listitem><para><package>:cl-smoke.qt.test</package>
<ulink url="http://doc.trolltech.com/4.5/qttest.html">
QtTest</ulink></para></listitem>
- <listitem><para><package>:qt.webkit</package>
+ <listitem><para><package>:cl-smoke.qt.webkit</package>
<ulink url="http://doc.trolltech.com/4.5/qtwebkit.html">
QtWebKit</ulink>
</para></listitem>
- <listitem><para><package>:qt.phonon</package>
+ <listitem><para><package>:cl-smoke.qt.phonon</package>
<ulink url="http://doc.trolltech.com/4.5/phonon.html">
Phonon</ulink>
</para></listitem>
+ <listitem><para><package>:cl-smoke.qt.network</package>
+ The network classes of Qt.
+ </para></listitem>
+ <listitem><para><package>:cl-smoke.qt.core</package>
+ the nogui Qt core.
+ </para></listitem>
</itemizedlist>
which provide bindings for their Qt module. The class names of this modules are in
the <package>:qt</package> package. (E.g. Phonon::VideoPlayer is <code>'qt:phonon.video-player</code>
and QTest is <code>'qt:test</code>)
</para>
<para>
-Additionally there is the <package>:qt.tests</package> system, containing
-the unit tests and <package>:qt.examples</package> for various examples.
+Additionally there is the <package>:cl-smoke.qt.tests</package> system, containing
+the unit tests and <package>:cl-smoke.qt.examples</package> for various examples.
</para>
<section id="qapplication"><title>qt:application</title>
@@ -55,6 +61,11 @@
a <classname>qt:application</classname> instance exists. When there are, for example, <classname>qt:widget</classname> instances
at the end of <macro>qt:with-app</macro>, they are deleted by the <classname>qt:application</classname> destructor.
</para>
+<para>
+Custom <methodname>cxx:paint-event</methodname> methods can use <macro>qt:with-painter</macro>
+to ensure that the <classname>qt:painter</classname> is deactivated at the end of the method.
+</para>
+
<section><title>Interactive Development</title>
<para>
The <package>:cl-smoke.repl</package> allows you to start a <classname>qt:application</classname> event loop in the background for
@@ -156,7 +167,7 @@
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> on how to do this.
+in the <filename class="directory">src/</filename> directory of <package>:cl-smoke.qt.examples</package> on how to do this.
</para>
</section>
@@ -164,7 +175,7 @@
<para>
You can run the examples with:
<programlisting language="lisp">
-(mb:load <package>:qt.examples</package>)
+(asdf:oos 'asdf:load-op <package>:cl-smoke.qt.examples</package>)
(<methodname>qt.examples:launcher</methodname>)
</programlisting>
</para>
@@ -189,7 +200,7 @@
<example>
<title>Class Browser</title>
-<para>Qt Classes browser using <package>:qt.webkit</package> to display the
+<para>Qt Classes browser using <package>:cl-smoke.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>
diff -rN -u old-doc/smoke.xml new-doc/smoke.xml
--- old-doc/smoke.xml 2014-10-30 07:10:31.000000000 +0100
+++ new-doc/smoke.xml 2014-10-30 07:10:31.000000000 +0100
@@ -212,6 +212,20 @@
</para>
</section>
+<section id="members"><title>Member variables</title>
+<para>
+C++ member variables of an instance can be accessed by using <code>slot-value</code>; e.g.:
+<informalexample>
+<programlisting language="lisp">(slot-value (make-instance 'qt:object) :static-meta-object)</programlisting>
+</informalexample>
+or
+<informalexample>
+<programlisting language="lisp">(slot-value (find-class 'qt:object) :static-meta-object)</programlisting>
+</informalexample>
+Usually they can also be accessed using methods from the <package>:cxx</package> package.
+</para>
+</section>
+
<section id="gc"><title>Garbage Collection</title>
<para>
You should be able to use C++ Class instances like normal Lisp object.