mirror of https://github.com/GNOME/gimp.git
new versions with slight API renaming and new generalized API for adding
2007-09-24 Michael Natterer <mitch@gimp.org> * app/gui/ige-mac-menu.[ch]: new versions with slight API renaming and new generalized API for adding application menu items. * app/gui/gui.c (gui_restore_after_callback): follow API changes and add "Preferences", "Keyboard Shortcuts" and "Units" to the application menu's preferences section. svn path=/trunk/; revision=23639
This commit is contained in:
parent
f8699d68bc
commit
51f2f0c65f
|
@ -1,3 +1,12 @@
|
|||
2007-09-24 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/gui/ige-mac-menu.[ch]: new versions with slight API renaming
|
||||
and new generalized API for adding application menu items.
|
||||
|
||||
* app/gui/gui.c (gui_restore_after_callback): follow API changes
|
||||
and add "Preferences", "Keyboard Shortcuts" and "Units" to the
|
||||
application menu's preferences section.
|
||||
|
||||
2007-09-24 Simon Budig <simon@gimp.org>
|
||||
|
||||
* app/xcf/xcf-load.c: use the correct default values for the
|
||||
|
|
|
@ -464,6 +464,7 @@ gui_restore_after_callback (Gimp *gimp,
|
|||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
{
|
||||
IgeMacMenuGroup *group;
|
||||
GtkWidget *menu;
|
||||
GtkWidget *item;
|
||||
|
||||
|
@ -473,22 +474,38 @@ gui_restore_after_callback (Gimp *gimp,
|
|||
if (GTK_IS_MENU_ITEM (menu))
|
||||
menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu));
|
||||
|
||||
ige_mac_menu_set_menubar (GTK_MENU_SHELL (menu));
|
||||
ige_mac_menu_set_menu_bar (GTK_MENU_SHELL (menu));
|
||||
|
||||
item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
|
||||
"/dummy-menubar/image-popup/File/file-quit");
|
||||
if (GTK_IS_MENU_ITEM (item))
|
||||
ige_mac_menu_set_quit_item (GTK_MENU_ITEM (item));
|
||||
ige_mac_menu_set_quit_menu_item (GTK_MENU_ITEM (item));
|
||||
|
||||
/* the about group */
|
||||
group = ige_mac_menu_add_app_menu_group ();
|
||||
|
||||
item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
|
||||
"/dummy-menubar/image-popup/Help/dialogs-about");
|
||||
if (GTK_IS_MENU_ITEM (item))
|
||||
ige_mac_menu_set_about_item (GTK_MENU_ITEM (item), _("About GIMP"));
|
||||
ige_mac_menu_add_app_menu_item (group, GTK_MENU_ITEM (item), _("About GIMP"));
|
||||
|
||||
/* the preferences group */
|
||||
group = ige_mac_menu_add_app_menu_group ();
|
||||
|
||||
item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
|
||||
"/dummy-menubar/image-popup/Edit/dialogs-preferences");
|
||||
"/dummy-menubar/image-popup/Edit/Preferences/dialogs-preferences");
|
||||
if (GTK_IS_MENU_ITEM (item))
|
||||
ige_mac_menu_set_prefs_item (GTK_MENU_ITEM (item), _("Preferences"));
|
||||
ige_mac_menu_add_app_menu_item (group, GTK_MENU_ITEM (item), _("Preferences"));
|
||||
|
||||
item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
|
||||
"/dummy-menubar/image-popup/Edit/Preferences/dialogs-keyboard-shortcuts");
|
||||
if (GTK_IS_MENU_ITEM (item))
|
||||
ige_mac_menu_add_app_menu_item (group, GTK_MENU_ITEM (item), _("Keyboard Shortcuts"));
|
||||
|
||||
item = gtk_ui_manager_get_widget (GTK_UI_MANAGER (image_ui_manager),
|
||||
"/dummy-menubar/image-popup/Edit/Preferences/plug-in-unit-editor");
|
||||
if (GTK_IS_MENU_ITEM (item))
|
||||
ige_mac_menu_add_app_menu_item (group, GTK_MENU_ITEM (item), _("Units"));
|
||||
}
|
||||
#endif /* GDK_WINDOWING_QUARTZ */
|
||||
|
||||
|
|
|
@ -683,7 +683,7 @@ sync_menu_shell (GtkMenuShell *menu_shell,
|
|||
}
|
||||
|
||||
void
|
||||
ige_mac_menu_set_menubar (GtkMenuShell *menu_shell)
|
||||
ige_mac_menu_set_menu_bar (GtkMenuShell *menu_shell)
|
||||
{
|
||||
MenuRef carbon_menubar;
|
||||
|
||||
|
@ -704,7 +704,7 @@ ige_mac_menu_set_menubar (GtkMenuShell *menu_shell)
|
|||
}
|
||||
|
||||
void
|
||||
ige_mac_menu_set_quit_item (GtkMenuItem *menu_item)
|
||||
ige_mac_menu_set_quit_menu_item (GtkMenuItem *menu_item)
|
||||
{
|
||||
MenuRef appmenu;
|
||||
MenuItemIndex index;
|
||||
|
@ -724,57 +724,76 @@ ige_mac_menu_set_quit_item (GtkMenuItem *menu_item)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
struct _IgeMacMenuGroup
|
||||
{
|
||||
GList *items;
|
||||
};
|
||||
|
||||
static GList *app_menu_groups = NULL;
|
||||
|
||||
IgeMacMenuGroup *
|
||||
ige_mac_menu_add_app_menu_group (void)
|
||||
{
|
||||
IgeMacMenuGroup *group = g_slice_new0 (IgeMacMenuGroup);
|
||||
|
||||
app_menu_groups = g_list_append (app_menu_groups, group);
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
void
|
||||
ige_mac_menu_set_about_item (GtkMenuItem *menu_item,
|
||||
ige_mac_menu_add_app_menu_item (IgeMacMenuGroup *group,
|
||||
GtkMenuItem *menu_item,
|
||||
const gchar *label)
|
||||
{
|
||||
MenuRef appmenu;
|
||||
GList *list;
|
||||
gint index = 0;
|
||||
|
||||
g_return_if_fail (group != NULL);
|
||||
g_return_if_fail (GTK_IS_MENU_ITEM (menu_item));
|
||||
g_return_if_fail (label != NULL);
|
||||
|
||||
if (GetIndMenuItemWithCommandID (NULL, kHICommandHide, 1,
|
||||
&appmenu, NULL) == noErr)
|
||||
&appmenu, NULL) != noErr)
|
||||
{
|
||||
g_warning ("%s: retrieving app menu failed",
|
||||
G_STRFUNC);
|
||||
return;
|
||||
}
|
||||
|
||||
for (list = app_menu_groups; list; list = g_list_next (list))
|
||||
{
|
||||
IgeMacMenuGroup *list_group = list->data;
|
||||
|
||||
index += g_list_length (list_group->items);
|
||||
|
||||
/* adjust index for the separator between groups, but not
|
||||
* before the first group
|
||||
*/
|
||||
if (list_group->items && list->prev)
|
||||
index++;
|
||||
|
||||
if (group == list_group)
|
||||
{
|
||||
CFStringRef cfstr;
|
||||
|
||||
cfstr = CFStringCreateWithCString (NULL, label,
|
||||
kCFStringEncodingUTF8);
|
||||
|
||||
InsertMenuItemTextWithCFString (appmenu, cfstr, 0, 0, 0);
|
||||
SetMenuItemProperty (appmenu, 1,
|
||||
IGE_QUARTZ_MENU_CREATOR,
|
||||
IGE_QUARTZ_ITEM_WIDGET,
|
||||
sizeof (menu_item), &menu_item);
|
||||
|
||||
CFRelease (cfstr);
|
||||
|
||||
gtk_widget_hide (GTK_WIDGET (menu_item));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ige_mac_menu_set_prefs_item (GtkMenuItem *menu_item,
|
||||
const gchar *label)
|
||||
/* add a separator before adding the first item, but not
|
||||
* for the first group
|
||||
*/
|
||||
if (!group->items && list->prev)
|
||||
{
|
||||
MenuRef appmenu;
|
||||
|
||||
g_return_if_fail (GTK_IS_MENU_ITEM (menu_item));
|
||||
g_return_if_fail (label != NULL);
|
||||
|
||||
if (GetIndMenuItemWithCommandID (NULL, kHICommandHide, 1,
|
||||
&appmenu, NULL) == noErr)
|
||||
{
|
||||
CFStringRef cfstr;
|
||||
|
||||
InsertMenuItemTextWithCFString (appmenu, NULL, 1,
|
||||
InsertMenuItemTextWithCFString (appmenu, NULL, index,
|
||||
kMenuItemAttrSeparator, 0);
|
||||
index++;
|
||||
}
|
||||
|
||||
cfstr = CFStringCreateWithCString (NULL, label,
|
||||
kCFStringEncodingUTF8);
|
||||
|
||||
InsertMenuItemTextWithCFString (appmenu, cfstr, 2, 0, 0);
|
||||
SetMenuItemProperty (appmenu, 3,
|
||||
InsertMenuItemTextWithCFString (appmenu, cfstr, index, 0, 0);
|
||||
SetMenuItemProperty (appmenu, index + 1,
|
||||
IGE_QUARTZ_MENU_CREATOR,
|
||||
IGE_QUARTZ_ITEM_WIDGET,
|
||||
sizeof (menu_item), &menu_item);
|
||||
|
@ -782,7 +801,16 @@ ige_mac_menu_set_prefs_item (GtkMenuItem *menu_item,
|
|||
CFRelease (cfstr);
|
||||
|
||||
gtk_widget_hide (GTK_WIDGET (menu_item));
|
||||
|
||||
group->items = g_list_append (group->items, menu_item);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!list)
|
||||
g_warning ("%s: app menu group %p does not exist",
|
||||
G_STRFUNC, group);
|
||||
}
|
||||
|
||||
#endif /* GDK_WINDOWING_QUARTZ */
|
||||
|
|
|
@ -28,11 +28,14 @@
|
|||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void ige_mac_menu_set_menubar (GtkMenuShell *menu_shell);
|
||||
void ige_mac_menu_set_quit_item (GtkMenuItem *menu_item);
|
||||
void ige_mac_menu_set_about_item (GtkMenuItem *menu_item,
|
||||
const gchar *label);
|
||||
void ige_mac_menu_set_prefs_item (GtkMenuItem *menu_item,
|
||||
typedef struct _IgeMacMenuGroup IgeMacMenuGroup;
|
||||
|
||||
void ige_mac_menu_set_menu_bar (GtkMenuShell *menu_shell);
|
||||
void ige_mac_menu_set_quit_menu_item (GtkMenuItem *menu_item);
|
||||
|
||||
IgeMacMenuGroup * ige_mac_menu_add_app_menu_group (void);
|
||||
void ige_mac_menu_add_app_menu_item (IgeMacMenuGroup *group,
|
||||
GtkMenuItem *menu_item,
|
||||
const gchar *label);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
Loading…
Reference in New Issue