File: switch.js.page

package info (click to toggle)
gnome-devel-docs 40.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 79,188 kB
  • sloc: javascript: 2,514; xml: 2,407; ansic: 2,229; python: 1,854; makefile: 805; sh: 499; cpp: 131
file content (437 lines) | stat: -rw-r--r-- 22,105 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="switch.js" xml:lang="cs">
  <info>
  <title type="text">Switch (JavaScript)</title>
    <link type="guide" xref="beginner.js#buttons"/>
    <revision version="0.1" date="2012-06-18" status="draft"/>

    <credit type="author copyright">
      <name>Taryn Fox</name>
      <email its:translate="no">jewelfox@fursona.net</email>
      <years>2012</years>
    </credit>

    <desc>Posuvný vypínač, který se umí překlápět mezi stavy zapnuto a vypnuto</desc>
  </info>

  <title>Switch</title>
  <media type="image" mime="image/png" src="media/switchanimals.png"/>
  <p>Vypínač má dvě polohy, zapnuto a vypnuto. V tomto příkladu si ukážeme, jak použít více vypínačů dohromady k řízení, který obrázek <link xref="image.js">Image</link> bude v okně zobrazen. Obrázky použité v tomto příkladu <link href="https://live.gnome.org/TarynFox?action=AttachFile&amp;do=get&amp;target=Animal+Photos.zip">můžete stáhnout zde</link>.</p>
  <note><p>Okno může obsahovat ikonu „poškozený obrázek“ místo obrázku, když se soubor s obrázkem s názvem <file>redfox.png</file>, <file>muteswan.png</file>, <file>fruitbat.png</file> nebo <file>gentoopenguin.png</file> nenachází ve stejné složce, jako program. Kód a obrázky si můžete změnit dle své libosti. Fotografie s licencí Creative Commons použité v tomto příkladu byly pořízeny z následujících zdrojů a zmenšeny na 640 × 425 pixelů:</p>
    <list>
        <item><p><link href="http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg">Fotografie červené lišky</link> od Rob Lee, licencováno pod <link href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-By</link></p></item>
        <item><p><link href="http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg">Fotografie tučňáka Gentoo</link> od Ken Funakoshi, licencováno pod <link href="http://creativecommons.org/licenses/by-sa/2.0/deed.en">CC-By-SA</link></p></item>
        <item><p><link href="http://www.flickr.com/photos/shekgraham/127431519/in/photostream/">Fotografie kaloně</link> od Shek Graham, licencováno pod <link href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-By</link></p></item>
        <item><p><link href="http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg">Fotografie mlčící labutě</link> od Mindaugas Urbonas, licencováno pod <link href="http://creativecommons.org/licenses/by-sa/2.5/deed.en">CC-By-SA</link></p></item>
    </list>
    <p>Informace o zásluhách a licencích vztahujících se k fotografiím jsou zobrazeny v okně <link xref="aboutdialog.js">AboutDialog</link>. Vždy, když používáte <link href="http://creativecommons.org">práce licencované pod Creative Commons</link>, pamatujte na zásluhy původních autorů!</p></note>
    <links type="section"/>

  <section id="imports">
    <title>Importované knihovny</title>
    <code mime="application/javascript">
#!/usr/bin/gjs

const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
</code>
    <p>Toto jsou knihovny, které potřebujeme naimportovat, aby aplikace běžela. Pamatujte si, že řádek, který GNOME říká, že používáme Gjs, musí být vždy na začátku.</p>
    </section>

  <section id="applicationwindow">
    <title>Vytvoření okna aplikace</title>
    <code mime="application/javascript">
