#! /usr/bin/php
get_widget('window1');
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
//La casella di testo del nominativo completo
$Nome=$glade->get_widget('txtNome');
$Cognome=$glade->get_widget('txtCognome');
$Email=$glade->get_widget('txtEmail');
//Il modello che aggancero' alla vista ad albero (gtktreeview)
$store = new GtkListStore(Gobject::TYPE_LONG, Gobject::TYPE_STRING, Gobject::TYPE_STRING,Gobject::TYPE_STRING );
//Agganciamo il modello al treeview
$treeview=$glade->get_widget('treeviewMain');
$treeview->set_model($store);
//Al click sulla tabella prelevo l'id della riga
$selection = $treeview->get_selection();
$selection->connect('changed', 'selection_changed');
function selection_changed($selection)
{
//get_selected ritorna lo store e l'iteratore per quella riga
list($model, $iter) = $selection->get_selected();
//Prelevo il valore di ogni singola cella nella riga selezionata
global $ID;
$ID=$model->get_value($iter, 0);
$mCognome=$model->get_value($iter, 1);
$mNome=$model->get_value($iter, 2);
$mEmail=$model->get_value($iter, 3);
global $Cognome;
$Cognome->set_text($mCognome);
global $Nome;
$Nome->set_text($mNome);
global $Email;
$Email->set_text($mEmail);
printf("ID: %s\n", $ID);
}
//E' usata per disegnare testo nelle celle
$cell_renderer = new GtkCellRendererText();
//Prima colonna (ID)
$colID = new GtkTreeViewColumn('ID', $cell_renderer, 'text', 0);
$colID->set_visible(false);//rendo invisibile la colonna
$treeview->append_column($colID);
//seconda colonna (Cognome)
$colCognome = new GtkTreeViewColumn('Cognome', $cell_renderer, 'text', 1);
$treeview->append_column($colCognome);
//terza colonna (nome)
$colNome = new GtkTreeViewColumn('Nome', $cell_renderer, 'text', 2);
$treeview->append_column($colNome);
//quarta colonna (Cognome)
$colEmail = new GtkTreeViewColumn('Email', $cell_renderer, 'text', 3);
$treeview->append_column($colEmail);
//Connessione al db grazie alla classe spdo
$mydb= new sPDO();
$mydb->DSN = 'mysql:host=127.0.0.1;dbname=test-php' ;
$mydb->DBUSER ='root';
$mydb->DBPASS ='';
$mydb->connect();
$sql='Select * from persone;' ;
if (!$mydb->execute($sql)) echo 'Problemi nella query';
for ($i=1; $i<= $mydb->nrows(); $i++)
{
$store->append(array($mydb->read($i, "id"),
$mydb->read($i, "cognome") ,
$mydb->read($i, "nome") ,
$mydb->read($i, "email"))
);
}
$mydb->disconnect();
//Start the main loop
Gtk::main();
?>
===== L'interfaccia realizzata con Glade per gtk2 (libglade) =====
800
600
True
False
True
False
True
False
True
False
_File
True
True
False
gtk-new
True
False
True
True
gtk-open
True
False
True
True
gtk-save
True
False
True
True
gtk-save-as
True
False
True
True
True
False
gtk-quit
True
False
True
True
True
False
_Modifica
True
True
False
gtk-cut
True
False
True
True
gtk-copy
True
False
True
True
gtk-paste
True
False
True
True
gtk-delete
True
False
True
True
True
False
_Visualizza
True
True
False
A_iuto
True
True
False
gtk-about
True
False
True
True
False
True
0
True
False
True
True
automatic
automatic
500
True
True
True
True
0
True
False
True
False
0.019999999552965164
1
Cognome
True
True
0
True
True
•
False
False
True
True
True
True
1
True
False
0.029999999329447746
1
Nome
True
True
2
True
True
•
False
False
True
True
True
True
3
True
False
0.029999999329447746
1
Email
True
True
4
True
True
•
False
False
True
True
True
True
5
True
False
35
gtk-delete
True
True
True
True
True
True
0
gtk-add
True
True
True
True
True
True
1
gtk-save
True
True
True
True
True
True
2
True
True
6
True
False
0 0 293 1 263.69999999999999 293
182
131
True
True
196
7
True
True
1
True
True
1