diff --git a/src/main/builder.c b/src/main/builder.c index 8f730fd..d0a6b7b 100644 --- a/src/main/builder.c +++ b/src/main/builder.c @@ -21,7 +21,8 @@ #include #include - static GMenu * get_keypad_menu(GApplication *application) { + /* + static GMenu * keypad_menu_new(GApplication *application) { GList * keypads = pw3270_application_get_keypad_models(application); @@ -41,6 +42,7 @@ return menu; } + */ GtkBuilder * pw3270_application_builder_new(GApplication *application) { @@ -100,11 +102,13 @@ // // View options // - GMenu * keypad_menu = get_keypad_menu(application); + GList * keypads = pw3270_application_get_keypad_models(application); - if(keypad_menu) { + if(keypads) { static const gchar * placeholders[] = { + "app-menu-view-placeholder", + "top-menu-view-placeholder", "view-menu-placeholder", "view-when-offline-placeholder", "view-when-online-placeholder" @@ -114,13 +118,33 @@ placeholder = gtk_builder_get_object(builder, placeholders[ix]); - if(placeholder && G_IS_MENU(placeholder)) { - g_menu_append_item(G_MENU(placeholder), g_menu_item_new_submenu(_("Keypads"),G_MENU_MODEL(keypad_menu))); + if(placeholder) { + + if(G_IS_MENU(placeholder)) { + + GMenu * menu = g_menu_new(); + + // Create keypad items. + GList *item; + for(item = keypads; item; item = g_list_next(item)) { + GObject * model = G_OBJECT(item->data); + g_autofree gchar * action_name = g_strconcat("win.keypad.",pw3270_keypad_model_get_name(model),NULL); + g_menu_append(menu,pw3270_keypad_model_get_label(model),action_name); + } + + g_menu_append_item(G_MENU(placeholder), g_menu_item_new_submenu(_("Keypads"),G_MENU_MODEL(menu))); + + g_object_unref(menu); + + } else { + + g_message("Placeholder '%s' is invalid",placeholders[ix]); + + } } } - g_object_unref(keypad_menu); } return builder; diff --git a/src/objects/application/application.c b/src/objects/application/application.c index 8df2aec..760f333 100644 --- a/src/objects/application/application.c +++ b/src/objects/application/application.c @@ -482,11 +482,6 @@ void startup(GApplication *application) { } // - // Setup application menus - // - g_autoptr(GtkBuilder) builder = pw3270_application_builder_new(application); - - // // Load keypad models // { @@ -511,6 +506,13 @@ void startup(GApplication *application) { } } + // + // Setup application menus + // + debug("%s","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); + + g_autoptr(GtkBuilder) builder = pw3270_application_builder_new(application); + if(gtk_application_prefers_app_menu(GTK_APPLICATION(application))) gtk_application_set_app_menu(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "app-menu"))); diff --git a/ui/linux.ui.xml b/ui/linux.ui.xml index f4dffd1..d20a2bc 100644 --- a/ui/linux.ui.xml +++ b/ui/linux.ui.xml @@ -330,7 +330,7 @@ - + _View diff --git a/ui/macos.ui.xml b/ui/macos.ui.xml index f4dffd1..d20a2bc 100644 --- a/ui/macos.ui.xml +++ b/ui/macos.ui.xml @@ -330,7 +330,7 @@ - + _View diff --git a/ui/windows.ui.xml b/ui/windows.ui.xml index f4dffd1..d20a2bc 100644 --- a/ui/windows.ui.xml +++ b/ui/windows.ui.xml @@ -330,7 +330,7 @@ - + _View -- libgit2 0.21.2