Blame platform-demos/cs/switch.js.page

Packit 1470ea
Packit 1470ea
<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">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Switch (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#buttons"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-18" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Taryn Fox</name>
Packit 1470ea
      <email its:translate="no">jewelfox@fursona.net</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Posuvný vypínač, který se umí překlápět mezi stavy zapnuto a vypnuto</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Switch</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/switchanimals.png"/>
Packit 1470ea
  

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&do=get&target=Animal+Photos.zip">můžete stáhnout zde</link>.

Packit 1470ea
  <note>

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ů:

Packit 1470ea
    <list>
Packit 1470ea
        <item>

<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>

</item>
Packit 1470ea
        <item>

<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>

</item>
Packit 1470ea
        <item>

<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>

</item>
Packit 1470ea
        <item>

<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>

</item>
Packit 1470ea
    </list>
Packit 1470ea
    

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ů!

</note>
Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="imports">
Packit 1470ea
    <title>Importované knihovny</title>
Packit 1470ea
    
Packit 1470ea
#!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
const Gio = imports.gi.Gio;
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
const Lang = imports.lang;
Packit 1470ea
Packit 1470ea
    

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.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
  <section id="applicationwindow">
Packit 1470ea
    <title>Vytvoření okna aplikace</title>
Packit 1470ea
    
Packit 1470ea
const SwitchExample = new Lang.Class({
Packit 1470ea
    Name: 'Switch Example',
Packit 1470ea
Packit 1470ea
    // Vytvoří vlastní aplikaci
Packit 1470ea
    _init: function() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsswitch',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
    // Připojí signály "activate" a "startup" k funkcím zpětného volání
Packit 1470ea
    this.application.connect('activate', Lang.bind(this, this._onActivate));
Packit 1470ea
    this.application.connect('startup', Lang.bind(this, this._onStartup));
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Funkce zpětného volání pro signál "activate" zobrazujicí okno při aktivaci
Packit 1470ea
    _onActivate: function() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Funkce zpětného volání pro signál "startup" sestavující uživatelské rozhraní
Packit 1470ea
    _onStartup: function() {
Packit 1470ea
        this._initMenus();
Packit 1470ea
        this._buildUI ();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

Všechen kód této ukázky je ve třídě SwitchExample. 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.

Packit 1470ea
    <note>

Než zavoláme _buildUI, aby se vytvořilo okno a widgety v něm, potřebujeme zavolat funkci _initMenus, která GNOME řekne, aby vytvořilo nabídku. Reálný kód pro _initMenus můžeme vložit za kód _buildUI, jelikož nezáleží na tom, v jakém pořadí jsou vloženy, protože _initMenus je zavoláno jako první z _onStartup.

</note>
Packit 1470ea
    
Packit 1470ea
    // Sestaví uživatelské rozhraní aplikace
Packit 1470ea
    _buildUI: function() {
Packit 1470ea
Packit 1470ea
        // Vytvoří okno aplikace
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            border_width: 20,
Packit 1470ea
            title: "Animal Creator"});
Packit 1470ea
Packit 1470ea
    

Funkce _buildUI 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.

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

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.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Vytvoří popisek pro první vypínač
Packit 1470ea
        this._flyLabel = new Gtk.Label ({
Packit 1470ea
            label: "Make it fly",
Packit 1470ea
            margin_right: 30});
Packit 1470ea
Packit 1470ea
        // Vytvoří první vypínač a nastaví jeho výchozí polohu
Packit 1470ea
        this._flySwitch = new Gtk.Switch ({active: false});
Packit 1470ea
        this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));
Packit 1470ea
Packit 1470ea
        // Vytvoří popisek pro druhý vypínač
Packit 1470ea
        this._birdLabel = new Gtk.Label ({
Packit 1470ea
            label: "Make it a bird",
Packit 1470ea
            margin_right: 30});
Packit 1470ea
Packit 1470ea
        // Vytvoří druhý vypínač
Packit 1470ea
        this._birdSwitch = new Gtk.Switch ({active: false});
Packit 1470ea
        this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));
Packit 1470ea
Packit 1470ea
Packit 1470ea
    

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.

Packit 1470ea
    

Signál, který vypínač vyšle při svém přepnutí do polohy vypnuto nebo zapnuto se nazývá "notify::active". Po vytvoření každého z vypínačů napojíme tento signál na funkci nazvanou _switchFlip. 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í _image, který obrázek se zobrazí.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Vytvoří mřížku pro popisky a vypínače pod obrázkem
Packit 1470ea
        this._UIGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER,