const SwitchExample = new Lang.Class({
    Name: 'Switch Example',

    // Vytvoří vlastní aplikaci
    _init: function() {
        this.application = new Gtk.Application({
            application_id: 'org.example.jsswitch',
            flags: Gio.ApplicationFlags.FLAGS_NONE
        });

    // Připojí signály "activate" a "startup" k funkcím zpětného volání
    this.application.connect('activate', Lang.bind(this, this._onActivate));
    this.application.connect('startup', Lang.bind(this, this._onStartup));
    },

    // Funkce zpětného volání pro signál "activate" zobrazujicí okno při aktivaci
    _onActivate: function() {
        this._window.present();
    },

    // Funkce zpětného volání pro signál "startup" sestavující uživatelské rozhraní
    _onStartup: function() {
        this._initMenus();
        this._buildUI ();
    },
</code>
    <p>Všechen kód této ukázky je ve třídě <code>SwitchExample</code>. Výše uvedený kód vytvoří <link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link> pro naše widgety a okno, ve kterém budou.</p>
    <note><p>Než zavoláme <code>_buildUI</code>, aby se vytvořilo okno a widgety v něm, potřebujeme zavolat funkci <code>_initMenus</code>, která GNOME řekne, aby vytvořilo nabídku. Reálný kód pro <code>_initMenus</code> můžeme vložit za kód <code>_buildUI</code>, jelikož nezáleží na tom, v jakém pořadí jsou vloženy, protože <code>_initMenus</code> je zavoláno jako první z <code>_onStartup</code>.</p></note>
    <code mime="application/javascript">
    // Sestaví uživatelské rozhraní aplikace
    _buildUI: function() {

        // Vytvoří okno aplikace
        this._window = new Gtk.ApplicationWindow({
            application: this.application,
            window_position: Gtk.WindowPosition.CENTER,
            border_width: 20,
            title: "Animal Creator"});
</code>
    <p>Funkce <code>_buildUI</code> je místo, ze kterého voláme všechen kód, který vytváří uživatelské rozhraní aplikace. Prvním krokem je vytvoření nového <link xref="GtkApplicationWindow.js">Gtk.ApplicationWindow</link>, do kterého vložíme všechny naše widgety.</p>
  </section>

  <section id="button">
    <title>Vytvoření vypínačů</title>
    <code mime="application/javascript">
        // Vytvoří widget Image a nastaví jeho výchozí obrázek
        this._image = new Gtk.Image ({file: "redfox.png"});
</code>

    <p>Neprve vytvoříme <link xref="image.js">Image</link>, který budou vypínače řídit. Pamatujte, že soubor s názvem <file>redfox.png</file> musí být ve stejné složce, jako tato aplikace.</p>

    <code mime="application/javascript">
        // Vytvoří popisek pro první vypínač
        this._flyLabel = new Gtk.Label ({
            label: "Make it fly",
            margin_right: 30});

        // Vytvoří první vypínač a nastaví jeho výchozí polohu
        this._flySwitch = new Gtk.Switch ({active: false});
        this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));

        // Vytvoří popisek pro druhý vypínač
        this._birdLabel = new Gtk.Label ({
            label: "Make it a bird",
            margin_right: 30});

        // Vytvoří druhý vypínač
        this._birdSwitch = new Gtk.Switch ({active: false});
        this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));
</code>

    <p>Použijeme <link xref="label.js">Label</link> k označení každého z vypínačů a necháme mu malý okraj napravo, aby text nebyl nalepený hned na vypínač. Po té vytvoříme vypínače a nastavíme je na vypnuté ve výchozím stavu.</p>
    <p>Signál, který vypínač vyšle při svém přepnutí do polohy vypnuto nebo zapnuto se nazývá <code>"notify::active"</code>. Po vytvoření každého z vypínačů napojíme tento signál na funkci nazvanou <code>_switchFlip</code>. Když máte více vypínačů, kdy každý dělá něco jiného, můžete je chtít napojit na různé funkce, ale zde jsou oba použity pro stejnou věc: řízení pomocí <code>_image</code>, který obrázek se zobrazí.</p>

    <code mime="application/javascript">
        // Vytvoří mřížku pro popisky a vypínače pod obrázkem
        this._UIGrid = new Gtk.Grid ({
            halign: Gtk.Align.CENTER,
            valign: Gtk.Align.CENTER,
            margin_top: 20});

        // Připojí popisky a vypínače do mřížky
        this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);
        this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);
        this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);
        this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);

        // Vytvoří hlavní mřížku pro vložení obrázku a  mřížky s ovládacími prvky
        this._mainGrid = new Gtk.Grid ({
            halign: Gtk.Align.CENTER,
            valign: Gtk.Align.CENTER });

        // Připojí obrázek a mřížku s ovládacími prvky do hlavní mřížky
        this._mainGrid.attach (this._image, 0, 0, 1, 1);
        this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);
