Additions to the documentation

This commit is contained in:
Markus Gans 2020-09-27 20:43:53 +02:00
parent 72bcce87b7
commit 722be333df
3 changed files with 422 additions and 13 deletions

View File

@ -1,3 +1,7 @@
2020-09-27 Markus Gans <guru.mail@muenster.de>
* An explanation of the widget tree was added to the document
of the first steps
2020-09-26 Markus Gans <guru.mail@muenster.de> 2020-09-26 Markus Gans <guru.mail@muenster.de>
* FData improvements * FData improvements
* The number of FObject children can now be limited with * The number of FObject children can now be limited with

View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg61"
version="1.1"
width="189.15524mm"
viewBox="0 0 189.15524 79.081643"
height="79.081642mm">
<metadata
id="metadata67">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs65">
<marker
style="overflow:visible"
id="Arrow1Mend"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4659" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path4671" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4650" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend-9"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4659-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend-9-7"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4659-6-0" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend-9-7-1"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4659-6-0-3" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mend-9-7-1-7"
refX="0"
refY="0"
orient="auto">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path4659-6-0-3-2" />
</marker>
</defs>
<linearGradient
y2="222.78156"
y1="296.49637"
x2="34.111275"
x1="33.698196"
gradientUnits="userSpaceOnUse"
id="a">
<stop
style="stop-color:#e8a7a7;stop-opacity:1"
id="stop2"
stop-color="#dbdbdc"
offset="0" />
<stop
id="stop4"
stop-color="#fff"
offset="1" />
</linearGradient>
<g
id="g59"
transform="translate(22.717556,-254.08671)">
<rect
y="254.29825"
x="7.8681464"
height="10.661442"
width="57.783382"
id="rect4522"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.42306876;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<text
id="text47"
y="261.55215"
x="37.113487"
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0">
<tspan
y="261.55215"
x="37.113487"
id="tspan4512">FApplication</tspan>
</text>
</g>
<g
transform="translate(30.374168,-0.28964391)"
id="g4560">
<rect
y="19.022009"
x="15.875"
height="10.661442"
width="26.458334"
id="rect4522-3"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.4230687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<text
id="text47-6"
y="26.275915"
x="29.24534"
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0">
<tspan
id="tspan4555"
x="29.24534"
y="26.275915">FDialog</tspan>
</text>
</g>
<g
id="g4560-9"
transform="translate(46.035751,18.23119)">
<rect
y="19.022009"
x="15.875"
height="10.661442"
width="26.458334"
id="rect4522-3-7"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.4230687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<text
id="text47-6-3"
y="26.275915"
x="29.24534"
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0">
<tspan
id="tspan4555-5"
x="29.24534"
y="26.275915">FDialog</tspan>
</text>
</g>
<g
id="g4560-9-0"
transform="translate(14.499168,18.23119)">
<rect
y="19.022009"
x="15.875"
height="10.661442"
width="26.458334"
id="rect4522-3-7-9"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.4230687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<text
id="text47-6-3-8"
y="26.275915"
x="29.24534"
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0">
<tspan
y="26.275915"
x="29.24534"
id="tspan4610">FLabel</tspan>
</text>
</g>
<g
transform="translate(30.374168,-0.28964391)"
id="g6273">
<rect
y="56.063679"
x="31.75"
height="10.661442"
width="26.458334"
id="rect4522-3-7-8"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.4230687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<text
id="text47-6-3-6"
y="63.317585"
x="45.120338"
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0">
<tspan
id="tspan4555-5-2"
x="45.120338"
y="63.317585">FButton</tspan>
</text>
</g>
<text
style="font-style:italic;font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="75.241615"
y="78.968048"
id="text47-6-3-6-5">
<tspan
style="stroke-width:0.42300001"
y="78.968048"
x="75.241615"
id="tspan4555-5-2-2">etc.</tspan>
</text>
<path
id="path4648"
d="m 59.477394,11.08451 v 6.992555"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306876;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
id="path4648-0"
d="m 51.540836,29.605341 v 6.983024"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306873;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9)" />
<path
id="path4648-0-0"
d="M 67.309127,29.605246 V 36.58827"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4230687;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7)" />
<path
id="path4648-0-0-7"
d="m 75.31979,48.126173 v 6.704683"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7-1)" />
<path
id="path4648-0-0-7-6"
d="M 75.31979,66.647017 V 73.3517"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7-1-7)" />
<g
transform="translate(30.374168,-0.28964391)"
id="level">
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-22.323967"
y="8.7182531"
id="text47-7">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1"
x="-22.323967"
y="8.7182531">Parent:</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-23.795216"
y="27.239086"
id="text47-7-2">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-2"
x="-23.795216"
y="27.239086">Child:</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-19.464041"
y="44.796837"
id="text47-7-0">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-21"
x="-19.464041"
y="44.796837">Subchild:</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-14.216478"
y="63.317669"
id="text47-7-7">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-5"
x="-14.216478"
y="63.317669">Sub-subchild:</tspan>
</text>
</g>
<g
id="level-7"
transform="translate(130.08273,-0.28964391)">
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-2.4976854"
y="8.7182531"
id="text47-7-4">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-1"
x="-2.4976861"
y="8.7182531">Application widget (= 1)</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="-10.570067"
y="27.239086"
id="text47-7-2-7">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-2-1"
x="-10.570068"
y="27.239086">Main widget (= 1)</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="9.3612423"
y="44.796837"
id="text47-7-0-1">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-21-1"
x="9.3612432"
y="44.796837">Widget(s) of the main widget (≥ 0)</tspan>
</text>
<text
style="font-weight:bold;font-size:4.93888855px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:left;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
x="14.415886"
y="63.317669"
id="text47-7-7-7">
<tspan
style="stroke-width:0.42300001"
id="tspan4512-1-5-0"
x="14.415885"
y="63.317669">Widget(s) from the parent widget (≥ 0)</tspan>
</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -7,6 +7,8 @@ Table of Contents
<!-- TOC --> <!-- TOC -->
- [Basic functions](#basic-functions) - [Basic functions](#basic-functions)
- [Widgets](#widgets)
- [Widget tree](#widget-tree)
- [How to use the library](#how-to-use-the-library) - [How to use the library](#how-to-use-the-library)
- [Memory Management](#memory-management) - [Memory Management](#memory-management)
- [Event Processing](#event-processing) - [Event Processing](#event-processing)
@ -55,6 +57,48 @@ emulator. It uses various optimization methods to improve the drawing speed.
</figure> </figure>
Widgets
-------
FINAL CUT has many widgets. It offers buttons, input fields, menus, and
dialog boxes that cover the most common use cases. Widgets are visual
elements that are combined to create user interfaces. Own widgets can be
easily created by creating a derived class of `FWidget` or other existing
widgets. All widgets are instances of
[FWidget](https://codedocs.xyz/gansm/finalcut/classfinalcut_1_1FWidget.html)
or its subclasses.
A widget can contain any number of child widgets. Child widgets are displayed
in the display area of the parent widget. Window widgets based on `FWindow`
have their own virtual display area and are independent of the parent widget.
When a parent widget is disabled, hidden, or deleted, the same operation is
used recursively to all its child widgets. The base class `FObject` implements
the self-organized object tree behavior. For example, `addChild()` removes
the child ownership from an existing parent object before assigning it to
the new target. When a child becomes deleted, the parent-child relationship
causes its reference in the parent object to be removed. An explicit
`delChild()` is no longer required here.
Widget tree
-----------
An `FApplication` widget is the top-level widget of an application. It is
unique and can not have a parent widget. The class `FApplication` manages
all settings and assigns keyboard and mouse input to the different widgets.
<figure class="image">
<img src="final-cut-widget tree.svg" alt="application structure">
<figcaption>Figure 2. Widget tree of a FINAL CUT application</figcaption>
</figure>
The main widget of a FINAL CUT application is the only object that
`FApplication` can have as a child. This main widget is usually a window
object that contains all sub-widgets of the application. A sub-widget can
also be another window.
How to use the library How to use the library
---------------------- ----------------------
@ -82,7 +126,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_dialog.cpp.png" alt="dialog.cpp"> <img src="first-steps_dialog.cpp.png" alt="dialog.cpp">
<figcaption>Figure 2. A blank dialog</figcaption> <figcaption>Figure 3. A blank dialog</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -229,7 +273,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_memory.cpp.png" alt="memory.cpp"> <img src="first-steps_memory.cpp.png" alt="memory.cpp">
<figcaption>Figure 3. FObject manages its child objects</figcaption> <figcaption>Figure 4. FObject manages its child objects</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -369,7 +413,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_timer.cpp.png" alt="timer.cpp"> <img src="first-steps_timer.cpp.png" alt="timer.cpp">
<figcaption>Figure 4. FObject::onTimer event handler</figcaption> <figcaption>Figure 5. FObject::onTimer event handler</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -482,7 +526,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_user-event.cpp.png" alt="user-event.cpp"> <img src="first-steps_user-event.cpp.png" alt="user-event.cpp">
<figcaption>Figure 5. User event generation</figcaption> <figcaption>Figure 6. User event generation</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -753,7 +797,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_callback-function.cpp.png" alt="callback-function.cpp"> <img src="first-steps_callback-function.cpp.png" alt="callback-function.cpp">
<figcaption>Figure 6. Button with a callback function</figcaption> <figcaption>Figure 7. Button with a callback function</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -816,7 +860,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_callback-lambda.cpp.png" alt="callback-lambda.cpp"> <img src="first-steps_callback-lambda.cpp.png" alt="callback-lambda.cpp">
<figcaption>Figure 7. Button with lambda expression callback.</figcaption> <figcaption>Figure 8. Button with lambda expression callback.</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -875,7 +919,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_callback-method.cpp.png" alt="callback-method.cpp"> <img src="first-steps_callback-method.cpp.png" alt="callback-method.cpp">
<figcaption>Figure 8. Button with a callback method</figcaption> <figcaption>Figure 9. Button with a callback method</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -996,7 +1040,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_emit-signal.cpp.png" alt="emit-signal.cpp"> <img src="first-steps_emit-signal.cpp.png" alt="emit-signal.cpp">
<figcaption>Figure 9. Callbacks with custom signals</figcaption> <figcaption>Figure 10. Callbacks with custom signals</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -1037,7 +1081,7 @@ If you want to ignore padding spaces, you must force this with the
<figure class="image"> <figure class="image">
<img src="widget-coordinates.svg" alt="widget coordinates"> <img src="widget-coordinates.svg" alt="widget coordinates">
<figcaption>Figure 10. Widget coordinates</figcaption> <figcaption>Figure 11. Widget coordinates</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -1087,7 +1131,7 @@ methods.
<figure class="image"> <figure class="image">
<img src="widget-lengths.svg" alt="widget lengths"> <img src="widget-lengths.svg" alt="widget lengths">
<figcaption>Figure 11. Width and height of a widget</figcaption> <figcaption>Figure 12. Width and height of a widget</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -1140,7 +1184,7 @@ absolute geometry values as a `FRect` object, you can call the method
<figure class="image"> <figure class="image">
<img src="widget-geometry.svg" alt="widget geometry"> <img src="widget-geometry.svg" alt="widget geometry">
<figcaption>Figure 12. Geometry of widgets</figcaption> <figcaption>Figure 13. Geometry of widgets</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -1267,7 +1311,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_size-adjustment.cpp.png" alt="size-adjustment.cpp"> <img src="first-steps_size-adjustment.cpp.png" alt="size-adjustment.cpp">
<figcaption>Figure 13. Dynamic layout</figcaption> <figcaption>Figure 14. Dynamic layout</figcaption>
</figure> </figure>
<br /><br /> <br /><br />
@ -1395,7 +1439,7 @@ int main (int argc, char* argv[])
``` ```
<figure class="image"> <figure class="image">
<img src="first-steps_scrollview.cpp.png" alt="scrollview.cpp"> <img src="first-steps_scrollview.cpp.png" alt="scrollview.cpp">
<figcaption>Figure 14. Dialog with a scrolling viewport</figcaption> <figcaption>Figure 15. Dialog with a scrolling viewport</figcaption>
</figure> </figure>
<br /><br /> <br /><br />