domenica 14 novembre 2010

Gtk#, primi esperimenti ...

Gtk# mi piace, è reattivo, bello da vedersi (anche se le QT lo superano) ma.. un po' incasinato.
La cosa peggiore di Gtk# è la mancanza di documentazione. Per Gtk+ c'è n'è a iosa, ma per il suo binding in C#, non ci siamo, mancano libri ed i tutorial scarseggiano.

Nel mio esperimento quotidiano ho realizzato questo scheletro per un software di analisi tecnica sotto Linux (anzi, cross platform) con, appunto C# e Gtk#, e ovviamente l'ottimo MonoDevelop.
Ecco la prima immagine...


Ok, non è niente di che, è vero, infatti parlavo di.. scheletro ;)

Sulla sinistra c'è una Treeview (che in Gtk# è gestita con l'efficiente modello MVC) con l'elenco dei mercati finanziari e l'elenco delle azioni (poche, ma per ora è solo un esempio).
La parte centrale, gestita coi Notebook (ossia le Tab), e una DrawingArea ossia un Widget GTK ove è possibile disegnare.
Qui verrà visualizzato il grafico dell'azione, e si potranno tracciare trendline, fibonacci etc.
Infine sulla destra ho una toolbar di pulsanti, che conterranno tutti gli strumenti utilizzabili.

Una cosa ostica, almeno inizialmente, è stato capire il sistema del packing che viene utilizzato in Gnome, ostico soprattutto per chi proviene dal classico sviluppo sotto Windows.
In pratica con le Gtk non si arrangiano i controlli sulle form nel classico stile Windows ossia: Textbox nella posizione X,Y (10,20), e dimensioni (40,120).
Invece in Gtk si usa il packing, ossia, il controllo viene inserito in una griglia o box, e automaticamente si ridimensiona a seconda della dimensione del proprio contenitore. Ok l'ho spiegato un po' da cani, ma il concetto è che prima si inseriscono i contenitori (hBox, vBox, hPaned, vPaned o Table), quindi all'interno di essi, vanno i vari controlli come i button, label, treeview etc. etc.
All'inizio mi sembrava un sistema del ca**o, invece no, mi son ricreduto... è davvero efficiente perchè tutto il lavoro di resizing e di adattamento a seconda dello schermo (che sia quello di un Pda, di un cellulare o un widescreen da 30") viene automaticamente gestito da Gtk.
Inoltre, se proprio non si vuole imparare questo sistema si può usare sempre un contenitore Fixed che permette di inserire i widget (altro nome per controllo) con una posizione fissa nel controllo stesso.. cioè come nella gestione standard delle winforms.

A questo punto viene lecito domandarsi quale possa essere il Gui Toolkit migliore tra le Gtk e le Winforms. Mi trovo d'accordo con chi ha risposto a questa domanda su StackOverflow.

E ora, guardiamoci il derby.

Nessun commento:

Posta un commento