Blame platform-demos/ca/radiobutton.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="radiobutton.js" xml:lang="ca">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">RadioButton (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#buttons"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-15" 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>Only one can be selected at a time</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>RadioButton</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/radiobuttontravel.png"/>
Packit 1470ea
  

RadioButtons are named after old-style car radios, which had buttons for switching between channel presets. Because the radio could only be tuned to one station at a time, only one button could be pressed in at a time; if you pressed a new one, the one that was already pressed in would pop back out. That's how these buttons work, too.

Packit 1470ea
  

Each RadioButton needs a text label and a group. Only one button in a group can be selected at a time. You don't name each group; you just set new RadioButtons to be part of the same group as an existing one. If you create a new one outside of a group, it automatically creates a new group for it to be part of.

Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="imports">
Packit 1470ea
    <title>Libraries to import</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
    

These are the libraries we need to import for this application to run. Remember that the line which tells GNOME that we're using Gjs always needs to go at the start.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
  <section id="applicationwindow">
Packit 1470ea
    <title>Creating the application window</title>
Packit 1470ea
    
Packit 1470ea
const RadioButtonExample = new Lang.Class({
Packit 1470ea
    Name: 'RadioButton Example',
Packit 1470ea
Packit 1470ea
    // Create the application itself
Packit 1470ea
    _init: function() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsradiobutton',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
    // Connect 'activate' and 'startup' signals to the callback functions
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
    // Callback function for 'activate' signal presents window when active
Packit 1470ea
    _onActivate: function() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Callback function for 'startup' signal builds the UI
Packit 1470ea
    _onStartup: function() {
Packit 1470ea
        this._buildUI ();
Packit 1470ea
    },
Packit 1470ea
]]>
Packit 1470ea
    

All the code for this sample goes in the RadioButtonExample class. The above code creates a <link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link> for our widgets and window to go in.

Packit 1470ea
    
Packit 1470ea
    // Build the application's UI
Packit 1470ea
    _buildUI: function() {
Packit 1470ea
Packit 1470ea
        // Create the application window
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: "Travel Planning"});
Packit 1470ea
]]>
Packit 1470ea
    

The _buildUI function is where we put all the code to create the application's user interface. The first step is creating a new <link xref="GtkApplicationWindow.js">Gtk.ApplicationWindow</link> to put all our widgets into.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="button">
Packit 1470ea
    <title>Creating the radiobuttons</title>
Packit 1470ea
    
Packit 1470ea
        // Create a label for the first group of buttons
Packit 1470ea
        this._placeLabel = new Gtk.Label ({label: "Where would you like to travel to?"});
Packit 1470ea
]]>
Packit 1470ea
Packit 1470ea
    

We use a <link xref="label.js">Gtk.Label</link> to set each group of RadioButtons apart. Nothing will stop you from putting RadioButtons from all different groups wherever you want, so if you want people to know which ones go together you need to organize things accordingly.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create three radio buttons three different ways
Packit 1470ea
        this._place1 = new Gtk.RadioButton ({label: "The Beach"});
Packit 1470ea
Packit 1470ea
        this._place2 = Gtk.RadioButton.new_from_widget (this._place1);
Packit 1470ea
        this._place2.set_label ("The Moon");
Packit 1470ea
Packit 1470ea
        this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, "Antarctica");
Packit 1470ea
        // this._place3.set_active (true);
Packit 1470ea
]]>
Packit 1470ea
Packit 1470ea
    

Here are three different ways to create RadioButtons. The first is the usual way, where we create a new Gtk.RadioButton and assign its properties at the same time. The second and third use functions which automatically handle some of the properties; new_from_widget takes a single argument, the RadioButton that you want to put this new one in the same group as. Meanwhile, new_with_label_from_widget takes that and the RadioButton's label at the same time.

Packit 1470ea
    

The first RadioButton in a group is the one that's selected by default. Try uncommenting the last line in this sample code to see how you can set a different one to be the default selection.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a label for the second group of buttons
Packit 1470ea
        this._thingLabel = new Gtk.Label ({label: "And what would you like to bring?" });
Packit 1470ea
Packit 1470ea
        // Create three more radio buttons
Packit 1470ea
        this._thing1 = new Gtk.RadioButton ({label: "Penguins" });