</code>
    <p>Jako první vytvoříme <link xref="grid.js">Grid</link> pro popisky a vypínače, abychom je uspořádali do matice 2 × 2 s okrajem mezi nimi a obrázkem. Pak tuto mřížku vložíme do větší mřížky 2 × 1, která má nahoře obrázek a dole mřížku s popisky a vypínači.</p>
    <code mime="application/javascript">
        // Přidá hlavní mřížku do okna
        this._window.add (this._mainGrid);

        // Zobrazí okno a všechny jeho synovské widgety
        this._window.show_all();
    },
</code>
    <p>Nakonec přidáme větší mřížku do okna a oknu řekneme, že má zobrazit sebe a všechny widgety uvnitř sebe.</p>
    </section>

    <section id="switch-handler">
    <title>Funkce, která obsluhuje situaci, kdy je vypínač přepnut</title>

    <code mime="application/javascript">
    _switchFlip: function() {

        // Změní obrázek podle toho, v jaké poloze je vypínač
        if (this._flySwitch.get_active()) {

            if (this._birdSwitch.get_active()) this._image.set_from_file ("muteswan.png");

            else this._image.set_from_file ("fruitbat.png");
        }

        else {

            if (this._birdSwitch.get_active()) this._image.set_from_file ("gentoopenguin.png");

            else this._image.set_from_file ("redfox.png");

        }

    },
</code>
    <p>Pokaždé, když je přepnut vypínač, tato funkce zkontroluje, které ze dvou vypínačů jsou zapnuté, za použití funkce <code>get_active()</code>, která je součástí widgetu <code>Switch</code>. Pak příslušně změní obrázek. Názvy souborů si můžete měnit dle libosti, čímž se patřičně změní použité obrázky.</p>
</section>

<section id="about">
    <title>Vytvoření AboutDialog</title>
    <code mime="application/javascript">
    _initMenus: function() {

        // Sestaví aplikační nabídku, takže můžeme mít volby About a Quit
        let menu = new Gio.Menu();
        menu.append("About", 'app.about');
        menu.append("Quit",'app.quit');
        this.application.set_app_menu(menu);

        // Napojí akci "about" na funkci _showAbout()
        let aboutAction = new Gio.SimpleAction ({ name: 'about' });
        aboutAction.connect('activate', Lang.bind(this,
            function() {
                this._showAbout();
            }));
        this.application.add_action(aboutAction);

        // Napojí akci "quit" na funkci, která zavře okno
        let quitAction = new Gio.SimpleAction ({ name: 'quit' });
        quitAction.connect('activate', Lang.bind(this,
            function() {
                this._window.destroy();
            }));
        this.application.add_action(quitAction);
    },
