+static char *existing_filename;
+
+static void file_open(GtkWidget *w, gpointer data)
+{
+ GtkWidget *dialog;
+ dialog = gtk_file_chooser_dialog_new("Open File",
+ GTK_WINDOW(main_window),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *filename;
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ printf("Open: '%s'\n", filename);
+ g_free(filename);
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void file_save(GtkWidget *w, gpointer data)
+{
+ GtkWidget *dialog;
+ dialog = gtk_file_chooser_dialog_new("Save File",
+ GTK_WINDOW(main_window),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
+ if (!existing_filename) {
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "Untitled document");
+ } else
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), existing_filename);
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *filename;
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ save_dives(filename);
+ g_free(filename);
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void quit(GtkWidget *w, gpointer data)
+{
+ gtk_main_quit();
+}
+
+static GtkActionEntry menu_items[] = {
+ { "FileMenuAction", GTK_STOCK_FILE, "Log", NULL, NULL, NULL},
+ { "OpenFile", GTK_STOCK_OPEN, NULL, "<control>O", NULL, G_CALLBACK(file_open) },
+ { "SaveFile", GTK_STOCK_SAVE, NULL, "<control>S", NULL, G_CALLBACK(file_save) },
+ { "Quit", GTK_STOCK_QUIT, NULL, "<control>Q", NULL, G_CALLBACK(quit) },
+};
+static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
+
+static const gchar* ui_string = " \
+ <ui> \
+ <menubar name=\"MainMenu\"> \
+ <menu name=\"FileMenu\" action=\"FileMenuAction\"> \
+ <menuitem name=\"Open\" action=\"OpenFile\" /> \
+ <menuitem name=\"Save\" action=\"SaveFile\" /> \
+ <separator name=\"Seperator\"/> \
+ <menuitem name=\"Quit\" action=\"Quit\" /> \
+ </menu> \
+ </menubar> \
+ </ui> \
+";
+
+static GtkWidget *get_menubar_menu(GtkWidget *window)
+{
+ GtkActionGroup *action_group = gtk_action_group_new("Menu");
+ gtk_action_group_add_actions(action_group, menu_items, nmenu_items, 0);
+
+ GtkUIManager *ui_manager = gtk_ui_manager_new();
+ gtk_ui_manager_insert_action_group(ui_manager, action_group, 0);
+ GError* error = 0;
+ gtk_ui_manager_add_ui_from_string(GTK_UI_MANAGER(ui_manager), ui_string, -1, &error);
+
+ gtk_window_add_accel_group(GTK_WINDOW(window), gtk_ui_manager_get_accel_group(ui_manager));
+ GtkWidget* menu = gtk_ui_manager_get_widget(ui_manager, "/MainMenu");
+
+ return menu;
+}
+