Packit 1470ea
        this._thing2 = new Gtk.RadioButton ({label: "Sunscreen", group: this._thing1 });
Packit 1470ea
        this._thing3 = new Gtk.RadioButton ({label: "A spacesuit", group: this._thing1 });
Packit 1470ea
]]>
Packit 1470ea
    

Here we create the label for the second group of buttons, and then create them all the same way.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="ui">
Packit 1470ea
    <title>Creating the rest of the user interface</title>
Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a stock OK button
Packit 1470ea
        this._okButton = new Gtk.Button ({
Packit 1470ea
            label: 'gtk-ok',
Packit 1470ea
            use_stock: 'true',
Packit 1470ea
            halign: Gtk.Align.END });
Packit 1470ea
Packit 1470ea
        // Connect the button to the function which handles clicking it
Packit 1470ea
        this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));
Packit 1470ea
]]>
Packit 1470ea
    

This code creates a <link xref="button.js">Gtk.Button</link> and binds it to a function which will show people a silly message when they click OK, depending on which RadioButtons were selected.

Packit 1470ea
    

To make sure the button's "OK" label shows up properly in every language that GNOME is translated into, remember to use one of Gtk's <link href="https://developer.gnome.org/gtk3/3.4/gtk3-Stock-Items.html">stock button types</link>.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a grid to put the "place" items in
Packit 1470ea
        this._places = new Gtk.Grid ();
Packit 1470ea
Packit 1470ea
        // Attach the "place" items to the grid
Packit 1470ea
        this._places.attach (this._placeLabel, 0, 0, 1, 1);
Packit 1470ea
        this._places.attach (this._place1, 0, 1, 1, 1);
Packit 1470ea
        this._places.attach (this._place2, 0, 2, 1, 1);
Packit 1470ea
        this._places.attach (this._place3, 0, 3, 1, 1);
Packit 1470ea
Packit 1470ea
        // Create a grid to put the "thing" items in
Packit 1470ea
        this._things = new Gtk.Grid ({ margin_top: 50 });
Packit 1470ea
Packit 1470ea
        // Attach the "thing" items to the grid
Packit 1470ea
        this._things.attach (this._thingLabel, 0, 0, 1, 1);
Packit 1470ea
        this._things.attach (this._thing1, 0, 1, 1, 1);
Packit 1470ea
        this._things.attach (this._thing2, 0, 2, 1, 1);
Packit 1470ea
        this._things.attach (this._thing3, 0, 3, 1, 1);
Packit 1470ea
Packit 1470ea
        // Create a grid to put everything in
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER,
Packit 1470ea
            margin_left: 40,
Packit 1470ea
            margin_right: 50 });
Packit 1470ea
Packit 1470ea
        // Attach everything to the grid
Packit 1470ea
        this._grid.attach (this._places, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach (this._things, 0, 1, 1, 1);
Packit 1470ea
        this._grid.attach (this._okButton, 0, 2, 1, 1);
Packit 1470ea
Packit 1470ea
        // Add the grid to the window
Packit 1470ea
        this._window.add (this._grid);
Packit 1470ea
]]>
Packit 1470ea
    

We use a separate <link xref="grid.js">Gtk.Grid</link> to organize each group of radio buttons. This way we can change the layout with less fuss later on. The second Grid has a margin on top, to visually separate the two sets of choices.

Packit 1470ea
    

After we've organized them, we put them into a third, master Grid, along with the OK button. Then we attach that to the window.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
]]>
Packit 1470ea
Packit 1470ea
    

Finally, we tell the window and everything inside it to become visible when the application is run.

Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="function">
Packit 1470ea
    <title>Function which handles your selection</title>
Packit 1470ea
    
Packit 1470ea
    _okClicked: function () {
Packit 1470ea
Packit 1470ea
        // Create a popup that shows a silly message
Packit 1470ea
        this._travel = new Gtk.MessageDialog ({
Packit 1470ea
            transient_for: this._window,
Packit 1470ea
            modal: true,
Packit 1470ea
            message_type: Gtk.MessageType.OTHER,
Packit 1470ea
            buttons: Gtk.ButtonsType.OK,
Packit 1470ea
            text: this._messageText() });
Packit 1470ea
Packit 1470ea
        // Show the popup
Packit 1470ea
        this._travel.show();
Packit 1470ea
Packit 1470ea
        // Bind the OK button to the function that closes the popup
Packit 1470ea
        this._travel.connect ("response", Lang.bind (this, this._clearTravelPopUp));
Packit 1470ea
Packit 1470ea
    },