</code>
    <p>Prvním krokem je sestavení <link xref="gmenu.js">GMenu</link>, do kterého položka <gui>About</gui> patří. Jedná se o nabídku, která se objeví, když kliknete na název aplikace v levém horním rohu obrazovky, vedle nabídky <gui>Činnosti</gui>. Naše nabídka má jen dvě položky: About a Quit.</p>

    <code mime="application/javascript">
    _showAbout: function () {

        // Pole řetězců se jmény lidí, kteří se na projektu podílejí
        var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg',
                       'Ken Funakoshi http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
                       'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/',
                       'Mindaugas Urbonas http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];
        var authors = ["GNOME Documentation Team"];
        var documenters = ["GNOME Documentation Team"];

        // Vytvoří dialogové okno „O aplikaci“
        let aboutDialog = new Gtk.AboutDialog({
            title: "AboutDialog Example",
            program_name: "Animal Creator",
            copyright: "Copyright \xa9 2012 GNOME Documentation Team\n\nRed fox photo licensed CC-By by Rob Lee\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\nFruit bat photo licensed CC-By by Shek Graham\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\nLinks to the originals are available under Credits.\n\nHave you hugged a penguin today?",
            artists: artists,
            authors: authors,
            documenters: documenters,
            website: "http://developer.gnome.org",
            website_label: "GNOME Developer Website" });

        // Připojí dialogové okno „O aplikaci“ k oknu
        aboutDialog.modal = true;
        aboutDialog.transient_for = this._window;

        // Zobrazí dialogové okno „O aplikaci“
        aboutDialog.show();

        // Napojí tlačítko Close na signál "destroy" pro dialogové okno
        aboutDialog.connect('response', function() {
            aboutDialog.destroy();
        });
    }

});
</code>
    <p>Widget <link xref="aboutdialog.js">AboutDialog</link> má spoustu různých věcí, které můžete nastavit, abyste ocenili zásluhy každého, kdo na aplikaci pracoval, a nechali vzkaz komukoliv, kdo to bude číst. V tomto případě část s autorskými právy obsahuje naši poznámku a přičítá zásluhy původním fotografům, zatímco část s umělci, když kliknete na tlačítko <gui>Credits</gui>, uvádí seznam fotografů s odkazy na originální fotografie. Webová adresa URL vložená za jejich jména v poli způsobí, že jména budou v části <gui>Credists</gui> fungovat jako živé odkazy.</p>

    <code mime="application/javascript">
// Spustí aplikaci
let app = new SwitchExample ();
app.application.run (ARGV);
</code>
    <p>Nakonec vytvoříme novou instanci výsledné třídy SwitchExample a spustíme aplikaci.</p>
  </section>

  <section id="complete">
    <title>Úplný kód ukázky</title>
<code mime="application/javascript" style="numbered">#!/usr/bin/gjs

imports.gi.versions.Gtk = '3.0';

const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;

class SwitchExample {

    // Vytvoří vlastní aplikaci
    constructor() {
        this.application = new Gtk.Application({
            application_id: 'org.example.jsswitch'
        });

    // Napojí signály "activate" a "startup" k funkcím zpětného volání
        this.application.connect('activate', this._onActivate.bind(this));
        this.application.connect('startup', this._onStartup.bind(this));
    }

    // Funkce zpětného volání pro signál "activate" zobrazujicí okno při aktivaci
    _onActivate() {
        this._window.present();
    }

    // Funkce zpětného volání pro signál "startup" sestavující uživatelské rozhraní
    _onStartup() {
        this._initMenus();
        this._buildUI();
    }

