diff --git a/src/gui/widgets/menu-button.cpp b/src/gui/widgets/menu-button.cpp
index 853c07474..8f7d1f0b2 100644
--- a/src/gui/widgets/menu-button.cpp
+++ b/src/gui/widgets/menu-button.cpp
@@ -26,8 +26,11 @@
using namespace Gtk;
+using namespace Glib;
using namespace sigc;
+#define POPUP_SLUG "TheMenu"
+#define POPUP_PATH "/" POPUP_SLUG
const int CaptionPadding = 4;
namespace gui {
@@ -38,7 +41,9 @@ const ShadowType shadowType = SHADOW_NONE;
MenuButton::MenuButton() :
ToggleButton(),
- arrow(arrowType, shadowType)
+ arrow(arrowType, shadowType),
+ uimanager(UIManager::create()),
+ actions(ActionGroup::create())
{
setup_button();
}
@@ -52,9 +57,7 @@ MenuButton::MenuButton(const StockID& stock_id) :
StockItem stock_item;
REQUIRE(StockItem::lookup(stock_id, stock_item));
caption.set_text_with_mnemonic(stock_item.get_label());
-
hBox.pack_start(image);
-
setup_button();
}
@@ -66,24 +69,61 @@ MenuButton::MenuButton(cuString& label, bool mnemonic) :
setup_button();
}
-Gtk::Menu&
+Menu&
MenuButton::get_menu()
{
- return menu;
+ uString path ("/");
+ path.append (POPUP_SLUG);
+ Menu* p_menu = dynamic_cast