Página Inicial > Gtk/Gdk, GtkTreeView > Como utilizar um GtkTreeView para gerenciar módulos

Como utilizar um GtkTreeView para gerenciar módulos

Explicação

Utilizar um treeview para listar os módulos presentes na aplicação pode facilitar bastante a interação entre a aplicação e o usuário. O código abaixo mostra exatamente isso: Listar e capturar a abertura dos módulos.

Imagem

Captura_de_tela-Teste

Solução

Cria um GtkTreeView();
Listar os módulos;
Conectar treeview aos eventos;
Capturar o duplo clique;
Verificar o módulo selecionado e abri-lo.

Exemplo

<?php
   // Classe de testes
   class Teste
   {
      // Vetor que armazena todos os widgets da interface
      public $widgets = array();
      
      // Construtor da classe
      public function __construct()
      {
         // Cria o modelo
         $model = new GtkListStore(GObject::TYPE_STRING);
         
         // Cria o treeview
         $this->widgets['trvTeste'] = new GtkTreeView($model);
         
         // Conecta o treeview aos eventos
         $this->widgets['trvTeste']->connect("event", array($this, "trvTeste_onEvent"));
         
         // Cria a colunas
         $render = new GtkCellRendererText();
         $column = new GtkTreeViewColumn("Modulo", $render, "text", 0);
         $this->widgets['trvTeste']->append_column($column);
         
         // Popula o model
         $model->append(array("Modulo 1"));
         $model->append(array("Modulo 2"));
         $model->append(array("Modulo 3"));
         $model->append(array("Modulo 4"));
         $model->append(array("Modulo 5"));
         
         // Cria a janela
         $this->widgets['frmTeste'] = new GtkWindow();
         $this->widgets['frmTeste']->set_size_request(200, 200);
         $this->widgets['frmTeste']->set_resizable(FALSE);
         $this->widgets['frmTeste']->set_title("Teste");
         $this->widgets['frmTeste']->add($this->widgets['trvTeste']);
         $this->widgets['frmTeste']->set_position(GTK::WIN_POS_CENTER);
         $this->widgets['frmTeste']->show_all();
         
         // Conecta o destroy
         $this->widgets['frmTeste']->connect_simple(
            "destroy",
            array("Gtk", "main_quit")
         );
      }
      
      // Método de eventos do treeview
      public function trvTeste_onEvent($widget, $event)
      {
         // Verifica qual o evento
         switch($event->type)
         {
            // Double click
            case 5:
            
               // Busca o item selecionado
               $selection = $this->widgets['trvTeste']->get_selection();
               
               // Busca o iter selecionado
               list($model, $iter) = $selection->get_selected();
               
               // Busca o valor selecionado
               $modulo = $model->get_value($iter, 0);

               // Verifica qual o modulo abrir
               switch($modulo)
               {
                  // Abre o modulo 1
                  case "Modulo 1":
                     echo "Abrir Modulo 1";
                     break;
               }
               break;
         }
      }
   }

   // Inicia a aplicação
   $teste = new Teste();
   gtk::main();
 

Referências

http://gtk.php.net/manual/en/gtk.gtkwidget.php

Categories: Gtk/Gdk, GtkTreeView Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.