martedì 10 marzo 2009

Mockup, Gtk e Clutter

Che dire.... è un pò che non scrivo, ma prima per il lavoro, poi per l'organizzazione del mio matrimonio, non ho mai molto tempo!

Comunque, sgrufolando come al solito in giro per internet, mi sono imbattuto in questo interessante mockup:


Molto carino, non c'è che dire. L'unica cosa che mi pare veramente strana è stata l'idea di utilizzare Clutter per creare un menù di questo tipo.
Ora, io adoro Clutter, semplicemente mi sembra assurdo utilizzarlo per un banale menu laterale di Nautilus.

Così, ho deciso di dedicarmi allo sviluppo Gtk per vedere se era replicabile utilizzando solo le librerie; beh, questo è il risultato:

Ora l'effetto mi sembra abbastanza buono. Ho utilizzato le pure e semplici Gtk e, per inciso, questo è la funzione che utilizzo per creare questi "pulsanti" (beh, in effetti le virgoline sarebbero da evitarsi, considerando che si trattano di GtkButton contenenti altri widget):

GtkWidget *
create_menu_button (const gchar *stock_id, gchar *text)
{
GtkWidget *button_table = gtk_table_new (1, 2, FALSE);

GtkWidget *button_image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU);
gtk_table_attach_defaults (GTK_TABLE (button_table), button_image, 0, 1, 0, 1);

GtkWidget *button_label = gtk_label_new (text);
gtk_widget_set_size_request (button_label, 130, -1);
gtk_misc_set_alignment (GTK_MISC (button_label), 0, 0.5);
gtk_table_attach_defaults (GTK_TABLE (button_table), button_label, 1, 2, 0, 1);

GtkWidget *button = gtk_button_new ();
gtk_widget_set_size_request (button, 100, -1);
gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
gtk_container_add (GTK_CONTAINER (button), button_table);

return button;
}



Moolto semplice!

4 commenti:

felipe ha detto...

Ciao Matteo (cit.)

Quell'articolo ha tratto tutti in inganno, per clutter intendeva prprio clutter sostantivo e non la libreria ^^

Complimenti per la prima implementazione!

mouser ha detto...

Hehehe, mannaggia a questi inglesi che danno alle librerie gli stessi nomi dei sostantivi!

Comunque, un'ottima occasione per buttare giù qualche riga di codice.

Ottavino ha detto...

Speranze di un' integrazione?

mouser ha detto...

@Ottavino:

Guarda, proverò a scaricarmi l'svn di Nautilus ed a sgrufolare un pò.... magari riesco a buttare fuori una patch, ma non avendo mai guardato quel codice non so ancora se riuscirò a sputare fuori qualcosa di buono.

Grazie comunque dell'apprezzamento :D