• Artigos
  • Projetos
  • Download
  • Docs
  • Enviar Artigo
  • ?

Exemplo Funcional em PHP-GTK2

26/08/2007  José Elias  Ler e Comentar

O exemplo mostra como construir programas funcionais em PHP-GTK2.

O exemplo a seguir pressupõe-se que o leitor já saiba usar o glade, no caso, usei a versao 3, sistema operacional Ubuntu 7. Minha placa de vídeo e NVIDIA GeForce 6200 256 MB. Driver baixado: NVIDIA-Linux-x86-1.0-9746-pkg1.run. Lógico, existem outras versões que poderão ser testadas. Veja que e apenas uma adaptação dos ícones mágicos do Kurumin.
Utilizei o conteiner fixed. Nomeie o arquivo setup.glade.
Tentei faze-lo OO, mas ate o momento não consegui roda-lo adequadamente. Bem, o arquivo e um estudo, falta muita coisa para implementar. Altere-o. Lembre-se de me mandar as alterações.
Um abraço e ate a próxima.

Consulta:
PHP-GTK: Criando aplicações gráficas com PHP. Pablo Dall' Oglio, 2 ed. Sao Paulo: Novatec editora, 2007.
Kurumin Linux 7. Ícones mágicos. Carlo E. Morimoto, Guia do Hardware.Net.

arquivo: setup.glade

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 
<!--Generated with glade3 3.2.0 on Sun Aug 26 17:46:01 2007 by elias@hiper-dcb--> 
<glade-interface> 
  <widget class="GtkWindow" id="window1"> 
    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
    <property name="title" translatable="yes">Install NVIDIA</property> 
    <property name="resizable">False</property> 
    <property name="window_position">GTK_WIN_POS_CENTER</property> 
    <child> 
      <widget class="GtkFixed" id="fixed1"> 
        <property name="visible">True</property> 
        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
        <child> 
          <widget class="GtkImage" id="image1"> 
            <property name="width_request">387</property> 
            <property name="height_request">120</property> 
            <property name="visible">True</property> 
  <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
            <property name="pixbuf">geforce.jpeg</property> 
          </widget> 
          <packing> 
            <property name="x">30</property> 
            <property name="y">6</property> 
          </packing> 
        </child> 
        <child> 
          <widget class="GtkHSeparator" id="hseparator1"> 
            <property name="width_request">430</property> 
            <property name="height_request">20</property> 
            <property name="visible">True</property> 
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
          </widget> 
          <packing> 
            <property name="x">13</property> 
            <property name="y">130</property> 
          </packing> 
        </child> 
        <child> 
          <widget class="GtkTextView" id="textview1"> 
            <property name="width_request">427</property> 
            <property name="height_request">195</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
            <property name="wrap_mode">GTK_WRAP_WORD_CHAR</property> 
            <property name="justification">GTK_JUSTIFY_CENTER</property> 
            <property name="text" translatable="yes">O driver permite que você rode os games 3D e outros aplicativos usando todos os recursos da placa de vídeo. A instalação é basicamente automatizada. Lembre-se que este script só funciona se você estiver conectado.O driver da nVidia possui três versões distintas. A versão que vamos instalar é a mais 9746, destinada às Geforce 6100 em diante. 
