changed all menus_get_*() functions to return the GtkItemFactory, not

2001-04-15  Michael Natterer  <mitch@gimp.org>

	* app/menus.[ch]: changed all menus_get_*() functions to return
	the GtkItemFactory, not separate widget, and accel_group
	pointers. Disabled automatic tearoff item creation for all
	factories axcept the toolbox and image factory.

	* app/channels_dialog.c
	* app/file-open.c
	* app/file-save.c
	* app/interface.c
	* app/layers_dialog.c
	* app/paths_dialog.c
	* app/toolbox.c: changed accordingly.
This commit is contained in:
Michael Natterer 2001-04-15 18:01:57 +00:00 committed by Michael Natterer
parent 1ac9c56aa3
commit a6d87e4b98
25 changed files with 431 additions and 462 deletions

View File

@ -1,3 +1,18 @@
2001-04-15 Michael Natterer <mitch@gimp.org>
* app/menus.[ch]: changed all menus_get_*() functions to return
the GtkItemFactory, not separate widget, and accel_group
pointers. Disabled automatic tearoff item creation for all
factories axcept the toolbox and image factory.
* app/channels_dialog.c
* app/file-open.c
* app/file-save.c
* app/interface.c
* app/layers_dialog.c
* app/paths_dialog.c
* app/toolbox.c: changed accordingly.
2001-04-15 Michael Natterer <mitch@gimp.org>
* app/Makefile.am

View File

@ -298,8 +298,9 @@ static guint n_component_targets = (sizeof (component_target_table) /
GtkWidget *
channels_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *button_box;
GtkItemFactory *channels_factory;
GtkWidget *vbox;
GtkWidget *button_box;
if (channelsD)
return channelsD->vbox;
@ -329,7 +330,10 @@ channels_dialog_create (void)
gtk_container_add (GTK_CONTAINER (channelsD->vbox), vbox);
/* The channels commands pulldown menu */
menus_get_channels_menu (&channelsD->ops_menu, &channelsD->accel_group);
channels_factory = menus_get_channels_factory ();
channelsD->ops_menu = channels_factory->widget;
channelsD->accel_group = channels_factory->accel_group;
/* The channels listbox */
channelsD->scrolled_win = gtk_scrolled_window_new (NULL, NULL);

View File

@ -184,7 +184,14 @@ create_display_shell (GDisplay *gdisp,
gdisplay_drop_viewable, gdisp);
if (! image_popup_menu)
menus_get_image_menu (&image_popup_menu, &image_accel_group);
{
GtkItemFactory *image_factory;
image_factory = menus_get_image_factory ();
image_popup_menu = image_factory->widget;
image_accel_group = image_factory->accel_group;
}
/* the popup menu */
gdisp->popup = image_popup_menu;

View File

@ -184,7 +184,14 @@ create_display_shell (GDisplay *gdisp,
gdisplay_drop_viewable, gdisp);
if (! image_popup_menu)
menus_get_image_menu (&image_popup_menu, &image_accel_group);
{
GtkItemFactory *image_factory;
image_factory = menus_get_image_factory ();
image_popup_menu = image_factory->widget;
image_accel_group = image_factory->accel_group;
}
/* the popup menu */
gdisp->popup = image_popup_menu;

View File

@ -327,7 +327,7 @@ file_open_dialog_create (void)
gtk_box_pack_start (GTK_BOX (hbox), option_menu, FALSE, FALSE, 0);
gtk_widget_show (option_menu);
menus_get_load_menu (&load_menu, NULL);
load_menu = menus_get_load_factory ()->widget;
gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), load_menu);
gtk_widget_show (vbox);

View File

@ -396,7 +396,7 @@ file_save_dialog_create (void)
gtk_box_pack_start (GTK_BOX (hbox), option_menu, TRUE, TRUE, 0);
gtk_widget_show (option_menu);
menus_get_save_menu (&save_menu, NULL);
save_menu = menus_get_save_factory ()->widget;
gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), save_menu);
gtk_widget_show (frame);

View File

@ -327,7 +327,7 @@ file_open_dialog_create (void)
gtk_box_pack_start (GTK_BOX (hbox), option_menu, FALSE, FALSE, 0);
gtk_widget_show (option_menu);
menus_get_load_menu (&load_menu, NULL);
load_menu = menus_get_load_factory ()->widget;
gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), load_menu);
gtk_widget_show (vbox);

View File

@ -396,7 +396,7 @@ file_save_dialog_create (void)
gtk_box_pack_start (GTK_BOX (hbox), option_menu, TRUE, TRUE, 0);
gtk_widget_show (option_menu);
menus_get_save_menu (&save_menu, NULL);
save_menu = menus_get_save_factory ()->widget;
gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), save_menu);
gtk_widget_show (frame);

View File

