Interagire con i widget di Php-GTK2

Autore: Fabio Di Matteo
Ultima revisione: 04/12/2015 - 14:54

In questo articolo vedremo come interagire con i widget di Php-GTK2 nella “vita reale”. Nell'esempio che seguira' realizzeremo una gui di prova che permettera' di generare una seconda finestra contenente una label con il testo da noi inserito nella finestra principale.

Il codice

main.php

#!/usr/bin/php
 
<?php
include_once('mainwindow.php');
include_once('secwindow.php');
 
 
 
$myMainWindow = new mainwindow();
 
//Start the main loop
Gtk::main();
 
?>

mainwindow.php

<?php
class mainwindow
{
	public $window, $message;
 
 
 
	public function __construct() 
	{
 
		//Carico l'interffaccia grafica realizzata con glade per gtk2
		$glade = new GladeXML('gui.glade');
 
		//Callback per terminare il programma alla chiusura della finestra
		$this->window = $glade->get_widget('window1');
		$this->window->connect_simple('destroy', array('Gtk', 'main_quit'));
 
		//Messaggio
		$this->message=$glade->get_widget('txtMessaggio');
 
		//callbak bottone
		$myButton=$glade->get_widget('btnEsegui');
		$myButton->connect_simple('clicked','mainwindow::sendMessage', $this->message );
	}
 
 
	public function sendMessage($msg)
	{
		$mySecWindow = new secwindow();
		$mySecWindow->lavagna->set_label($msg->get_text());
		$mySecWindow->window->show_all();
 
	}
 
 
 
}//fine classe
 
 
?>

secwindow.php

<?php
class secwindow
{
	public $window;
	public $lavagna;
 
	public function __construct() 
	{
 
		//Carico l'interffaccia grafica realizzata con glade per gtk2
		$glade = new GladeXML('gui_sec.glade');
 
		//Callback per terminare il programma alla chiusura della finestra
		$this->window = $glade->get_widget('windowSec');
		$this->window->connect_simple('destroy', array('Gtk', 'main_quit'));
 
		//Espongo la label
		$this->lavagna= $glade->get_widget('lblLavagna');
 
		//callbak bottone
		$myButton=$glade->get_widget('btnClose');
		$myButton->connect_simple('clicked','secwindow::close',$this->window);
 
	}
 
	public function close($win)
	{
			$win->hide();
	}
 
 
}//