/* *File name: checkmenu.c */ #include #include /*-- This function allows the program to exit properly when the window is closed --*/ gint destroyapp (GtkWidget *widget, gpointer gdata) { g_print ("Quitting...\n"); gtk_main_quit(); return (FALSE); } /*-- This function allows the program to exit properly when the window is closed --*/ gint ClosingAppWindow (GtkWidget *widget, gpointer gdata) { g_print ("Quitting...\n"); gtk_main_quit(); return (FALSE); } int main (int argc, char *argv[]) { /*-- Declare the GTK Widgets used in the program --*/ GtkWidget *window; GtkWidget *menuFile; GtkWidget *menuEdit; GtkWidget *menuView; GtkWidget *menuHelp; GtkWidget *menubar; GtkWidget *menu; GtkWidget *menuitem; GtkWidget *vbox; GtkWidget *text; gchar *buffer = "Go to the file menu and select Exit to close the application."; /*-- Initialize GTK --*/ gtk_init (&argc, &argv); /*-- Create the new window --*/ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /*-- Create the vbox --*/ vbox = gtk_vbox_new(FALSE, 0); /*-- Create a text area --*/ text = gtk_text_new(NULL, NULL); /*-- Set text area to be editable --*/ gtk_text_set_editable(GTK_TEXT (text), TRUE); /*-- Connect the window to the destroyapp function --*/ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(destroyapp), NULL); /*-- Create the menu bar --*/ menubar = gtk_menu_bar_new(); /*-- Add the menubar to the vbox --*/ gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); gtk_widget_show(menubar); /*-- Add the text area to the window --*/ gtk_container_add(GTK_CONTAINER(vbox), text); /*-- Add the vbox to the main window --*/ gtk_container_add(GTK_CONTAINER(window), vbox); /*---------------- Create File menu items ------------------*/ menuFile = gtk_menu_item_new_with_label ("File"); gtk_menu_bar_append (GTK_MENU_BAR(menubar), menuFile); gtk_widget_show(menuFile); /*-- Create File submenu --*/ menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuFile), menu); /*-- Create New menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("New"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Open menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("Open"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Exit menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("Exit"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_signal_connect(GTK_OBJECT (menuitem), "activate", GTK_SIGNAL_FUNC (ClosingAppWindow), NULL); gtk_widget_show (menuitem); /*---------------- End File menu declarations ----------------*/ /*---------------- Create Edit menu items --------------------*/ menuEdit = gtk_menu_item_new_with_label ("Edit"); gtk_menu_bar_append (GTK_MENU_BAR(menubar), menuEdit); gtk_widget_show(menuEdit); /*-- Create File submenu --*/ menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuEdit), menu); /*-- Create Undo menu item under Edit submenu --*/ menuitem = gtk_menu_item_new_with_label ("Undo"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Copy menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("Copy"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Cut menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("Cut"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*---------------- End Edit menu declarations ----------------*/ /*---------------- Create View menu items --------------------*/ menuView = gtk_menu_item_new_with_label ("View"); gtk_menu_bar_append (GTK_MENU_BAR(menubar), menuView); gtk_widget_show(menuView); /*-- Create File submenu --*/ menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuView), menu); /*-- Create Refresh menu item under File submenu --*/ menuitem = gtk_menu_item_new_with_label ("Refresh"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Menubar item under Edit submenu --*/ menuitem = gtk_check_menu_item_new_with_label ("View Menubar"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*-- Create Toolbar item under File submenu --*/ menuitem = gtk_check_menu_item_new_with_label ("View Toolbar"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*---------------- End Edit menu declarations ----------------*/ /*---------------- Start Help menu declarations ----------------*/ menuHelp = gtk_menu_item_new_with_label ("Help"); gtk_menu_bar_append (GTK_MENU_BAR(menubar), menuHelp); gtk_widget_show(menuHelp); /*-- Create Help submenu --*/ menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuHelp), menu); /*-- Create About menu item under Help submenu --*/ menuitem = gtk_menu_item_new_with_label ("About"); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show (menuitem); /*---------------- End Help menu declarations ----------------*/ /*-- Add some text to the window --*/ gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, buffer, strlen(buffer)); /*-- Set window border to zero so that text area takes up the whole window --*/ gtk_container_border_width (GTK_CONTAINER (window), 0); /*-- Set the window to be 640 x 480 pixels --*/ gtk_window_set_default_size (GTK_WINDOW(window), 640, 200); /*-- Set the window title --*/ gtk_window_set_title(GTK_WINDOW (window), "Menu"); /*-- Display the widgets --*/ gtk_widget_show(text); gtk_widget_show(menuitem); gtk_widget_show(menuFile); gtk_widget_show(menuEdit); gtk_widget_show(menuView); gtk_widget_show(menuHelp); gtk_widget_show(vbox); gtk_widget_show(window); /*-- Start the GTK event loop --*/ gtk_main(); /*-- Return 0 if exit is successful --*/ return 0; }