예제 #1
0
	/**
	 * 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;
	}
예제 #2
0
 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;
 }
예제 #3
0
 /**
  * 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;
     }
 }