GTK, giusta crocevia tra piattaforme?

di Andrea Zani, in Mono,

Non ho mai fatto segreto della mia passione per Mono, porting del Framework .Net su sistemi operativi non Microsoft. Passi da gigante sono stati fatti per la compatibilità delle stesse applicazioni su sistemi operativi differenti, soprattutto per applicazioni desktop (sono fondamentalmente contro all'utilizzo di questo porting per webapplication, visto che il risparmio dovuto ad hosting e licenze dei sistemi operativi sia ridicolo di fronte allo sforzo per la realizzazione di web application che girino perfettamente con Mono - ma questo è assolutamente IMHO!).

Da qualche giorno è uscita la versione 2.0 di Mono. E' aumentata notevolmente la compatibilità con le applicazini scritte con il Framework nativo della Microsoft. Ora è possibile lanciare moltissime applicazioni windows forms su Linux con Mono senza trovare grosse differenze e problematiche nell'uso dell'interfaccia grafica (cosa che avveniva in modo pesante con la versione 1.2 e, in modo minore, con la 1.9.1).

Nel poco tempo che riesco a dedicare a Mono per miei test, ho trovato ideale l'utilizzo di una libreria esterna per la creazione e l'utilizzo delle interfacce grafiche, compatibile con entrambi i mondi, Windows e Linux. E' il progetto Gtk#, libreria che permette l'utilizzo di Gtk+ che, ricordo, è la libreria grafica utilizzata dal Desktop environment, Gnome. Inoltre è utilizzata già con successo da molti altri programmi multi piattaforma, come Pidgin.

Il suo utilizzo in applicazioni .Net su sistemi operativi Linux non necessita di alcuno sforzo visto che nel caso di Gnome è già installata la libreria Gtk, nel caso di altri Desktop environment - Kde - è sufficiente installare tale libreria. Installazione necessaria anche sotto Windows da questo link da dove si devono scaricare sia la libreria Gtk+, sia Glade, e infine la Gtk#.

La costruzione dell'interfacce grafica è semplice, grazie a programmi appositi, come Glade (programma scaricato prima), che permette la creazione di interfacce grafiche in modo molto simile a Visual Studio. L'output di questo programma è un xml che, incluso nel nostro progetto con Visual Studio definito come "Embedded Resource" utilizzeremo in questo modo:

public GtkApp(string []args)
{
Application.Init();
Glade.XML gxml = new Glade.XML (null, "googleSearch.googlesearch.glade",
"mainWindow", null);
gxml.Autoconnect (this);
mainWindow.DeleteEvent+=new DeleteEventHandler(mainWindow_DeleteEvent);
btnSearch.Clicked+=new EventHandler(btnSearch_Clicked);
btnClear.Clicked+=new EventHandler(btnClear_Clicked);
Application.Run();
}

Un esempio completo (da cui ho preso questa porzione di codice) lo si trova in questa pagina di CodeProject. Dopo aver caricato l'interfaccia grafica si connette da codice gli eventi agli oggetti come i button all'interno dell'interfaccia grafica. Tutto fatto.

Abbiamo a disposizione altre interfacce grafiche comuni tra i sistemi operativi, come la famosa libreria wxwidgets e il suo porting in .Net, wxwidgets.net. Potente flessibile, ma ha grossi problemi di stabilità almeno sotto windows dove crolla spesso e volentieri in errori inspiegabili - almeno per me.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese