|
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="spinbutton.js" xml:lang="cs">
|
|
Packit |
1470ea |
<info>
|
|
Packit |
1470ea |
<title type="text">SpinButton (JavaScript)</title>
|
|
Packit |
1470ea |
<link type="guide" xref="beginner.js#entry"/>
|
|
Packit |
1470ea |
<link type="seealso" xref="GtkApplicationWindow.js"/>
|
|
Packit |
1470ea |
<link type="seealso" xref="grid.js"/>
|
|
Packit |
1470ea |
<link type="seealso" xref="label.js"/>
|
|
Packit |
1470ea |
<revision version="0.1" date="2012-06-24" 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>Číselné vstupní pole, které má tlačítka + a -</desc>
|
|
Packit |
1470ea |
</info>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<title>SpinButton</title>
|
|
Packit |
1470ea |
<media type="image" mime="image/png" src="media/spinbuttonkittens.png"/>
|
|
Packit |
1470ea |
SpinButton (číselník) nemá žádnou souvislost s widgetem <link xref="spinner.js">Spinner</link> (káča). Jedná se o textové vstupní pole, které přijímá jen čísla a má tlačítka plus a mínus, která umožňují měnit hodnout, aniž byste museli psát.
|
|
Packit |
1470ea |
Je nejlepší pro použití v situacích, kdy je potřeba zadávat čistě číselné hodnoty. V tomto příkladu jsou dva číselníky použity pro počet koček a počet tuňákových konzerv pro ně.
|
|
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 SpinButtonExample = new Lang.Class({
|
|
Packit |
1470ea |
Name: 'SpinButton 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.jsspinbutton'
|
|
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._buildUI ();
|
|
Packit |
1470ea |
},
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Všechen kód této ukázky je ve třídě SpinButtonExample . 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: 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: "Kitten Feeder"});
|
|
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="spinbutton">
|
|
Packit |
1470ea |
<title>Vytvoření widgetů SpinButton</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Pomocí funkce vytvoří první číselník
|
|
Packit |
1470ea |
this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);
|
|
Packit |
1470ea |
this._kittens.connect ("value-changed", Lang.bind (this, this._newValue));
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
K rychlému vytvoření číselníku můžeme použít funkci new_with_range . Prvním parametrem je počáteční hodnota číselníku, druhým maximální hodnota a třetím velikost kroku použitého při mačkání tlačítek plus nebo mínus.
|
|
Packit |
1470ea |
Po vytvoření prvního číselníku napojíme jeho signál "value-changed" k funkci, která zpracovává, co se má stát, když se číslo uvnitř číselníku změní.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří přizpůsobení, které se použije pro druhý číselník
|
|
Packit |
1470ea |
this._adjustment = new Gtk.Adjustment ({
|
|
Packit |
1470ea |
value: 1,
|
|
Packit |
1470ea |
lower: 0,
|
|
Packit |
1470ea |
upper: 9001,
|
|
Packit |
1470ea |
step_increment: 1,
|
|
Packit |
1470ea |
page_increment: 10 });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří druhý číselník
|
|
Packit |
1470ea |
this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });
|
|
Packit |
1470ea |
this._tuna.connect ("value-changed", Lang.bind (this, this._newValue));
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// this._tuna.set_digits (1);
|
|
Packit |
1470ea |
// this._tuna.set_wrap (true);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Jestli chcete jemnější kontrolu nad widgetem SpinButton nebo chcete vytvořit spoustu číselníků, které budou mít stejné parametry, můžete vytvořit objekt <link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment.html">Adjustmen</link> (přizpůsobení). Pak můžete použít tento objekt jako vlastnost adjustment pro nový číselník a tím ji nastavit všechny vlastnosti naráz. Později můžete změnit všechny číselníky, které používají toto přizpůsobení naráz pouhou změnou některé vlastnosti objektu Adjustment .
|
|
Packit |
1470ea |
Řádky zde zakomentované ukazují věci, které si můžete u číselníků přizpůsobit. Můžete například nastavit počet číslic za desetinnou čárkou nebo říci, aby se při dosažení nastavené horní nebo dolní meze cyklicky přešlo na opačný konec.
|
|
Packit |
1470ea |
<note>V zájmu zdraví koček nepoužívejte prosím metodu set_digits , která by umožnila necelé počty koček. </note>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="UI">
|
|
Packit |
1470ea |
<title>Vytvoření zbytku uživatelského rozhraní</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří textové popisky, které budou u číselníků
|
|
Packit |
1470ea |
this._startLabel = new Gtk.Label ({ label: "There are " });
|
|
Packit |
1470ea |
this._kittenLabel = new Gtk.Label ({ label: " kitten(s), and "});
|
|
Packit |
1470ea |
this._tunaLabel = new Gtk.Label ({ label: " can(s) of tuna."});
|
|
Packit |
1470ea |
this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));
|
|
Packit |
1470ea |
this._lastLabel = new Gtk.Label ({
|
|
Packit |
1470ea |
label: "That's " + this.perKitten + " can(s) of tuna per kitten." });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Každý widget <link xref="label.js">Label</link> vytvoříme samostatně a pak je spojíme dohromady s jednotlivými číselníky. Poslední popisek potřebujeme na zobrazování počtu konzerv tuňáka na kočku, takže má uprostřed proměnnou odpovídající výpočtu, který používá funkce get_value u číselníků k zjištění, co je v nich nastaveno. Funkce floor z objektu Math jazyka JavaScript se použije k zaokrouhlení počtu konzerv tuňáka na kočku na nejbližší nižší celé číslo.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří mřížku pro vložení číselníků a jejich popisků
|
|
Packit |
1470ea |
this._spinGrid = new Gtk.Grid ({
|
|
Packit |
1470ea |
halign: Gtk.Align.CENTER,
|
|
Packit |
1470ea |
valign: Gtk.Align.CENTER,
|
|
Packit |
1470ea |
margin_bottom: 20 });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Připojí vše do mřížky
|
|
Packit |
1470ea |
this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._kittens, 1, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._tuna, 3, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří hlavní mřížku, která bude obsahovat tu předchozí a poslední popisek
|
|
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í menší mřížku a posledního popisek do hlavní mřížky
|
|
Packit |
1470ea |
this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);
|
|
Packit |
1470ea |
this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Zde používáme widgety <link xref="grid.js">Grid</link>, které vše udržují správně rozložené. Jedna mřížka obsahuje ve správném pořadí popisky a číselníky, zatímco následující obsahuje na hoře ji a dole konečný popisek.
|
|
Packit |
1470ea |
Rozhodně není špatný způsob, hrát si s uspořádáním věcí do mřížek tak dlouho, až získáte to, co si přejete. V tomto případě má horní mřížka dole okraj, aby se uchoval odstup od spodního popisku a spodní popisek je uvnitř další mřížky, aby byl vystředěn relativně vůči popiskům a číselníkům nahoře.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Přidá 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="spinbutton-handler">
|
|
Packit |
1470ea |
<title>Funkce, která obsluhuje změny číselných hodnot widgetů SpinButton</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
_newValue: function () {
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Aktualizuje popisek, který zobrazuje, kolik konzerv připadá na jednu kočku
|
|
Packit |
1470ea |
this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))
|
|
Packit |
1470ea |
this._lastLabel.set_label ("That's " + this.perKitten + " can(s) of tuna per kitten.");
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Zde aktualizujeme proměnnou perKitten vycházející z nových hodnot v číselnících a použijeme vlastnost set_label k občerstvení údaje, který zobrazuje _lastLabel . Protože mají oba číselníky své signály "value-changed" napojené na tuto funkci, aktualizuje tato funkce popisek pokaždé, když se změní některá z hodnot.
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Spustí aplikaci
|
|
Packit |
1470ea |
let app = new SpinButtonExample ();
|
|
Packit |
1470ea |
app.application.run (ARGV);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
Nakonec vytvoříme novou instanci konečné třídy SpinButtonExample 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 SpinButtonExample {
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří vlastní aplikaci
|
|
Packit |
1470ea |
constructor() {
|
|
Packit |
1470ea |
this.application = new Gtk.Application({
|
|
Packit |
1470ea |
application_id: 'org.example.jsspinbutton'
|
|
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 |
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 "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 |
border_width: 20,
|
|
Packit |
1470ea |
title: "Kitten Feeder"});
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří pomocí funkce první číselník
|
|
Packit |
1470ea |
this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);
|
|
Packit |
1470ea |
this._kittens.connect ("value-changed", this._newValue.bind(this));
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří přizpůsobení, které se použije pro druhý číselník
|
|
Packit |
1470ea |
this._adjustment = new Gtk.Adjustment ({
|
|
Packit |
1470ea |
value: 1,
|
|
Packit |
1470ea |
lower: 0,
|
|
Packit |
1470ea |
upper: 9001,
|
|
Packit |
1470ea |
step_increment: 1,
|
|
Packit |
1470ea |
page_increment: 10 });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří druhý číselník
|
|
Packit |
1470ea |
this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });
|
|
Packit |
1470ea |
this._tuna.connect ("value-changed", this._newValue.bind(this));
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// this._tuna.set_digits (1);
|
|
Packit |
1470ea |
// this._tuna.set_wrap (true);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří textový popisek, který bude u číselníku
|
|
Packit |
1470ea |
this._startLabel = new Gtk.Label ({ label: "There are " });
|
|
Packit |
1470ea |
this._kittenLabel = new Gtk.Label ({ label: " kitten(s), and "});
|
|
Packit |
1470ea |
this._tunaLabel = new Gtk.Label ({ label: " can(s) of tuna."});
|
|
Packit |
1470ea |
this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));
|
|
Packit |
1470ea |
this._lastLabel = new Gtk.Label ({
|
|
Packit |
1470ea |
label: "That's " + this.perKitten + " can(s) of tuna per kitten." });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří mřížku, do které se vloží číselníky a jejich popisky
|
|
Packit |
1470ea |
this._spinGrid = new Gtk.Grid ({
|
|
Packit |
1470ea |
halign: Gtk.Align.CENTER,
|
|
Packit |
1470ea |
valign: Gtk.Align.CENTER,
|
|
Packit |
1470ea |
margin_bottom: 20 });
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Připojí vše do mřížky
|
|
Packit |
1470ea |
this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._kittens, 1, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._tuna, 3, 0, 1, 1);
|
|
Packit |
1470ea |
this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Vytvoří hlavní mřížku, která bude obsahovat poddružnou mřížku a poslední popisek
|
|
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í poddružnou mříku a poslední popisek do hlavní mřížky
|
|
Packit |
1470ea |
this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);
|
|
Packit |
1470ea |
this._mainGrid.attach (this._lastLabel, 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 |
_newValue() {
|
|
Packit |
1470ea |
// Aktualizuje popisek, který zobrazuje kolik konzerv připadá na jednu kočku
|
|
Packit |
1470ea |
this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))
|
|
Packit |
1470ea |
this._lastLabel.set_label ("That's " + this.perKitten + " can(s) of tuna per kitten.");
|
|
Packit |
1470ea |
}
|
|
Packit |
1470ea |
};
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
// Spustí aplikaci
|
|
Packit |
1470ea |
let app = new SpinButtonExample ();
|
|
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.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Adjustment.html">Gtk.Adjustment</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.Label.html">Gtk.Label</link> </item>
|
|
Packit |
1470ea |
<item><link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.SpinButton.html">Gtk.SpinButton</link> </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
</page>
|