Listas (GtkTreeView) - PHP-GTK2
Sabe aquela chatiche na hora de adicionar colunas nas lista (GtkTreeView)... Com uma simples classe acabamos com esse problema
Sabe aquela chatiche na hora de adicionar colunas nas lista (GtkTreeView)... Com uma simples classe acabamos com esse problema!!!
* O PROBLEMA:
Imagine que você precise de uma lista que tenha 10 colunas.
Exemplo:
Cliente | CPF | RG | Endereço | ....
Para colocar essas colunas na lista teria que fazer o seguinte:
$treeview = new GtkTreeView($store);
$cell_renderer = new GtkCellRendererText();
$colLanguage1 = new GtkTreeViewColumn('Cliente', $cell_renderer, 'text', 1);
$treeview->append_column($colLanguage1);
$colLanguage2 = new GtkTreeViewColumn('CPF', $cell_renderer, 'text', 2);
$treeview->append_column($colLanguage2);
$colLanguage3 = new GtkTreeViewColumn('RG', $cell_renderer, 'text', 3);
$treeview->append_column($colLanguage3);
$colLanguage4 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 4);
$treeview->append_column($colLanguage4);
$colLanguage5 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 5);
$treeview->append_column($colLanguage5);
$colLanguage6 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 6);
$treeview->append_column($colLanguage6);
$colLanguage7 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 7);
$treeview->append_column($colLanguage7);
$colLanguage8 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 8);
$treeview->append_column($colLanguage8);
$colLanguage9 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 9);
$treeview->append_column($colLanguage9);
$colLanguage10 = new GtkTreeViewColumn('...', $cell_renderer, 'text', 10);
$treeview->append_column($colLanguage10);
Ufa...
E se você tivesse umas 15 listas dessas no seu programa. Pense no tempo que iria gastar para digitar tudo isso.
* A SOLUÇÃO:
Eu fiz uma classe, mas pode ser feita um simples função também para diminuir esta dificuldade.
class InsColunas {
function __construct(&$Lista, $cols, $tipo = 'T'){
switch ($tipo){
case 'T':
$render = new GtkCellRendererText();
$tip = 'text';
break;
}
$nC = 0;
foreach($cols as $col){
$column = new GtkTreeViewColumn($col, $render, $tip, $nC);
$Lista->append_column($column);
$nC++;
}
}
}
Para usa-la faça o segunite:
$treeview = new GtkTreeView($store);
new InsColunas(&$treeview, array('Cliente','CPF','RG','Endereço','...','.....'),'T');
Pronto!!!
OBS: A classe InsColunas cria apena colunas de texto. Para acrescentar outras basta alterar a parte do código:
switch ($tipo){
case 'T':
$render = new GtkCellRendererText();
$tip = 'text';
break;
}
Espero ter ajudado.
<?php
class InsColunas {
function __construct(&$Lista, $cols, $tipo = 'T'){
switch ($tipo){
case 'T':
$render = new GtkCellRendererText();
$tip = 'text';
break;
}
$nC = 0;
foreach($cols as $col){
$column = new GtkTreeViewColumn($col, $render, $tip, $nC);
$Lista->append_column($column);
$nC++;
}
}
}
//Exemplo
$treeview = new GtkTreeView($store);
new InsColunas(&$treeview, array('Cliente','CPF','RG','Endereço'),'T');
?>




