In this part of the PHP GTK programming tutorial,
we will introduce some widgets.
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.
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
AGtkCheckButton 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
/*
ZetCode PHP GTK tutorial
This program toggles the title of the
window with the GtkCheckButton widget.
author: Jan Bodnar
website: www.zetcode.com
last modified: August 2011
*/
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
TheGtkLabel widget shows text. No user interaction is
available with this widget.
<?php
/*
ZetCode PHP GTK tutorial
In this example, we show a text on the
window. For this, we use the GtkLabel widget.
author: Jan Bodnar
website: www.zetcode.com
last modified: August 2011
*/
class Example extends GtkWindow {
public function __construct() {
parent::__construct();
$this->init_ui();
}
private function init_ui() {
// no trailing white space!
$lyrics = <<<LYRICS
Meet you downstairs in the bar and heard
your rolled up sleeves and your skull t-shirt
You say why did you do it with him today?
and sniff me out like I was Tanqueray
cause you're my fella, my guy
hand me your stella and fly
by the time I'm out the door
you tear men down like Roger Moore
I cheated myself
like I knew I would
I told ya, I was trouble
you know that I'm no good
LYRICS;
$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.
Figure: GtkLabel Widget
GtkEntry
TheGtkEntry is a single line text entry field. This widget
is used to enter textual data.
<?php
/*
ZetCode PHP GTK tutorial
This example demonstrates the GtkEntry widget.
author: Jan Bodnar
website: www.zetcode.com
last modified: August 2011
*/
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.
Figure: GtkEntry Widget
GtkImage
TheGtkImage widget shows an image.
<?php
/*
ZetCode PHP GTK tutorial
This example demonstrates the GtkImage widget.
author: Jan Bodnar
website: www.zetcode.com
last modified: August 2011
*/
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 static new_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
AComboBox is a widget that allows the user to
choose from a list of options.
<?php
/*
ZetCode PHP GTK tutorial
This example demonstrates the GtkComboBox widget
author: Jan Bodnar
website: www.zetcode.com
last modified: August 2011
*/
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 a GtkComboBox 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
In this chapter of the PHP GTK tutorial, we showed some basic widgets.
No comments:
Post a Comment