Packit 1470ea
            margin_top: 20});
Packit 1470ea
Packit 1470ea
        // Připojí popisky a vypínače do mřížky
Packit 1470ea
        this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);
Packit 1470ea
Packit 1470ea
        // Vytvoří hlavní mřížku pro vložení obrázku a  mřížky s ovládacími prvky
Packit 1470ea
        this._mainGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Připojí obrázek a mřížku s ovládacími prvky do hlavní mřížky
Packit 1470ea
        this._mainGrid.attach (this._image, 0, 0, 1, 1);
Packit 1470ea
        this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
    

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.

Packit 1470ea
    
Packit 1470ea
        // Přidá hlavní mřížku do okna
Packit 1470ea
        this._window.add (this._mainGrid);
Packit 1470ea
Packit 1470ea
        // Zobrazí okno a všechny jeho synovské widgety
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

Nakonec přidáme větší mřížku do okna a oknu řekneme, že má zobrazit sebe a všechny widgety uvnitř sebe.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="switch-handler">
Packit 1470ea
    <title>Funkce, která obsluhuje situaci, kdy je vypínač přepnut</title>
Packit 1470ea
Packit 1470ea
    
Packit 1470ea
    _switchFlip: function() {
Packit 1470ea
Packit 1470ea
        // Změní obrázek podle toho, v jaké poloze je vypínač
Packit 1470ea
        if (this._flySwitch.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._birdSwitch.get_active()) this._image.set_from_file ("muteswan.png");
Packit 1470ea
Packit 1470ea
            else this._image.set_from_file ("fruitbat.png");
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        else {
Packit 1470ea
Packit 1470ea
            if (this._birdSwitch.get_active()) this._image.set_from_file ("gentoopenguin.png");
Packit 1470ea
Packit 1470ea
            else this._image.set_from_file ("redfox.png");
Packit 1470ea
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

Pokaždé, když je přepnut vypínač, tato funkce zkontroluje, které ze dvou vypínačů jsou zapnuté, za použití funkce get_active(), která je součástí widgetu Switch. 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.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="about">
Packit 1470ea
    <title>Vytvoření AboutDialog</title>
Packit 1470ea
    
Packit 1470ea
    _initMenus: function() {
Packit 1470ea
Packit 1470ea
        // Sestaví aplikační nabídku, takže můžeme mít volby About a Quit
Packit 1470ea
        let menu = new Gio.Menu();
Packit 1470ea
        menu.append("About", 'app.about');
Packit 1470ea
        menu.append("Quit",'app.quit');
Packit 1470ea
        this.application.set_app_menu(menu);
Packit 1470ea
Packit 1470ea
        // Napojí akci "about" na funkci _showAbout()
Packit 1470ea
        let aboutAction = new Gio.SimpleAction ({ name: 'about' });
Packit 1470ea
        aboutAction.connect('activate', Lang.bind(this,
Packit 1470ea
            function() {
Packit 1470ea
                this._showAbout();
Packit 1470ea
            }));
Packit 1470ea
        this.application.add_action(aboutAction);
Packit 1470ea
Packit 1470ea
        // Napojí akci "quit" na funkci, která zavře okno
Packit 1470ea
        let quitAction = new Gio.SimpleAction ({ name: 'quit' });
Packit 1470ea
        quitAction.connect('activate', Lang.bind(this,
Packit 1470ea
            function() {
Packit 1470ea
                this._window.destroy();
Packit 1470ea
            }));
Packit 1470ea
        this.application.add_action(quitAction);
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

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.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
    _showAbout: function () {
Packit 1470ea
Packit 1470ea
        // Pole řetězců se jmény lidí, kteří se na projektu podílejí
Packit 1470ea
        var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg',
Packit 1470ea
                       'Ken Funakoshi http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg',
Packit 1470ea
                       'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/',
Packit 1470ea
                       'Mindaugas Urbonas http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];
Packit 1470ea
        var authors = ["GNOME Documentation Team"];
Packit 1470ea
        var documenters = ["GNOME Documentation Team"];
Packit 1470ea
Packit 1470ea
        // Vytvoří dialogové okno „O aplikaci“
Packit 1470ea
        let aboutDialog = new Gtk.AboutDialog({
Packit 1470ea
            title: "AboutDialog Example",
Packit 1470ea
            program_name: "Animal Creator",
Packit 1470ea
            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?",
Packit 1470ea
            artists: artists,
Packit 1470ea
            authors: authors,
Packit 1470ea
            documenters: documenters,
Packit 1470ea
            website: "http://developer.gnome.org",
Packit 1470ea
            website_label: "GNOME Developer Website" });
Packit 1470ea
Packit 1470ea
        // Připojí dialogové okno „O aplikaci“ k oknu
Packit 1470ea
        aboutDialog.modal = true;
Packit 1470ea
        aboutDialog.transient_for = this._window;
Packit 1470ea
Packit 1470ea
        // Zobrazí dialogové okno „O aplikaci“
Packit 1470ea
        aboutDialog.show();
Packit 1470ea
Packit 1470ea
        // Napojí tlačítko Close na signál "destroy" pro dialogové okno
Packit 1470ea
        aboutDialog.connect('response', function() {
Packit 1470ea
            aboutDialog.destroy();
Packit 1470ea
        });
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
});
Packit 1470ea
Packit 1470ea
    

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.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
// Spustí aplikaci
Packit 1470ea
let app = new SwitchExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
    

Nakonec vytvoříme novou instanci výsledné třídy SwitchExample a spustíme aplikaci.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="complete">
Packit 1470ea
    <title>Úplný kód ukázky</title>
Packit 1470ea
#!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
imports.gi.versions.Gtk = '3.0';
Packit 1470ea
Packit 1470ea
const Gio = imports.gi.Gio;
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
Packit 1470ea
class SwitchExample {
Packit 1470ea
Packit 1470ea
    // Vytvoří vlastní aplikaci
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsswitch'
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
    // Napojí signály "activate" a "startup" k funkcím zpětného volání
Packit 1470ea
        this.application.connect('activate', this._onActivate.bind(this));
Packit 1470ea
        this.application.connect('startup', this._onStartup.bind(this));
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Funkce zpětného volání pro signál "activate" zobrazujicí okno při aktivaci
Packit 1470ea
    _onActivate() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Funkce zpětného volání pro signál "startup" sestavující uživatelské rozhraní
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._initMenus();
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Sestaví uživatelské rozhraní aplikace
Packit 1470ea
    _buildUI() {
Packit 1470ea
Packit 1470ea
        // Vytvoří okno aplikace
Packit 1470ea
        this._window = new Gtk.ApplicationWindow({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            border_width: 20,
Packit 1470ea
            title: "Animal Creator"});
Packit 1470ea
Packit 1470ea
        // Vytvoří widget Image a nastaví jeho výchozí obrázek
Packit 1470ea
        this._image = new Gtk.Image ({file: "redfox.png"});
Packit 1470ea
Packit 1470ea
        // Vytvoří popisek pro první vypínač
Packit 1470ea
        this._flyLabel = new Gtk.Label ({
Packit 1470ea
            label: "Make it fly",
Packit 1470ea
            margin_right: 30});
Packit 1470ea
Packit 1470ea
        // Vytvoří první vypínač a nastaví jeho výchozí polohu
Packit 1470ea
        this._flySwitch = new Gtk.Switch ({active: false});
Packit 1470ea
        this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));
Packit 1470ea
Packit 1470ea
        // Vytvoří popisek pro druhý vypínač
Packit 1470ea
        this._birdLabel = new Gtk.Label ({
Packit 1470ea
            label: "Make it a bird",
Packit 1470ea
            margin_right: 30});
Packit 1470ea
Packit 1470ea
        // Vytvoří druhý vypínač
Packit 1470ea
        this._birdSwitch = new Gtk.Switch ({active: false});
Packit 1470ea
        this._birdSwitch.connect ('notify::active', this._switchFlip.bind(this));
Packit 1470ea
Packit 1470ea
        // Vytvoří mřížku pro popisky a vypínače pod obrázkem
Packit 1470ea
        this._UIGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER,
Packit 1470ea
            margin_top: 20});