@ -298,8 +298,9 @@ static guint n_component_targets = (sizeof (component_target_table) /
GtkWidget *
channels_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *button_box;
GtkItemFactory *channels_factory;
GtkWidget *vbox;
GtkWidget *button_box;
if (channelsD)
return channelsD->vbox;
@ -329,7 +330,10 @@ channels_dialog_create (void)
gtk_container_add (GTK_CONTAINER (channelsD->vbox), vbox);
/* The channels commands pulldown menu */
menus_get_channels_menu (&channelsD->ops_menu, &channelsD->accel_group);
channels_factory = menus_get_channels_factory ();
channelsD->ops_menu = channels_factory->widget;
channelsD->accel_group = channels_factory->accel_group;
/* The channels listbox */
channelsD->scrolled_win = gtk_scrolled_window_new (NULL, NULL);

View File

@ -335,11 +335,12 @@ static guint n_trashcan_targets = (sizeof (trashcan_target_table) /
GtkWidget *
layers_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *util_box;
GtkWidget *button_box;
GtkWidget *label;
GtkWidget *slider;
GtkItemFactory *layers_factory;
GtkWidget *vbox;
GtkWidget *util_box;
GtkWidget *button_box;
GtkWidget *label;
GtkWidget *slider;
if (layersD)
return layersD->vbox;
@ -371,7 +372,10 @@ layers_dialog_create (void)
gtk_container_add (GTK_CONTAINER (layersD->vbox), vbox);
/* The layers commands pulldown menu */
menus_get_layers_menu (&layersD->ops_menu, &layersD->accel_group);
layers_factory = menus_get_layers_factory ();
layersD->ops_menu = layers_factory->widget;
layersD->accel_group = layers_factory->accel_group;
/* The Mode option menu, and the preserve transparency */
layersD->mode_box = util_box = gtk_hbox_new (FALSE, 1);

View File

@ -59,12 +59,14 @@
static void menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_branches (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry);
static void menus_init (void);
@ -879,101 +881,74 @@ static GtkItemFactory *dialogs_factory = NULL;
static gboolean menus_initialized = FALSE;
void
menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_toolbox_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menubar)
*menubar = toolbox_factory->widget;
if (accel_group)
*accel_group = toolbox_factory->accel_group;
return toolbox_factory;
}
void
menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_image_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = image_factory->widget;
if (accel_group)
*accel_group = image_factory->accel_group;
return image_factory;
}
void
menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_load_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = load_factory->widget;
if (accel_group)
*accel_group = load_factory->accel_group;
return load_factory;
}
void
menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_save_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = save_factory->widget;
if (accel_group)
*accel_group = save_factory->accel_group;
return save_factory;
}
void
menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_layers_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = layers_factory->widget;
if (accel_group)
*accel_group = layers_factory->accel_group;
return layers_factory;
}
void
menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_channels_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = channels_factory->widget;
if (accel_group)
*accel_group = channels_factory->accel_group;
return channels_factory;
}
void
menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_paths_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = paths_factory->widget;
if (accel_group)
*accel_group = paths_factory->accel_group;
return paths_factory;
}
GtkItemFactory *
menus_get_dialogs_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
return dialogs_factory;
@ -1014,7 +989,7 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
entry->entry.path = path;
menus_create_item (item_factory, entry, callback_data, 2);
menus_create_item (item_factory, entry, callback_data, 2, TRUE);
}
static void
@ -1055,7 +1030,7 @@ menus_create_branches (GtkItemFactory *item_factory,
branch_entry.entry.path = tearoff_path->str;
gtk_object_set_data (GTK_OBJECT (item_factory), "complete", path);
menus_create_item (item_factory, &branch_entry, NULL, 2);
menus_create_item (item_factory, &branch_entry, NULL, 2, TRUE);
gtk_object_remove_data (GTK_OBJECT (item_factory), "complete");
}
@ -1071,7 +1046,7 @@ menus_create_branches (GtkItemFactory *item_factory,
};
tearoff_entry.entry.path = tearoff_path->str;
menus_create_item (item_factory, &tearoff_entry, NULL, 2);
menus_create_item (item_factory, &tearoff_entry, NULL, 2, TRUE);
}
p = strchr (p + 1, '/');
@ -1335,7 +1310,7 @@ menus_tools_create (GimpToolInfo *tool_info)
entry.help_page = tool_info->help_data;
entry.description = NULL;
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2);
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2, TRUE);
}
void
@ -1553,7 +1528,7 @@ menus_init_mru (void)
gchar *paths;
gchar *accelerators;
gint i;
last_opened_entries = g_new (GimpItemFactoryEntry, last_opened_size);
paths = g_new (gchar, last_opened_size * MRU_MENU_ENTRY_SIZE);
@ -1584,8 +1559,8 @@ menus_init_mru (void)
}
menus_create_items (toolbox_factory, last_opened_size,
last_opened_entries, NULL, 2);
last_opened_entries, NULL, 2, TRUE);
for (i=0; i < last_opened_size; i++)
{
menu_item =
@ -1724,18 +1699,19 @@ static void
menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
GtkWidget *menu_item;
if (! (strstr (entry->entry.path, "tearoff1")))
{
if (! disable_tearoff_menus)
if (! disable_tearoff_menus && create_tearoff)
{
menus_create_branches (item_factory, entry);
}
}
else if (disable_tearoff_menus)
else if (disable_tearoff_menus || ! create_tearoff)
{
return;
}
@ -1764,7 +1740,8 @@ menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
gint i;
@ -1773,7 +1750,8 @@ menus_create_items (GtkItemFactory *item_factory,
menus_create_item (item_factory,
entries + i,
callback_data,
callback_type);
callback_type,
create_tearoff);
}
}
@ -1799,7 +1777,8 @@ menus_init (void)
menus_create_items (toolbox_factory,
n_toolbox_entries,
toolbox_entries,
NULL, 2);
NULL, 2,
TRUE);
menus_init_mru ();
@ -1811,7 +1790,8 @@ menus_init (void)
menus_create_items (image_factory,
n_image_entries,
image_entries,
NULL, 2);
NULL, 2,
TRUE);
load_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Load>", NULL);
gtk_object_set_data (GTK_OBJECT (load_factory), "factory_path",
@ -1821,7 +1801,8 @@ menus_init (void)
menus_create_items (load_factory,
n_load_entries,
load_entries,
NULL, 2);
NULL, 2,
FALSE);
save_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Save>", NULL);
gtk_object_set_data (GTK_OBJECT (save_factory), "factory_path",
@ -1831,7 +1812,8 @@ menus_init (void)
menus_create_items (save_factory,
n_save_entries,
save_entries,
NULL, 2);
NULL, 2,
FALSE);
layers_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Layers>", NULL);
gtk_object_set_data (GTK_OBJECT (layers_factory), "factory_path",
@ -1841,7 +1823,8 @@ menus_init (void)
menus_create_items (layers_factory,
n_layers_entries,
layers_entries,
NULL, 2);
NULL, 2,
FALSE);
channels_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Channels>", NULL);
gtk_object_set_data (GTK_OBJECT (channels_factory), "factory_path",
@ -1851,7 +1834,8 @@ menus_init (void)
menus_create_items (channels_factory,
n_channels_entries,
channels_entries,
NULL, 2);
NULL, 2,
FALSE);
paths_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Paths>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1861,7 +1845,8 @@ menus_init (void)
menus_create_items (paths_factory,
n_paths_entries,
paths_entries,
NULL, 2);
NULL, 2,
FALSE);
dialogs_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Dialogs>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1871,7 +1856,8 @@ menus_init (void)
menus_create_items (dialogs_factory,
n_dialogs_entries,
dialogs_entries,
NULL, 2);
NULL, 2,
FALSE);
for (list = GIMP_LIST (global_tool_info_list)->list;

View File

@ -31,24 +31,14 @@ struct _GimpItemFactoryEntry
};
void menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group);
void menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
/* finally, all above functions will return the factory
*/
GtkItemFactory * menus_get_dialogs_factory (void);
GtkItemFactory * menus_get_toolbox_factory (void);
GtkItemFactory * menus_get_image_factory (void);
GtkItemFactory * menus_get_load_factory (void);
GtkItemFactory * menus_get_save_factory (void);
GtkItemFactory * menus_get_layers_factory (void);
GtkItemFactory * menus_get_channels_factory (void);
GtkItemFactory * menus_get_paths_factory (void);
GtkItemFactory * menus_get_dialogs_factory (void);
void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
@ -57,15 +47,13 @@ void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
void menus_reorder_plugins (void);
void menus_destroy (gchar *path);
void menus_quit (void);
void menus_set_sensitive (gchar *path,
gboolean sensitive);
void menus_set_state (gchar *path,
gboolean state);
void menus_destroy (gchar *path);
void menus_last_opened_add (gchar *filename);

