| Menu Principal | |||||||||
|
| Parceiros |
![]() |
![]() |
![]() |
Título
Facilitando o GtkTreeViewResumo
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.Código
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!
Imagem<?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;
}
}
}
}
?>
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
| Literatura |
![]() |
![]() |
| Artigos |
Tradução do manual do PHP-GTK2 Jogo da Velha GIF animado em PHP-GTK |
| Aplicações |
UML2Classes GTKontas Janelas de alerta |
