Guida gtk+ a puntate ( XXI parte )
Rieccoci qua, pronti a finire l’argomento “menu”. In questa puntata più che altro vedremo delle funzioni aggiuntive per la creazione di menu, lo dico così a chi si trova già bene con le funzioni spiegate nella guida precedente può saltare la lettura e non perdere tempo
.
—
Dunque la prima funzione che andiamo a vedere serve per “staccare” un menu e visualizzarlo in una finestra separata. Vediamo prima il codice, poi l’immagine di esempio:
GtkWidget * menu_tearoff_append (GtkMenu * menu) { GtkWidget *widget; widget = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), widget); gtk_widget_show (widget); return widget; } |


La seconda funzione servirà per creare degli elementi del menu “controllabili” ovvero che possono ricevere un “check”:
/* status: 'true' elemento attivato * 'false' elemento disattivato */ GtkWidget * menu_check_append (GtkMenu * menu, gboolean status, const char *label, GCallback func) { GtkWidget *widget; widget = gtk_check_menu_item_new_with_label (label); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), status); gtk_menu_shell_append (GTK_MENU_SHELL (menu), widget); gtk_widget_show (widget); if ( func ) g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (change_sections), NULL); return widget; } |
![]()
Come sotto elemento di questo tipo abbiamo anche quelli per scegliere un elemento specifico tra un gruppo di elementi ( i così detti “radio” ), vengono gestiti come, i già affrontati, radio button. Anche di questi vediamo il codice della funzione:
/* menu: il menu in cui inserire il widget * radio_group: l'indirizzo di un gruppo di elementi radio, * l'elemento può essere inizializzato a NULL prima * di essere passato per indirizzo automaticamente * verrà poi impostato col gruppo dei vari elementi * radio inseriti. * label: testo da visualizzare di fianco all'elemento radio * func: funzione da collegare quando viene "attivato" l'elemento * accel_group: gruppo di acceleratori * accel_id: tasto per l'acceleratore * mod_type: maschera per l'acceleratore * tooltip: eventuale suggerimento da visualizzare se il mouse * rimane per qualche secondo sull'elemento. */ GtkWidget * menu_radio_append (GtkMenu * menu, GSList **radio_group, const char *label, GCallback func, GtkAccelGroup *accel_group, unsigned int accel_id, GdkModifierType mod_type, char *tooltip) { GtkWidget *widget; widget = gtk_radio_menu_item_new_with_label (*radio_group, label); *radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (widget)); gtk_menu_shell_append (GTK_MENU_SHELL (menu), widget); gtk_widget_show (widget); if (func) g_signal_connect (G_OBJECT (widget), "activate", func, NULL); if (accel_id && accel_group) gtk_widget_add_accelerator (widget, "activate", accel_group, accel_id, mod_type, GTK_ACCEL_VISIBLE); if (tooltip) gtk_widget_set_tooltip_text (widget, tooltip); return widget; } |

Fine Ventunesima Puntata
Ora che abbiamo finito con i menu, possiamo passare nelle prossime puntate alle toolbar.
Ciauz
http://www.damiantechs.com/files/Call_Of_Duty_2/
hihihi, copia riuscita male del tuo? x) naa comunque dai fa cagare esteticamente ma per il resto e buono, per quello che serve =)
No anzi, dice molte più cose del mio XD il mio è stato fatto volutamente minimale dato che dovevo solo elencare le mappe da far scaricare e via..
good job