Sat Apr 3 21:12:53 CEST 2010 Tobias Rautenkranz * KDE is split up in kde.ui and kde.core. Sat Apr 3 21:12:32 CEST 2010 Tobias Rautenkranz * C++ member variable access Sun Jan 10 09:57:54 CET 2010 Tobias Rautenkranz * modular smoke. Sun Dec 13 14:22:09 CET 2009 Tobias Rautenkranz * remove mudballs Wed Sep 2 14:08:06 CEST 2009 Tobias Rautenkranz * cl-smoke now supports user conversions for return values. diff -rN -u old-doc/chunk.xsl new-doc/chunk.xsl --- old-doc/chunk.xsl 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/chunk.xsl 2014-10-30 08:24:03.000000000 +0100 @@ -3,7 +3,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - + diff -rN -u old-doc/introduction.xml new-doc/introduction.xml --- old-doc/introduction.xml 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/introduction.xml 2014-10-30 08:24:03.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. - 10 seconds startup time + 6 seconds startup time Using a core image it is around 1 second. (see ) (for qt.examples) on a - Pentium M 1.7GHz. (Compilation ~20 seconds) + Pentium M 1.7GHz. Needs to be recompiled when the Smoke library is updated. Could be faster @@ -49,7 +49,7 @@ Smoke2 - bindings from svn; r1015073 or later + bindings from svn. The new smokegenerator is needed (developed by Arno Rehn for the GSOC 09). @@ -59,15 +59,9 @@ CMake 2.6 - a make program (preferably Gnu Make) a C++ compiler (GCC) -On the Lisp side you need Mudballs -and sysdef.cmake. - - -If you prefer to use ASDF instead of Mudballs, you need these systems: alexandria bordeaux-threads @@ -102,53 +96,34 @@
Installation - For loading the systems you can use Mudballs or ASDF. But first get the sources: - - You need to checkout the darcs repositories: cd SOME_DIR -for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon kde kde.tests kde.examples repl; 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 - -
Mudballs + - Then add the directory SOME_DIR to the mudballs search paths by adding - -(push (wildcard-searcher "SOME_DIR/*/*.mbd") - *custom-search-modules*) - - to ~/.mudballs. - - - - Loading the packages with mb:load compiles the C wrapper libraries as needed. - - -
- -
ASDF - - The .asd files are - generated - from the mudballs files. - Get the .asd files and - place them in the corresponding source directories. Then symlink the .asd files in a ASDF search path. - You can for example run: ln -s SOME_DIR/*/*.asd ASDF_PATH + There are also the following repositories: qt.svg qt.dbus kde.core kde.ui kde.tests kde.examples + + - Now build and install the :smoke and :qt C wrapper libraries with: + Build and install the :smoke and :qt.core C wrapper libraries with: cmake ./ && make && sudo make install in the smoke/ and qt/ directories. - - Some examples get the paths for the files to load from their Mudballs system (ui and i18n) and thus will not work. - -
+ + When you have symlinked the .asd system files, you + should be able to load the systems. The system name has a + :cl-smoke. prefix. e.g.: + + (asdf:oos 'asdf:load-op :cl-smoke.qt.examples) + +
diff -rN -u old-doc/kde.xml new-doc/kde.xml --- old-doc/kde.xml 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/kde.xml 2014-10-30 08:24:03.000000000 +0100 @@ -4,7 +4,11 @@ KDE -Besides the :kde package there +To use the KDE libraries use the :cl-smoke.kde.ui +(Depends on :cl-smoke.kde.core). + + +Besides these packages there is :kde.tests for the unit tests and :kde.examples containing the examples. @@ -13,7 +17,7 @@ The examples can be run with: -(mb:load :kde.examples) +(asdf:oos 'asdf:load-op :cl-smoke.kde.examples) And then running the function of the example; e.g.: diff -rN -u old-doc/manual.xsl new-doc/manual.xsl --- old-doc/manual.xsl 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/manual.xsl 2014-10-30 08:24:03.000000000 +0100 @@ -3,7 +3,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - + diff -rN -u old-doc/nonlink-apidoc.xsl new-doc/nonlink-apidoc.xsl --- old-doc/nonlink-apidoc.xsl 1970-01-01 01:00:00.000000000 +0100 +++ new-doc/nonlink-apidoc.xsl 2014-10-30 08:24:03.000000000 +0100 @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff -rN -u old-doc/qt.xml new-doc/qt.xml --- old-doc/qt.xml 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/qt.xml 2014-10-30 08:24:03.000000000 +0100 @@ -4,31 +4,37 @@ Qt -Besides the :qt there are these modules: with +Besides the :cl-smoke.qt.gui there are these modules: - :qt.uitools + :cl-smoke.qt.uitools QtUiTools - :qt.test + :cl-smoke.qt.test QtTest - :qt.webkit + :cl-smoke.qt.webkit QtWebKit - :qt.phonon + :cl-smoke.qt.phonon Phonon + :cl-smoke.qt.network + The network classes of Qt. + + :cl-smoke.qt.core + the nogui Qt core. + which provide bindings for their Qt module. The class names of this modules are in the :qt package. (E.g. Phonon::VideoPlayer is 'qt:phonon.video-player and QTest is 'qt:test) -Additionally there is the :qt.tests system, containing -the unit tests and :qt.examples for various examples. +Additionally there is the :cl-smoke.qt.tests system, containing +the unit tests and :cl-smoke.qt.examples for various examples.
qt:application @@ -55,6 +61,11 @@ a qt:application instance exists. When there are, for example, qt:widget instances at the end of qt:with-app, they are deleted by the qt:application destructor. + +Custom cxx:paint-event methods can use qt:with-painter +to ensure that the qt:painter is deactivated at the end of the method. + +
Interactive Development The :cl-smoke.repl allows you to start a qt:application event loop in the background for @@ -156,7 +167,7 @@ Gettext is used to extract the i18n strings and compile the message catalog. See CMakeLists.txt and UseClQti18n.cmake -in the src/ directory of :qt.examples on how to do this. +in the src/ directory of :cl-smoke.qt.examples on how to do this.
@@ -164,7 +175,7 @@ You can run the examples with: -(mb:load :qt.examples) +(asdf:oos 'asdf:load-op :cl-smoke.qt.examples) (qt.examples:launcher) @@ -189,7 +200,7 @@ Class Browser -Qt Classes browser using :qt.webkit to display the +Qt Classes browser using :cl-smoke.qt.webkit to display the API doc and a custom qt:list-model for the qt:list-view of the available classes. @@ -209,7 +220,7 @@
OpenGL -For OpenGL an binding is needed (e.g.: +For OpenGL a binding is needed (e.g.: cl-opengl). Origami @@ -226,34 +237,12 @@ -Because cl-opengl is need to -run the example, but is not in mudballs; the origami example is not included in the mudballs system. -Axiom is needed for building. +Axiom is needed to generate the lisp source to that +calculates the vertices.
-
CommonQt -:cl-smoke.commonqt -is an experimental compatibility layer to run Lisp code using the -CommonQt API with cl-smoke. -It is incomplete, but implementing the missing pieces should be straight forward. - - - - - - - -CommonQt tutorial 14 -t14.lisp -running with :cl-smoke.commonqt. - - - - -
- diff -rN -u old-doc/smoke.xml new-doc/smoke.xml --- old-doc/smoke.xml 2014-10-30 08:24:03.000000000 +0100 +++ new-doc/smoke.xml 2014-10-30 08:24:03.000000000 +0100 @@ -91,9 +91,6 @@ In the second case a temporary qt:color instance is implicitly created.
- -User defined conversions for return values are currently not supported (in defmethods). -
Setter Methods @@ -215,6 +212,20 @@
+
Member variables + +C++ member variables of an instance can be accessed by using slot-value; e.g.: + +(slot-value (make-instance 'qt:object) :static-meta-object) + +or + +(slot-value (find-class 'qt:object) :static-meta-object) + +Usually they can also be accessed using methods from the :cxx package. + +
+
Garbage Collection You should be able to use C++ Class instances like normal Lisp object.