summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Dywan <christian@twotoasts.de>2009-10-07 18:14:27 +0200
committerJavier Jardón <jjardon@gnome.org>2010-05-03 01:40:40 +0200
commit474529e2c06e38f941bea91ed4decdfaceee9a56 (patch)
tree19722d403a28c630085022c4b4fd695e6775b470
parentea36fff086dc5afc4993f7f6bc970c61bda56c00 (diff)
downloadgtk+-474529e2c06e38f941bea91ed4decdfaceee9a56.tar.gz
Remove GtkItemFactory completely
-rw-r--r--gtk/gtkitemfactory.c1586
-rw-r--r--gtk/gtkitemfactory.h236
2 files changed, 0 insertions, 1822 deletions
diff --git a/gtk/gtkitemfactory.c b/gtk/gtkitemfactory.c
deleted file mode 100644
index 4197866b14..0000000000
--- a/gtk/gtkitemfactory.c
+++ /dev/null
@@ -1,1586 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkItemFactory: Flexible item factory with automatic rc handling
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include <config.h>
-
-#undef GTK_DISABLE_DEPRECATED
-#include "gtkitemfactory.h"
-#include "gtkoptionmenu.h"
-#include "gtkmenubar.h"
-#include "gtkmenu.h"
-#include "gtkmenuitem.h"
-#include "gtkradiomenuitem.h"
-#include "gtkcheckmenuitem.h"
-#include "gtkimagemenuitem.h"
-#include "gtktearoffmenuitem.h"
-#include "gtkaccelmap.h"
-#include "gtkaccellabel.h"
-#include "gdk/gdkkeysyms.h"
-#include "gtkimage.h"
-#include "gtkstock.h"
-#include "gtkiconfactory.h"
-#include "gtkintl.h"
-#include <string.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-
-#include "gtkalias.h"
-
-/* --- defines --- */
-#define ITEM_FACTORY_STRING ((gchar*) item_factory_string)
-#define ITEM_BLOCK_SIZE (128)
-
-
-/* --- structures --- */
-typedef struct _GtkIFCBData GtkIFCBData;
-typedef struct _GtkIFDumpData GtkIFDumpData;
-struct _GtkIFCBData
-{
- GtkItemFactoryCallback func;
- guint callback_type;
- gpointer func_data;
- guint callback_action;
-};
-
-
-/* --- prototypes --- */
-static void gtk_item_factory_destroy (GtkObject *object);
-static void gtk_item_factory_finalize (GObject *object);
-
-
-/* --- static variables --- */
-static const gchar item_factory_string[] = "Gtk-<ItemFactory>";
-static GQuark quark_popup_data = 0;
-static GQuark quark_if_menu_pos = 0;
-static GQuark quark_item_factory = 0;
-static GQuark quark_item_path = 0;
-static GQuark quark_action = 0;
-static GQuark quark_accel_group = 0;
-static GQuark quark_type_item = 0;
-static GQuark quark_type_title = 0;
-static GQuark quark_type_radio_item = 0;
-static GQuark quark_type_check_item = 0;
-static GQuark quark_type_toggle_item = 0;
-static GQuark quark_type_image_item = 0;
-static GQuark quark_type_stock_item = 0;
-static GQuark quark_type_tearoff_item = 0;
-static GQuark quark_type_separator_item = 0;
-static GQuark quark_type_branch = 0;
-static GQuark quark_type_last_branch = 0;
-
-G_DEFINE_TYPE (GtkItemFactory, gtk_item_factory, GTK_TYPE_OBJECT)
-
-/* --- functions --- */
-static void
-gtk_item_factory_class_init (GtkItemFactoryClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (class);
-
- gobject_class->finalize = gtk_item_factory_finalize;
-
- object_class->destroy = gtk_item_factory_destroy;
-
- class->item_ht = g_hash_table_new (g_str_hash, g_str_equal);
-
- quark_popup_data = g_quark_from_static_string ("GtkItemFactory-popup-data");
- quark_if_menu_pos = g_quark_from_static_string ("GtkItemFactory-menu-position");
- quark_item_factory = g_quark_from_static_string ("GtkItemFactory");
- quark_item_path = g_quark_from_static_string ("GtkItemFactory-path");
- quark_action = g_quark_from_static_string ("GtkItemFactory-action");
- quark_accel_group = g_quark_from_static_string ("GtkAccelGroup");
- quark_type_item = g_quark_from_static_string ("<Item>");
- quark_type_title = g_quark_from_static_string ("<Title>");
- quark_type_radio_item = g_quark_from_static_string ("<RadioItem>");
- quark_type_check_item = g_quark_from_static_string ("<CheckItem>");
- quark_type_toggle_item = g_quark_from_static_string ("<ToggleItem>");
- quark_type_image_item = g_quark_from_static_string ("<ImageItem>");
- quark_type_stock_item = g_quark_from_static_string ("<StockItem>");
- quark_type_separator_item = g_quark_from_static_string ("<Separator>");
- quark_type_tearoff_item = g_quark_from_static_string ("<Tearoff>");
- quark_type_branch = g_quark_from_static_string ("<Branch>");
- quark_type_last_branch = g_quark_from_static_string ("<LastBranch>");
-}
-
-static void
-gtk_item_factory_init (GtkItemFactory *ifactory)
-{
- ifactory->path = NULL;
- ifactory->accel_group = NULL;
- ifactory->widget = NULL;
- ifactory->items = NULL;
- ifactory->translate_func = NULL;
- ifactory->translate_data = NULL;
- ifactory->translate_notify = NULL;
-}
-
-/**
- * gtk_item_factory_new:
- * @container_type: the kind of menu to create; can be
- * #GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
- * @path: the factory path of the new item factory, a string of the form
- * <literal>"&lt;name&gt;"</literal>
- * @accel_group: (allow-none): a #GtkAccelGroup to which the accelerators for the
- * menu items will be added, or %NULL to create a new one
- * @returns: a new #GtkItemFactory
- *
- * Creates a new #GtkItemFactory.
- *
- * Beware that the returned object does not have a floating reference.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_new (GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (path != NULL, NULL);
-
- ifactory = g_object_new (GTK_TYPE_ITEM_FACTORY, NULL);
- gtk_item_factory_construct (ifactory, container_type, path, accel_group);
-
- return ifactory;
-}
-
-static void
-gtk_item_factory_callback_marshal (GtkWidget *widget,
- gpointer func_data)
-{
- GtkIFCBData *data;
-
- data = func_data;
-
- if (data->callback_type == 1)
- {
- GtkItemFactoryCallback1 func1 = (GtkItemFactoryCallback1) data->func;
- func1 (data->func_data, data->callback_action, widget);
- }
- else if (data->callback_type == 2)
- {
- GtkItemFactoryCallback2 func2 = (GtkItemFactoryCallback2) data->func;
- func2 (widget, data->func_data, data->callback_action);
- }
-}
-
-static void
-gtk_item_factory_item_remove_widget (GtkWidget *widget,
- GtkItemFactoryItem *item)
-{
- item->widgets = g_slist_remove (item->widgets, widget);
- g_object_set_qdata (G_OBJECT (widget), quark_item_factory, NULL);
- g_object_set_qdata (G_OBJECT (widget), quark_item_path, NULL);
-}
-
-/**
- * gtk_item_factory_add_foreign:
- * @accel_widget: widget to install an accelerator on
- * @full_path: the full path for the @accel_widget
- * @accel_group: the accelerator group to install the accelerator in
- * @keyval: key value of the accelerator
- * @modifiers: modifier combination of the accelerator
- *
- * Installs an accelerator for @accel_widget in @accel_group, that causes
- * the ::activate signal to be emitted if the accelerator is activated.
- *
- * This function can be used to make widgets participate in the accel
- * saving/restoring functionality provided by gtk_accel_map_save() and
- * gtk_accel_map_load(), even if they haven't been created by an item
- * factory.
- *
- * Deprecated: 2.4: The recommended API for this purpose are the functions
- * gtk_menu_item_set_accel_path() and gtk_widget_set_accel_path(); don't
- * use gtk_item_factory_add_foreign() in new code, since it is likely to
- * be removed in the future.
- */
-void
-gtk_item_factory_add_foreign (GtkWidget *accel_widget,
- const gchar *full_path,
- GtkAccelGroup *accel_group,
- guint keyval,
- GdkModifierType modifiers)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_if_fail (GTK_IS_WIDGET (accel_widget));
- g_return_if_fail (full_path != NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- keyval = keyval != GDK_VoidSymbol ? keyval : 0;
-
- item = g_hash_table_lookup (class->item_ht, full_path);
- if (!item)
- {
- item = g_slice_new (GtkItemFactoryItem);
-
- item->path = g_strdup (full_path);
- item->widgets = NULL;
-
- g_hash_table_insert (class->item_ht, item->path, item);
- }
-
- item->widgets = g_slist_prepend (item->widgets, accel_widget);
- g_signal_connect (accel_widget,
- "destroy",
- G_CALLBACK (gtk_item_factory_item_remove_widget),
- item);
-
- /* set the item path for the widget
- */
- g_object_set_qdata (G_OBJECT (accel_widget), quark_item_path, item->path);
- gtk_widget_set_name (accel_widget, item->path);
- if (accel_group)
- {
- g_object_ref (accel_group);
- g_object_set_qdata_full (G_OBJECT (accel_widget),
- quark_accel_group,
- accel_group,
- g_object_unref);
- }
- else
- g_object_set_qdata (G_OBJECT (accel_widget), quark_accel_group, NULL);
-
- /* install defined accelerators
- */
- if (g_signal_lookup ("activate", G_TYPE_FROM_INSTANCE (accel_widget)))
- {
- if (accel_group)
- {
- gtk_accel_map_add_entry (full_path, keyval, modifiers);
- gtk_widget_set_accel_path (accel_widget, full_path, accel_group);
- }
- }
-}
-
-static void
-ifactory_cb_data_free (gpointer mem)
-{
- g_slice_free (GtkIFCBData, mem);
-}
-
-static void
-gtk_item_factory_add_item (GtkItemFactory *ifactory,
- const gchar *path,
- const gchar *accelerator,
- GtkItemFactoryCallback callback,
- guint callback_action,
- gpointer callback_data,
- guint callback_type,
- gchar *item_type,
- GtkWidget *widget)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
- gchar *fpath;
- guint keyval;
- GdkModifierType mods;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (item_type != NULL);
-
- class = GTK_ITEM_FACTORY_GET_CLASS (ifactory);
-
- /* set accelerator group on menu widgets
- */
- if (GTK_IS_MENU (widget))
- gtk_menu_set_accel_group ((GtkMenu*) widget, ifactory->accel_group);
-
- /* connect callback if necessary
- */
- if (callback)
- {
- GtkIFCBData *data;
-
- data = g_slice_new (GtkIFCBData);
- data->func = callback;
- data->callback_type = callback_type;
- data->func_data = callback_data;
- data->callback_action = callback_action;
-
- g_object_weak_ref (G_OBJECT (widget),
- (GWeakNotify) ifactory_cb_data_free,
- data);
- g_signal_connect (widget,
- "activate",
- G_CALLBACK (gtk_item_factory_callback_marshal),
- data);
- }
-
- /* link the widget into its item-entry
- * and keep back pointer on both the item factory and the widget
- */
- g_object_set_qdata (G_OBJECT (widget), quark_action, GUINT_TO_POINTER (callback_action));
- g_object_set_qdata (G_OBJECT (widget), quark_item_factory, ifactory);
- if (accelerator)
- gtk_accelerator_parse (accelerator, &keyval, &mods);
- else
- {
- keyval = 0;
- mods = 0;
- }
- fpath = g_strconcat (ifactory->path, path, NULL);
- gtk_item_factory_add_foreign (widget, fpath, ifactory->accel_group, keyval, mods);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
-
- g_return_if_fail (item != NULL);
-
- if (!g_slist_find (ifactory->items, item))
- ifactory->items = g_slist_prepend (ifactory->items, item);
-}
-
-/**
- * gtk_item_factory_construct:
- * @ifactory: a #GtkItemFactory
- * @container_type: the kind of menu to create; can be
- * #GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
- * @path: the factory path of @ifactory, a string of the form
- * <literal>"&lt;name&gt;"</literal>
- * @accel_group: a #GtkAccelGroup to which the accelerators for the
- * menu items will be added, or %NULL to create a new one
- *
- * Initializes an item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_construct (GtkItemFactory *ifactory,
- GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group)
-{
- guint len;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (ifactory->accel_group == NULL);
- g_return_if_fail (path != NULL);
- if (!g_type_is_a (container_type, GTK_TYPE_OPTION_MENU))
- g_return_if_fail (g_type_is_a (container_type, GTK_TYPE_MENU_SHELL));
-
- len = strlen (path);
-
- if (path[0] != '<' && path[len - 1] != '>')
- {
- g_warning ("GtkItemFactory: invalid factory path `%s'", path);
- return;
- }
-
- if (accel_group)
- {
- ifactory->accel_group = accel_group;
- g_object_ref (ifactory->accel_group);
- }
- else
- ifactory->accel_group = gtk_accel_group_new ();
-
- ifactory->path = g_strdup (path);
- ifactory->widget = g_object_connect (g_object_new (container_type, NULL),
- "signal::destroy", gtk_widget_destroyed, &ifactory->widget,
- NULL);
- g_object_ref_sink (ifactory);
-
- gtk_item_factory_add_item (ifactory,
- "", NULL,
- NULL, 0, NULL, 0,
- ITEM_FACTORY_STRING,
- ifactory->widget);
-}
-
-/**
- * gtk_item_factory_from_path:
- * @path: a string starting with a factory path of the form
- * <literal>"&lt;name&gt;"</literal>
- * @returns: (allow-none): the #GtkItemFactory created for the given factory path, or %NULL
- *
- * Finds an item factory which has been constructed using the
- * <literal>"&lt;name&gt;"</literal> prefix of @path as the @path argument
- * for gtk_item_factory_new().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_from_path (const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
- gchar *fname;
- guint i;
-
- g_return_val_if_fail (path != NULL, NULL);
- g_return_val_if_fail (path[0] == '<', NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- i = 0;
- while (path[i] && path[i] != '>')
- i++;
- if (path[i] != '>')
- {
- g_warning ("gtk_item_factory_from_path(): invalid factory path \"%s\"",
- path);
- return NULL;
- }
- fname = g_new (gchar, i + 2);
- g_memmove (fname, path, i + 1);
- fname[i + 1] = 0;
-
- item = g_hash_table_lookup (class->item_ht, fname);
-
- g_free (fname);
-
- if (item && item->widgets)
- return gtk_item_factory_from_widget (item->widgets->data);
-
- return NULL;
-}
-
-static void
-gtk_item_factory_destroy (GtkObject *object)
-{
- GtkItemFactory *ifactory = (GtkItemFactory*) object;
- GSList *slist;
-
- if (ifactory->widget)
- {
- GtkObject *dobj;
-
- dobj = GTK_OBJECT (ifactory->widget);
-
- g_object_ref_sink (dobj);
- gtk_object_destroy (dobj);
- g_object_unref (dobj);
-
- ifactory->widget = NULL;
- }
-
- for (slist = ifactory->items; slist; slist = slist->next)
- {
- GtkItemFactoryItem *item = slist->data;
- GSList *link;
-
- for (link = item->widgets; link; link = link->next)
- if (g_object_get_qdata (link->data, quark_item_factory) == ifactory)
- g_object_set_qdata (link->data, quark_item_factory, NULL);
- }
- g_slist_free (ifactory->items);
- ifactory->items = NULL;
-
- GTK_OBJECT_CLASS (gtk_item_factory_parent_class)->destroy (object);
-}
-
-static void
-gtk_item_factory_finalize (GObject *object)
-{
- GtkItemFactory *ifactory = GTK_ITEM_FACTORY (object);
-
- if (ifactory->accel_group)
- g_object_unref (ifactory->accel_group);
-
- g_free (ifactory->path);
- g_assert (ifactory->widget == NULL);
-
- if (ifactory->translate_notify)
- ifactory->translate_notify (ifactory->translate_data);
-
- G_OBJECT_CLASS (gtk_item_factory_parent_class)->finalize (object);
-}
-
-/**
- * gtk_item_factory_from_widget:
- * @widget: a widget
- * @returns: (allow-none): the item factory from which @widget was created, or %NULL
- *
- * Obtains the item factory from which a widget was created.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkItemFactory*
-gtk_item_factory_from_widget (GtkWidget *widget)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- ifactory = g_object_get_qdata (G_OBJECT (widget), quark_item_factory);
-
- if (ifactory == NULL && GTK_IS_MENU_ITEM (widget) &&
- GTK_MENU_ITEM (widget)->submenu != NULL)
- {
- GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
- ifactory = g_object_get_qdata (G_OBJECT (menu), quark_item_factory);
- }
-
- return ifactory;
-}
-
-/**
- * gtk_item_factory_path_from_widget:
- * @widget: a widget
- * @returns: the full path to @widget if it has been created by an item
- * factory, %NULL otherwise. This value is owned by GTK+ and must not be
- * modified or freed.
- *
- * If @widget has been created by an item factory, returns the full path
- * to it. (The full path of a widget is the concatenation of the factory
- * path specified in gtk_item_factory_new() with the path specified in the
- * #GtkItemFactoryEntry from which the widget was created.)
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-G_CONST_RETURN gchar*
-gtk_item_factory_path_from_widget (GtkWidget *widget)
-{
- gchar* path;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- path = g_object_get_qdata (G_OBJECT (widget), quark_item_path);
-
- if (path == NULL && GTK_IS_MENU_ITEM (widget) &&
- GTK_MENU_ITEM (widget)->submenu != NULL)
- {
- GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
- path = g_object_get_qdata (G_OBJECT (menu), quark_item_path);
- }
-
- return path;
-}
-
-/**
- * gtk_item_factory_create_items:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s whose @callback members
- * must by of type #GtkItemFactoryCallback1
- * @callback_data: data passed to the callback functions of all entries
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_items (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data)
-{
- gtk_item_factory_create_items_ac (ifactory, n_entries, entries, callback_data, 1);
-}
-
-/**
- * gtk_item_factory_create_items_ac:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s
- * @callback_data: data passed to the callback functions of all entries
- * @callback_type: 1 if the callback functions in @entries are of type
- * #GtkItemFactoryCallback1, 2 if they are of type #GtkItemFactoryCallback2
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_items_ac (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data,
- guint callback_type)
-{
- guint i;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (callback_type >= 1 && callback_type <= 2);
-
- if (n_entries == 0)
- return;
-
- g_return_if_fail (entries != NULL);
-
- for (i = 0; i < n_entries; i++)
- gtk_item_factory_create_item (ifactory, entries + i, callback_data, callback_type);
-}
-
-/**
- * gtk_item_factory_get_widget:
- * @ifactory: a #GtkItemFactory
- * @path: the path to the widget
- * @returns: (allow-none): the widget for the given path, or %NULL if @path doesn't lead
- * to a widget
- *
- * Obtains the widget which corresponds to @path.
- *
- * If the widget corresponding to @path is a menu item which opens a
- * submenu, then the submenu is returned. If you are interested in the menu
- * item, use gtk_item_factory_get_item() instead.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_widget (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
- g_return_val_if_fail (path != NULL, NULL);
-
- class = GTK_ITEM_FACTORY_GET_CLASS (ifactory);
-
- if (path[0] == '<')
- item = g_hash_table_lookup (class->item_ht, (gpointer) path);
- else
- {
- gchar *fpath;
-
- fpath = g_strconcat (ifactory->path, path, NULL);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
- }
-
- if (item)
- {
- GSList *slist;
-
- for (slist = item->widgets; slist; slist = slist->next)
- {
- if (gtk_item_factory_from_widget (slist->data) == ifactory)
- return slist->data;
- }
- }
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_get_widget_by_action:
- * @ifactory: a #GtkItemFactory
- * @action: an action as specified in the @callback_action field
- * of #GtkItemFactoryEntry
- * @returns: (allow-none): the widget which corresponds to the given action, or %NULL
- * if no widget was found
- *
- * Obtains the widget which was constructed from the #GtkItemFactoryEntry
- * with the given @action.
- *
- * If there are multiple items with the same action, the result is
- * undefined.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_widget_by_action (GtkItemFactory *ifactory,
- guint action)
-{
- GSList *slist;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- for (slist = ifactory->items; slist; slist = slist->next)
- {
- GtkItemFactoryItem *item = slist->data;
- GSList *link;
-
- for (link = item->widgets; link; link = link->next)
- if (g_object_get_qdata (link->data, quark_item_factory) == ifactory &&
- g_object_get_qdata (link->data, quark_action) == GUINT_TO_POINTER (action))
- return link->data;
- }
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_get_item:
- * @ifactory: a #GtkItemFactory
- * @path: the path to the menu item
- * @returns: (allow-none): the menu item for the given path, or %NULL if @path doesn't
- * lead to a menu item
- *
- * Obtains the menu item which corresponds to @path.
- *
- * If the widget corresponding to @path is a menu item which opens a
- * submenu, then the item is returned. If you are interested in the submenu,
- * use gtk_item_factory_get_widget() instead.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_item (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
- g_return_val_if_fail (path != NULL, NULL);
-
- widget = gtk_item_factory_get_widget (ifactory, path);
-
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- return GTK_IS_ITEM (widget) ? widget : NULL;
-}
-
-
-/**
- * gtk_item_factory_get_item_by_action:
- * @ifactory: a #GtkItemFactory
- * @action: an action as specified in the @callback_action field
- * of #GtkItemFactoryEntry
- * @returns: (allow-none): the menu item which corresponds to the given action, or %NULL
- * if no menu item was found
- *
- * Obtains the menu item which was constructed from the first
- * #GtkItemFactoryEntry with the given @action.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-GtkWidget*
-gtk_item_factory_get_item_by_action (GtkItemFactory *ifactory,
- guint action)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- widget = gtk_item_factory_get_widget_by_action (ifactory, action);
-
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- return GTK_IS_ITEM (widget) ? widget : NULL;
-}
-
-static char *
-item_factory_find_separator_r (char *path)
-{
- gchar *result = NULL;
- gboolean escaped = FALSE;
-
- while (*path)
- {
- if (escaped)
- escaped = FALSE;
- else
- {
- if (*path == '\\')
- escaped = TRUE;
- else if (*path == '/')
- result = path;
- }
-
- path++;
- }
-
- return result;
-}
-
-static char *
-item_factory_unescape_label (const char *label)
-{
- char *new = g_malloc (strlen (label) + 1);
- char *p = new;
- gboolean escaped = FALSE;
-
- while (*label)
- {
- if (escaped)
- {
- *p++ = *label;
- escaped = FALSE;
- }
- else
- {
- if (*label == '\\')
- escaped = TRUE;
- else
- *p++ = *label;
- }
-
- label++;
- }
-
- *p = '\0';
-
- return new;
-}
-
-static gboolean
-gtk_item_factory_parse_path (GtkItemFactory *ifactory,
- gchar *str,
- gchar **path,
- gchar **parent_path,
- gchar **item)
-{
- gchar *translation;
- gchar *p, *q;
-
- *path = g_strdup (str);
-
- p = q = *path;
- while (*p)
- {
- if (*p == '_')
- {
- if (p[1] == '_')
- {
- p++;
- *q++ = '_';
- }
- }
- else
- {
- *q++ = *p;
- }
- p++;
- }
- *q = 0;
-
- *parent_path = g_strdup (*path);
- p = item_factory_find_separator_r (*parent_path);
- if (!p)
- {
- g_warning ("GtkItemFactory: invalid entry path `%s'", str);
- return FALSE;
- }
- *p = 0;
-
- if (ifactory->translate_func)
- translation = ifactory->translate_func (str, ifactory->translate_data);
- else
- translation = str;
-
- p = item_factory_find_separator_r (translation);
- if (p)
- p++;
- else
- p = translation;
-
- *item = item_factory_unescape_label (p);
-
- return TRUE;
-}
-
-/**
- * gtk_item_factory_create_item:
- * @ifactory: a #GtkItemFactory
- * @entry: the #GtkItemFactoryEntry to create an item for
- * @callback_data: data passed to the callback function of @entry
- * @callback_type: 1 if the callback function of @entry is of type
- * #GtkItemFactoryCallback1, 2 if it is of type #GtkItemFactoryCallback2
- *
- * Creates an item for @entry.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_item (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry,
- gpointer callback_data,
- guint callback_type)
-{
- GtkOptionMenu *option_menu = NULL;
- GtkWidget *parent;
- GtkWidget *widget;
- GtkWidget *image;
- GSList *radio_group;
- gchar *name;
- gchar *parent_path;
- gchar *path;
- gchar *accelerator;
- guint type_id;
- GType type;
- gchar *item_type_path;
- GtkStockItem stock_item;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (entry != NULL);
- g_return_if_fail (entry->path != NULL);
- g_return_if_fail (entry->path[0] == '/');
- g_return_if_fail (callback_type >= 1 && callback_type <= 2);
-
- if (!entry->item_type ||
- entry->item_type[0] == 0)
- {
- item_type_path = "<Item>";
- type_id = quark_type_item;
- }
- else
- {
- item_type_path = entry->item_type;
- type_id = g_quark_try_string (item_type_path);
- }
-
- radio_group = NULL;
- if (type_id == quark_type_item)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_title)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_radio_item)
- type = GTK_TYPE_RADIO_MENU_ITEM;
- else if (type_id == quark_type_check_item)
- type = GTK_TYPE_CHECK_MENU_ITEM;
- else if (type_id == quark_type_image_item)
- type = GTK_TYPE_IMAGE_MENU_ITEM;
- else if (type_id == quark_type_stock_item)
- type = GTK_TYPE_IMAGE_MENU_ITEM;
- else if (type_id == quark_type_tearoff_item)
- type = GTK_TYPE_TEAROFF_MENU_ITEM;
- else if (type_id == quark_type_toggle_item)
- type = GTK_TYPE_CHECK_MENU_ITEM;
- else if (type_id == quark_type_separator_item)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_branch)
- type = GTK_TYPE_MENU_ITEM;
- else if (type_id == quark_type_last_branch)
- type = GTK_TYPE_MENU_ITEM;
- else
- {
- GtkWidget *radio_link;
-
- radio_link = gtk_item_factory_get_widget (ifactory, item_type_path);
- if (radio_link && GTK_IS_RADIO_MENU_ITEM (radio_link))
- {
- type = GTK_TYPE_RADIO_MENU_ITEM;
- radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (radio_link));
- }
- else
- {
- g_warning ("GtkItemFactory: entry path `%s' has invalid type `%s'",
- entry->path,
- item_type_path);
- return;
- }
- }
-
- if (!gtk_item_factory_parse_path (ifactory, entry->path,
- &path, &parent_path, &name))
- return;
-
- parent = gtk_item_factory_get_widget (ifactory, parent_path);
- if (!parent)
- {
- GtkItemFactoryEntry pentry;
- gchar *ppath, *p;
-
- ppath = g_strdup (entry->path);
- p = item_factory_find_separator_r (ppath);
- g_return_if_fail (p != NULL);
- *p = 0;
- pentry.path = ppath;
- pentry.accelerator = NULL;
- pentry.callback = NULL;
- pentry.callback_action = 0;
- pentry.item_type = "<Branch>";
-
- gtk_item_factory_create_item (ifactory, &pentry, NULL, 1);
- g_free (ppath);
-
- parent = gtk_item_factory_get_widget (ifactory, parent_path);
- g_return_if_fail (parent != NULL);
- }
-
- if (GTK_IS_OPTION_MENU (parent))
- {
- option_menu = GTK_OPTION_MENU (parent);
- if (!option_menu->menu)
- {
- GtkWidget *menu = g_object_new (GTK_TYPE_MENU, NULL);
- gchar *p = g_strconcat (ifactory->path, parent_path, NULL);
-
- gtk_menu_set_accel_path (GTK_MENU (menu), p);
- g_free (p);
- gtk_option_menu_set_menu (option_menu, menu);
- }
- parent = option_menu->menu;
- }
- g_free (parent_path);
-
- g_return_if_fail (GTK_IS_CONTAINER (parent));
-
- accelerator = entry->accelerator;
-
- widget = g_object_new (type,
- "visible", TRUE,
- "sensitive", (type_id != quark_type_separator_item &&
- type_id != quark_type_title),
- "parent", parent,
- NULL);
- if (option_menu && !option_menu->menu_item)
- gtk_option_menu_set_history (option_menu, 0);
-
- if (GTK_IS_RADIO_MENU_ITEM (widget))
- gtk_radio_menu_item_set_group (GTK_RADIO_MENU_ITEM (widget), radio_group);
- if (type_id == quark_type_image_item)
- {
- GdkPixbuf *pixbuf = NULL;
- image = NULL;
- if (entry->extra_data)
- {
- pixbuf = gdk_pixbuf_new_from_inline (-1,
- entry->extra_data,
- FALSE,
- NULL);
- if (pixbuf)
- image = gtk_image_new_from_pixbuf (pixbuf);
- }
- if (image)
- {
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (widget), image);
- gtk_widget_show (image);
- }
- if (pixbuf)
- g_object_unref (pixbuf);
- }
- if (type_id == quark_type_stock_item)
- {
- image = gtk_image_new_from_stock (entry->extra_data, GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (widget), image);
- gtk_widget_show (image);
-
- if (gtk_stock_lookup (entry->extra_data, &stock_item))
- {
- if (!accelerator)
- accelerator = gtk_accelerator_name (stock_item.keyval, stock_item.modifier);
- }
- }
-
- /* install underline accelerators for this item
- */
- if (type_id != quark_type_separator_item &&
- type_id != quark_type_tearoff_item &&
- *name)
- {
- GtkWidget *label;
-
- label = g_object_new (GTK_TYPE_ACCEL_LABEL,
- "visible", TRUE,
- "parent", widget,
- "accel-widget", widget,
- "xalign", 0.0,
- NULL);
- gtk_label_set_text_with_mnemonic (GTK_LABEL (label), name);
- }
-
- g_free (name);
-
- if (type_id == quark_type_branch ||
- type_id == quark_type_last_branch)
- {
- gchar *p;
-
- if (entry->callback)
- g_warning ("gtk_item_factory_create_item(): Can't specify a callback on a branch: \"%s\"",
- entry->path);
- if (type_id == quark_type_last_branch)
- gtk_menu_item_set_right_justified (GTK_MENU_ITEM (widget), TRUE);
-
- parent = widget;
- widget = g_object_new (GTK_TYPE_MENU, NULL);
- p = g_strconcat (ifactory->path, path, NULL);
- gtk_menu_set_accel_path (GTK_MENU (widget), p);
- g_free (p);
-
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (parent), widget);
- }
-
- gtk_item_factory_add_item (ifactory,
- path, accelerator,
- (type_id == quark_type_branch ||
- type_id == quark_type_last_branch) ?
- (GtkItemFactoryCallback) NULL : entry->callback,
- entry->callback_action, callback_data,
- callback_type,
- item_type_path,
- widget);
- if (accelerator != entry->accelerator)
- g_free (accelerator);
- g_free (path);
-}
-
-/**
- * gtk_item_factory_create_menu_entries:
- * @n_entries: the length of @entries
- * @entries: an array of #GtkMenuEntry<!-- -->s
- *
- * Creates the menu items from the @entries.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_create_menu_entries (guint n_entries,
- GtkMenuEntry *entries)
-{
- static GPatternSpec *pspec_separator = NULL;
- static GPatternSpec *pspec_check = NULL;
- guint i;
-
- if (!n_entries)
- return;
- g_return_if_fail (entries != NULL);
-
- if (!pspec_separator)
- {
- pspec_separator = g_pattern_spec_new ("*<separator>*");
- pspec_check = g_pattern_spec_new ("*<check>*");
- }
-
- for (i = 0; i < n_entries; i++)
- {
- GtkItemFactory *ifactory;
- GtkItemFactoryEntry entry;
- gchar *path;
- gchar *cpath;
-
- path = entries[i].path;
- ifactory = gtk_item_factory_from_path (path);
- if (!ifactory)
- {
- g_warning ("gtk_item_factory_create_menu_entries(): "
- "entry[%u] refers to unknown item factory: \"%s\"",
- i, entries[i].path);
- continue;
- }
-
- while (*path != '>')
- path++;
- path++;
- cpath = NULL;
-
- entry.path = path;
- entry.accelerator = entries[i].accelerator;
- entry.callback = entries[i].callback;
- entry.callback_action = 0;
- if (g_pattern_match_string (pspec_separator, path))
- entry.item_type = "<Separator>";
- else if (!g_pattern_match_string (pspec_check, path))
- entry.item_type = NULL;
- else
- {
- gboolean in_brace = FALSE;
- gchar *c;
-
- cpath = g_new (gchar, strlen (path));
- c = cpath;
- while (*path != 0)
- {
- if (*path == '<')
- in_brace = TRUE;
- else if (*path == '>')
- in_brace = FALSE;
- else if (!in_brace)
- *(c++) = *path;
- path++;
- }
- *c = 0;
- entry.item_type = "<ToggleItem>";
- entry.path = cpath;
- }
-
- gtk_item_factory_create_item (ifactory, &entry, entries[i].callback_data, 2);
- entries[i].widget = gtk_item_factory_get_widget (ifactory, entries[i].path);
- g_free (cpath);
- }
-}
-
-/**
- * gtk_item_factories_path_delete:
- * @ifactory_path: a factory path to prepend to @path. May be %NULL if @path
- * starts with a factory path
- * @path: a path
- *
- * Deletes all widgets constructed from the specified path.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factories_path_delete (const gchar *ifactory_path,
- const gchar *path)
-{
- GtkItemFactoryClass *class;
- GtkItemFactoryItem *item;
-
- g_return_if_fail (path != NULL);
-
- class = gtk_type_class (GTK_TYPE_ITEM_FACTORY);
-
- if (path[0] == '<')
- item = g_hash_table_lookup (class->item_ht, (gpointer) path);
- else
- {
- gchar *fpath;
-
- g_return_if_fail (ifactory_path != NULL);
-
- fpath = g_strconcat (ifactory_path, path, NULL);
- item = g_hash_table_lookup (class->item_ht, fpath);
- g_free (fpath);
- }
-
- if (item)
- {
- GSList *widget_list;
- GSList *slist;
-
- widget_list = NULL;
- for (slist = item->widgets; slist; slist = slist->next)
- {
- GtkWidget *widget;
-
- widget = slist->data;
- widget_list = g_slist_prepend (widget_list, widget);
- g_object_ref (widget);
- }
-
- for (slist = widget_list; slist; slist = slist->next)
- {
- GtkWidget *widget;
-
- widget = slist->data;
- gtk_widget_destroy (widget);
- g_object_unref (widget);
- }
- g_slist_free (widget_list);
- }
-}
-
-/**
- * gtk_item_factory_delete_item:
- * @ifactory: a #GtkItemFactory
- * @path: a path
- *
- * Deletes the menu item which was created for @path by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_item (GtkItemFactory *ifactory,
- const gchar *path)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (path != NULL);
-
- widget = gtk_item_factory_get_widget (ifactory, path);
-
- if (widget)
- {
- if (GTK_IS_MENU (widget))
- widget = gtk_menu_get_attach_widget (GTK_MENU (widget));
-
- gtk_widget_destroy (widget);
- }
-}
-
-/**
- * gtk_item_factory_delete_entry:
- * @ifactory: a #GtkItemFactory
- * @entry: a #GtkItemFactoryEntry
- *
- * Deletes the menu item which was created from @entry by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_entry (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry)
-{
- gchar *path;
- gchar *parent_path;
- gchar *name;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (entry != NULL);
- g_return_if_fail (entry->path != NULL);
- g_return_if_fail (entry->path[0] == '/');
-
- if (!gtk_item_factory_parse_path (ifactory, entry->path,
- &path, &parent_path, &name))
- return;
-
- gtk_item_factory_delete_item (ifactory, path);
-
- g_free (path);
- g_free (parent_path);
- g_free (name);
-}
-
-/**
- * gtk_item_factory_delete_entries:
- * @ifactory: a #GtkItemFactory
- * @n_entries: the length of @entries
- * @entries: an array of #GtkItemFactoryEntry<!-- -->s
- *
- * Deletes the menu items which were created from the @entries by the given
- * item factory.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_delete_entries (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries)
-{
- guint i;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- if (n_entries > 0)
- g_return_if_fail (entries != NULL);
-
- for (i = 0; i < n_entries; i++)
- gtk_item_factory_delete_entry (ifactory, entries + i);
-}
-
-typedef struct
-{
- guint x;
- guint y;
-} MenuPos;
-
-static void
-gtk_item_factory_menu_pos (GtkMenu *menu,
- gint *x,
- gint *y,
- gboolean *push_in,
- gpointer func_data)
-{
- MenuPos *mpos = func_data;
-
- *x = mpos->x;
- *y = mpos->y;
-}
-
-/**
- * gtk_item_factory_popup_data_from_widget:
- * @widget: a widget
- * @returns: @popup_data associated with the item factory from
- * which @widget was created, or %NULL if @widget wasn't created
- * by an item factory
- *
- * Obtains the @popup_data which was passed to
- * gtk_item_factory_popup_with_data(). This data is available until the menu
- * is popped down again.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-gpointer
-gtk_item_factory_popup_data_from_widget (GtkWidget *widget)
-{
- GtkItemFactory *ifactory;
-
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- ifactory = gtk_item_factory_from_widget (widget);
- if (ifactory)
- return g_object_get_qdata (G_OBJECT (ifactory), quark_popup_data);
-
- return NULL;
-}
-
-/**
- * gtk_item_factory_popup_data:
- * @ifactory: a #GtkItemFactory
- * @returns: @popup_data associated with @ifactory
- *
- * Obtains the @popup_data which was passed to
- * gtk_item_factory_popup_with_data(). This data is available until the menu
- * is popped down again.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-gpointer
-gtk_item_factory_popup_data (GtkItemFactory *ifactory)
-{
- g_return_val_if_fail (GTK_IS_ITEM_FACTORY (ifactory), NULL);
-
- return g_object_get_qdata (G_OBJECT (ifactory), quark_popup_data);
-}
-
-static void
-ifactory_delete_popup_data (GtkObject *object,
- GtkItemFactory *ifactory)
-{
- g_signal_handlers_disconnect_by_func (object,
- ifactory_delete_popup_data,
- ifactory);
- g_object_set_qdata (G_OBJECT (ifactory), quark_popup_data, NULL);
-}
-
-/**
- * gtk_item_factory_popup:
- * @ifactory: a #GtkItemFactory of type #GTK_TYPE_MENU (see gtk_item_factory_new())
- * @x: the x position
- * @y: the y position
- * @mouse_button: the mouse button which was pressed to initiate the popup
- * @time_: the time at which the activation event occurred
- *
- * Pops up the menu constructed from the item factory at (@x, @y).
- *
- * The @mouse_button parameter should be the mouse button pressed to initiate
- * the menu popup. If the menu popup was initiated by something other than
- * a mouse button press, such as a mouse button release or a keypress,
- * @mouse_button should be 0.
- *
- * The @time_ parameter should be the time stamp of the event that
- * initiated the popup. If such an event is not available, use
- * gtk_get_current_event_time() instead.
- *
- * The operation of the @mouse_button and the @time_ parameter is the same
- * as the @button and @activation_time parameters for gtk_menu_popup().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_popup (GtkItemFactory *ifactory,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time)
-{
- gtk_item_factory_popup_with_data (ifactory, NULL, NULL, x, y, mouse_button, time);
-}
-
-/**
- * gtk_item_factory_popup_with_data:
- * @ifactory: a #GtkItemFactory of type #GTK_TYPE_MENU (see gtk_item_factory_new())
- * @popup_data: data available for callbacks while the menu is posted
- * @destroy: a #GDestroyNotify function to be called on @popup_data when
- * the menu is unposted
- * @x: the x position
- * @y: the y position
- * @mouse_button: the mouse button which was pressed to initiate the popup
- * @time_: the time at which the activation event occurred
- *
- * Pops up the menu constructed from the item factory at (@x, @y). Callbacks
- * can access the @popup_data while the menu is posted via
- * gtk_item_factory_popup_data() and gtk_item_factory_popup_data_from_widget().
- *
- * The @mouse_button parameter should be the mouse button pressed to initiate
- * the menu popup. If the menu popup was initiated by something other than
- * a mouse button press, such as a mouse button release or a keypress,
- * @mouse_button should be 0.
- *
- * The @time_ parameter should be the time stamp of the event that
- * initiated the popup. If such an event is not available, use
- * gtk_get_current_event_time() instead.
- *
- * The operation of the @mouse_button and the @time_ parameters is the same
- * as the @button and @activation_time parameters for gtk_menu_popup().
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_popup_with_data (GtkItemFactory *ifactory,
- gpointer popup_data,
- GDestroyNotify destroy,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time)
-{
- MenuPos *mpos;
-
- g_return_if_fail (GTK_IS_ITEM_FACTORY (ifactory));
- g_return_if_fail (GTK_IS_MENU (ifactory->widget));
-
- mpos = g_object_get_qdata (G_OBJECT (ifactory->widget), quark_if_menu_pos);
-
- if (!mpos)
- {
- mpos = g_new0 (MenuPos, 1);
- g_object_set_qdata_full (G_OBJECT (ifactory->widget),
- quark_if_menu_pos,
- mpos,
- g_free);
- }
-
- mpos->x = x;
- mpos->y = y;
-
- if (popup_data != NULL)
- {
- g_object_set_qdata_full (G_OBJECT (ifactory),
- quark_popup_data,
- popup_data,
- destroy);
- g_signal_connect (ifactory->widget,
- "selection-done",
- G_CALLBACK (ifactory_delete_popup_data),
- ifactory);
- }
-
- gtk_menu_popup (GTK_MENU (ifactory->widget),
- NULL, NULL,
- gtk_item_factory_menu_pos, mpos,
- mouse_button, time);
-}
-
-/**
- * gtk_item_factory_set_translate_func:
- * @ifactory: a #GtkItemFactory
- * @func: the #GtkTranslateFunc function to be used to translate path elements
- * @data: data to pass to @func and @notify
- * @notify: a #GDestroyNotify function to be called when @ifactory is
- * destroyed and when the translation function is changed again
- *
- * Sets a function to be used for translating the path elements before they
- * are displayed.
- *
- * Deprecated: 2.4: Use #GtkUIManager instead.
- */
-void
-gtk_item_factory_set_translate_func (GtkItemFactory *ifactory,
- GtkTranslateFunc func,
- gpointer data,
- GDestroyNotify notify)
-{
- g_return_if_fail (ifactory != NULL);
-
- if (ifactory->translate_notify)
- ifactory->translate_notify (ifactory->translate_data);
-
- ifactory->translate_func = func;
- ifactory->translate_data = data;
- ifactory->translate_notify = notify;
-}
-
-#define __GTK_ITEM_FACTORY_C__
-#include "gtkaliasdef.c"
diff --git a/gtk/gtkitemfactory.h b/gtk/gtkitemfactory.h
deleted file mode 100644
index 5c57b8032e..0000000000
--- a/gtk/gtkitemfactory.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * GtkItemFactory: Flexible item factory with automatic rc handling
- * Copyright (C) 1998 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef GTK_DISABLE_DEPRECATED
-
-#ifndef __GTK_ITEM_FACTORY_H__
-#define __GTK_ITEM_FACTORY_H__
-
-#include <gtk/gtk.h>
-
-
-G_BEGIN_DECLS
-
-typedef void (*GtkPrintFunc) (gpointer func_data,
- const gchar *str);
-/* We use () here to mean unspecified arguments. This is deprecated
- * as of C99, but we can't change it without breaking compatibility.
- * (Note that if we are included from a C++ program () will mean
- * (void) so an explicit cast will be needed.)
- */
-typedef void (*GtkItemFactoryCallback) ();
-typedef void (*GtkItemFactoryCallback1) (gpointer callback_data,
- guint callback_action,
- GtkWidget *widget);
-
-#define GTK_TYPE_ITEM_FACTORY (gtk_item_factory_get_type ())
-#define GTK_ITEM_FACTORY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_ITEM_FACTORY, GtkItemFactory))
-#define GTK_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ITEM_FACTORY, GtkItemFactoryClass))
-#define GTK_IS_ITEM_FACTORY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_ITEM_FACTORY))
-#define GTK_IS_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ITEM_FACTORY))
-#define GTK_ITEM_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ITEM_FACTORY, GtkItemFactoryClass))
-
-
-typedef struct _GtkItemFactory GtkItemFactory;
-typedef struct _GtkItemFactoryClass GtkItemFactoryClass;
-typedef struct _GtkItemFactoryEntry GtkItemFactoryEntry;
-typedef struct _GtkItemFactoryItem GtkItemFactoryItem;
-
-struct _GtkItemFactory
-{
- GtkObject object;
-
- gchar *path;
- GtkAccelGroup *accel_group;
- GtkWidget *widget;
- GSList *items;
-
- GtkTranslateFunc translate_func;
- gpointer translate_data;
- GDestroyNotify translate_notify;
-};
-
-struct _GtkItemFactoryClass
-{
- GtkObjectClass object_class;
-
- GHashTable *item_ht;
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-struct _GtkItemFactoryEntry
-{
- gchar *path;
- gchar *accelerator;
-
- GtkItemFactoryCallback callback;
- guint callback_action;
-
- /* possible values:
- * NULL -> "<Item>"
- * "" -> "<Item>"
- * "<Title>" -> create a title item
- * "<Item>" -> create a simple item
- * "<ImageItem>" -> create an item holding an image
- * "<StockItem>" -> create an item holding a stock image
- * "<CheckItem>" -> create a check item
- * "<ToggleItem>" -> create a toggle item
- * "<RadioItem>" -> create a radio item
- * <path> -> path of a radio item to link against
- * "<Separator>" -> create a separator
- * "<Tearoff>" -> create a tearoff separator
- * "<Branch>" -> create an item to hold sub items
- * "<LastBranch>" -> create a right justified item to hold sub items
- */
- gchar *item_type;
-
- /* Extra data for some item types:
- * ImageItem -> pointer to inlined pixbuf stream
- * StockItem -> name of stock item
- */
- gconstpointer extra_data;
-};
-
-struct _GtkItemFactoryItem
-{
- gchar *path;
- GSList *widgets;
-};
-
-
-GType gtk_item_factory_get_type (void) G_GNUC_CONST;
-
-/* `container_type' must be of GTK_TYPE_MENU_BAR, GTK_TYPE_MENU,
- * or GTK_TYPE_OPTION_MENU.
- */
-GtkItemFactory* gtk_item_factory_new (GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group);
-void gtk_item_factory_construct (GtkItemFactory *ifactory,
- GType container_type,
- const gchar *path,
- GtkAccelGroup *accel_group);
-
-/* These functions operate on GtkItemFactoryClass basis.
- */
-void gtk_item_factory_add_foreign (GtkWidget *accel_widget,
- const gchar *full_path,
- GtkAccelGroup *accel_group,
- guint keyval,
- GdkModifierType modifiers);
-
-GtkItemFactory* gtk_item_factory_from_widget (GtkWidget *widget);
-G_CONST_RETURN gchar* gtk_item_factory_path_from_widget (GtkWidget *widget);
-
-GtkWidget* gtk_item_factory_get_item (GtkItemFactory *ifactory,
- const gchar *path);
-GtkWidget* gtk_item_factory_get_widget (GtkItemFactory *ifactory,
- const gchar *path);
-GtkWidget* gtk_item_factory_get_widget_by_action (GtkItemFactory *ifactory,
- guint action);
-GtkWidget* gtk_item_factory_get_item_by_action (GtkItemFactory *ifactory,
- guint action);
-
-void gtk_item_factory_create_item (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry,
- gpointer callback_data,
- guint callback_type);
-void gtk_item_factory_create_items (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data);
-void gtk_item_factory_delete_item (GtkItemFactory *ifactory,
- const gchar *path);
-void gtk_item_factory_delete_entry (GtkItemFactory *ifactory,
- GtkItemFactoryEntry *entry);
-void gtk_item_factory_delete_entries (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries);
-void gtk_item_factory_popup (GtkItemFactory *ifactory,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time_);
-void gtk_item_factory_popup_with_data(GtkItemFactory *ifactory,
- gpointer popup_data,
- GDestroyNotify destroy,
- guint x,
- guint y,
- guint mouse_button,
- guint32 time_);
-gpointer gtk_item_factory_popup_data (GtkItemFactory *ifactory);
-gpointer gtk_item_factory_popup_data_from_widget (GtkWidget *widget);
-void gtk_item_factory_set_translate_func (GtkItemFactory *ifactory,
- GtkTranslateFunc func,
- gpointer data,
- GDestroyNotify notify);
-
-/* Compatibility functions for deprecated GtkMenuFactory code
- */
-
-/* Used by gtk_item_factory_create_menu_entries () */
-typedef void (*GtkMenuCallback) (GtkWidget *widget,
- gpointer user_data);
-typedef struct {
- gchar *path;
- gchar *accelerator;
- GtkMenuCallback callback;
- gpointer callback_data;
- GtkWidget *widget;
-} GtkMenuEntry;
-
-/* Used by gtk_item_factory_callback_marshal () */
-typedef void (*GtkItemFactoryCallback2) (GtkWidget *widget,
- gpointer callback_data,
- guint callback_action);
-
-/* Used by gtk_item_factory_create_items () */
-void gtk_item_factory_create_items_ac (GtkItemFactory *ifactory,
- guint n_entries,
- GtkItemFactoryEntry *entries,
- gpointer callback_data,
- guint callback_type);
-
-GtkItemFactory* gtk_item_factory_from_path (const gchar *path);
-void gtk_item_factory_create_menu_entries (guint n_entries,
- GtkMenuEntry *entries);
-void gtk_item_factories_path_delete (const gchar *ifactory_path,
- const gchar *path);
-
-G_END_DECLS
-
-#endif /* !GTK_DISABLE_DEPRECATED */
-
-#endif /* __GTK_ITEM_FACTORY_H__ */
-