#include <iostream>
#include <gtkmm/main.h>
#include <gtkmm/button.h>
#include <gtkmm/window.h>
#include <gtkmm/menu.h>

using namespace std;
using namespace Gtk;
using namespace Gtk::Menu_Helpers;

Menu* sub_menu = 0;
Menu* menu = 0;

void make_submenu ()
{
        sub_menu = new Menu;
        sub_menu->items().push_back (MenuElem ("Fred"));
}

void make_menu ()
{
        delete menu;
        menu = new Menu;
        menu->items().push_back (MenuElem ("Jim", *sub_menu));
}

void foo ()
{
        make_menu ();
        menu->popup (1, gtk_get_current_event_time ());
}

int main (int argc, char* argv[])
{
        Main kit (argc, argv);

        Window w;

        make_submenu ();

        Button* b = new Button ("Foo");
        b->signal_clicked().connect (sigc::ptr_fun (foo));

        w.add (*b);
        w.show_all ();

        Main::run (w);
        return 0;
}