Packit 1470ea
]]>
Packit 1470ea
    

When you click OK, a <link xref="messagedialog.js">Gtk.MessageDialog</link> appears. This function creates and displays the popup window, then binds its OK button to a function that closes it. What text appears in the popup depends on the _messageText() function, which returns a different value depending on which set of options you chose.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
    _messageText: function() {
Packit 1470ea
Packit 1470ea
        // Create a silly message for the popup depending on what you selected
Packit 1470ea
        var stringMessage = "";
Packit 1470ea
Packit 1470ea
        if (this._place1.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "Penguins love the beach, too!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "Make sure to put on that sunscreen!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "Are you going to the beach in space?";
Packit 1470ea
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        else if (this._place2.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "The penguins will take over the moon!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "A lack of sunscreen will be the least of your problems!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "You'll probably want a spaceship, too!";
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        else if (this._place3.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "The penguins will be happy to be back home!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "Antarctic sunbathing may be hazardous to your health!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "Try bringing a parka instead!";
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        return stringMessage;
Packit 1470ea
Packit 1470ea
    },
Packit 1470ea
]]>
Packit 1470ea
    

The get_active() method is how we can tell which RadioButton's pressed in. This function returns a different silly message depending on which set of buttons was pressed. Its return value is used as the MessageDialog's text property.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
    _clearTravelPopUp: function () {
Packit 1470ea
Packit 1470ea
        this._travel.destroy();
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
});
Packit 1470ea
]]>
Packit 1470ea
    

This function is called when the MessageDialog's OK button is pressed. It simply makes the popup go away.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
// Run the application
Packit 1470ea
let app = new RadioButtonExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
]]>
Packit 1470ea
    

Finally, we create a new instance of the finished RadioButtonExample class, and set the application running.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="complete">
Packit 1470ea
    <title>Complete code sample</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 RadioButtonExample {
Packit 1470ea
Packit 1470ea
    // Create the application itself
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jsradiobutton',
Packit 1470ea
            flags: Gio.ApplicationFlags.FLAGS_NONE
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
        // Connect 'activate' and 'startup' signals to the callback functions
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
    // Callback function for 'activate' signal presents window when active
Packit 1470ea
    _onActivate() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Callback function for 'startup' signal builds the UI
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Build the application's UI
Packit 1470ea
    _buildUI() {
Packit 1470ea
Packit 1470ea
        // Create the application window
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: "Travel Planning"});
Packit 1470ea
Packit 1470ea
        // Create a label for the first group of buttons
Packit 1470ea
        this._placeLabel = new Gtk.Label ({label: "Where would you like to travel to?"});
Packit 1470ea
Packit 1470ea
        // Create three radio buttons three different ways
Packit 1470ea
        this._place1 = new Gtk.RadioButton ({label: "The Beach"});
Packit 1470ea
Packit 1470ea
        this._place2 = Gtk.RadioButton.new_from_widget (this._place1);
Packit 1470ea
        this._place2.set_label ("The Moon");
Packit 1470ea
Packit 1470ea
        this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, "Antarctica");
Packit 1470ea
        // this._place3.set_active (true);
Packit 1470ea
Packit 1470ea
        // Create a label for the second group of buttons
Packit 1470ea
        this._thingLabel = new Gtk.Label ({label: "And what would you like to bring?" });
Packit 1470ea
Packit 1470ea
        // Create three more radio buttons
Packit 1470ea
        this._thing1 = new Gtk.RadioButton ({label: "Penguins" });
Packit 1470ea
        this._thing2 = new Gtk.RadioButton ({label: "Sunscreen", group: this._thing1 });
Packit 1470ea
        this._thing3 = new Gtk.RadioButton ({label: "A spacesuit", group: this._thing1 });
Packit 1470ea
Packit 1470ea
        // Create a stock OK button
Packit 1470ea
        this._okButton = new Gtk.Button ({
Packit 1470ea
            label: 'gtk-ok',
Packit 1470ea
            use_stock: 'true',
Packit 1470ea
            halign: Gtk.Align.END });