Instruçoes: 
Ao ser desativado o modo gráfico, tecle Alt + F2, entre com o seu nome de usuário e senha. Va ate /opt (cd /opt) digite sudo ./nome do driver. E entre com o que se pede. Ao final da configuração, digite sudo gdm start, para entrar em modo grafico.</property> 
          </widget> 
          <packing> 
            <property name="x">7</property> 
            <property name="y">145</property> 
          </packing> 
        </child> 
        <child> 
          <widget class="GtkButton" id="button1"> 
            <property name="width_request">100</property> 
            <property name="height_request">30</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="has_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
            <property name="label" translatable="yes">gtk-execute</property> 
            <property name="use_stock">True</property> 
            <signal name="clicked" handler="onInstall"/> 
          </widget> 
          <packing> 
            <property name="x">100</property> 
            <property name="y">355</property> 
          </packing> 
        </child> 
        <child> 
          <widget class="GtkButton" id="button2"> 
            <property name="width_request">100</property> 
            <property name="height_request">30</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
            <property name="label" translatable="yes">gtk-close</property> 
            <property name="use_stock">True</property> 
            <signal name="clicked" handler="gtk_main_quit" object="gtk::main_quit();"/> 
          </widget> 
          <packing> 
            <property name="x">253</property> 
            <property name="y">355</property> 
          </packing> 
        </child> 
        <child> 
          <widget class="GtkHSeparator" id="hseparator2"> 
            <property name="width_request">430</property> 
            <property name="height_request">20</property> 
            <property name="visible">True</property> 
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 
          </widget> 
          <packing> 
            <property name="x">13</property> 
            <property name="y">340</property> 
          </packing> 
        </child> 
      </widget> 
    </child> 
  </widget> 
</glade-interface>

Arquivo install.php
<?php 
$glade 
= new GladeXML('setup.glade'); 
$glade->signal_autoconnect(); 
$janela = $glade->get_widget("window1"); 
$fixed = $glade->get_widget("fixed1"); 
$texto = $glade->get_widget("textview1"); 
$imglogo = $glade->get_widget("image1"); 
$hsep1 = $glade->get_widget("hseparator1"); 
$hsep2 = $glade->get_widget("hseparator2"); 
$btnInstall= $glade->get_widget("button1"); 
$btncancel = $glade->get_widget("button2"); 
$imgbtnok = $glade->get_widget("image2"); 
$imgbtcancel = $glade->get_widget("image3"); 
$expander = $glade->get_widget("expander1"); 
$lista = $glade->get_widget("list1"); 
$lblSep = $glade->get_widget("label1"); 

//fecha a janela =>fui 
 
function gtk_main_quit() 
    { 
    
gtk::main_quit();         
    } 
//inicia o processo de instalação placa nvidia     
 
function onInstall() 
        { 
    
$cmdexec= exec('wget -c  http://download.nvidia.com/XFree86/Linux-x86/1.0-9746/NVIDIA-Linux-x86-1.0-9746-pkg1.run'); 

    if (
$cmdexec =! 0) 
    { 
    echo 
' Arquivo baixado. Espere...
'
; 
    
exec('gksu chmod +x NVIDIA-Linux-x86-1.0-9746-pkg1.run'); 
    
exec('cp -i NVIDIA-Linux-x86-1.0-9746-pkg1.run /opt/'); 
    
$dialog = new GtkMessageDialog(null, Gtk::DIALOG_MODAL, Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK, "Aviso! Para concluir a instalação, precisarei desativar temporariamente o ambiente gráfico. Ao clicar no OK, você irá para o prompt de login no modo texto. Para concluir a instalação, logue-se como 'root' (usando a senha definida durante a instalação) e siga as instruções do instalador."); 
    
$ok_button = $dialog->add_button(Gtk::STOCK_CANCEL, Gtk::RESPONSE_CANCEL); 
    
$response = $dialog->run(); 
    if (
$response == Gtk::RESPONSE_OK) {exec('gksudo /etc/init.d/gdm stop');}; 
    if (
$response == Gtk::RESPONSE_CANCEL) echo "Tente configura-lo depois"; 
     
    
$dialog->destroy(); 
    } 
     
    else { 
    echo 
'Erro! Tente novamente.'; 
    exit; 
    }; 
    } 
//garante o fechamento da janela liberando memória 
$janela->connect_simple('destroy', 'gtk_main_quit'); 

$janela->show_all(); 
Gtk::main(); 
?>




Comentários

 Adicionar Comentário
 login
 Senha
 Título
 Comentário

Livros




    Outros

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

    [Grupo]  [Arquivos] [Mapa Usuários]

    Google

    Parceiros

 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

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