mirror of
https://github.com/php/php-gtk-src.git
synced 2026-04-23 16:58:16 +02:00
120 lines
3.2 KiB
PHP
120 lines
3.2 KiB
PHP
<?php
|
|
if( !class_exists('gtk')) {
|
|
die('Please load the php-gtk2 module in your php.ini' . "\r\n");
|
|
}
|
|
|
|
|
|
class ComboBox extends GtkWindow
|
|
{
|
|
function __construct($parent = null)
|
|
{
|
|
parent::__construct();
|
|
|
|
if (@$GLOBALS['framework']) {
|
|
return;
|
|
}
|
|
|
|
if ($parent)
|
|
$this->set_screen($parent->get_screen());
|
|
else
|
|
$this->connect_simple('destroy', array('gtk', 'main_quit'));
|
|
|
|
$this->set_title(__CLASS__);
|
|
$this->set_position(Gtk::WIN_POS_CENTER);
|
|
$this->set_default_size(-1, -1);
|
|
$this->set_border_width(8);
|
|
|
|
$this->add($this->__create_box());
|
|
$this->show_all();
|
|
}
|
|
|
|
|
|
|
|
function __create_box()
|
|
{
|
|
$vbox = new GtkVBox(false, 5);
|
|
$vbox->set_border_width(5);
|
|
|
|
|
|
$combo = GtkComboBox::new_text();
|
|
|
|
$data = array(
|
|
'PHP-Gtk2',
|
|
'is',
|
|
'really',
|
|
'cool'
|
|
);
|
|
foreach ($data as $string) {
|
|
$combo->append_text($string);
|
|
}
|
|
$combo->set_active(2);
|
|
|
|
|
|
$button = new GtkButton('Check this');
|
|
|
|
$vbox->pack_start($combo, false, true);
|
|
$vbox->pack_start($button, false, true);
|
|
|
|
$button->connect('clicked', array($this, 'onClickedButton'), $combo);
|
|
|
|
|
|
|
|
//GtkComboBoxEntry
|
|
$vbox->pack_start(new GtkHSeparator(), false, true);
|
|
|
|
|
|
$comboentry = GtkComboBoxEntry::new_text();
|
|
$data2 = array('You', 'can', 'edit', 'this', 'box');
|
|
foreach ($data2 as $string) {
|
|
$comboentry->append_text($string);
|
|
}
|
|
$comboentry->get_child()->set_text('That\'s an own text for the entry');
|
|
$vbox->pack_start($comboentry, false, true);
|
|
|
|
$button2 = new GtkButton('Check that');
|
|
$vbox->pack_start($button2, false, true);
|
|
$button2->connect('clicked', array($this, 'onClickedButton'), $comboentry);
|
|
|
|
return $vbox;
|
|
}
|
|
|
|
|
|
|
|
function onClickedButton($button, $combo)
|
|
{
|
|
$number = $combo->get_active();
|
|
$text = $combo->get_active_text();
|
|
|
|
if ($combo instanceof GtkComboBoxEntry) {
|
|
$owntext = "\r\n\r\nAs this is an GtkComboBoxEntry, we have an extra text:\r\n" . $combo->get_child()->get_text();
|
|
} else {
|
|
$owntext = '';
|
|
}
|
|
$dialog = new GtkMessageDialog($this, Gtk::DIALOG_MODAL | Gtk::DIALOG_DESTROY_WITH_PARENT,
|
|
Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK,
|
|
sprintf(
|
|
'The %s displays "%s" which is item #%d.%s',
|
|
get_class($combo),
|
|
$text,
|
|
$number,
|
|
$owntext
|
|
)
|
|
);
|
|
$dialog->run();
|
|
$dialog->destroy();
|
|
|
|
}
|
|
|
|
|
|
//FIXME: use real list models
|
|
}
|
|
|
|
$GLOBALS['class'] = 'ComboBox';
|
|
$GLOBALS['description'] = 'Demonstrates the use of GtkComboBox and how to get the options';
|
|
|
|
if (!@$GLOBALS['framework']) {
|
|
new ComboBox();
|
|
Gtk::main();
|
|
}
|
|
|
|
?>
|