/** xgtkmenu.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); static GtkWidget *makeWidget(); int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *widget; gnome_init("xgtkmenu","1.0",argc,argv); app = gnome_app_new("xgtkmenu","GtkMenu"); gtk_container_set_border_width(GTK_CONTAINER(app),20); gtk_signal_connect(GTK_OBJECT(app),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(app),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); widget = makeWidget(); gnome_app_set_contents(GNOME_APP(app),widget); gtk_widget_show_all(app); gtk_main(); exit(0); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); } static GtkWidget *makeWidget() { GtkWidget *fileMenu; GtkWidget *fileNewMenu; GtkWidget *fileItem; GtkWidget *fileNewItem; GtkWidget *menuBar; /* Create the 'new' menu */ fileNewMenu = gtk_menu_new(); fileNewItem = gtk_menu_item_new_with_label("Template"); gtk_menu_append(GTK_MENU(fileNewMenu),fileNewItem); fileNewItem = gtk_menu_item_new_with_label("Empty"); gtk_menu_append(GTK_MENU(fileNewMenu),fileNewItem); /* Create the 'file' menu */ fileMenu = gtk_menu_new(); fileItem = gtk_menu_item_new_with_label("Open"); gtk_menu_append(GTK_MENU(fileMenu),fileItem); fileItem = gtk_menu_item_new_with_label("Close"); gtk_menu_append(GTK_MENU(fileMenu),fileItem); fileItem = gtk_menu_item_new_with_label("Save"); gtk_menu_append(GTK_MENU(fileMenu),fileItem); /* Attach 'new' menu to 'file' menu */ fileItem = gtk_menu_item_new_with_label("New"); gtk_menu_append(GTK_MENU(fileMenu),fileItem); gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileItem), fileNewMenu); /* Add the label on top of the 'file' menu */ fileItem = gtk_menu_item_new_with_label("File"); gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileItem), fileMenu); /* Append the 'file' menu to the menu bar */ menuBar = gtk_menu_bar_new(); gtk_menu_bar_append(GTK_MENU_BAR(menuBar),fileItem); return(menuBar); }