Creates a new GtkCellRendererToggle. The toggle button rendering parameters are adjusted using the object properties. The object properties can be set globally (with set_property() ). Also, with GtkTreeViewColumn, you can bind a property to a value in a gtk.TreeModel. For example, you can bind the "active" property on the cell renderer to a boolean value in the model, thus causing the check button to reflect the state of the model.
Example 46. Creating an editable toggle renderer
<?php //Create a check list with things to buy // You can toggle the check item. $store = new GtkListStore( Gtk::TYPE_STRING, //item Gtk::TYPE_BOOLEAN //bought? ); //View is needed to display them $view = new GtkTreeView($store); //Item column $rendererText = new GtkCellRendererText(); $columnItem = new GtkTreeViewColumn( 'Item', new GtkCellRendererText(), 'text', 0 ); $view->append_column($columnItem); //GtkCellRendererToggle: bought? column $rendererBought = new GtkCellRendererToggle(); $rendererBought->set_property('activatable', true); $rendererBought->connect('toggled', 'bought_toggled', $store); $columnBought = new GtkTreeViewColumn( 'Bought?', //title $rendererBought, //the renderer 'active', //use that property 1 //data is in that model column ); $view->append_column($columnBought); //When the user toggles the state, this // method will be called. function bought_toggled($renderer, $row, $store) { $iter = $store->get_iter($row); //The value has been toggled -> we need // to invert the current value $store->set( $iter, 1, !$store->get_value($iter, 1) ); } //Add some data $store->append(array('Milk' , false)); $store->append(array('Butter', false)); $store->append(array('Juice' , true)); $store->append(array('Bread' , false)); $wnd = new GtkWindow(); $wnd->add($view); $wnd->set_title('Check list'); $wnd->connect_simple('destroy', array('Gtk', 'main_quit')); $wnd->show_all(); Gtk::main(); ?> |