GMenu - удобное меню для вашего ресторана или кафе
GMenu - это библиотека, предназначенная для создания графического пользовательского интерфейса в Linux с использованием GTK+. Она предоставляет набор функций и классов, которые упрощают создание и управление главным меню приложения.
Примеры кода:
1. Создание главного меню приложения:
c
#include
static void on_menu_item_clicked(GtkMenuItem *item, gpointer user_data) {
// обработка события нажатия на пункт меню
}
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
// создание основного окна
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "My Application");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
// создание менюбара
GtkWidget *menubar = gtk_menu_bar_new();
gtk_container_add(GTK_CONTAINER(window), menubar);
// создание пунктов меню
GtkWidget *file_menu_item = gtk_menu_item_new_with_label("File");
GtkWidget *edit_menu_item = gtk_menu_item_new_with_label("Edit");
// создание подменю для пункта "File"
GtkWidget *file_menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_menu_item), file_menu);
// создание пунктов подменю "File"
GtkWidget *open_menu_item = gtk_menu_item_new_with_label("Open");
GtkWidget *save_menu_item = gtk_menu_item_new_with_label("Save");
// добавление пунктов подменю в меню
gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), open_menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), save_menu_item);
// добавление пунктов меню в менюбар
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file_menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), edit_menu_item);
// привязка событий к пунктам меню
g_signal_connect(G_OBJECT(open_menu_item), "activate", G_CALLBACK(on_menu_item_clicked), NULL);
g_signal_connect(G_OBJECT(save_menu_item), "activate", G_CALLBACK(on_menu_item_clicked), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
2. Обработка событий нажатия на пункты меню:
c
static void on_menu_item_clicked(GtkMenuItem *item, gpointer user_data) {
const gchar *label = gtk_menu_item_get_label(item);
if (g_strcmp0(label, "Open") == 0) {
// обработка нажатия на пункт "Open"
} else if (g_strcmp0(label, "Save") == 0) {
// обработка нажатия на пункт "Save"
}
}
В данном примере мы создаем главное окно приложения и добавляем в него менюбар. Затем создаем пункты меню, а также подменю для одного из пунктов. Добавляем пункты меню и подменю в менюбар с помощью функции gtk_menu_shell_append(). Для каждого пункта меню мы привязываем событие "activate" к функции обработчика on_menu_item_clicked(). Обработчик получает метку нажатого пункта и осуществляет соответствующие действия в зависимости от метки.
Таким образом, использование библиотеки GMenu позволяет легко создавать главное меню приложения в Linux с помощью GTK+. Она предоставляет удобный интерфейс для создания пунктов меню, подменю и обработки событий нажатия на пункты.