[Glade-users] callbacks and signals from GtkOptionMenu?

Damon Chaplin damon@helixcode.com
Thu, 19 Oct 2000 10:08:18 +0100


Joe Van Andel wrote:
> 
> I'm using Python 1.5.2, gnome-python-1.0.53, libgtk+1.2.8 with
> glade-0.5.11 and libglade-0.14 on Redhat 6.2.
> 
> I've used 'glade' to build a user interface.  My application has a
> GtkOptionMenu (called 'filter_option') with three items.  I want to
> attach handlers that will be called when one of the menu items is
> selected so my Python application can react to the user's choices.

The FAQ covers this:

3.6 How do I get a GtkOptionMenu to call a function when it changes?

Glade doesn't support this at present, but you can set it up manually.

When you create the window, get the option menu and connect to the "deactivate"
signal emitted by its menu:

  window1 = create_window1 ();
  option_menu = lookup_widget (window1, "optionmenu1");
  gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (option_menu)->menu),
                      "deactivate", GTK_SIGNAL_FUNC (on_option_selected),
                      NULL);


Then add a handler to callbacks.c. You can get the index of the selected item
just like the previous answer:

static void
on_option_selected (GtkMenuShell *menu_shell,
                    gpointer data)
{
  GtkWidget *active_item;
  gint item_index;
  
  active_item = gtk_menu_get_active (GTK_MENU (menu_shell));
  item_index = g_list_index (menu_shell->children, active_item);

  g_print ("In on_option_selected active: %i\n", item_index);
}


I hope that still works in Python.

Damon