removed gimp_ui_manager_ui_get() and implement the new virtual functions
2005-02-08 Michael Natterer <mitch@gimp.org> * app/widgets/gimpuimanager.[ch]: removed gimp_ui_manager_ui_get() and implement the new virtual functions GtkUIManager::get_widget() and ::get_action() instead. Menu loading happens transparently now. * app/display/gimpdisplayshell.c * app/widgets/gimpdockable.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimptooloptionseditor.c: use gtk_ui_manager_get_widget() instead of the removed gimp_ui_manager_ui_get().
This commit is contained in:
committed by
Michael Natterer
parent
8c83ddc063
commit
cb7f1dbe56
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2005-02-08 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimpuimanager.[ch]: removed gimp_ui_manager_ui_get()
|
||||
and implement the new virtual functions GtkUIManager::get_widget()
|
||||
and ::get_action() instead. Menu loading happens transparently now.
|
||||
|
||||
* app/display/gimpdisplayshell.c
|
||||
* app/widgets/gimpdockable.c
|
||||
* app/widgets/gimptexteditor.c
|
||||
* app/widgets/gimptoolbox.c
|
||||
* app/widgets/gimptooloptionseditor.c: use
|
||||
gtk_ui_manager_get_widget() instead of the removed
|
||||
gimp_ui_manager_ui_get().
|
||||
|
||||
2005-02-08 Sven Neumann <sven@gimp.org>
|
||||
|
||||
Applied a patch from Patrice Tremblay that makes (almost) all
|
||||
|
||||
@ -719,8 +719,9 @@ gimp_display_shell_new (GimpDisplay *gdisp,
|
||||
main_vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (shell), main_vbox);
|
||||
|
||||
shell->menubar = gimp_ui_manager_ui_get (shell->menubar_manager,
|
||||
"/image-menubar");
|
||||
shell->menubar =
|
||||
gtk_ui_manager_get_widget (GTK_UI_MANAGER (shell->menubar_manager),
|
||||
"/image-menubar");
|
||||
|
||||
if (shell->menubar)
|
||||
{
|
||||
|
||||
@ -974,10 +974,9 @@ gimp_dockable_menu_end (GimpDockable *dockable)
|
||||
|
||||
if (dialog_ui_manager && dialog_ui_path)
|
||||
{
|
||||
GtkWidget *child_menu_widget;
|
||||
|
||||
child_menu_widget = gimp_ui_manager_ui_get (dialog_ui_manager,
|
||||
dialog_ui_path);
|
||||
GtkWidget *child_menu_widget =
|
||||
gtk_ui_manager_get_widget (GTK_UI_MANAGER (dialog_ui_manager),
|
||||
dialog_ui_path);
|
||||
|
||||
if (child_menu_widget)
|
||||
gtk_menu_detach (GTK_MENU (child_menu_widget));
|
||||
@ -1002,8 +1001,8 @@ gimp_dockable_show_menu (GimpDockable *dockable)
|
||||
return FALSE;
|
||||
|
||||
parent_menu_widget =
|
||||
gimp_ui_manager_ui_get (dockbook_ui_manager,
|
||||
"/dockable-popup/dockable-menu");
|
||||
gtk_ui_manager_get_widget (GTK_UI_MANAGER (dockbook_ui_manager),
|
||||
"/dockable-popup/dockable-menu");
|
||||
|
||||
parent_menu_action =
|
||||
gtk_ui_manager_get_action (GTK_UI_MANAGER (dockbook_ui_manager),
|
||||
@ -1023,7 +1022,8 @@ gimp_dockable_show_menu (GimpDockable *dockable)
|
||||
const gchar *label;
|
||||
|
||||
child_menu_widget =
|
||||
gimp_ui_manager_ui_get (dialog_ui_manager, dialog_ui_path);
|
||||
gtk_ui_manager_get_widget (GTK_UI_MANAGER (dialog_ui_manager),
|
||||
dialog_ui_path);
|
||||
|
||||
child_menu_action =
|
||||
gtk_ui_manager_get_action (GTK_UI_MANAGER (dialog_ui_manager),
|
||||
|
||||
@ -163,8 +163,8 @@ gimp_text_editor_new (const gchar *title,
|
||||
"<TextEditor>",
|
||||
editor, FALSE);
|
||||
|
||||
toolbar = gimp_ui_manager_ui_get (editor->ui_manager,
|
||||
"/text-editor-toolbar");
|
||||
toolbar = gtk_ui_manager_get_widget (GTK_UI_MANAGER (editor->ui_manager),
|
||||
"/text-editor-toolbar");
|
||||
|
||||
if (toolbar)
|
||||
{
|
||||
|
||||
@ -198,7 +198,7 @@ gimp_toolbox_constructor (GType type,
|
||||
GimpToolbox *toolbox;
|
||||
GimpContext *context;
|
||||
GimpGuiConfig *config;
|
||||
GimpUIManager *manager;
|
||||
GtkUIManager *manager;
|
||||
GtkWidget *main_vbox;
|
||||
GtkWidget *vbox;
|
||||
GdkDisplay *display;
|
||||
@ -220,9 +220,9 @@ gimp_toolbox_constructor (GType type,
|
||||
gtk_box_reorder_child (GTK_BOX (main_vbox), vbox, 0);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
manager = GIMP_DOCK (toolbox)->ui_manager;
|
||||
manager = GTK_UI_MANAGER (GIMP_DOCK (toolbox)->ui_manager);
|
||||
|
||||
toolbox->menu_bar = gimp_ui_manager_ui_get (manager, "/toolbox-menubar");
|
||||
toolbox->menu_bar = gtk_ui_manager_get_widget (manager, "/toolbox-menubar");
|
||||
|
||||
if (toolbox->menu_bar)
|
||||
{
|
||||
|
||||
@ -333,7 +333,8 @@ gimp_tool_options_editor_menu_popup (GimpToolOptionsEditor *editor,
|
||||
{
|
||||
GimpEditor *gimp_editor = GIMP_EDITOR (editor);
|
||||
|
||||
gimp_ui_manager_ui_get (gimp_editor->ui_manager, gimp_editor->ui_path);
|
||||
gtk_ui_manager_get_widget (GTK_UI_MANAGER (gimp_editor->ui_manager),
|
||||
gimp_editor->ui_path);
|
||||
gimp_ui_manager_update (gimp_editor->ui_manager, gimp_editor->popup_data);
|
||||
|
||||
gimp_ui_manager_ui_popup (gimp_editor->ui_manager, path,
|
||||
|
||||
@ -75,6 +75,10 @@ static void gimp_ui_manager_get_property (GObject *object,
|
||||
static void gimp_ui_manager_connect_proxy (GtkUIManager *manager,
|
||||
GtkAction *action,
|
||||
GtkWidget *proxy);
|
||||
static GtkWidget * gimp_ui_manager_get_widget (GtkUIManager *manager,
|
||||
const gchar *path);
|
||||
static GtkAction * gimp_ui_manager_get_action (GtkUIManager *manager,
|
||||
const gchar *path);
|
||||
static void gimp_ui_manager_real_update (GimpUIManager *manager,
|
||||
gpointer update_data);
|
||||
static GimpUIManagerUIEntry *
|
||||
@ -83,6 +87,9 @@ static GimpUIManagerUIEntry *
|
||||
static gboolean gimp_ui_manager_entry_load (GimpUIManager *manager,
|
||||
GimpUIManagerUIEntry *entry,
|
||||
GError **error);
|
||||
static GimpUIManagerUIEntry *
|
||||
gimp_ui_manager_entry_ensure (GimpUIManager *manager,
|
||||
const gchar *path);
|
||||
static void gimp_ui_manager_menu_position (GtkMenu *menu,
|
||||
gint *x,
|
||||
gint *y,
|
||||
@ -150,6 +157,8 @@ gimp_ui_manager_class_init (GimpUIManagerClass *klass)
|
||||
object_class->get_property = gimp_ui_manager_get_property;
|
||||
|
||||
manager_class->connect_proxy = gimp_ui_manager_connect_proxy;
|
||||
manager_class->get_widget = gimp_ui_manager_get_widget;
|
||||
manager_class->get_action = gimp_ui_manager_get_action;
|
||||
|
||||
klass->update = gimp_ui_manager_real_update;
|
||||
|
||||
@ -338,6 +347,35 @@ gimp_ui_manager_connect_proxy (GtkUIManager *manager,
|
||||
manager);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
gimp_ui_manager_get_widget (GtkUIManager *manager,
|
||||
const gchar *path)
|
||||
{
|
||||
GimpUIManagerUIEntry *entry;
|
||||
|
||||
entry = gimp_ui_manager_entry_ensure (GIMP_UI_MANAGER (manager), path);
|
||||
|
||||
if (entry)
|
||||
{
|
||||
if (! strcmp (entry->ui_path, path))
|
||||
return entry->widget;
|
||||
|
||||
return GTK_UI_MANAGER_CLASS (parent_class)->get_widget (manager, path);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GtkAction *
|
||||
gimp_ui_manager_get_action (GtkUIManager *manager,
|
||||
const gchar *path)
|
||||
{
|
||||
if (gimp_ui_manager_entry_ensure (GIMP_UI_MANAGER (manager), path))
|
||||
return GTK_UI_MANAGER_CLASS (parent_class)->get_action (manager, path);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_ui_manager_real_update (GimpUIManager *manager,
|
||||
gpointer update_data)
|
||||
@ -404,8 +442,8 @@ gimp_ui_manager_update (GimpUIManager *manager,
|
||||
}
|
||||
|
||||
GimpActionGroup *
|
||||
gimp_ui_manager_get_action_group (GimpUIManager *manager,
|
||||
const gchar *name)
|
||||
gimp_ui_manager_get_action_group (GimpUIManager *manager,
|
||||
const gchar *name)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
@ -413,12 +451,12 @@ gimp_ui_manager_get_action_group (GimpUIManager *manager,
|
||||
g_return_val_if_fail (name != NULL, NULL);
|
||||
|
||||
for (list = gtk_ui_manager_get_action_groups (GTK_UI_MANAGER (manager));
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
{
|
||||
GimpActionGroup *group = list->data;
|
||||
|
||||
if (! strcmp (gtk_action_group_get_name (GTK_ACTION_GROUP (group)), name))
|
||||
if (! strcmp (name, gtk_action_group_get_name (GTK_ACTION_GROUP (group))))
|
||||
return group;
|
||||
}
|
||||
|
||||
@ -468,70 +506,6 @@ gimp_ui_manager_ui_register (GimpUIManager *manager,
|
||||
manager->registered_uis = g_list_prepend (manager->registered_uis, entry);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
gimp_ui_manager_ui_get (GimpUIManager *manager,
|
||||
const gchar *ui_path)
|
||||
{
|
||||
GimpUIManagerUIEntry *entry;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_UI_MANAGER (manager), NULL);
|
||||
g_return_val_if_fail (ui_path != NULL, NULL);
|
||||
|
||||
entry = gimp_ui_manager_entry_get (manager, ui_path);
|
||||
|
||||
if (! entry)
|
||||
{
|
||||
g_warning ("%s: no entry registered for \"%s\"", G_STRFUNC, ui_path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (! entry->merge_id)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (! gimp_ui_manager_entry_load (manager, entry, &error))
|
||||
{
|
||||
g_message ("%s\n\n%s\n\n%s",
|
||||
_("Your GIMP installation is incomplete:"),
|
||||
error->message,
|
||||
_("Plase make sure the menu XML files are correctly "
|
||||
"installed."));
|
||||
g_clear_error (&error);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (! entry->widget)
|
||||
{
|
||||
entry->widget = gtk_ui_manager_get_widget (GTK_UI_MANAGER (manager),
|
||||
entry->ui_path);
|
||||
|
||||
if (entry->widget)
|
||||
{
|
||||
g_object_ref (entry->widget);
|
||||
|
||||
/* take ownership of popup menus */
|
||||
if (GTK_IS_MENU (entry->widget))
|
||||
gtk_object_sink (GTK_OBJECT (entry->widget));
|
||||
|
||||
if (entry->setup_func)
|
||||
entry->setup_func (manager, entry->ui_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("%s: \"%s\" does not contain registered toplevel "
|
||||
"widget \"%s\"",
|
||||
G_STRFUNC, entry->basename, entry->ui_path);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (! strcmp (entry->ui_path, ui_path))
|
||||
return entry->widget;
|
||||
|
||||
return gtk_ui_manager_get_widget (GTK_UI_MANAGER (manager), ui_path);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
guint x;
|
||||
@ -558,7 +532,7 @@ gimp_ui_manager_ui_popup (GimpUIManager *manager,
|
||||
g_return_if_fail (ui_path != NULL);
|
||||
g_return_if_fail (parent == NULL || GTK_IS_WIDGET (parent));
|
||||
|
||||
widget = gimp_ui_manager_ui_get (manager, ui_path);
|
||||
widget = gtk_ui_manager_get_widget (GTK_UI_MANAGER (manager), ui_path);
|
||||
|
||||
if (GTK_IS_MENU_ITEM (widget))
|
||||
widget = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
|
||||
@ -676,6 +650,67 @@ gimp_ui_manager_entry_load (GimpUIManager *manager,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GimpUIManagerUIEntry *
|
||||
gimp_ui_manager_entry_ensure (GimpUIManager *manager,
|
||||
const gchar *path)
|
||||
{
|
||||
GimpUIManagerUIEntry *entry;
|
||||
|
||||
entry = gimp_ui_manager_entry_get (manager, path);
|
||||
|
||||
if (! entry)
|
||||
{
|
||||
g_warning ("%s: no entry registered for \"%s\"", G_STRFUNC, path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (! entry->merge_id)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (! gimp_ui_manager_entry_load (manager, entry, &error))
|
||||
{
|
||||
g_message ("%s\n\n%s\n\n%s",
|
||||
_("Your GIMP installation is incomplete:"),
|
||||
error->message,
|
||||
_("Plase make sure the menu XML files are correctly "
|
||||
"installed."));
|
||||
g_clear_error (&error);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (! entry->widget)
|
||||
{
|
||||
GtkUIManager *gtk_manager = GTK_UI_MANAGER (manager);
|
||||
|
||||
entry->widget =
|
||||
GTK_UI_MANAGER_CLASS (parent_class)->get_widget (gtk_manager,
|
||||
entry->ui_path);
|
||||
|
||||
if (entry->widget)
|
||||
{
|
||||
g_object_ref (entry->widget);
|
||||
|
||||
/* take ownership of popup menus */
|
||||
if (GTK_IS_MENU (entry->widget))
|
||||
gtk_object_sink (GTK_OBJECT (entry->widget));
|
||||
|
||||
if (entry->setup_func)
|
||||
entry->setup_func (manager, entry->ui_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("%s: \"%s\" does not contain registered toplevel "
|
||||
"widget \"%s\"",
|
||||
G_STRFUNC, entry->basename, entry->ui_path);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_ui_manager_menu_position (GtkMenu *menu,
|
||||
gint *x,
|
||||
|
||||
@ -77,6 +77,7 @@ void gimp_ui_manager_update (GimpUIManager *manager,
|
||||
gpointer update_data);
|
||||
GimpActionGroup * gimp_ui_manager_get_action_group (GimpUIManager *manager,
|
||||
const gchar *name);
|
||||
|
||||
GtkAction * gimp_ui_manager_find_action (GimpUIManager *manager,
|
||||
const gchar *group_name,
|
||||
const gchar *action_name);
|
||||
@ -85,8 +86,6 @@ void gimp_ui_manager_ui_register (GimpUIManager *manager,
|
||||
const gchar *ui_path,
|
||||
const gchar *basename,
|
||||
GimpUIManagerSetupFunc setup_func);
|
||||
GtkWidget * gimp_ui_manager_ui_get (GimpUIManager *manager,
|
||||
const gchar *ui_path);
|
||||
|
||||
void gimp_ui_manager_ui_popup (GimpUIManager *manager,
|
||||
const gchar *ui_path,
|
||||
|
||||
Reference in New Issue
Block a user