A criação de GtkTreeViews é um tanto quanto completo, tendo que criar o model, o treeview o renderizador das colunas, as colunas, e ir colocando um dentro do outro. Com a classe GtkTreeView do Framework Fabula, esse trabalho reduz bastante essa complexidade, deixando o código mais limpo e simples de ser compreendido.
Imagem
Exemplo
/** * Seta a codificação do programa */ ini_set("php-gtk.codepage", "UTF-8"); /** * Inclui a classe fabula */ require_once("../Fabula.class.php"); /** * Classe de exemplo * * @name Demo * @author Bruno P. Gonçalves <http: //bruno.pitteli.com.br></http:> * @download <http: //code.google.com/p/fabulafw></http:> */ class Demo { /** * Armazena os widgets necessarios * * @access private * @property array $widgets */ public $widgets = array(); /** * Armazena o estado do window * * @access private * @property integer $state */ private $state; /** * @name __construct() * @return Demo */ public function __construct() { // Cria a janela $this->widgets['frmDemo'] = new GtkWindow(); $this->widgets['frmDemo']->set_size_request(250, 250); $this->widgets['frmDemo']->set_position(Gtk::WIN_POS_CENTER_ALWAYS); $this->widgets['frmDemo']->set_title("Demo"); $this->widgets['frmDemo']->connect("destroy", array($this, "frmDemo_unload")); // Cria um TreeModel $model = new GtkListStore(GObject::TYPE_STRING, GObject::TYPE_STRING); // Cria um GtkTreeView $this->widgets['trvDemo'] = Fabula::GtkTreeView($model); // Adiciona as colunas $this->widgets['trvDemo']->add_column(new GtkCellRendererText(), "Coluna 1", "text"); $this->widgets['trvDemo']->add_column(new GtkCellRendererText(), "Coluna 2", "text"); // Popula o model $this->widgets['trvDemo']->add_row(array("1x1", "1x2")); $this->widgets['trvDemo']->add_row(array("2x1", "2x2")); $this->widgets['trvDemo']->add_row(array("3x1", "3x2")); // Inicia a aplicação $this->widgets['frmDemo']->add(Fabula::GtkViewport($this->widgets['trvDemo'])); $this->frmDemo_onload(); } /** * Método do carregamento do formulario * * @name frmDemo_onload() */ public function frmDemo_onload() { // Inicia o estado $this->state = 0; // Inicia a aplicação $this->widgets['frmDemo']->show_all(); Gtk::main(); } /** * Método do descarregamento do formulario * * @name frmDemo_unload() */ public function frmDemo_unload() { // Encerra a aplicação Gtk::main_quit(); exit(0); } } /** * Inicia o demo */ new Demo();
Referências
http://gtk.php.net/manual/en/gtk.gtktreeview.php
http://gtk.php.net/manual/en/gtk.gtktreemodel.php
http://gtk.php.net/manual/en/gtk.gtkwindow.php
massa!