Home > Guide veloci > Guida gtk+ a puntate ( XXI parte )

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;
}

tearoff_menu-off

tearoff_menu-on

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;
}

check menu item

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;
}

radio menu item

Fine Ventunesima Puntata
Ora che abbiamo finito con i menu, possiamo passare nelle prossime puntate alle toolbar.
Ciauz ;)

Categorie:Guide veloci Tag: ,
  1. 27 novembre 2009 a 5:18 | #1

    http://www.damiantechs.com/files/Call_Of_Duty_2/ :P hihihi, copia riuscita male del tuo? x) naa comunque dai fa cagare esteticamente ma per il resto e buono, per quello che serve =)

  2. 27 novembre 2009 a 23:25 | #2

    iWafer :

    http://www.damiantechs.com/files/Call_Of_Duty_2/ :P 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

  1. Nessun trackback ancora...
Custom Avatars For Comments