Packit 1470ea
Packit 1470ea
        // Connect the button to the function which handles clicking it
Packit 1470ea
        this._okButton.connect ('clicked', this._okClicked.bind(this));
Packit 1470ea
Packit 1470ea
        // Create a grid to put the "place" items in
Packit 1470ea
        this._places = new Gtk.Grid ();
Packit 1470ea
Packit 1470ea
        // Attach the "place" items to the grid
Packit 1470ea
        this._places.attach (this._placeLabel, 0, 0, 1, 1);
Packit 1470ea
        this._places.attach (this._place1, 0, 1, 1, 1);
Packit 1470ea
        this._places.attach (this._place2, 0, 2, 1, 1);
Packit 1470ea
        this._places.attach (this._place3, 0, 3, 1, 1);
Packit 1470ea
Packit 1470ea
        // Create a grid to put the "thing" items in
Packit 1470ea
        this._things = new Gtk.Grid ({ margin_top: 50 });
Packit 1470ea
Packit 1470ea
        // Attach the "thing" items to the grid
Packit 1470ea
        this._things.attach (this._thingLabel, 0, 0, 1, 1);
Packit 1470ea
        this._things.attach (this._thing1, 0, 1, 1, 1);
Packit 1470ea
        this._things.attach (this._thing2, 0, 2, 1, 1);
Packit 1470ea
        this._things.attach (this._thing3, 0, 3, 1, 1);
Packit 1470ea
Packit 1470ea
        // Create a grid to put everything in
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER,
Packit 1470ea
            margin_left: 40,
Packit 1470ea
            margin_right: 50 });
Packit 1470ea
Packit 1470ea
        // Attach everything to the grid
Packit 1470ea
        this._grid.attach (this._places, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach (this._things, 0, 1, 1, 1);
Packit 1470ea
        this._grid.attach (this._okButton, 0, 2, 1, 1);
Packit 1470ea
Packit 1470ea
        // Add the grid to the window
Packit 1470ea
        this._window.add (this._grid);
Packit 1470ea
Packit 1470ea
        // Show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _okClicked() {
Packit 1470ea
Packit 1470ea
        // Create a popup that shows a silly message
Packit 1470ea
        this._travel = new Gtk.MessageDialog ({
Packit 1470ea
            transient_for: this._window,
Packit 1470ea
            modal: true,
Packit 1470ea
            message_type: Gtk.MessageType.OTHER,
Packit 1470ea
            buttons: Gtk.ButtonsType.OK,
Packit 1470ea
            text: this._messageText() });
Packit 1470ea
Packit 1470ea
        // Show the popup
Packit 1470ea
        this._travel.show();
Packit 1470ea
Packit 1470ea
        // Bind the OK button to the function that closes the popup
Packit 1470ea
        this._travel.connect ("response", this._clearTravelPopUp.bind(this));
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _messageText() {
Packit 1470ea
Packit 1470ea
        // Create a silly message for the popup depending on what you selected
Packit 1470ea
        var stringMessage = "";
Packit 1470ea
Packit 1470ea
        if (this._place1.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "Penguins love the beach, too!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "Make sure to put on that sunscreen!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "Are you going to the beach in space?";
Packit 1470ea
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        else if (this._place2.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "The penguins will take over the moon!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "A lack of sunscreen will be the least of your problems!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "You'll probably want a spaceship, too!";
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        else if (this._place3.get_active()) {
Packit 1470ea
Packit 1470ea
            if (this._thing1.get_active())
Packit 1470ea
                stringMessage = "The penguins will be happy to be back home!";
Packit 1470ea
Packit 1470ea
            else if (this._thing2.get_active())
Packit 1470ea
                stringMessage = "Antarctic sunbathing may be hazardous to your health!";
Packit 1470ea
Packit 1470ea
            else stringMessage = "Try bringing a parka instead!";
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        return stringMessage;
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _clearTravelPopUp() {
Packit 1470ea
        this._travel.destroy();
Packit 1470ea
    }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
// Run the application
Packit 1470ea
let app = new RadioButtonExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="in-depth">
Packit 1470ea
    <title>In-depth documentation</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.Button.html">Gtk.Button</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.RadioButton.html">Gtk.RadioButton</link>

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