#include <gtk/gtkcheckmenuitem.h>
#include <gtk/gtkbutton.h>
-
#include "intl.h"
#include "menu.h"
+#include "utils.h"
static gchar *menu_translate(const gchar *path, gpointer data);
return gtk_item_factory_get_widget(*factory, path);
}
+GtkWidget *popupmenu_create(GtkWidget *window, GtkItemFactoryEntry *entries,
+ guint n_entries, const gchar *path, gpointer data)
+{
+ GtkItemFactory *factory;
+ GtkAccelGroup *accel_group;
+
+ accel_group = gtk_accel_group_new();
+ factory = gtk_item_factory_new(GTK_TYPE_MENU, path, accel_group);
+ gtk_item_factory_set_translate_func(factory, menu_translate,
+ NULL, NULL);
+ gtk_item_factory_create_items(factory, n_entries, entries, data);
+ gtk_accel_group_attach(accel_group, GTK_OBJECT(window));
+
+ return gtk_item_factory_get_widget(factory, path);
+}
+
static gchar *menu_translate(const gchar *path, gpointer data)
{
gchar *retval;
g_return_if_fail(ifactory != NULL);
widget = gtk_item_factory_get_item(ifactory, path);
+ if(widget == NULL) {
+ debug_print("unknown menu entry %s\n", path);
+ return;
+ }
gtk_widget_set_sensitive(widget, sensitive);
}
-void menu_set_insensitive_all(GtkMenuShell *menu_shell)
+void menu_set_sensitive_all(GtkMenuShell *menu_shell, gboolean sensitive)
{
GList *cur;
for (cur = menu_shell->children; cur != NULL; cur = cur->next)
- gtk_widget_set_sensitive(GTK_WIDGET(cur->data), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(cur->data), sensitive);
}
void menu_set_toggle(GtkItemFactory *ifactory, const gchar *path,
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(widget), active);
}
+void menu_toggle_toggle(GtkItemFactory *ifactory, const gchar *path)
+{
+ GtkWidget *widget;
+
+ g_return_if_fail(ifactory != NULL);
+
+ widget = gtk_item_factory_get_item(ifactory, path);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), !((GTK_CHECK_MENU_ITEM(widget))->active));
+}
+
void menu_button_position(GtkMenu *menu, gint *x, gint *y, gpointer user_data)
{
GtkWidget *button;
*x = xpos;
*y = ypos;
}
+
+gint menu_find_option_menu_index(GtkOptionMenu *optmenu, gpointer data,
+ GCompareFunc func)
+{
+ GtkWidget *menu;
+ GtkWidget *menuitem;
+ gpointer menu_data;
+ GList *cur;
+ gint n;
+
+ menu = gtk_option_menu_get_menu(optmenu);
+
+ for (cur = GTK_MENU_SHELL(menu)->children, n = 0;
+ cur != NULL; cur = cur->next, n++) {
+ menuitem = GTK_WIDGET(cur->data);
+ menu_data = gtk_object_get_user_data(GTK_OBJECT(menuitem));
+ if (func) {
+ if (func(menu_data, data) == 0)
+ return n;
+ } else if (menu_data == data)
+ return n;
+ }
+
+ return -1;
+}
+