Packit 1470ea
Packit 1470ea
        // Připojí popisky a vypínače do mřížky
Packit 1470ea
        this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);
Packit 1470ea
        this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);
Packit 1470ea
Packit 1470ea
        // Vytvoří hlavní mřížku pro vložení obrázku a  mřížky s ovládacími prvky
Packit 1470ea
        this._mainGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Připojí obrázek a mřížku s ovládacími prvky do hlavní mřížky
Packit 1470ea
        this._mainGrid.attach (this._image, 0, 0, 1, 1);
Packit 1470ea
        this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
        // Přidá hlavní mřížku do okna
Packit 1470ea
        this._window.add (this._mainGrid);
Packit 1470ea
Packit 1470ea
        // Zobrazí okno a všechny jeho synovské widgety
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _switchFlip() {
Packit 1470ea
Packit 1470ea
        // Změní obrázek podle toho, v jaké poloze je vypínač
Packit 1470ea
        if (this._flySwitch.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._birdSwitch.get_active())
Packit 1470ea
                this._image.set_from_file ("muteswan.png");
Packit 1470ea
            else
Packit 1470ea
                this._image.set_from_file ("fruitbat.png");
Packit 1470ea
        } else {
Packit 1470ea
Packit 1470ea
            if (this._birdSwitch.get_active())
Packit 1470ea
                this._image.set_from_file ("gentoopenguin.png");
Packit 1470ea
            else
Packit 1470ea
                this._image.set_from_file ("redfox.png");
Packit 1470ea
        }
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _initMenus() {
Packit 1470ea
Packit 1470ea
        // Sestaví aplikační nabídku, takže můžeme mít tlačítko „About“
Packit 1470ea
        let menu = new Gio.Menu();
Packit 1470ea
        menu.append("About", 'app.about');
Packit 1470ea
        menu.append("Quit",'app.quit');
Packit 1470ea
        this.application.set_app_menu(menu);
Packit 1470ea
Packit 1470ea
        // Napojí tlačítko „About“ na funkci _showAbout()
Packit 1470ea
        let aboutAction = new Gio.SimpleAction ({ name: 'about' });
Packit 1470ea
        aboutAction.connect('activate', () => { this._showAbout(); });
Packit 1470ea
        this.application.add_action(aboutAction);
Packit 1470ea
Packit 1470ea
        // Napojí tlačítko „Quit“ na funkci, která zavírá okno
Packit 1470ea
        let quitAction = new Gio.SimpleAction ({ name: 'quit' });
Packit 1470ea
        quitAction.connect('activate', () => { this._window.destroy(); });
Packit 1470ea
        this.application.add_action(quitAction);
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _showAbout() {
Packit 1470ea
Packit 1470ea
        // Pole řetězců se jmény lidí, kteří se podílejí na projektu
Packit 1470ea
        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'];
Packit 1470ea
        var authors = ["GNOME Documentation Team"];
Packit 1470ea
        var documenters = ["GNOME Documentation Team"];
Packit 1470ea
Packit 1470ea
        // Vytvoří dialogové okno „O aplikaci“
Packit 1470ea
        let aboutDialog = new Gtk.AboutDialog({
Packit 1470ea
            title: "AboutDialog Example",
Packit 1470ea
            program_name: "Animal Creator",
Packit 1470ea
            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?",
Packit 1470ea
            artists: artists,
Packit 1470ea
            authors: authors,
Packit 1470ea
            documenters: documenters,
Packit 1470ea
            website: "http://developer.gnome.org",
Packit 1470ea
            website_label: "GNOME Developer Website" });
Packit 1470ea
Packit 1470ea
        // Připojí dialogové okno „O aplikaci“ k oknu
Packit 1470ea
        aboutDialog.modal = true;
Packit 1470ea
        aboutDialog.transient_for = this._window;
Packit 1470ea
Packit 1470ea
        // Zobrazí dialogové okno „O aplikaci“
Packit 1470ea
        aboutDialog.show();
Packit 1470ea
Packit 1470ea
        // Napojí tlačítko „Zavřít“ na signál "destroy" pro dialogové okno
Packit 1470ea
        aboutDialog.connect('response', function() {
Packit 1470ea
            aboutDialog.destroy();
Packit 1470ea
        });
Packit 1470ea
    }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
// Spustí aplikaci
Packit 1470ea
let app = new SwitchExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="in-depth">
Packit 1470ea
    <title>Dokumentace jdoucí do hloubky</title>
Packit 1470ea
<list>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gio/unstable/GMenu.html">GMenu</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gio/stable/GSimpleAction.html">GSimpleAction</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html">Gtk.ApplicationWindow</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html">Gtk.Grid</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Image.html">Gtk.Image</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html">Gtk.Label</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Switch.html">Gtk.Switch</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
  </section>
Packit 1470ea
</page>