diff --git a/src/main.c b/src/main.c index 662653c..1ce0d5d 100644 --- a/src/main.c +++ b/src/main.c @@ -5,6 +5,22 @@ #include "mdiary.h" #include "settings.h" +static void quit_cb(GSimpleAction *action, GVariant *parameter, gpointer user_data) +{ + g_print("TODO\n"); + +} + +static void settings_cb(GSimpleAction *action, GVariant *parameter, gpointer user_data) +{ + g_print("nTODO\n"); +} + +const GActionEntry app_actions[] = { + { "quit", quit_cb }, + { "settings", settings_cb } +}; + static void activate(GApplication *app, gpointer user_data) { struct mainWindow *mainWindow; @@ -12,28 +28,45 @@ static void activate(GApplication *app, gpointer user_data) gchar *settings_path; mainWindow = mainWindow_new(); + gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(mainWindow->mainWindow)); settings_path = g_strdup_printf("%s/.mdiary.conf", g_get_home_dir()); settings = mdiary_settings_new(mainWindow); mdiary_load_settings(settings_path, settings); gtk_widget_show(mainWindow->mainWindow); - gtk_main(); mdiary_save_settings(settings_path, settings); mdiary_settings_free(settings); g_free(settings_path); - - return 0; } int main(int argc, char *argv[]) { GtkApplication *app; + GMenu *app_menu; + GMenu *p1; + GMenu *p2; int status; app = gtk_application_new("net.notsyncing.mdiary", G_APPLICATION_FLAGS_NONE); + g_application_register(GTK_APPLICATION(app), NULL, NULL); g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + + app_menu = g_menu_new(); + p1 = g_menu_new(); + p2 = g_menu_new(); + g_menu_append(p1, "Settings", "app.settings"); + g_menu_append(p2, "Quit", "app.quit"); + g_menu_append_section(app_menu, NULL, G_MENU_MODEL(p1)); + g_menu_append_section(app_menu, NULL, G_MENU_MODEL(p2)); + gtk_application_set_app_menu(app, G_MENU_MODEL(app_menu)); + g_action_map_add_action_entries(G_ACTION_MAP(app), app_actions, G_N_ELEMENTS(app_actions), app); + gtk_application_set_app_menu(GTK_APPLICATION(app), G_MENU_MODEL(app_menu)); + g_object_unref(p1); + g_object_unref(p2); + g_object_unref(app_menu); + status = g_application_run(G_APPLICATION(app), argc, argv); g_object_unref(app); }