View File

@ -292,10 +292,11 @@ paths_dialog_set_default_op (void)
GtkWidget *
paths_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *paths_list;
GtkWidget *scrolled_win;
GtkWidget *button_box;
GtkItemFactory *paths_factory;
GtkWidget *vbox;
GtkWidget *paths_list;
GtkWidget *scrolled_win;
GtkWidget *button_box;
if (paths_dialog)
return paths_dialog->vbox;
@ -369,8 +370,10 @@ paths_dialog_create (void)
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
menus_get_paths_menu (&paths_dialog->ops_menu,
&paths_dialog->accel_group);
paths_factory = menus_get_paths_factory ();
paths_dialog->ops_menu = paths_factory->widget;
paths_dialog->accel_group = paths_factory->accel_group;;
/* Set up signals for map/unmap for the accelerators */
gtk_signal_connect (GTK_OBJECT (vbox), "map",

View File

@ -327,12 +327,13 @@ create_tools (GtkWidget *parent,
void
toolbox_create (void)
{
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
GtkItemFactory *toolbox_factory;
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@ -394,7 +395,11 @@ toolbox_create (void)
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
toolbox_factory = menus_get_toolbox_factory ();
menubar = toolbox_factory->widget;
table = toolbox_factory->accel_group;
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);

View File

@ -184,7 +184,14 @@ create_display_shell (GDisplay *gdisp,
gdisplay_drop_viewable, gdisp);
if (! image_popup_menu)
menus_get_image_menu (&image_popup_menu, &image_accel_group);
{
GtkItemFactory *image_factory;
image_factory = menus_get_image_factory ();
image_popup_menu = image_factory->widget;
image_accel_group = image_factory->accel_group;
}
/* the popup menu */
gdisp->popup = image_popup_menu;

View File

@ -335,11 +335,12 @@ static guint n_trashcan_targets = (sizeof (trashcan_target_table) /
GtkWidget *
layers_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *util_box;
GtkWidget *button_box;
GtkWidget *label;
GtkWidget *slider;
GtkItemFactory *layers_factory;
GtkWidget *vbox;
GtkWidget *util_box;
GtkWidget *button_box;
GtkWidget *label;
GtkWidget *slider;
if (layersD)
return layersD->vbox;
@ -371,7 +372,10 @@ layers_dialog_create (void)
gtk_container_add (GTK_CONTAINER (layersD->vbox), vbox);
/* The layers commands pulldown menu */
menus_get_layers_menu (&layersD->ops_menu, &layersD->accel_group);
layers_factory = menus_get_layers_factory ();
layersD->ops_menu = layers_factory->widget;
layersD->accel_group = layers_factory->accel_group;
/* The Mode option menu, and the preserve transparency */
layersD->mode_box = util_box = gtk_hbox_new (FALSE, 1);

View File

@ -59,12 +59,14 @@
static void menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_branches (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry);
static void menus_init (void);
@ -879,101 +881,74 @@ static GtkItemFactory *dialogs_factory = NULL;
static gboolean menus_initialized = FALSE;
void
menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_toolbox_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menubar)
*menubar = toolbox_factory->widget;
if (accel_group)
*accel_group = toolbox_factory->accel_group;
return toolbox_factory;
}
void
menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_image_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = image_factory->widget;
if (accel_group)
*accel_group = image_factory->accel_group;
return image_factory;
}
void
menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_load_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = load_factory->widget;
if (accel_group)
*accel_group = load_factory->accel_group;
return load_factory;
}
void
menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_save_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = save_factory->widget;
if (accel_group)
*accel_group = save_factory->accel_group;
return save_factory;
}
void
menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_layers_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = layers_factory->widget;
if (accel_group)
*accel_group = layers_factory->accel_group;
return layers_factory;
}
void
menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_channels_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = channels_factory->widget;
if (accel_group)
*accel_group = channels_factory->accel_group;
return channels_factory;
}
void
menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_paths_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = paths_factory->widget;
if (accel_group)
*accel_group = paths_factory->accel_group;
return paths_factory;
}
GtkItemFactory *
menus_get_dialogs_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
return dialogs_factory;
@ -1014,7 +989,7 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
entry->entry.path = path;
menus_create_item (item_factory, entry, callback_data, 2);
menus_create_item (item_factory, entry, callback_data, 2, TRUE);
}
static void
@ -1055,7 +1030,7 @@ menus_create_branches (GtkItemFactory *item_factory,
branch_entry.entry.path = tearoff_path->str;
gtk_object_set_data (GTK_OBJECT (item_factory), "complete", path);
menus_create_item (item_factory, &branch_entry, NULL, 2);
menus_create_item (item_factory, &branch_entry, NULL, 2, TRUE);
gtk_object_remove_data (GTK_OBJECT (item_factory), "complete");
}
@ -1071,7 +1046,7 @@ menus_create_branches (GtkItemFactory *item_factory,
};
tearoff_entry.entry.path = tearoff_path->str;
menus_create_item (item_factory, &tearoff_entry, NULL, 2);
menus_create_item (item_factory, &tearoff_entry, NULL, 2, TRUE);
}
p = strchr (p + 1, '/');
@ -1335,7 +1310,7 @@ menus_tools_create (GimpToolInfo *tool_info)
entry.help_page = tool_info->help_data;
entry.description = NULL;
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2);
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2, TRUE);
}
void
@ -1553,7 +1528,7 @@ menus_init_mru (void)
gchar *paths;
gchar *accelerators;
gint i;
last_opened_entries = g_new (GimpItemFactoryEntry, last_opened_size);
paths = g_new (gchar, last_opened_size * MRU_MENU_ENTRY_SIZE);
@ -1584,8 +1559,8 @@ menus_init_mru (void)
}
menus_create_items (toolbox_factory, last_opened_size,
last_opened_entries, NULL, 2);
last_opened_entries, NULL, 2, TRUE);
for (i=0; i < last_opened_size; i++)
{
menu_item =
@ -1724,18 +1699,19 @@ static void
menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
GtkWidget *menu_item;
if (! (strstr (entry->entry.path, "tearoff1")))
{
if (! disable_tearoff_menus)
if (! disable_tearoff_menus && create_tearoff)
{
menus_create_branches (item_factory, entry);
}
}
else if (disable_tearoff_menus)
else if (disable_tearoff_menus || ! create_tearoff)
{
return;
}
@ -1764,7 +1740,8 @@ menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
gint i;
@ -1773,7 +1750,8 @@ menus_create_items (GtkItemFactory *item_factory,
menus_create_item (item_factory,
entries + i,
callback_data,
callback_type);
callback_type,
create_tearoff);
}
}
@ -1799,7 +1777,8 @@ menus_init (void)
menus_create_items (toolbox_factory,
n_toolbox_entries,
toolbox_entries,
NULL, 2);
NULL, 2,
TRUE);
menus_init_mru ();
@ -1811,7 +1790,8 @@ menus_init (void)
menus_create_items (image_factory,
n_image_entries,
image_entries,
NULL, 2);
NULL, 2,
TRUE);
load_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Load>", NULL);
gtk_object_set_data (GTK_OBJECT (load_factory), "factory_path",
@ -1821,7 +1801,8 @@ menus_init (void)
menus_create_items (load_factory,
n_load_entries,
load_entries,
NULL, 2);
NULL, 2,
FALSE);
save_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Save>", NULL);
gtk_object_set_data (GTK_OBJECT (save_factory), "factory_path",
@ -1831,7 +1812,8 @@ menus_init (void)
menus_create_items (save_factory,
n_save_entries,
save_entries,
NULL, 2);
NULL, 2,
FALSE);
layers_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Layers>", NULL);
gtk_object_set_data (GTK_OBJECT (layers_factory), "factory_path",
@ -1841,7 +1823,8 @@ menus_init (void)
menus_create_items (layers_factory,
n_layers_entries,
layers_entries,
NULL, 2);
NULL, 2,
FALSE);
channels_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Channels>", NULL);
gtk_object_set_data (GTK_OBJECT (channels_factory), "factory_path",
@ -1851,7 +1834,8 @@ menus_init (void)
menus_create_items (channels_factory,
n_channels_entries,
channels_entries,
NULL, 2);
NULL, 2,
FALSE);
paths_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Paths>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1861,7 +1845,8 @@ menus_init (void)
menus_create_items (paths_factory,
n_paths_entries,
paths_entries,
NULL, 2);
NULL, 2,
FALSE);
dialogs_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Dialogs>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1871,7 +1856,8 @@ menus_init (void)
menus_create_items (dialogs_factory,
n_dialogs_entries,
dialogs_entries,
NULL, 2);
NULL, 2,
FALSE);
for (list = GIMP_LIST (global_tool_info_list)->list;

View File

@ -31,24 +31,14 @@ struct _GimpItemFactoryEntry
};
void menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group);
void menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
/* finally, all above functions will return the factory
*/
GtkItemFactory * menus_get_dialogs_factory (void);
GtkItemFactory * menus_get_toolbox_factory (void);
GtkItemFactory * menus_get_image_factory (void);
GtkItemFactory * menus_get_load_factory (void);
GtkItemFactory * menus_get_save_factory (void);
GtkItemFactory * menus_get_layers_factory (void);
GtkItemFactory * menus_get_channels_factory (void);
GtkItemFactory * menus_get_paths_factory (void);
GtkItemFactory * menus_get_dialogs_factory (void);
void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
@ -57,15 +47,13 @@ void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
void menus_reorder_plugins (void);
void menus_destroy (gchar *path);
void menus_quit (void);
void menus_set_sensitive (gchar *path,
gboolean sensitive);
void menus_set_state (gchar *path,
gboolean state);
void menus_destroy (gchar *path);
void menus_last_opened_add (gchar *filename);

