Menu Principal
  O que é PHP-GTK ?
  Lista de discussões
  Fórum de discussões
  Documentação
  Ver Artigos
  Ver Aplicações
  Users Map
  Para Linux
  Para Windows

 Login
 Login
 Senha
  Efetuar Cadastro
  Esqueci a Senha

 Busca no Site
Parceiros


PHP-GTK Brasil :: Facilitando o GtkTreeView
Título
Facilitando o GtkTreeView
Resumo
Após ter passado por alguma dificuldade para implementar o GtkTreeView (Comecei com gtk a uma semana), escrevi esta classe que facilita um pouco a vida!

Texto
Olá, este é meu primeiro artigo aqui e a idéia é disponibilizar esta pequena classe que facilita a utilização de um GtkTreeView.

No construtor você passa os nomes das colunas, em uma string só, separados por espaços e passa também um GtkListStore dizendo o tipo de dados de cada coluna. Ex.:

$tipoColunas = new GtkListStore(GObject::TYPE_STRING, GObject::TYPE_STRING);
$this->listaOcupados = new Lista("Ramal Usuario", $tipoColunas);

E pronto! Aí é só utilizar os métodos addLinha e delLinha:

addLinha($txt): $txt = Texto das colunas, separados por VIRGULA
Ex.: $this->listaOcupados->addLihna("1233,Gabriel Ortiz Lour");

delLinha($nomeColuma, $valor): vai apagar a linha cujo o valor da coluna $nomeColuna seja $valor.
Ex.: $this->listaOcupados->delLinha("Ramal", "1212");

Pronto! É isso!

Código
<?php
class Lista extends GtkTreeView
{
    var 
$colunas;
    
    function 
__construct($colunas$tipoColunas) {
        
parent::__construct($tipoColunas);
        
        
$this->colunas $colunas;
        
$c 0;
        foreach(
explode(" "$colunas) as $col) {
            
$renderer = new GtkCellRendererText();
            
$column = new GtkTreeViewColumn($col$renderer'text'$c);
            
$column->set_sort_column_id($c++);
            
$column->set_min_width(80);
            
$this->append_column($column);
        }
    }
    
    function 
addLinha($txt) {
        
$store $this->get_model();
        
$iter  $store->append();
        
$c 0;
        foreach(
explode(","$txt) as $t)
            
$store->set($iter$c++, $t);
    }
    
    function 
delLinha($nomeColuma$valor) {
        
$store $this->get_model();
        
$posColuna = -1;
        
        
$cols explode(" "$this->colunas);
        for(
$c=0$c<count($cols); $c++)
            if(
$cols[$c] == $nomeColuma) {
                
$posColuna $c;
                break;
            }
        
        if(
$posColuna >= 0)
            foreach (
$store as $row) {
                
$iter $row->iter;
                if(
$store->get_value($iter$posColuna) == $valor) {
                    
$store->remove($iter);
                    break;
                }
            }
    }
}
?>

Imagem

Comentários

  Versão 2.0! 

Acabei de remover a necessidade de se passar um GtkListStore no segundo parametro do construtor:

Troque o construtor para:

function __construct($colunas) {
$totCols = count(explode(" ", $colunas));
$strGtkListStore = "$tipoColunas = new GtkListStore(";
for($c=0; $c<$totCols; $c++) {
if($c) $strGtkListStore .= ",";
$strGtkListStore .= "GObject::TYPE_STRING";
}
eval($strGtkListStore.");");
parent::__construct($tipoColunas);

$this->colunas = $colunas;
$c = 0;
foreach(explode(" ", $colunas) as $col) {
$renderer = new GtkCellRendererText();
$column = new GtkTreeViewColumn($col, $renderer, 'text', $c);
$column->set_sort_column_id($c++);
$column->set_min_width(80);
$this->append_column($column);
}
}

e pronto!

  Enviado por Gabriel Ortiz em 2008-04-12  

 Adicionar Comentário
 login
 Senha
 Título
 Comentário




PHP-GTK Brasil