add GC for QGET, QFUN return values; fix possible memory leaks (e.g. overridden metho...
[eql:eql.git] / doc / Notes.htm
1 <html>
2 <head>
3 <link rel="stylesheet" href="style.css" type="text/css">
4 </head>
5 <body>
6 <h2>Notes</h2>
7 <p>To run a Lisp file directly, do e.g. <code>eql
8     examples/5-colliding-mice.lisp</code>.</p>
9 <p>See the EQL UI (command <code>eql -qgui</code>) for a complete list of all
10   supported classes and functions.</p>
11 <p>In the above mentioned UI you find a "<b>Select</b>" button, allowing you
12   to select any Qt widget (even in other main widgets), if previously loaded
13   from the UI command line. After selecting a widget, the
14   parameter <code>gui:*q*</code> will be set to it.</p>
15 <p>If you want to use temporary Qt objects, you can use the <code>qlet</code>
16   convenience macro (see the function list). It's a <code>let*</code> variant
17   for Qt objects, deleting them  when leaving its body.</p>
18 <p>No universal GC (garbage collection) for Qt objects:
19 <ul>
20 <li> It's clear that during development there will always be some garbage. The
21   interesting part is final applications.
22 <li>Qt widgets always live inside an object hierarchy (no child will be able
23   to survive its parents...).
24 <li>Additionally, you have the <code>qlet</code> macro, which provides local
25  Qt objects (deleted when leaving the <code>qlet</code> body).
26 </ul>
27 <ul>
28 <li>So, always use <code>qlet</code> (instead of <code>qnew</code>) if you only
29   need a local Qt object inside a function (e.g. QDialog, QRegExp).
30 <li><b>GC</b> is implemented for Qt objects returned by the functions
31  <code>qget</code> and <code>qfun</code>.
32 <li>Multiple, unintentional deletion of the same object (e.g. GC plus
33   explicit <code>qdel</code>) is not a problem (of course), because the
34   pointer value is set to <code>0</code> in <code>qdel</code>.
35 </ul>
36 </p>
37 <p>Enumerations:
38 <ul>
39 <li>Please see the file <code>src/lisp/enums.lisp</code>
40       for all enumeration constants currently defined (some are still
41       missing).
42 <li>Example: <code>|Qt.AlignCenter|</code> (this should look
43       familiar, and is the same representation as choosen in other Qt
44       bindings).</ul>
45 </p>
46 <p>There is no CLOS integration planned. Closures may be good enough
47   sometimes <i>(understatement)</i>, see <code>mouse</code>
48   in <code>examples/5-colliding-mice.lisp</code>.</p>
49 <p>If you're interested in <b>embedding</b> EQL in existing Qt/C++ projects,
50   see the example in directory <code>Qt_EQL/</code> (work in progress...).
51 <hr>
52 <p>The necessary parsing for generating the <code>src/gen/*</code> files is
53   done by parsing the Qt Html documentation. See <code>helper/</code>
54 </body>
55 </html>