• Artigos
  • Projetos
  • Download
  • Docs
  • Enviar Artigo
  • Sobre

Trabalhando com abas em PHP-GTK (GtkNotebook)

20/09/2009  Pablo DallOglio 

Neste exemplo, veremos um Notebook Horizontal com vários controles que demonstram as suas funcionalidades. Este exemplo consiste em uma janela contendo uma caixa vertical com um Notebook e abaixo três botões. O botão “voltar” exibe a página anterior, o botão “avançar” avança de página e o botão “excluir” apaga a página atual. Ainda temos uma ComboBox que altera o posicionamento das abas na tela (esquerda, topo, direita, abaixo). Ainda, aproveitando o exemplo de GtkNotebook, temos em cada aba, um GtkFrame com diferentes estilos de borda.



  1. <?php
  2. /*
  3.  * classe ExemploNotebookHorizontal
  4.  * Encapsula todo exemplo de Notebook horizontal
  5.  * @author Pablo Dall'Oglio
  6.  */
  7. class ExemploNotebookHorizontal
  8. {
  9.     private $window;
  10.     private $comboBox;
  11.     
  12.     /**
  13.      * Método construtor
  14.      * Cria a janela principal
  15.      */
  16.     public function __construct()
  17.     {
  18.         // cria janela principal
  19.         $this->window = new GtkWindow;
  20.         $this->window->set_title('Testando Notebook');
  21.         $this->window->connect_simple('destroy', array(Gtk, 'main_quit'));
  22.         $this->window->set_default_size( 300, 280);
  23.         
  24.         // cria notebook
  25.         $this->notebook = new GtkNotebook;
  26.         
  27.         // cria caixa vertical
  28.         $vbox = new GtkVBox;
  29.         
  30.         // cria caixa horizontal
  31.         $hbox = new GtkHBox;
  32.         
  33.         // adiciona notebook e caixa horizontal à caixa vertical
  34.         $vbox->pack_start($this->notebook,  true, true);
  35.         $vbox->pack_start($hbox,            false, false);
  36.         
  37.         // empacota botões de trás, avançar e delete
  38.         $hbox->pack_start($back = GtkButton::new_from_stock(Gtk::STOCK_GO_BACK),     false, false);
  39.         $hbox->pack_start($next = GtkButton::new_from_stock(Gtk::STOCK_GO_FORWARD),  false, false);
  40.         $hbox->pack_start($dele = GtkButton::new_from_stock(Gtk::STOCK_DELETE),      false, false);
  41.         
  42.         // define as ações do botão
  43.         $back->connect_simple('clicked', array($this, 'onBack'));
  44.         $next->connect_simple('clicked', array($this, 'onNext'));
  45.         $dele->connect_simple('clicked', array($this, 'onDelete'));
  46.         
  47.         // cria comboBox com posições (left, right, top, bottom)
  48.         $this->comboBox = GtkComboBox::new_text();
  49.         $hbox->pack_start($this->comboBox);
  50.         $this->comboBox->insert_text(Gtk::POS_LEFT,   'Left');
  51.         $this->comboBox->insert_text(Gtk::POS_RIGHT,  'Right');
  52.         $this->comboBox->insert_text(Gtk::POS_TOP,    'Top');
  53.         $this->comboBox->insert_text(Gtk::POS_BOTTOM, 'Bottom');
  54.         $this->comboBox->set_active(Gtk::POS_TOP);
  55.         $this->comboBox->connect_simple('changed', array($this, 'onChange'));
  56.         # 0 Gtk::POS_LEFT
  57.         # 1 Gtk::POS_RIGHT
  58.         # 2 Gtk::POS_TOP
  59.         # 3 Gtk::POS_BOTTOM
  60.         
  61.         // adiciona caixa vertical à janela e exibe-a
  62.         $this->window->add($vbox);
  63.         $this->window->show_all();
  64.     }
  65.     /**
  66.      * Método onDelete
  67.      * Apaga a página corrente
  68.      */
  69.     function onDelete()
  70.     {
  71.         // obtém a página corrente
  72.         $page = $this->notebook->get_current_page();
  73.         // remove a página corrente
  74.         $this->notebook->remove_page($page);
  75.     }
  76.     /**
  77.      * Método onChange
  78.      * Altera a posição das abas com base na ComboBox
  79.      */
  80.     function onChange()
  81.     {
  82.         // obtem a posição da combo
  83.         $index = $this->comboBox->get_active();
  84.         // altera a posição do notebook
  85.         $this->notebook->set_tab_pos($index);
  86.     }
  87.     /**
  88.      * Método onBack
  89.      * Vai para a aba anterior
  90.      */
  91.     function onBack()
  92.     {
  93.         // obtém a página corrente
  94.         $page = $this->notebook->get_current_page();
  95.         // retrocede uma página
  96.         $this->notebook->set_current_page($page - 1);
  97.     }
  98.     
  99.     /**
  100.      * Método onNext
  101.      * Vai para a próxima aba
  102.      */
  103.     function onNext()
  104.     {
  105.         // obtém a página corrente
  106.         $page = $this->notebook->get_current_page();
  107.         // avança uma página
  108.         $this->notebook->set_current_page($page + 1);
  109.     }
  110.     
  111.     /**
  112.      * Método addPage
  113.      * Adiciona uma página
  114.      * @title   título da aba
  115.      * @shadow  estilo da borda do frame
  116.      * @content conteudo do frame
  117.      */
  118.     function addPage($title, $shadow, $content)
  119.     {
  120.         // cria um frame
  121.         $frame = new GtkFrame($title);
  122.         $frame->set_shadow_type($shadow);
  123.         $frame->set_border_width(6);
  124.         
  125.         // cria um rótulo de texto
  126.         $rotulo = new GtkLabel($title);
  127.         
  128.         // adiciona o conteúdo ao frame
  129.         $frame->add($content);
  130.         
  131.         // adiciona página no notebook
  132.         $this->notebook->append_page($frame, $rotulo);
  133.         $this->window->show_all();
  134.     }
  135. }
  136. // instancia Exemplo
  137. $exemplo = new ExemploNotebookHorizontal;
  138. // adiciona páginas de diferentes títulos, estilos e conteúdos...
  139. $exemplo->addPage('Shadow IN',  GTK::SHADOW_IN,         new GtkLabel('content1'));
  140. $exemplo->addPage('Shadow OUT', GTK::SHADOW_OUT,        new GtkLabel('content2'));
  141. $exemplo->addPage('Etched IN',  GTK::SHADOW_ETCHED_IN,  new GtkLabel('content3'));
  142. $exemplo->addPage('Etched OUT', GTK::SHADOW_ETCHED_OUT, new GtkLabel('content4'));
  143. Gtk::main();
  144. ?>