View File

@ -59,12 +59,14 @@
static void menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_branches (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry);
static void menus_init (void);
@ -879,101 +881,74 @@ static GtkItemFactory *dialogs_factory = NULL;
static gboolean menus_initialized = FALSE;
void
menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_toolbox_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menubar)
*menubar = toolbox_factory->widget;
if (accel_group)
*accel_group = toolbox_factory->accel_group;
return toolbox_factory;
}
void
menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_image_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = image_factory->widget;
if (accel_group)
*accel_group = image_factory->accel_group;
return image_factory;
}
void
menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_load_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = load_factory->widget;
if (accel_group)
*accel_group = load_factory->accel_group;
return load_factory;
}
void
menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_save_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = save_factory->widget;
if (accel_group)
*accel_group = save_factory->accel_group;
return save_factory;
}
void
menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_layers_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = layers_factory->widget;
if (accel_group)
*accel_group = layers_factory->accel_group;
return layers_factory;
}
void
menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_channels_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = channels_factory->widget;
if (accel_group)
*accel_group = channels_factory->accel_group;
return channels_factory;
}
void
menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_paths_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = paths_factory->widget;
if (accel_group)
*accel_group = paths_factory->accel_group;
return paths_factory;
}
GtkItemFactory *
menus_get_dialogs_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
return dialogs_factory;
@ -1014,7 +989,7 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
entry->entry.path = path;
menus_create_item (item_factory, entry, callback_data, 2);
menus_create_item (item_factory, entry, callback_data, 2, TRUE);
}
static void
@ -1055,7 +1030,7 @@ menus_create_branches (GtkItemFactory *item_factory,
branch_entry.entry.path = tearoff_path->str;
gtk_object_set_data (GTK_OBJECT (item_factory), "complete", path);
menus_create_item (item_factory, &branch_entry, NULL, 2);
menus_create_item (item_factory, &branch_entry, NULL, 2, TRUE);
gtk_object_remove_data (GTK_OBJECT (item_factory), "complete");
}
@ -1071,7 +1046,7 @@ menus_create_branches (GtkItemFactory *item_factory,
};
tearoff_entry.entry.path = tearoff_path->str;
menus_create_item (item_factory, &tearoff_entry, NULL, 2);
menus_create_item (item_factory, &tearoff_entry, NULL, 2, TRUE);
}
p = strchr (p + 1, '/');
@ -1335,7 +1310,7 @@ menus_tools_create (GimpToolInfo *tool_info)
entry.help_page = tool_info->help_data;
entry.description = NULL;
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2);
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2, TRUE);
}
void
@ -1553,7 +1528,7 @@ menus_init_mru (void)
gchar *paths;
gchar *accelerators;
gint i;
last_opened_entries = g_new (GimpItemFactoryEntry, last_opened_size);
paths = g_new (gchar, last_opened_size * MRU_MENU_ENTRY_SIZE);
@ -1584,8 +1559,8 @@ menus_init_mru (void)
}
menus_create_items (toolbox_factory, last_opened_size,
last_opened_entries, NULL, 2);
last_opened_entries, NULL, 2, TRUE);
for (i=0; i < last_opened_size; i++)
{
menu_item =
@ -1724,18 +1699,19 @@ static void
menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
GtkWidget *menu_item;
if (! (strstr (entry->entry.path, "tearoff1")))
{
if (! disable_tearoff_menus)
if (! disable_tearoff_menus && create_tearoff)
{
menus_create_branches (item_factory, entry);
}
}
else if (disable_tearoff_menus)
else if (disable_tearoff_menus || ! create_tearoff)
{
return;
}
@ -1764,7 +1740,8 @@ menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
gint i;
@ -1773,7 +1750,8 @@ menus_create_items (GtkItemFactory *item_factory,
menus_create_item (item_factory,
entries + i,
callback_data,
callback_type);
callback_type,
create_tearoff);
}
}
@ -1799,7 +1777,8 @@ menus_init (void)
menus_create_items (toolbox_factory,
n_toolbox_entries,
toolbox_entries,
NULL, 2);
NULL, 2,
TRUE);
menus_init_mru ();
@ -1811,7 +1790,8 @@ menus_init (void)
menus_create_items (image_factory,
n_image_entries,
image_entries,
NULL, 2);
NULL, 2,
TRUE);
load_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Load>", NULL);
gtk_object_set_data (GTK_OBJECT (load_factory), "factory_path",
@ -1821,7 +1801,8 @@ menus_init (void)
menus_create_items (load_factory,
n_load_entries,
load_entries,
NULL, 2);
NULL, 2,
FALSE);
save_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Save>", NULL);
gtk_object_set_data (GTK_OBJECT (save_factory), "factory_path",
@ -1831,7 +1812,8 @@ menus_init (void)
menus_create_items (save_factory,
n_save_entries,
save_entries,
NULL, 2);
NULL, 2,
FALSE);
layers_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Layers>", NULL);
gtk_object_set_data (GTK_OBJECT (layers_factory), "factory_path",
@ -1841,7 +1823,8 @@ menus_init (void)
menus_create_items (layers_factory,
n_layers_entries,
layers_entries,
NULL, 2);
NULL, 2,
FALSE);
channels_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Channels>", NULL);
gtk_object_set_data (GTK_OBJECT (channels_factory), "factory_path",
@ -1851,7 +1834,8 @@ menus_init (void)
menus_create_items (channels_factory,
n_channels_entries,
channels_entries,
NULL, 2);
NULL, 2,
FALSE);
paths_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Paths>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1861,7 +1845,8 @@ menus_init (void)
menus_create_items (paths_factory,
n_paths_entries,
paths_entries,
NULL, 2);
NULL, 2,
FALSE);
dialogs_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Dialogs>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1871,7 +1856,8 @@ menus_init (void)
menus_create_items (dialogs_factory,
n_dialogs_entries,
dialogs_entries,
NULL, 2);
NULL, 2,
FALSE);
for (list = GIMP_LIST (global_tool_info_list)->list;

View File

@ -31,24 +31,14 @@ struct _GimpItemFactoryEntry
};
void menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group);
void menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
/* finally, all above functions will return the factory
*/
GtkItemFactory * menus_get_dialogs_factory (void);
GtkItemFactory * menus_get_toolbox_factory (void);
GtkItemFactory * menus_get_image_factory (void);
GtkItemFactory * menus_get_load_factory (void);
GtkItemFactory * menus_get_save_factory (void);
GtkItemFactory * menus_get_layers_factory (void);
GtkItemFactory * menus_get_channels_factory (void);
GtkItemFactory * menus_get_paths_factory (void);
GtkItemFactory * menus_get_dialogs_factory (void);
void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
@ -57,15 +47,13 @@ void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
void menus_reorder_plugins (void);
void menus_destroy (gchar *path);
void menus_quit (void);
void menus_set_sensitive (gchar *path,
gboolean sensitive);
void menus_set_state (gchar *path,
gboolean state);
void menus_destroy (gchar *path);
void menus_last_opened_add (gchar *filename);

