PHP-GTK: Criando Aplicações Gráficas com PHP Adianti Framework para PHP PHP Programando com Orientação a Objetos Criando Relatórios com PHP

[PHP-GTK] GTK com Glade

Pablo Dall'Oglio pablo em dalloglio.net
Segunda Agosto 14 16:40:46 CDT 2006


Este exemplo é mais simples por motivos didáticos, mas o princípio é o
mesmo. Ele retira o label de uma janela e coloca na outra...

abraço
Pablo

<?php
dl('php_gtk.so');
$janela1 = new GtkWindow;
$janela2 = new GtkWindow;
$janela1->set_title('janela 1');
$janela2->set_title('janela 2');
$janela1->set_default_size(200,200);
$janela2->set_default_size(200,200);

$janela1->add(new GtkLabel('janela 1'));
$janela2->add(new GtkLabel('janela 2'));

$label1 = $janela1->child;
$label2 = $janela2->child;

$janela1->remove($label1);
$janela2->remove($label2);

$janela1->add($label2);
$janela2->add($label1);
$janela1->show_all();
$janela2->show_all();

Gtk::Main();
?>

Em Sex, 2006-08-11 às 14:28 -0300, Fernando Henrique Correa escreveu:
> Up,
> 
> 2006/8/9, Fernando Henrique Correa <fernandohcorrea at gmail.com>:
>         Volto a insistir com essa pergunta.
>         Como incerir a tabela de uma janela criada no Glade em outro
>         vbox de uotra janela também criada no glade???
>         
>         Ver imagem
>         
>         2006/8/3, Fernando Henrique Correa <
>         fernandohcorrea at gmail.com>:
>                 Ola Lista, 
>                 
>                 Realmente não deu, alquem tem um exemplo de como pego
>                 duas janelas do glade, retiro o objeto(vbox, ou
>                 gtktable) filho, e  atacho no vbox da outra??
>                 
>                 2006/7/28, Diego do Nascimento Feitosa <
>                 dnfeitosa at gmail.com>:
>                           No seu arquivo .glade, o "tblPontosAcesso"
>                         já está dentro do "vboxmain"?? 
>                           Se estiver, basta apenas pegar o
>                         "vboxmain"... Você não precisa
>                         colocar o "tblPontosAcesso" dentro do
>                         container de novo.
>                         
>                         
>                         On 7/28/06, Fernando Henrique Correa
>                         <fernandohcorrea at gmail.com> wrote:
>                         > up^
>                         >
>                         > 2006/7/27, Fernando Henrique Correa
>                         <fernandohcorrea at gmail.com>:
>                         > >
>                         > > Eu disse que iria tentar, só que o erro me
>                         aparece: ( main.php:12760):
>                         > Gtk-CRITICAL **: gtk_box_pack_start:
>                         assertion `child->parent == NULL'
>                         > failed
>                         > >
>                         > >
>                         > > <?
>                         > > if (!class_exists('gtk')) {
>                         > > die('Please load the php-gtk2 module in
>                         your php.ini' . "\r\n");
>                         > > }
>                         > >
>                         > > $glade = new GladeXML("gseg.glade");
>                         > >
>                         > > $main_win = $glade->get_widget("Main");
>                         > > $vboxmain =
>                         $glade->get_widget("vboxmain"); 
>                         > > $tblPntAcces =
>                         $glade->get_widget("tblPontosAcesso");
>                         > > $vboxmain->pack_start($tblPntAcces);
>                         > > GTK::main();
>                         > > ?>
>                         > >
>                         > >
>                         > >
>                         > >
>                         > >
>                         > >
>                         > >
>                         > > 2006/7/27, Fernando Henrique Correa <
>                         fernandohcorrea at gmail.com>:
>                         > >
>                         > > >
>                         > > > Vou explorar isso mai tarde..!!! 
>                         > > > Obrigado ALL.
>                         > > >
>                         > > >
>                         > > > 2006/7/27, Diego do Nascimento Feitosa
>                         <dnfeitosa at gmail.com >:
>                         > > >
>                         > > > > Ah certo!! 
>                         > > > > Bom, aí são 2 casos:
>                         > > > > Com relação às duas janelas, no Glade,
>                         você tem que colocar "No" na
>                         > > > > propriedade "visible" da aba "Common",
>                         das propriedades da Window. 
>                         > > > >
>                         > > > > Já o segundo caso, o que acontece, é
>                         que você extendeu a classe, pegou
>                         > > > > os inputs, e a table, mas a table não
>                         está contida no lugar correto
>                         > > > > internamente na classe. Se o seu
>                         problema é a conexão dos inputs, eu 
>                         > > > > sugiro que você não crie a classe
>                         FuncionarioForm como uma extensão de
>                         > > > > GtkTable; ao invés disso, que você
>                         coloque um método getTable que
>                         > > > > retorne o seu "$this->table" pois ele
>                         já contém todas as referências 
>                         > > > > aos objetos input em seus respectivos
>                         locais.
>                         > > > >
>                         > > > > Creio que assim funcionaria. ;)
>                         > > > >
>                         > > > > On 7/27/06, Fernando Henrique Correa <
>                         fernandohcorrea at gmail.com>
>                         > wrote:
>                         > > > > > Exatamente isso, só que agora vou
>                         dar mais detalhes do meu problema: 
>                         > > > > >
>                         > > > > > Tenho uma classe onde monto meu FORM
>                         que herda de GtkTable, em 
>                         > seguida tenho
>                         > > > > > a classe responsável por montar a
>                         janela principal, onde quero
>                         > adicionar o
>                         > > > > > objeto GtkTable produzido pela
>                         classe FuncionarioForm. O problema 
>                         > está na
>                         > > > > > abertura da aplicação, quando abro,
>                         ela não agrega o  objeto e sim
>                         > abre duas
>                         > > > > > janelas, uma criada pelo MainApp e
>                         outra vinda do glade. Veja: 
>                         > > > > >
>                         > > > > > class FuncionarioForm extends
>                         GtkTable{
>                         > > > > >
>                         > > > > >    function FuncionarioForm(){
>                         > > > > >
>                         parent::__construct(); 
>                         > > > > >
>                         > > > > >                 $this->glade = new
>                         > > > > >
>                         >
>                         GladeXML(_CLASSPATH."modulos/funcionarios/oper/cadfunc.glade");
>                         > > > > > 
>                         > > > > >                 $this->table =
>                         > > > > > $this->glade->get_widget("table2");
>                         > > > > >
>                         > > > > >                 //Imputs 
>                         > > > > >                 $this->imputNome =
>                         > > > > >
>                         $this->glade->get_widget("imputNome");
>                         > > > > >                 $this->imputEndereco
>                         =
>                         > > > > >
>                         $this->glade->get_widget("imputEndereco");
>                         > > > > >                 $this->imputNumero =
>                         > > > > >
>                         $this->glade->get_widget("imputNumero"); 
>                         > > > > >                 $this->imputDDD =
>                         > > > > >
>                         $this->glade->get_widget("imputDDD");
>                         > > > > >                 $this->imputTelefone
>                         =
>                         > > > > >
>                         $this->glade->get_widget("imputTelefone");
>                         > > > > >                 $this->imputSalario
>                         =
>                         > > > > >
>                         $this->glade->get_widget("imputSalario"); 
>                         > > > > >
>                         > > > > >                 //Buttons
>                         > > > > >                 $this->btnSalvar =
>                         > > > > >
>                         $this->glade->get_widget("btnSalvar"); 
>                         > > > > >
>                         > $this->btnSalvar->connect_simple('clicked',
>                         > > > > > array($this,'salvar'));
>                         > > > > >
>                         > > > > >    }
>                         > > > > >    function salvar(){ ... } 
>                         > > > > >
>                         > > > > > }
>                         > > > > >
>                         > > > > > class MainApp{
>                         > > > > >
>                         > > > > >         private $janela;
>                         > > > > >         private $accel_grupo; 
>                         > > > > >         private $modulo_start;
>                         > > > > >
>                         > > > > >         public function MainApp(){
>                         > > > > >                 $this->janela = new
>                         GtkWindow; 
>                         > > > > >
>                         > $this->janela->set_title("Funcionários");
>                         > > > > >
>                         > $this->janela->set_default_size(800,600);
>                         > > > > >
>                         > > > > > 
>                         >
>                         $this->janela->set_type_hint(GDK_WINDOW_TYPE_HINT_DIALOG);
>                         > > > > >
>                         $this->janela->set_decorated(true);
>                         > > > > >
>                         > > > > >
>                         > $this->janela->connect_simple('destroy', 
>                         > > > > > array($this,'sair'));
>                         > > > > >                 $this->modulo_start
>                         = new FuncionarioForm();
>                         > > > > >
>                         > $this->janela->add($this->modulo_start); 
>                         > > > > >
>                         $this->janela->show_all();
>                         > > > > >         }
>                         > > > > >
>                         > > > > >         public function sair(){
>                         > > > > >                 Gtk::main_quit(); 
>                         > > > > >         }
>                         > > > > >  }
>                         > > > > > new MainApp();
>                         > > > > > GTK::main();
>                         > > > > >
>                         > > > > >
>                         > > > > > 
>                         > > > > > Em 26/07/06, Diego do Nascimento
>                         Feitosa <diego at dnfeitosa.com >
>                         > escreveu: 
>                         > > > > > >     Deixa eu ver se eu entendi: 
>                         > > > > > >
>                         > > > > > >     Você tem uma interface montada
>                         no Glade e quer reutilizar
>                         > apenas um
>                         > > > > > > dos widgets que estão contidos lá
>                         no arquivo.glade ?
>                         > > > > > >     Se for isso pode ser feito
>                         sim... sem nenhum problema. Quando
>                         > você
>                         > > > > > > faz um get_widget(), você retorna
>                         o objeto; é como se você o
>                         > tivesse 
>                         > > > > > > criado na mão, daí é só aplicá-lo
>                         em qualquer window que você
>                         > queira.
>                         > > > > > >
>                         > > > > > >     []'s
>                         > > > > > >     Diego 
>                         > > > > > >     www.dnfeitosa.com
>                         > > > > > >
>                         > > > > > > 
>                         > > > > > > Fernando Henrique Correa wrote: 
>                         > > > > > > > Olá,
>                         > > > > > > >
>                         > > > > > > > É possível eu criar uma inteface
>                         no Glade e obter apenas seu
>                         > conteúdo
>                         > > > > > > > e aplica-lo em outra Janela??? 
>                         > > > > > > >
>                         > > > > > > > algo assim:
>                         > > > > > > >
>                         > > > > > > > $window = new GtkWindow();
>                         > > > > > > > 
>                         > > > > > > > $glade = new
>                         GtkGlade("...xyz.glade");
>                         > > > > > > >
>                         > > > > > > > $table =
>                         $glade->get_widget("table");
>                         > > > > > > > 
>                         > > > > > > > $window->add($table);
>                         > > > > > > >
>                         > > > > > > > --
>                         > > > > > > > Fernando Henrique Correa
>                         > > > > > > > ~//~//~//~//~//~//~//~//~//~//~ 
>                         > > > > > > >
>                         > > > > > > > ANTES DE IMPRIMIR, PENSE EM SUA
>                         RESPONSABILIDADE E COMPROMISSO
>                         > COM O
>                         > > > > > > > MEIO AMBIENTE.
>                         > > > > > > > JÁ IMPRIMIU!?! NÃO JOGUE FORA,
>                         UTILIZE O VERSO DA FOLHA COMO 
>                         > RASCUNHO!!
>                         > > > > > > >
>                         > > > > >
>                         >
>                         ------------------------------------------------------------------------
>                         > > > > > > >
>                         > > > > > > >
>                         _______________________________________________ 
>                         > > > > > > > Lista mailing list
>                         > > > > > > > Lista at php-gtk.com.br
>                         > > > > > > >
>                         > > > > > 
>                         >
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
>                         > > > > > > > 
>                         > > > > > >
>                         _______________________________________________ 
>                         > > > > > > Lista mailing list
>                         > > > > > > Lista at php-gtk.com.br
>                         > > > > > >
>                         > > > > >
>                         >
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
>                         > > > > > >
>                         > > > > >
>                         > > > > >
>                         > > > > >
>                         > > > > > --
>                         > > > > > Fernando Henrique Correa 
>                         > > > > > ~//~//~//~//~//~//~//~//~//~//~
>                         > > > > >
>                         > > > > > ANTES DE IMPRIMIR, PENSE EM SUA
>                         RESPONSABILIDADE E COMPROMISSO COM O
>                         > MEIO
>                         > > > > > AMBIENTE. 
>                         > > > > > JÁ IMPRIMIU!?! NÃO JOGUE FORA,
>                         UTILIZE O VERSO DA FOLHA COMO
>                         > RASCUNHO!!
>                         > > > > >
>                         _______________________________________________
>                         > > > > > Lista mailing list 
>                         > > > > > Lista at php-gtk.com.br
>                         > > > > >
>                         >
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
>                         > > > > >
>                         > > > > >
>                         > > > > >
>                         > > > >
>                         > > > >
>                         > > > > --
>                         > > > > []'s
>                         > > > > Diego
>                         > > > > www.dnfeitosa.com
>                         > > > >
>                         _______________________________________________
>                         > > > > Lista mailing list
>                         > > > > Lista at php-gtk.com.br
>                         > > > >
>                         >
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
>                         > > > >
>                         > > > 
>                         > > >
>                         > > >
>                         > > >
>                         > > > --
>                         > > >
>                         > > > Fernando Henrique Correa
>                         > > > ~//~//~//~//~//~//~//~//~//~//~
>                         > > >
>                         > > > ANTES DE IMPRIMIR, PENSE EM SUA
>                         RESPONSABILIDADE E COMPROMISSO COM O 
>                         > MEIO AMBIENTE.
>                         > > > JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O
>                         VERSO DA FOLHA COMO RASCUNHO!!
>                         > >
>                         > >
>                         > >
>                         > >
>                         > > --
>                         > >
>                         > > Fernando Henrique Correa 
>                         > > ~//~//~//~//~//~//~//~//~//~//~
>                         > >
>                         > > ANTES DE IMPRIMIR, PENSE EM SUA
>                         RESPONSABILIDADE E COMPROMISSO COM O MEIO
>                         > AMBIENTE.
>                         > > JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O
>                         VERSO DA FOLHA COMO RASCUNHO!! 
>                         >
>                         >
>                         >
>                         > --
>                         > Fernando Henrique Correa
>                         > ~//~//~//~//~//~//~//~//~//~//~
>                         >
>                         > ANTES DE IMPRIMIR, PENSE EM SUA
>                         RESPONSABILIDADE E COMPROMISSO COM O MEIO
>                         > AMBIENTE.
>                         > JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O
>                         VERSO DA FOLHA COMO RASCUNHO!! 
>                         >
>                         _______________________________________________
>                         > Lista mailing list
>                         > Lista at php-gtk.com.br
>                         >
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
>                         >
>                         >
>                         >
>                         
>                         
>                         --
>                         []'s
>                         Diego
>                         www.dnfeitosa.com
>                         _______________________________________________ 
>                         Lista mailing list
>                         Lista at php-gtk.com.br
>                         http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista 
>                 
>                 
>                 
>                 
>                 -- 
>                 
>                 Fernando Henrique Correa
>                 ~//~//~//~//~//~//~//~//~//~//~
>                 
>                 ANTES DE IMPRIMIR, PENSE EM SUA RESPONSABILIDADE E
>                 COMPROMISSO COM O MEIO AMBIENTE. 
>                 JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O VERSO DA
>                 FOLHA COMO RASCUNHO!!
>         
>         
>         
>         
>         -- 
>         
>         Fernando Henrique Correa
>         ~//~//~//~//~//~//~//~//~//~//~
>         
>         ANTES DE IMPRIMIR, PENSE EM SUA RESPONSABILIDADE E COMPROMISSO
>         COM O MEIO AMBIENTE. 
>         JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O VERSO DA FOLHA COMO
>         RASCUNHO!!
>         
> 
> 
> 
> -- 
> Fernando Henrique Correa
> ~//~//~//~//~//~//~//~//~//~//~
> 
> ANTES DE IMPRIMIR, PENSE EM SUA RESPONSABILIDADE E COMPROMISSO COM O
> MEIO AMBIENTE. 
> JÁ IMPRIMIU!?! NÃO JOGUE FORA, UTILIZE O VERSO DA FOLHA COMO
> RASCUNHO!! 
> _______________________________________________
> Lista mailing list
> Lista at php-gtk.com.br
> http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
-- 
:: Pablo Dall'Oglio
:: www.dalloglio.net



More information about the Lista mailing list