From 827c69a425c6d598444da9a6a179fd6bd29920e0 Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 22 Feb 2016 09:48:48 +0100 Subject: [PATCH] Added possibility to modify menus at runtime --- src/juci.cc | 10 +++------- src/menu.cc | 4 ++++ src/menu.h | 6 +++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/juci.cc b/src/juci.cc index db28c40..14e95a1 100644 --- a/src/juci.cc +++ b/src/juci.cc @@ -80,16 +80,12 @@ void Application::on_startup() { Menu::get().build(); - auto object = Menu::get().builder->get_object("juci-menu"); - auto juci_menu = Glib::RefPtr::cast_dynamic(object); - object = Menu::get().builder->get_object("window-menu"); - auto window_menu = Glib::RefPtr::cast_dynamic(object); - if (!juci_menu || !window_menu) { + if (!Menu::get().juci_menu || !Menu::get().window_menu) { std::cerr << "Menu not found." << std::endl; } else { - set_app_menu(juci_menu); - set_menubar(window_menu); + set_app_menu(Menu::get().juci_menu); + set_menubar(Menu::get().window_menu); } } diff --git a/src/menu.cc b/src/menu.cc index e546484..bc00538 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -404,6 +404,10 @@ void Menu::build() { try { builder->add_from_string(ui_xml); + auto object = Menu::get().builder->get_object("juci-menu"); + juci_menu = Glib::RefPtr::cast_dynamic(object); + object = Menu::get().builder->get_object("window-menu"); + window_menu = Glib::RefPtr::cast_dynamic(object); } catch (const Glib::Error &ex) { std::cerr << "building menu failed: " << ex.what(); diff --git a/src/menu.h b/src/menu.h index 1018eeb..9e3fc56 100644 --- a/src/menu.h +++ b/src/menu.h @@ -19,8 +19,12 @@ public: void set_keys(); void build(); - Glib::RefPtr builder; + Glib::RefPtr juci_menu; + Glib::RefPtr window_menu; + +private: + Glib::RefPtr builder; std::string ui_xml; }; #endif // JUCI_MENU_H_