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

Fernando Henrique Correa fernandohcorrea em gmail.com
Sexta Agosto 11 12:51:31 CDT 2006


Eu só quero pegar um Widget de um lugar e colocar em outro...
Erro: Fatal error: Call to a member function add() on a non-object in
/home/fcorrea/tmp/GladeTeste/teste/teste.php on line 11

 Alguem me ajuda....

<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">

<glade-interface>
<widget class="GtkWindow" id="window1">
  <property name="visible">True</property>
  <property name="title" translatable="yes">window1</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="resizable">True</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <property name="focus_on_map">True</property>
  <child>
    <placeholder/>
  </child>
</widget>

<widget class="GtkWindow" id="window2">
  <property name="title" translatable="yes">window2</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="resizable">True</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <property name="focus_on_map">True</property>
  <child>
    <widget class="GtkButton" id="button1">
      <property name="visible">True</property>
      <property name="can_focus">True</property>
      <property name="label" translatable="yes">button1</property>
      <property name="use_underline">True</property>
      <property name="relief">GTK_RELIEF_NORMAL</property>
      <property name="focus_on_click">True</property>
    </widget>
  </child>
</widget>
</glade-interface>

<?

$glade = new GladeXML("teste.glade");

$janela1 = $glade->get_widget('window1');



$button  = $glade->get_widget('button1');
var_dump($button);
$janela->add($button);

GTK::main();

?>



2006/8/11, Fernando Henrique Correa <fernandohcorrea em gmail.com>:
>
> Up,
>
> 2006/8/9, Fernando Henrique Correa <fernandohcorrea em 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 em 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 em 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 em gmail.com>
> > > > wrote:
> > > > > up^
> > > > >
> > > > > 2006/7/27, Fernando Henrique Correa < fernandohcorrea em 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 em gmail.com
> > > > >:
> > > > > >
> > > > > > >
> > > > > > > Vou explorar isso mai tarde..!!!
> > > > > > > Obrigado ALL.
> > > > > > >
> > > > > > >
> > > > > > > 2006/7/27, Diego do Nascimento Feitosa < dnfeitosa em 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 em 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 em 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 em php-gtk.com.br
> > > > > > > > > > >
> > > > > > > > >
> > > > > http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
> > > > > > > > > > >
> > > > > > > > > > _______________________________________________
> > > > > > > > > > Lista mailing list
> > > > > > > > > > Lista em 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 em php-gtk.com.br
> > > > > > > > >
> > > > > http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > []'s
> > > > > > > > Diego
> > > > > > > > www.dnfeitosa.com
> > > > > > > > _______________________________________________
> > > > > > > > Lista mailing list
> > > > > > > > Lista em 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 em php-gtk.com.br
> > > > > http://lists.php-gtk.com.br/cgi-bin/mailman/listinfo/lista
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > []'s
> > > > Diego
> > > > www.dnfeitosa.com
> > > > _______________________________________________
> > > > Lista mailing list
> > > > Lista em 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!!
>



-- 
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!!
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://lists.php-gtk.com.br/pipermail/lista/attachments/20060811/c11add26/attachment-0001.htm


More information about the Lista mailing list