GMenu(C) Tiffany Antopolski tiffany.antopolski@gmail.com 2012 GMenuModel의 간단한 구현체 조성호 shcho@gnome.org 2017 GMenu

간단한 GMenu 및 SimpleAction과 사용하는 GtkApplication

이 코드를 동작하려면 Gtk 3.4 이상이 필요합니다

#include <gtk/gtk.h> static void new_window (GSimpleAction *action, GVariant *parameter, gpointer user_data) { g_print ("This does nothing. It is only a demonstration.\n"); } static void quit (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GApplication *application = user_data; g_application_quit (application); } static void startup (GtkApplication *application, gpointer user_data) { static const GActionEntry actions[] = { { "new", new_window }, { "quit", quit } }; GMenu *menu; g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions), application); menu = g_menu_new (); g_menu_append (menu, "New", "app.new"); g_menu_append (menu, "Quit", "app.quit"); gtk_application_set_app_menu (application, G_MENU_MODEL (menu)); g_object_unref (menu); } static void activate (GtkApplication *app, gpointer user_data) { GtkWidget *window; window = gtk_application_window_new (app); gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app)); gtk_window_set_title (GTK_WINDOW (window), "Hello GNOME"); gtk_widget_show_all (GTK_WIDGET (window)); } int main (int argc, char **argv) { GtkApplication *app; int status; app = gtk_application_new ("org.gtk.example",G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "startup", G_CALLBACK (startup), NULL); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; }

이 예제는 다음 참고자료가 필요합니다:

GMenu

GSimpleAction