Crie sistemas de maneira ágil com PHP-GTK:

Adianti Framework para PHP

  • Instalação e configuração;
  • Modelos e persistência;
  • Componentes de apresentação;
  • Organização e controle;
  • Desenvolvimento ágil com Studio Pro.
Ver detalhes...

Tenha mais produtividade com o PHP-GTK:

Adianti Studio: IDE para PHP
  • Leve e rápido;
  • Syntax highlight;
  • Gerência de projetos;
  • Navegação em banco de dados;
  • Autocomplete e plugins.
Mais informações...

Comentários

Adicionar Comentário
 login  
 Senha  
 Título  
 Comentário  
  Efetuar Cadastro
  Esqueci a Senha

Livros sobre PHP

Orientação a
objetos
Criando
relatórios
Aplicações
gráficas com Gtk

Comunidade

Busque conteúdo no site
Participe de nosso grupo no google

[Página do grupo]  [Arquivo do grupo]

Ferramentas de desenvolvimento PHP

Conheça o Adianti Framework para PHP:

  • Desenvolvimento com componentes;
  • Formulários e datagrids.
  • Versão Web e Desktop (Gtk);
  • Multiplataforma;
  • Desenhe as interfaces;
  • IDE própria (Adianti Studio).
Ver detalhes...

Tenha mais produtividade com:

Adianti Studio: IDE para PHP

  • Leve e rápido;
  • Syntax highlight;
  • Gerência de projetos;
  • Navegação em banco de dados;
  • Autocomplete e plugins.
Mais informações...

Google

Parceiros

 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

© 2006 Wordpress Themes | Theme (Not so) Fresh
XHTML CSS RSS allposts