ComboBoxText (JavaScript) Taryn Fox jewelfox@fursona.net 2012 A text-only drop-down menu ComboBoxText

A ComboBox is a drop-down menu. The difference between a ComboBox and a ComboBoxText is that a ComboBoxText just has basic text options, while a full ComboBox uses a ListStore or TreeStore (which are basically spreadsheets) to show things like branching options, or pictures to go alongside each choice.

Unless you need the added features of a full ComboBox, or are comfortable working with ListStores and TreeStores, you may find it a lot simpler to use a ComboBoxText whenever possible.

Libraries to import

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.

Creating the application window

All the code for this sample goes in the MessageDialogExample class. The above code creates a Gtk.Application for our widgets and window to go in.

The _buildUI function is where we put all the code to create the application's user interface. The first step is creating a new Gtk.ApplicationWindow to put all our widgets into.

Creating the ComboBoxText

After we create the ComboBoxText, we use its append_text method to add text strings to it. Like the entries in an array, they each have a number for an ID, starting with 0. To make things simpler, you can actually create an array for your ComboBoxText entries, then use a for loop to append them in order, like we did here.

After we populate the ComboBoxText, we set its first entry to be active, so that we'll see the "Select distribution" line before we click on it. Then we connect its changed signal to the _onComboChanged function, so that it's called whenever you make a new selection from the drop-down menu.

If you'd like to add an entry to a ComboBoxText, you can use the insert_text method. And if you'd rather use a text string as an ID for each entry than rely on numbers alone, you can use the append and insert methods. See the links at the bottom of this tutorial for the details of how to use them.

Finally, we add the ComboBoxText to the window, and tell the window to show itself and the widget inside it.

Function which handles your selection

We're going to create a pop-up MessageDialog, which shows you a message based on which distro you select. First, we create the array of responses to use. Since the first string in our ComboBoxText is just the "Select distribution" message, we make the first string in our array blank.

Before showing a MessageDialog, we first test to make sure you didn't choose the "Select distribution" message. After that, we set its text to be the entry in the array that corresponds to the active entry in our ComboBoxText. We do that using the get_active method, which returns the number ID of your selection.

Other methods you can use include get_active_id, which returns the text ID assigned by append, and get_active_text, which returns the full text of the string you selected.

After we create the MessageDialog, we connect its response signal to the _onDialogResponse function, then tell it to show itself.

Since the only button the MessageDialog has is an OK button, we don't need to test its response_id to see which button was clicked. All we do here is destroy the popup.

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

Complete code sample
In-depth documentation

In this sample we used the following:

Gtk.Application

Gtk.ApplicationWindow

Gtk.ComboBoxText

Gtk.MessageDialog