Blame platform-demos/cs/checkbutton.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="checkbutton.js" xml:lang="cs">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">CheckButton (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#buttons"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-12" 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>Políčko, které může být zaškrtnuté nebo nezaškrtnuté</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>CheckButton</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/checkbutton.png"/>
Packit 1470ea
  

Tato aplikace má widget CheckButton. Je-li políčko zaškrtnuté, nebo ne, ovlivňuje, jestli je něco zobrazeno v záhlaví okna, nebo ne.

Packit 1470ea
  

Když políčko zaškrtnete nebo zaškrtnutí zrušíte, vyšle signál "toggled". Když je zaškrtnuté, je vlastnost "active" nastavena na true. Když není, vrátí test této vlastnosti hodnotu false.

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

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
class CheckButtonExample {
Packit 1470ea
    // Vytvoří vlastní aplikaci
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jscheckbutton',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
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", která zobrazí 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", která sestaví uživatelské rozhraní
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._buildUI ();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    

Všechen kód této ukázky je ve třídě CheckButtonExample. 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
    
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
            default_height: 100,
Packit 1470ea
            default_width: 300,
Packit 1470ea
            border_width: 10,
Packit 1470ea
            title: "CheckButton Example"});
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 href="GtkApplicationWindow.js.page">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í widgetu CheckButton</title>
Packit 1470ea
    
Packit 1470ea
        // Vytvoří zaškrtávací políčko
Packit 1470ea
        this._button = new Gtk.CheckButton ({label: "Show Title"});
Packit 1470ea
        this._window.add (this._button);
Packit 1470ea
Packit 1470ea
        // Zajistí, že ve výchozím stavu bude zaškrtnuté
Packit 1470ea
        this._button.set_active (true);
Packit 1470ea
Packit 1470ea
        // Napojí zaškrtávací políčko k funkci, která při přepnutí něco udělá
Packit 1470ea
        this._button.connect ("toggled", this._toggledCB.bind(this));
Packit 1470ea
Packit 1470ea
    

Tento kód vytvoří vlastní zaškrtávací políčko. Popisek vedle něj je vytvořen udáním vlastnosti label zaškrtávacího políčka a přiřazením řetězcové hodnoty do něj. Protože toto zaškrtávací políčko přepíná, zda má okno v záhlaví název a na začátku jej má, chceme aby políčko bylo ve výchozím stavu zaškrtnuté. Kdykoliv uživatel jeho zaškrtnutí změní, zavolá se funkce _toggledCB.

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

Tento kód dokončí vytváření uživatelského rozhraní tím, že řekne oknu, aby zobrazilo sebe a všechny své synovské widgety (což je v tomto případě jen zaškrtávací políčko).

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="function">
Packit 1470ea
    <title>Funkce, která zpracovává přepnutí zaškrtávacího políčka</title>
Packit 1470ea
    
Packit 1470ea
    _toggledCB() {
Packit 1470ea
Packit 1470ea
        // Zobrazí a skryje obsah záhlaví okna při přepnutí zaškrtávacího políčka
Packit 1470ea
        if (this._button.get_active() == true)
Packit 1470ea
            this._window.set_title ("CheckButton Example");
Packit 1470ea
        else
Packit 1470ea
            this._window.set_title ("");
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
    

Když se je zrušeno zaškrtnutí zaškrtávacího políčka, chceme aby zmizel název na záhlaví okna. Až je zase zaškrtnuto, chceme, aby se znovu objevil. To, v jakém je stavu, můžeme říci po otestování, jestli je aktivní (zaškrtnuté) nebo ne. K funkčnosti nám stačí jednoduchý výraz if/else, který zavolá metodu get_active() zaškrtávacího políčka.

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

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

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 CheckButtonExample {
Packit 1470ea
Packit 1470ea
    // Vytvoří vlastní aplikaci
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jscheckbutton',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
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._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
            default_height: 100,
Packit 1470ea
            default_width: 300,
Packit 1470ea
            border_width: 10,
Packit 1470ea
            title: "CheckButton Example"});
Packit 1470ea
Packit 1470ea
        // Vytvoří zaškrtávací políčko
Packit 1470ea
        this._button = new Gtk.CheckButton ({label: "Show Title"});
Packit 1470ea
        this._window.add (this._button);
Packit 1470ea
Packit 1470ea
        // Zajistí, že ve výchozím stavu bude zaškrtnuté
Packit 1470ea
        this._button.set_active (true);
Packit 1470ea
Packit 1470ea
        // Napojí zaškrtávací políčko k funkci, která při přepnutí něco udělá
Packit 1470ea
        this._button.connect ("toggled", this._toggledCB.bind(this));
Packit 1470ea
Packit 1470ea
        // Zobrazí okno a všechny jeho synovské widgety
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
    _toggledCB: function () {
Packit 1470ea
Packit 1470ea
        // Zobrazí a skryje obsah záhlaví okna při přepnutí zaškrtávacího políčka
Packit 1470ea
        if (this._button.get_active() == true)
Packit 1470ea
            this._window.set_title ("CheckButton Example");
Packit 1470ea
        else
Packit 1470ea
            this._window.set_title ("");
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
// Spustí aplikaci
Packit 1470ea
let app = new CheckButtonExample ();
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://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.CheckButton.html">Gtk.CheckButton</link>

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