View File

@ -292,10 +292,11 @@ paths_dialog_set_default_op (void)
GtkWidget *
paths_dialog_create (void)
{
GtkWidget *vbox;
GtkWidget *paths_list;
GtkWidget *scrolled_win;
GtkWidget *button_box;
GtkItemFactory *paths_factory;
GtkWidget *vbox;
GtkWidget *paths_list;
GtkWidget *scrolled_win;
GtkWidget *button_box;
if (paths_dialog)
return paths_dialog->vbox;
@ -369,8 +370,10 @@ paths_dialog_create (void)
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
menus_get_paths_menu (&paths_dialog->ops_menu,
&paths_dialog->accel_group);
paths_factory = menus_get_paths_factory ();
paths_dialog->ops_menu = paths_factory->widget;
paths_dialog->accel_group = paths_factory->accel_group;;
/* Set up signals for map/unmap for the accelerators */
gtk_signal_connect (GTK_OBJECT (vbox), "map",

View File

@ -327,12 +327,13 @@ create_tools (GtkWidget *parent,
void
toolbox_create (void)
{
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
GtkItemFactory *toolbox_factory;
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@ -394,7 +395,11 @@ toolbox_create (void)
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
toolbox_factory = menus_get_toolbox_factory ();
menubar = toolbox_factory->widget;
table = toolbox_factory->accel_group;
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);

View File

@ -59,12 +59,14 @@
static void menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type);
guint callback_type,
gboolean create_tearoff);
static void menus_create_branches (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry);
static void menus_init (void);
@ -879,101 +881,74 @@ static GtkItemFactory *dialogs_factory = NULL;
static gboolean menus_initialized = FALSE;
void
menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_toolbox_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menubar)
*menubar = toolbox_factory->widget;
if (accel_group)
*accel_group = toolbox_factory->accel_group;
return toolbox_factory;
}
void
menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_image_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = image_factory->widget;
if (accel_group)
*accel_group = image_factory->accel_group;
return image_factory;
}
void
menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_load_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = load_factory->widget;
if (accel_group)
*accel_group = load_factory->accel_group;
return load_factory;
}
void
menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_save_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = save_factory->widget;
if (accel_group)
*accel_group = save_factory->accel_group;
return save_factory;
}
void
menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_layers_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = layers_factory->widget;
if (accel_group)
*accel_group = layers_factory->accel_group;
return layers_factory;
}
void
menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_channels_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = channels_factory->widget;
if (accel_group)
*accel_group = channels_factory->accel_group;
return channels_factory;
}
void
menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group)
GtkItemFactory *
menus_get_paths_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
if (menu)
*menu = paths_factory->widget;
if (accel_group)
*accel_group = paths_factory->accel_group;
return paths_factory;
}
GtkItemFactory *
menus_get_dialogs_factory (void)
{
if (!menus_initialized)
if (! menus_initialized)
menus_init ();
return dialogs_factory;
@ -1014,7 +989,7 @@ menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
entry->entry.path = path;
menus_create_item (item_factory, entry, callback_data, 2);
menus_create_item (item_factory, entry, callback_data, 2, TRUE);
}
static void
@ -1055,7 +1030,7 @@ menus_create_branches (GtkItemFactory *item_factory,
branch_entry.entry.path = tearoff_path->str;
gtk_object_set_data (GTK_OBJECT (item_factory), "complete", path);
menus_create_item (item_factory, &branch_entry, NULL, 2);
menus_create_item (item_factory, &branch_entry, NULL, 2, TRUE);
gtk_object_remove_data (GTK_OBJECT (item_factory), "complete");
}
@ -1071,7 +1046,7 @@ menus_create_branches (GtkItemFactory *item_factory,
};
tearoff_entry.entry.path = tearoff_path->str;
menus_create_item (item_factory, &tearoff_entry, NULL, 2);
menus_create_item (item_factory, &tearoff_entry, NULL, 2, TRUE);
}
p = strchr (p + 1, '/');
@ -1335,7 +1310,7 @@ menus_tools_create (GimpToolInfo *tool_info)
entry.help_page = tool_info->help_data;
entry.description = NULL;
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2);
menus_create_item (image_factory, &entry, (gpointer) tool_info, 2, TRUE);
}
void
@ -1553,7 +1528,7 @@ menus_init_mru (void)
gchar *paths;
gchar *accelerators;
gint i;
last_opened_entries = g_new (GimpItemFactoryEntry, last_opened_size);
paths = g_new (gchar, last_opened_size * MRU_MENU_ENTRY_SIZE);
@ -1584,8 +1559,8 @@ menus_init_mru (void)
}
menus_create_items (toolbox_factory, last_opened_size,
last_opened_entries, NULL, 2);
last_opened_entries, NULL, 2, TRUE);
for (i=0; i < last_opened_size; i++)
{
menu_item =
@ -1724,18 +1699,19 @@ static void
menus_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
GtkWidget *menu_item;
if (! (strstr (entry->entry.path, "tearoff1")))
{
if (! disable_tearoff_menus)
if (! disable_tearoff_menus && create_tearoff)
{
menus_create_branches (item_factory, entry);
}
}
else if (disable_tearoff_menus)
else if (disable_tearoff_menus || ! create_tearoff)
{
return;
}
@ -1764,7 +1740,8 @@ menus_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type)
guint callback_type,
gboolean create_tearoff)
{
gint i;
@ -1773,7 +1750,8 @@ menus_create_items (GtkItemFactory *item_factory,
menus_create_item (item_factory,
entries + i,
callback_data,
callback_type);
callback_type,
create_tearoff);
}
}
@ -1799,7 +1777,8 @@ menus_init (void)
menus_create_items (toolbox_factory,
n_toolbox_entries,
toolbox_entries,
NULL, 2);
NULL, 2,
TRUE);
menus_init_mru ();
@ -1811,7 +1790,8 @@ menus_init (void)
menus_create_items (image_factory,
n_image_entries,
image_entries,
NULL, 2);
NULL, 2,
TRUE);
load_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Load>", NULL);
gtk_object_set_data (GTK_OBJECT (load_factory), "factory_path",
@ -1821,7 +1801,8 @@ menus_init (void)
menus_create_items (load_factory,
n_load_entries,
load_entries,
NULL, 2);
NULL, 2,
FALSE);
save_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Save>", NULL);
gtk_object_set_data (GTK_OBJECT (save_factory), "factory_path",
@ -1831,7 +1812,8 @@ menus_init (void)
menus_create_items (save_factory,
n_save_entries,
save_entries,
NULL, 2);
NULL, 2,
FALSE);
layers_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Layers>", NULL);
gtk_object_set_data (GTK_OBJECT (layers_factory), "factory_path",
@ -1841,7 +1823,8 @@ menus_init (void)
menus_create_items (layers_factory,
n_layers_entries,
layers_entries,
NULL, 2);
NULL, 2,
FALSE);
channels_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Channels>", NULL);
gtk_object_set_data (GTK_OBJECT (channels_factory), "factory_path",
@ -1851,7 +1834,8 @@ menus_init (void)
menus_create_items (channels_factory,
n_channels_entries,
channels_entries,
NULL, 2);
NULL, 2,
FALSE);
paths_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Paths>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1861,7 +1845,8 @@ menus_init (void)
menus_create_items (paths_factory,
n_paths_entries,
paths_entries,
NULL, 2);
NULL, 2,
FALSE);
dialogs_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<Dialogs>", NULL);
gtk_object_set_data (GTK_OBJECT (paths_factory), "factory_path",
@ -1871,7 +1856,8 @@ menus_init (void)
menus_create_items (dialogs_factory,
n_dialogs_entries,
dialogs_entries,
NULL, 2);
NULL, 2,
FALSE);
for (list = GIMP_LIST (global_tool_info_list)->list;

View File

@ -31,24 +31,14 @@ struct _GimpItemFactoryEntry
};
void menus_get_toolbox_menubar (GtkWidget **menubar,
GtkAccelGroup **accel_group);
void menus_get_image_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_load_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_save_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_layers_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_channels_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
void menus_get_paths_menu (GtkWidget **menu,
GtkAccelGroup **accel_group);
/* finally, all above functions will return the factory
*/
GtkItemFactory * menus_get_dialogs_factory (void);
GtkItemFactory * menus_get_toolbox_factory (void);
GtkItemFactory * menus_get_image_factory (void);
GtkItemFactory * menus_get_load_factory (void);
GtkItemFactory * menus_get_save_factory (void);
GtkItemFactory * menus_get_layers_factory (void);
GtkItemFactory * menus_get_channels_factory (void);
GtkItemFactory * menus_get_paths_factory (void);
GtkItemFactory * menus_get_dialogs_factory (void);
void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
@ -57,15 +47,13 @@ void menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
void menus_reorder_plugins (void);
void menus_destroy (gchar *path);
void menus_quit (void);
void menus_set_sensitive (gchar *path,
gboolean sensitive);
void menus_set_state (gchar *path,
gboolean state);
void menus_destroy (gchar *path);
void menus_last_opened_add (gchar *filename);

View File

@ -327,12 +327,13 @@ create_tools (GtkWidget *parent,
void
toolbox_create (void)
{
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
GtkItemFactory *toolbox_factory;
GtkWidget *window;
GtkWidget *main_vbox;
GtkWidget *wbox;
GtkWidget *menubar;
GList *list;
GtkAccelGroup *table;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@ -394,7 +395,11 @@ toolbox_create (void)
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
toolbox_factory = menus_get_toolbox_factory ();
menubar = toolbox_factory->widget;
table = toolbox_factory->accel_group;
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);