mirror of
https://github.com/php/php-gtk-src.git
synced 2026-04-29 03:53:19 +02:00
109 lines
3.2 KiB
PHP
109 lines
3.2 KiB
PHP
<?php
|
|
|
|
class IconView extends GtkWindow
|
|
{
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
require_once('WidgetEditor.php');
|
|
|
|
if (@$GLOBALS['framework']) {
|
|
return;
|
|
}
|
|
|
|
$this->set_default_size(700,300);
|
|
$this->set_title('GtkIconView');
|
|
$this->connect_simple('destroy', array('gtk', 'main_quit'));
|
|
|
|
$this->add($this->__create_box());
|
|
|
|
$this->show_all();
|
|
}
|
|
|
|
|
|
|
|
function __create_box()
|
|
{
|
|
$iv = new GtkIconView();
|
|
|
|
$model = new GtkListStore(GdkPixbuf::gtype, GObject::TYPE_STRING);
|
|
$iv->set_model($model);
|
|
$iv->set_columns(1);
|
|
|
|
$ids = Gtk::stock_list_ids();
|
|
sort($ids);
|
|
foreach ($ids as $id) {
|
|
$pixbuf = $iv->render_icon($id, Gtk::ICON_SIZE_DIALOG);
|
|
|
|
$model->set(
|
|
$model->append(),//get the iterator for the next new item
|
|
0, //column 0
|
|
$pixbuf,//value for column 0
|
|
1,//column 1
|
|
$id//value for column 1
|
|
);
|
|
}
|
|
|
|
$iv->set_pixbuf_column(0);
|
|
$iv->set_text_column(1);
|
|
|
|
//multi select incl. zooming up an rectangle to select icons
|
|
$iv->set_selection_mode(Gtk::SELECTION_MULTIPLE);
|
|
//labels at the right side
|
|
$iv->set_orientation(Gtk::ORIENTATION_HORIZONTAL);
|
|
|
|
//enough place for the text so that it doesn't wrap
|
|
$iv->set_item_width(200);
|
|
//spacing between icon and label
|
|
$iv->set_spacing(0);
|
|
//spacing between single rows
|
|
$iv->set_row_spacing(0);
|
|
//spacing between cols
|
|
|
|
//margin from the edges of the view widget -> like the CSS margin property
|
|
$iv->set_margin(5);
|
|
|
|
//in how many columns the view will be split
|
|
//Icon order (for 3 columns):
|
|
// 1 2 3
|
|
// 4 5 6
|
|
//FIXME: is there a way to arrange it horizontally so that it's arranged that way:
|
|
// 1 4 7
|
|
// 2 5 8
|
|
// 3 6 9 ?
|
|
//0 is auto-fit
|
|
$iv->set_columns(0);
|
|
|
|
|
|
$editor = new WidgetEditor(
|
|
$iv,
|
|
array(
|
|
array( 'selection_mode', GtkComboBox::gtype, 'Gtk::SELECTION_'),
|
|
array( 'orientation' , GtkComboBox::gtype, 'Gtk::ORIENTATION_'),
|
|
array( 'item_width' , GtkScale::gtype , 0, 500),
|
|
array( 'spacing' , GtkScale::gtype , -100, 100),
|
|
array( 'row_spacing' , GtkScale::gtype , -100, 100),
|
|
array( 'column_spacing', GtkScale::gtype , -100, 100),
|
|
array( 'margin' , GtkScale::gtype , -100, 200),
|
|
array( 'columns' , GtkScale::gtype , 0, 20)
|
|
)
|
|
);
|
|
|
|
|
|
$scrollwin = new GtkScrolledWindow();
|
|
$scrollwin->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
|
|
$scrollwin->add($iv);
|
|
|
|
return $scrollwin;
|
|
}
|
|
}//class IconView extends GtkWindow
|
|
|
|
|
|
$GLOBALS['class'] = 'IconView';
|
|
$GLOBALS['description'] = 'List with icons';
|
|
|
|
if (!@$GLOBALS['framework']) {
|
|
new IconView();
|
|
Gtk::main();
|
|
}
|
|
?>
|