|
Problem Sometimes it's small user interface elements here and there that make users feels "more at home" with your applications.
In this example, we will show you how to add mnemonic, or keyboard accelerator, to GtkLabel. An application of this is to enable users to jump between entry fields by pressing the underlined mnemonics such as Alt-N, Alt-D, etc. as shown below:

Solution
Sample Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| <?php $window = new GtkWindow(); $window->set_size_request(400, 240); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add($vbox = new GtkVBox());
// display title
$title = new GtkLabel("Add mnemonic to GtkLabel"); $title->modify_font(new PangoFontDescription("Times New Roman Italic 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $title->set_size_request(-1, 40); $vbox->pack_start($title, 0, 0);
$fields = array('Item _number', 'Item _Description', 'Unit _price', '_Quantity'); // note 1
$field_size = array(120, 200, 80, 80); $entry = array(); // to store the text entries
$table = new GtkTable(); display_table($table, $fields, $field_size); // display the table
$vbox->pack_start($table);
function display_table($table, $fields, $field_size) { global $entry; $row = 0; foreach ($fields as $field) { $label = new GtkLabel(); $label->set_text_with_mnemonic(" $field: "); // note 2
$alignment = new GtkAlignment(1, .5, 0, 0); $alignment->add($label); $table->attach($alignment, 0, 1, $row, $row+1, Gtk::FILL, Gtk::SHRINK, 0, 0);
$entry[$row] = new GtkEntry(); $alignment = new GtkAlignment(0, .5, 0, 0); $alignment->add($entry[$row]); $entry[$row]->set_size_request($field_size[$row], -1); $label->set_mnemonic_widget($entry[$row]); // note 3
$table->attach($alignment, 1, 2, $row, $row+1); ++$row; } }
// create a submit button
$button = new GtkButton('Submit');
|
- Note that this is only 70% of the sample code. You have to be a registered member to see the entire sample code. Please login or register.
- Registration is free and immediate.
- Have some doubt about the registration? Please read this forum article.
Explanation The example above makes use of the code from How to align GtkEntry fields - Part 2?
What's new here:
- Note the use of underscore to indicate the mnemonic.
- Set the label text with mnemonic.
- Associate each mnemonic with the corresponding GtkEntry.
Related Links
User reviews There are no user reviews yet. Note: You have to be a registered member to leave a comment. Free registration here. |