    // Sestaví uživatelské rozhraní aplikace
    _buildUI() {

        // Vytvoří okno aplikace
        this._window = new Gtk.ApplicationWindow({
            application: this.application,
            window_position: Gtk.WindowPosition.CENTER,
            border_width: 20,
            title: "Animal Creator"});

        // Vytvoří widget Image a nastaví jeho výchozí obrázek
        this._image = new Gtk.Image ({file: "redfox.png"});

        // Vytvoří popisek pro první vypínač
        this._flyLabel = new Gtk.Label ({
            label: "Make it fly",
            margin_right: 30});

        // Vytvoří první vypínač a nastaví jeho výchozí polohu
        this._flySwitch = new Gtk.Switch ({active: false});
        this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));

        // Vytvoří popisek pro druhý vypínač
        this._birdLabel = new Gtk.Label ({
            label: "Make it a bird",
            margin_right: 30});

        // Vytvoří druhý vypínač
        this._birdSwitch = new Gtk.Switch ({active: false});
        this._birdSwitch.connect ('notify::active', this._switchFlip.bind(this));

        // Vytvoří mřížku pro popisky a vypínače pod obrázkem
        this._UIGrid = new Gtk.Grid ({
            halign: Gtk.Align.CENTER,
            valign: Gtk.Align.CENTER,
            margin_top: 20});

        // Připojí popisky a vypínače do mřížky
        this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);
        this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);
        this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);
        this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);

        // Vytvoří hlavní mřížku pro vložení obrázku a  mřížky s ovládacími prvky
        this._mainGrid = new Gtk.Grid ({
            halign: Gtk.Align.CENTER,
            valign: Gtk.Align.CENTER });

        // Připojí obrázek a mřížku s ovládacími prvky do hlavní mřížky
        this._mainGrid.attach (this._image, 0, 0, 1, 1);
        this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);

        // Přidá hlavní mřížku do okna
        this._window.add (this._mainGrid);

        // Zobrazí okno a všechny jeho synovské widgety
        this._window.show_all();
    }

    _switchFlip() {

        // Změní obrázek podle toho, v jaké poloze je vypínač
        if (this._flySwitch.get_active()) {

            if (this._birdSwitch.get_active())
                this._image.set_from_file ("muteswan.png");
            else
                this._image.set_from_file ("fruitbat.png");
        } else {

            if (this._birdSwitch.get_active())
                this._image.set_from_file ("gentoopenguin.png");
            else
                this._image.set_from_file ("redfox.png");
        }
    }

    _initMenus() {

        // Sestaví aplikační nabídku, takže můžeme mít tlačítko „About“
        let menu = new Gio.Menu();
        menu.append("About", 'app.about');
        menu.append("Quit",'app.quit');
        this.application.set_app_menu(menu);

        // Napojí tlačítko „About“ na funkci _showAbout()
        let aboutAction = new Gio.SimpleAction ({ name: 'about' });
        aboutAction.connect('activate', () =&gt; { this._showAbout(); });
        this.application.add_action(aboutAction);

        // Napojí tlačítko „Quit“ na funkci, která zavírá okno
        let quitAction = new Gio.SimpleAction ({ name: 'quit' });
        quitAction.connect('activate', () =&gt; { this._window.destroy(); });
        this.application.add_action(quitAction);
    }

    _showAbout() {

        // Pole řetězců se jmény lidí, kteří se podílejí na projektu
        var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png', 'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];
        var authors = ["GNOME Documentation Team"];
        var documenters = ["GNOME Documentation Team"];

        // Vytvoří dialogové okno „O aplikaci“
        let aboutDialog = new Gtk.AboutDialog({
            title: "AboutDialog Example",
            program_name: "Animal Creator",
            copyright: "Copyright \xa9 2012 GNOME Documentation Team\n\nRed fox photo licensed CC-By by Rob Lee\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\nFruit bat photo licensed CC-By by Shek Graham\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\nLinks to the originals are available under Credits.\n\nHave you hugged a penguin today?",
            artists: artists,
            authors: authors,
            documenters: documenters,
            website: "http://developer.gnome.org",
            website_label: "GNOME Developer Website" });

        // Připojí dialogové okno „O aplikaci“ k oknu
        aboutDialog.modal = true;
        aboutDialog.transient_for = this._window;

        // Zobrazí dialogové okno „O aplikaci“
        aboutDialog.show();

        // Napojí tlačítko „Zavřít“ na signál "destroy" pro dialogové okno
        aboutDialog.connect('response', function() {
            aboutDialog.destroy();
        });
    }
};

// Spustí aplikaci
let app = new SwitchExample ();
app.application.run (ARGV);
</code>
  </section>

  <section id="in-depth">
    <title>Dokumentace jdoucí do hloubky</title>
<list>
  <item><p><link href="http://developer.gnome.org/gio/unstable/GMenu.html">GMenu</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GSimpleAction.html">GSimpleAction</link></p></item>
  <item><p><link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link></p></item>
  <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html">Gtk.ApplicationWindow</link></p></item>
  <item><p><link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html">Gtk.Grid</link></p></item>
  <item><p><link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html">Gtk.Image</link></p></item>
  <item><p><link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html">Gtk.Label</link></p></item>
  <item><p><link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html">Gtk.Switch</link></p></item>
</list>
  </section>
</page>