Re: Gtk::AccelGroup::connect() missing?
- From: Murray Cumming <murrayc murrayc com>
- To: Matt Hoosier <mwhoosier gmail com>
- Cc: gtkmm-list gnome org
- Subject: Re: Gtk::AccelGroup::connect() missing?
- Date: Tue, 12 Sep 2006 18:56:44 +0200
On Tue, 2006-09-12 at 11:28 -0500, Matt Hoosier wrote:
> On 9/12/06, Murray Cumming <murrayc murrayc com> wrote:
> > > Hi,
> > >
> > > This is a friendly inquiry to see whether the wrappings for
> > > GtkAccelGroup's "connect" and "connect_by_path" methods have been
> > > omitted by design.
> > >
> > > http://developer.gnome.org/doc/API/2.0/gtk/gtk-Keyboard-Accelerators.html#gtk-accel-group-connect
> > >
> > > The .hg file for the AccelGroup class has those two methods tucked
> > > inside an _IGNORE() block, but no comment exists to say whether
> > > there's fundamental brokenness about them, or perhaps they just
> > > haven't been requested up to this point.
> >
> > The main reason that they are not wrapped is that they take GClosure
> > parameters, which suggests that they are some funky thing only needed for
> > GTK+ internals or only needed rarely.
> >
> > Hopefully the same effect can be achieved with other parts of the API.
> > Does that seem to be the case?
> >
> > For instance, by specifying the accelerator and callback slot when
> > creating the Gtk::Action. I don't understand why anybody would want a
> > separate callback for an accelerator, instead of one callback for both the
> > accelerator and normal activation.
>
> Okay, that seems reasonable. I suppose that the slot gets attached by
> fetching the Gtk::Action::signal_activate object, but how does one
> specify the actual accelerator (for purposes of argument, suppose it's
> the Escape key) that should be used to activate the action? I don't
> see any obvious function on the Action class which attaches an
> accelerator.
>
> Suppose we've got the following already:
>
> Gtk::Window w;
> Glib::RefPtr<Gtk::Action> refAction = Gtk::Action::create ();
> Glib::RefPtr<Gtk::AccelGroup> refGroup = Gtk::AccelGroup::create ();
>
> w.add_accel_group (w);
> refAction.signal_activate ().connect ( ... );
> // what next?
You can specify an accelerator when you add the action to an
ActionGroup:
http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGtk_1_1ActionGroup.html
You should not need to create an AccelGroup manually, but if you have
some need for that, I can find out how that works.
There's more here on the basics here:
http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ch11.html
I think, you can also specify the accelerator in the UI definition.
That's mentioned here, though the format is not clear:
http://developer.gnome.org/doc/API/2.0/gtk/GtkUIManager.html
> This question seems to be straying into just questions about Gtk+ API;
> feel free to direct me to gtk-list instead.
--
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]