Reformat keyboard accelerators to match existing code

Terminate menus[] with empty-initialised as well.
This commit is contained in:
Geoffrey D. Bennett
2023-12-15 02:44:37 +10:30
parent 21f0d9dd05
commit f10a383e36

View File

@@ -80,23 +80,21 @@ static const GActionEntry app_entries[] = {
{"quit", activate_quit}, {"quit", activate_quit},
}; };
struct MenuItem { struct menu_item {
const char* label;
const char* action_name;
const char* accelerators[2];
};
typedef struct MenuItem MenuItem;
struct MenuData {
const char *label; const char *label;
MenuItem *items; const char *action_name;
const char *accelerators[2];
}; };
typedef struct MenuData MenuData;
static const MenuData menus[] = { struct menu_data {
const char *label;
struct menu_item *items;
};
static const struct menu_data menus[] = {
{ {
"_File", "_File",
(MenuItem[]){ (struct menu_item[]){
{ "_Load Configuration", "win.load", { "<Control>O", NULL } }, { "_Load Configuration", "win.load", { "<Control>O", NULL } },
{ "_Save Configuration", "win.save", { "<Control>S", NULL } }, { "_Save Configuration", "win.save", { "<Control>S", NULL } },
{ "_Interface Simulation", "win.sim", { "<Control>I", NULL } }, { "_Interface Simulation", "win.sim", { "<Control>I", NULL } },
@@ -106,7 +104,7 @@ static const MenuData menus[] = {
}, },
{ {
"_View", "_View",
(MenuItem[]){ (struct menu_item[]){
{ "_Routing", "win.routing", { "<Control>R", NULL } }, { "_Routing", "win.routing", { "<Control>R", NULL } },
{ "_Mixer", "win.mixer", { "<Control>M", NULL } }, { "_Mixer", "win.mixer", { "<Control>M", NULL } },
{ "_Levels", "win.levels", { "<Control>L", NULL } }, { "_Levels", "win.levels", { "<Control>L", NULL } },
@@ -116,23 +114,29 @@ static const MenuData menus[] = {
}, },
{ {
"_Help", "_Help",
(MenuItem[]){ (struct menu_item[]){
{ "_Supported Hardware", "app.hardware", { "<Control>H", NULL } }, { "_Supported Hardware", "app.hardware", { "<Control>H", NULL } },
{ "_About", "win.about", { "<Control>slash", NULL } }, { "_About", "win.about", { "<Control>slash", NULL } },
{} {}
} }
} },
{}
}; };
void populate_submenu(GtkApplication *app, GMenu *menu, const MenuData *data) { void populate_submenu(
GtkApplication *app,
GMenu *menu,
const struct menu_data *data
) {
GMenu *submenu = g_menu_new(); GMenu *submenu = g_menu_new();
g_menu_append_submenu(menu, data->label, G_MENU_MODEL(submenu)); g_menu_append_submenu(menu, data->label, G_MENU_MODEL(submenu));
/* An empty-initialized MenuItem marks the end */ // An empty-initialised menu_item marks the end
for (int i = 0; data->items[i].label != NULL; i = i + 1) { for (struct menu_item *item = data->items; item->label; item++) {
const char *action_name = data->items[i].action_name; g_menu_append(submenu, item->label, item->action_name);
g_menu_append(submenu, data->items[i].label, action_name); gtk_application_set_accels_for_action(
gtk_application_set_accels_for_action(app, action_name, data->items[i].accelerators); app, item->action_name, item->accelerators
);
} }
} }
@@ -142,10 +146,12 @@ GMenu *create_app_menu(GtkApplication *app) {
); );
GMenu *menu = g_menu_new(); GMenu *menu = g_menu_new();
const int num_menus = sizeof(menus) / sizeof(MenuData);
for (int i = 0; i < num_menus; i = i + 1) { for (const struct menu_data *menu_data = menus;
populate_submenu(app, menu, &(menus[i])); menu_data->label;
} menu_data++)
populate_submenu(app, menu, menu_data);
return menu; return menu;
} }