I use GTK+ 3 and Ubuntu 11.10. Since yesterday morning the menubar doesn't appear compiling this code! Incredible. I also installed a new version of Ubuntu 11.10 with vmware, but same problem!
Do you think that is a problem with the new kernel?
or what about gconf-editor, known bug of Ubuntu 11.10??
Code:
#include <gtk/gtk.h>
void create_menu (GtkWindow *window, GtkContainer *container)
{
// Inizializzazione widget
GtkWidget *vbox, *hbox, *menubar;
GtkWidget *filemenu, *filemenu2, *filemenu3;
GtkWidget *file, *settings, *help;
GtkWidget *open, *save_as, *close, *quit, *sep;
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
menubar = gtk_menu_bar_new ();
gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
GtkWidget *button = gtk_button_new_with_label ("CIAO");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_widget_set_halign (button, GTK_ALIGN_END);
gtk_widget_set_valign (button, GTK_ALIGN_END);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
filemenu = gtk_menu_new ();
GtkAccelGroup *accel_group = gtk_accel_group_new ();
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
file = gtk_menu_item_new_with_mnemonic ("File");
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), file);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), filemenu);
settings = gtk_menu_item_new_with_mnemonic ("_Strumenti");
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), settings);
help = gtk_menu_item_new_with_mnemonic ("_Aiuto");
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), help);
open = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, accel_group);
close = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLOSE, accel_group);
save_as = gtk_image_menu_item_new_from_stock (GTK_STOCK_SAVE_AS, accel_group);
sep = gtk_separator_menu_item_new ();
quit = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, accel_group);
// vengono aggiunti dei submenu
gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), filemenu);
gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), open);
gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), close);
gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), save_as);
// Inserimento separatore
gtk_menu_shell_append (GTK_MENU_SHELL(filemenu), sep);
gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), quit);
}
int main (int argc, char *argv[])
{
GtkWidget *window;
/* This is called in all GTK applications. Arguments are parsed
* from the command line and are returned to the application.
*/
gtk_init (&argc, &argv);
/* create a new window, and set its title */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "c_Nav");
gtk_window_set_default_size (GTK_WINDOW (window), 800, 450);
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
//gtk_container_set_border_width (GTK_CONTAINER (window), 0);
// Funzione per la creazione del menu
create_menu (GTK_WINDOW (window), GTK_CONTAINER (window));
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
/* Now that we are done packing our widgets, we show them all
* in one go, by calling gtk_widget_show_all() on the window.
* This call recursively calls gtk_widget_show() on all widgets
* that are contained in the window, directly or indirectly.
*/
gtk_widget_show_all (window);
/* All GTK applications must have a gtk_main(). Control ends here
* and waits for an event to occur (like a key press or a mouse event),
* until gtk_main_quit() is called.
*/
gtk_main ();
return 0;
}