+GtkWidget* build_menu(GtkWidget *win, GtkAccelGroup *accel)
+{
+ GtkWidget *menu;
+ GtkWidget *submenu;
+ GtkWidget *item;
+
+ menu = gtk_menu_bar_new();
+
+ /* File menu */
+
+ submenu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(submenu), accel);
+
+ item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel);
+ g_signal_connect(item, "activate", G_CALLBACK(on_quit_activate), NULL);
+ gtk_menu_append(GTK_MENU(submenu), item);
+
+ item = gtk_menu_item_new_with_mnemonic("_File");
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
+ gtk_menu_bar_append(GTK_MENU_BAR(menu), item);
+
+ /* About menu */
+
+ submenu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(submenu), accel);
+
+ item = gtk_menu_item_new_with_mnemonic("_About");
+ gtk_menu_append(GTK_MENU(submenu), item);
+
+ item = gtk_menu_item_new_with_mnemonic("_Help");
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
+ gtk_menu_bar_append(GTK_MENU_BAR(menu), item);
+
+ gtk_widget_show_all(menu);
+
+ return menu;
+}
+
+GtkWidget* build_list(GtkWidget *parent, GtkListStore **model)
+{
+ GtkWidget *list;
+ GtkListStore *store;
+ GtkCellRenderer *ren;
+ GtkTreeViewColumn *col;
+ GtkTreeSelection *sel;
+
+ store = gtk_list_store_new(N_COLUMNS,
+ G_TYPE_STRING);
+
+ list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(list));
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+ g_signal_connect(sel, "changed", G_CALLBACK(on_selection_changed), NULL);
+
+ ren = gtk_cell_renderer_text_new();
+ col = gtk_tree_view_column_new_with_attributes("Name",
+ ren,
+ "text",
+ NAME_COLUMN,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
+
+ *model = store;
+ return list;
+}
+