/** * This returns the selected item for a GtkTreeView(). Saves code. * @param GtkTreeView $treeview The treeview for which selection, the function should return. */ function treeview_getSelection(GtkTreeView $treeview){ $columns = $treeview->get_columns(); $selection = $treeview->get_selection(); //GtkTreeSelection(). $return = array(); if ($selection->get_mode() == Gtk::SELECTION_MULTIPLE){ $rows = $selection->get_selected_rows(); if ($rows[1]){ $count = 0; foreach($rows[1] AS $key => $value){ $iter = $treeview->get_model()->get_iter($value); foreach($columns AS $i => $column){ $value = $treeview->get_model()->get_value($iter, $i); $return[$count][$i] = $value; $return[$count][$column->get_title()] = $value; } $count++; } } }else{ list($model, $iter) = $selection->get_selected(); if ($iter && $model){ foreach($columns AS $i => $column){ $value = $model->get_value($iter, $i); $return[$i] = $value; } } } return $return; }
function __create_treeview() { $this->load_demos(); $model = new GtkListStore(GObject::TYPE_PHP_VALUE, GObject::TYPE_STRING); // $model->append(array("asd", "aswdasd"));//??????? foreach ($this->demos as $demo) { $iter = $model->append(); $model->set($iter, 0, $demo); } $treeview = new GtkTreeView($model); $cell_renderer = new GtkCellRendererText(); $treeview->insert_column_with_data_func(-1, 'Demos', $cell_renderer, array(&$this, 'label_setter')); $selection = $treeview->get_selection(); $selection->set_mode(Gtk::SELECTION_SINGLE); $selection->connect('changed', array($this, 'demo_selected')); //crashes as gboxed can't be instantiated // $treeview->connect('row-activated', array($this, 'demo_activate')); // $column = new GtkTreeViewColumn(); // $column->set_title('Demos'); // $treeview->append_column($column); return $treeview; }
/** * Execute the action * @ignore-autocomplete on */ public function onClick($object, $event) { $treeselection = parent::get_selection(); list($model, $iter) = $treeselection->get_selected(); if ($iter) { $info = $this->model->get_value($iter, 2); $type = $this->model->get_value($iter, 3); if ($type == 'child' and $this->itemAction) { $parameters = $this->itemAction->getParameters(); $parameters['key'] = $info['key']; $parameters['value'] = $info['value']; call_user_func_array($this->itemAction->getAction(), array($parameters)); } } }
/** * Busca os valores selecionados * * @name get_selected_rows * @return array|false */ public function get_selected_rows() { // Busca a seleção $selection = parent::get_selection(); // Verifica se existe seleção if ($selection->count_selected_rows() > 0) { // Busca o model e o iter list($model, $paths) = $selection->get_selected_rows(); // Busca a quantidade de colunas do model $columnCount = $model->get_n_columns(); // Percorre as linhas $rows = array(); foreach ($paths as $path) { // Busca o iter $iter = $model->get_iter($path); // Percorre as colunas $value = array(); for ($i = 0; $i < $columnCount; $i++) { // Armazena o valor $value[] = $model->get_value($iter, $i); } // Adiciona a linha ao model $rows[] = $value; } // Retorna o valor return $rows; } else { // Retorna FALSE para indicar que não à seleção return FALSE; } }