/
evo
/
Gtk4-tutorial
Обзор
Документация
Войти
/
evo
/
Gtk4-tutorial
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/menu3/menu3.c
113 строк
3 KB
M0JXD
Add space for all stat =g_application_run
01 ноя 2025, 03:42
01 ноя 2025, 03:42
4ddec85
Код
Авторство
О чём код?
#include <gtk/gtk.h> static void new_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void open_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void save_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void saveas_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void close_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GtkWindow *win = GTK_WINDOW (user_data); gtk_window_destroy (win); } static void cut_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void copy_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void paste_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void selectall_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { } static void fullscreen_changed (GSimpleAction *action, GVariant *state, gpointer user_data) { GtkWindow *win = GTK_WINDOW (user_data); if (g_variant_get_boolean (state)) gtk_window_maximize (win); else gtk_window_unmaximize (win); g_simple_action_set_state (action, state); } static void quit_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GApplication *app = G_APPLICATION (user_data); g_application_quit (app); } static void app_activate (GApplication *app) { GtkWidget *win = gtk_application_window_new (GTK_APPLICATION (app)); const GActionEntry win_entries[] = { { "save", save_activated, NULL, NULL, NULL }, { "saveas", saveas_activated, NULL, NULL, NULL }, { "close", close_activated, NULL, NULL, NULL }, { "fullscreen", NULL, NULL, "false", fullscreen_changed } }; g_action_map_add_action_entries (G_ACTION_MAP (win), win_entries, G_N_ELEMENTS (win_entries), win); gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (win), TRUE); gtk_window_set_title (GTK_WINDOW (win), "menu3"); gtk_window_set_default_size (GTK_WINDOW (win), 400, 300); gtk_window_present (GTK_WINDOW (win)); } static void app_startup (GApplication *app) { GtkBuilder *builder = gtk_builder_new_from_resource ("/com/github/ToshioCP/menu3/menu3.ui"); GMenuModel *menubar = G_MENU_MODEL (gtk_builder_get_object (builder, "menubar")); gtk_application_set_menubar (GTK_APPLICATION (app), menubar); g_object_unref (builder); const GActionEntry app_entries[] = { { "new", new_activated, NULL, NULL, NULL }, { "open", open_activated, NULL, NULL, NULL }, { "cut", cut_activated, NULL, NULL, NULL }, { "copy", copy_activated, NULL, NULL, NULL }, { "paste", paste_activated, NULL, NULL, NULL }, { "selectall", selectall_activated, NULL, NULL, NULL }, { "quit", quit_activated, NULL, NULL, NULL } }; g_action_map_add_action_entries (G_ACTION_MAP (app), app_entries, G_N_ELEMENTS (app_entries), app); } #define APPLICATION_ID "com.github.ToshioCP.menu3" int main (int argc, char **argv) { GtkApplication *app; int stat; app = gtk_application_new (APPLICATION_ID, G_APPLICATION_DEFAULT_FLAGS); g_signal_connect (app, "startup", G_CALLBACK (app_startup), NULL); g_signal_connect (app, "activate", G_CALLBACK (app_activate), NULL); stat = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return stat; }