HappyOn Tue, 2017-12-19 at 10:02 +0100, Kjell Ahlstedt wrote:
> Have you looked at the menu examples in the gtkmm tutorial? One with
> a 
Hapy new year all,
I have been working on this, without much accomplished. I have code
that compiles and runs, with the menu showing up, but can't get the
action to be activated when the menu itme is clicked.

AI'v also noticed that if I append a new menu item with only a label,
the menu item is enabled, but if I append a menu item with label and
action the menu item is disabled.

I haven't been able to avoid this situation. Any ideas??

Marty

code:

include "gui.h"
#include <iostream>

namespace geode
{
    
//CCCCCC GUI CCCCCCCCCCCCCCCC
    Gui::Gui()
        : m_Box(), //Gtk::ORIENTATION_VERTICAL),
          mbut1()
    {
        set_title("menu test");
        set_default_size(200, 200);
        mbut1.set_label("button 1");

        add(m_Box);
        m_Box.pack_start(mbut1);

        cout << "gui 0:" << endl;
        giomenu = Gio::Menu::create();
        menumodel = giomenu;
        gtkmenu = new Gtk::Menu( giomenu);      

        cout << "gui 1:" << endl;
        act_group = Gio::SimpleActionGroup::create();
        act_group->add_action("FIRST",
                              sigc::mem_fun(*this, &Gui::on_action));
        act_group->add_action("SECOND",
                              sigc::mem_fun(*this, &Gui::on_action));
        act_group->add_action("THIRD",
                              sigc::mem_fun(*this, &Gui::on_action));

        cout << "gui 2:" << endl;
        giomenu->append("FIRST");
        giomenu->append("SECOND");
        giomenu->append( "THIRD", "THIRD");
        
        cout << "gui 3:" << endl;
        mbut1.set_menu(*gtkmenu);
        show_all();
    }

    Gui::~Gui()
    { }
} // end namespace geod
> popup menu:
> https://git.gnome.org/browse/gtkmm-documentation/tree/examples/book/m
> enus/popup?h=gtkmm-3-22
> 
> In that example the actions are inserted in a Gio::SimpleActionGroup.
> I 
> think that a SimpleActionGroup would simplify your code. In the
> usual 
> types of menu items (plain menu item, toggle menu item, radio menu
> item) 
> you can connect signal handlers without a VariantBase parameter. 
> Gio::SimpleActionGroup (actually its base class Gio::ActionMap) has 
> several add_action*() methods for different types of menu items.
> 
> There are other examples with menus. They also use a
> SimpleActionGroup.
> https://git.gnome.org/browse/gtkmm-documentation/tree/examples/book/m
> enus/main_menu?h=gtkmm-3-22
> https://git.gnome.org/browse/gtkmm-documentation/tree/examples/book/m
> enus_and_toolbars?h=gtkmm-3-22
> 
> Kjell
> 
> 
> On 2017-12-16 21:43, Marty Moore wrote:
> > Hi Daniel, Thanks for your replay.
> > I found two things while perusing the documentation:
> > 1. I nedd to connect either the signal_activate or
> signal_state_changed
> > of the SimpleAction if I don't want default behavior.
> > 2. There's a 'TODO' note saying that documentation is needed about
> how
> > to connect the signals.
> >
> > I'm still playing around with things, but what I really need is a
> > tutorial about how to use Variant/BariantBase. I'm getting stuck
> every
> > time I run into it. There doesn't seem to be much explanation about
> > it. I assumed it was along the lines of void*, where you can use it
> for
> > any data type. Is there something to explain how to use it? A good
> > example about this stuff would really be appreciated.
> > Thanks for your help,
> > Marty
> >
> >
> 
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to