In this post, we display a tree structure from array in php gtk, for do this please follow below points:
1.) Sets up the treestore to store the data. Here it sets three fields. The first one is integer that stores the id. The second and third are strings.
2.) Creates a GtkTreeview. It is here that you bind the model to the treeview.
3.) Sets up the treeview columns.
4.) Loops through the data list and appends the data one by by to the tree structure. Note that $nodes stores the GtkTreeiter of each node. You can view this as a pointer to the node.
1.) Sets up the treestore to store the data. Here it sets three fields. The first one is integer that stores the id. The second and third are strings.
2.) Creates a GtkTreeview. It is here that you bind the model to the treeview.
3.) Sets up the treeview columns.
4.) Loops through the data list and appends the data one by by to the tree structure. Note that $nodes stores the GtkTreeiter of each node. You can view this as a pointer to the node.
<?php /* PHP GTK tutorials website: http://phpgtktutorials.blogspot.in/ */ $window = new GtkWindow(); $window->set_size_request(500, 250); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add($vbox = new GtkVBox()); // window title $title = new GtkLabel("Handle Array Structure in php gtk"); $title->modify_font(new PangoFontDescription("Arial 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $title->set_size_request(-1, 40); $vbox->pack_start($title, 0, 0); $vbox->pack_start(new GtkLabel(), 0, 0); $data = array( array ('id' => '101', 'parent' => '0', 'data' => 'value0'), array ('id' => '102', 'parent' => '101', 'data' => 'value1'), array ('id' => '103', 'parent' => '0', 'data' => 'value2'), array ('id' => '104', 'parent' => '0', 'data' => 'value3'), array ('id' => '105', 'parent' => '104', 'data' => 'value4'), array ('id' => '106', 'parent' => '105', 'data' => 'value5') ); display_table($vbox, $data); $window->show_all(); Gtk::main(); function display_table($vbox, $data) { // Set up a scroll window $scrolled_win = new GtkScrolledWindow(); $scrolled_win->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); $vbox->pack_start($scrolled_win); // Creates the list store if (defined("GObject::TYPE_STRING")) { $model = new GtkTreeStore(GObject::TYPE_LONG, GObject::TYPE_STRING, GObject::TYPE_STRING); // Point Number 1 } else { $model = new GtkTreeStore(Gtk::TYPE_LONG, Gtk::TYPE_STRING, Gtk::TYPE_STRING); // note 1 } $field_header = array('id', 'title', 'data'); // Creates the view to display the list store $view = new GtkTreeView($model); // Point Number 2 $scrolled_win->add($view); // Creates the columns for ($col=0; $colappend_column($column); } // pupulates the data $nodes = array(); $nodes[0] = null; // root foreach($data as $item) { $id = $item['id']; $parent = $item['parent']; $data = $item['data']; $nodes[$id] = $model->append($nodes[$parent], array($id, "this is id $id", $data)); // Point Number 4 } $view->expand_all(); } ?>