Widgets are basic building blocks of a GUI application. Over the years, several widgets became a standard in all toolkits on all OS platforms. For example a button, a check box or a scroll bar. The GTK toolkit's philosophy is to keep the number of widgets at a minimum level. More specialized widgets are created as custom GTK widgets.
GtkCheckButton
A GtkCheckButton is a widget, that has two states. On and Off. The On state is visualized by a check mark. It is used to denote some boolean property.
<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ class Example extends GtkWindow { public function __construct() { parent::__construct(); $this->init_ui(); } private function init_ui() { $this->set_title('Check button'); $this->connect_simple('destroy', array('gtk', 'main_quit')); $fixed = new GtkFixed(); $this->add($fixed); $cb = new GtkCheckButton("Show title"); $cb->set_active(true); $cb->connect('clicked', array($this, 'on_clicked')); $fixed->put($cb, 50, 50); $this->set_default_size(250, 200); $this->set_position(GTK::WIN_POS_CENTER); $this->show_all(); } public function on_clicked($sender) { if ($sender->get_active()) { $this->set_title("Check button"); } else { $this->set_title(""); } } } new Example(); Gtk::main(); ?>
We will display a title in the titlebar of the window, depending on the state of the
GtkCheckButton
.$cb = new GtkCheckButton("Show title");
The
GtkCheckButton
widget is created. The constructor of the widget takes one parameter, a label. The label is shown next to the check box.$cb->set_active(true);
The title is visible by default, so we check the check button by default.
$cb->connect('clicked', array($this, 'on_clicked'));
If we click on the check box widget a clicked signal is emitted. We hook the on_clicked() method to the signal.
if ($sender->get_active()) { $this->set_title("Check button"); } else { $this->set_title(""); }
We show the title, if the button is checked. The
get_active()
method is used to determine the state of the check button. The set_title()
method is used to set the title of the window. To clear the title of the window, we use an empty string.Figure: GtkCheckButton
GtkLabel
The
GtkLabel
widget shows text. No user interaction is available with this widget.<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ class Example extends GtkWindow { public function __construct() { parent::__construct(); $this->init_ui(); } private function init_ui() { // no trailing white space! $lyrics = " In this blog, you will learn the basics of GUI programming in GTK with PHP language. The blog's information is appropriate for beginners."; $this->set_title('GtkLabel'); $this->connect_simple('destroy', array('gtk', 'main_quit')); $this->set_border_width(10); $label = new GtkLabel($lyrics); $this->add($label); $this->set_default_size(250, 200); $this->set_position(GTK::WIN_POS_CENTER); $this->show_all(); } } new Example(); Gtk::main(); ?>
The code example shows some lyrics on the window.
// no trailing white space! $lyrics = <<<LYRICS Meet you downstairs in the bar and heard your rolled up sleeves and your skull t-shirt
We create a multi-line text. In PHP, a multi-line text can be created using the heredoc syntax.
$this->set_border_width(10);
The
GtkLabel
is surrounded by some empty space.$label = new GtkLabel($lyrics); $this->add($label);
The
GtkLabel
widget is created and added to the window.GtkEntry
The
GtkEntry
is a single line text entry field. This widget is used to enter textual data.<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ class Example extends GtkWindow { private $label; public function __construct() { parent::__construct(); $this->init_ui(); } private function init_ui() { $this->set_title('GtkEntry'); $this->connect_simple('destroy', array('gtk', 'main_quit')); $fixed = new GtkFixed(); $this->label = new GtkLabel("..."); $fixed->put($this->label, 60, 40); $entry = new GtkEntry(); $fixed->put($entry, 60, 100); $entry->connect('key_release_event', array($this, 'on_key_release')); $this->add($fixed); $this->set_default_size(250, 200); $this->set_position(GTK::WIN_POS_CENTER); $this->show_all(); } public function on_key_release($sender, $event) { $this->label->set_text($sender->get_text()); } } new Example(); Gtk::main(); ?>
This example shows an entry widget and a label. The text that we key in the entry is displayed immediately in the label widget.
$entry = new GtkEntry();
GtkEntry
widget is created.$entry->connect('key_release_event', array($this, 'on_key_release'));
We plug the the on_key_release() method to the
key_release_event
of the GtkEntry
widget.public function on_key_release($sender, $event) { $this->label->set_text($sender->get_text()); }
Inside the method, we get the text from the
GtkEntry
widget via the get_text()
method and set it to the label using the set_text()
method of the label.GtkImage
The
GtkImage
widget shows an image.<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ class Example extends GtkWindow { public function __construct() { parent::__construct(); $this->init_ui(); } private function init_ui() { $this->set_title('Red Rock'); $this->connect_simple('destroy', array('gtk', 'main_quit')); $this->set_border_width(2); $image = GtkImage::new_from_file("redrock.png"); $this->add($image); $this->set_default_size(250, 200); $this->set_position(GTK::WIN_POS_CENTER); $this->show_all(); } } new Example(); Gtk::main(); ?>
In our example, we show an image on the window.
$this->set_border_width(2);
We put some empty border around the image.
$image = GtkImage::new_from_file("redrock.png");
The
GtkImage
widget is created. We load the image from the file using the staticnew_from_file()
method. If the file isn't found or can't be loaded, the resulting GtkImage will display a broken image icon.$this->add($image);
Widget is added to the container.
GtkComboBox
A
ComboBox
is a widget that allows the user to choose from a list of options.<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ class Example extends GtkWindow { private $label; public function __construct() { parent::__construct(); $this->init_ui(); } private function init_ui() { $this->set_title('GtkComboBox'); $this->connect_simple('destroy', array('gtk', 'main_quit')); $fixed = new GtkFixed(); $this->label = new GtkLabel('-'); $fixed->put($this->label, 50, 140); $cb = GtkComboBox::new_text(); $cb->connect('changed', array($this, 'on_changed')); $cb->append_text('Ubuntu'); $cb->append_text('Mandriva'); $cb->append_text('Redhat'); $cb->append_text('Gentoo'); $cb->append_text('Mint'); $fixed->put($cb, 50, 30); $this->add($fixed); $this->set_default_size(250, 200); $this->set_position(GTK::WIN_POS_CENTER); $this->show_all(); } public function on_changed($sender) { $this->label->set_label($sender->get_active_text()); } } new Example(); Gtk::main(); ?>
The example shows a combo box and a label. The combo box has a list of five options. These are the names of Linux Distros. The label widget shows the selected option from the combo box.
$cb = GtkComboBox::new_text();The
GtkComboBox
widget is created. The new_text()
is a method, that creates aGtkComboBox
just displaying strings.$cb->append_text('Ubuntu'); $cb->append_text('Mandriva'); $cb->append_text('Redhat'); $cb->append_text('Gentoo'); $cb->append_text('Mint');It is filled with data.
public function on_changed($sender) { $this->label->set_label($sender->get_active_text()); }Inside the
on_changed()
method, we get the selected text out of the combo box and set it to the label.Figure: GtkComboBox
0 comments:
Post a Comment