void gimp_action_factory_group_register (GimpActionFactory *factory, const gchar *identifier, const gchar *label, const gchar *icon_name, GimpActionGroupSetupFunc setup_func, GimpActionGroupUpdateFunc update_func) { GimpActionFactoryEntry *entry; g_return_if_fail (GIMP_IS_ACTION_FACTORY (factory)); g_return_if_fail (identifier != NULL); g_return_if_fail (label != NULL); g_return_if_fail (setup_func != NULL); g_return_if_fail (update_func != NULL); entry = g_slice_new0 (GimpActionFactoryEntry); entry->identifier = g_strdup (identifier); entry->label = g_strdup (label); entry->icon_name = g_strdup (icon_name); entry->setup_func = setup_func; entry->update_func = update_func; factory->registered_groups = g_list_prepend (factory->registered_groups, entry); }
GimpActionGroup * gimp_action_factory_group_new (GimpActionFactory *factory, const gchar *identifier, gpointer user_data) { GList *list; g_return_val_if_fail (GIMP_IS_ACTION_FACTORY (factory), NULL); g_return_val_if_fail (identifier != NULL, NULL); for (list = factory->registered_groups; list; list = g_list_next (list)) { GimpActionFactoryEntry *entry = list->data; if (! strcmp (entry->identifier, identifier)) { GimpActionGroup *group; group = gimp_action_group_new (factory->gimp, entry->identifier, entry->label, entry->icon_name, user_data, entry->update_func); if (entry->setup_func) entry->setup_func (group); return group; } } g_warning ("%s: no entry registered for \"%s\"", G_STRFUNC, identifier); return NULL; }
void menus_init (Gimp *gimp, GimpActionFactory *action_factory) { g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (GIMP_IS_ACTION_FACTORY (action_factory)); g_return_if_fail (global_menu_factory == NULL); /* We need to make sure the property is installed before using it */ g_type_class_ref (GTK_TYPE_MENU); menus_can_change_accels (GIMP_GUI_CONFIG (gimp->config)); g_signal_connect (gimp->config, "notify::can-change-accels", G_CALLBACK (menus_can_change_accels), NULL); global_menu_factory = gimp_menu_factory_new (gimp, action_factory); gimp_menu_factory_manager_register (global_menu_factory, "<Image>", "file", "context", "debug", "help", "edit", "select", "view", "image", "drawable", "layers", "channels", "vectors", "tools", "dialogs", "windows", "plug-in", "filters", "quick-mask", NULL, "/image-menubar", "image-menu.xml", image_menu_setup, "/dummy-menubar", "image-menu.xml", image_menu_setup, "/quick-mask-popup", "quick-mask-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Toolbox>", "file", "context", "help", "edit", "select", "view", "image", "drawable", "layers", "channels", "vectors", "tools", "windows", "dialogs", "plug-in", "filters", "quick-mask", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Dock>", "file", "context", "edit", "select", "view", "image", "drawable", "layers", "channels", "vectors", "tools", "windows", "dialogs", "plug-in", "quick-mask", "dock", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Layers>", "layers", "plug-in", "filters", NULL, "/layers-popup", "layers-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Channels>", "channels", "plug-in", "filters", NULL, "/channels-popup", "channels-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Vectors>", "vectors", "plug-in", NULL, "/vectors-popup", "vectors-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Colormap>", "colormap", "plug-in", NULL, "/colormap-popup", "colormap-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Dockable>", "dockable", "dock", NULL, "/dockable-popup", "dockable-menu.xml", dockable_menu_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Brushes>", "brushes", "plug-in", NULL, "/brushes-popup", "brushes-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Dynamics>", "dynamics", "plug-in", NULL, "/dynamics-popup", "dynamics-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Patterns>", "patterns", "plug-in", NULL, "/patterns-popup", "patterns-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Gradients>", "gradients", "plug-in", NULL, "/gradients-popup", "gradients-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Palettes>", "palettes", "plug-in", NULL, "/palettes-popup", "palettes-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<ToolPresets>", "tool-presets", "plug-in", NULL, "/tool-presets-popup", "tool-presets-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Fonts>", "fonts", "plug-in", NULL, "/fonts-popup", "fonts-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Buffers>", "buffers", "plug-in", NULL, "/buffers-popup", "buffers-menu.xml", plug_in_menus_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Documents>", "documents", NULL, "/documents-popup", "documents-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Templates>", "templates", NULL, "/templates-popup", "templates-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Images>", "images", NULL, "/images-popup", "images-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<BrushEditor>", "brush-editor", NULL, "/brush-editor-popup", "brush-editor-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<DynamicsEditor>", "dynamics-editor", NULL, "/dynamics-editor-popup", "dynamics-editor-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<GradientEditor>", "gradient-editor", NULL, "/gradient-editor-popup", "gradient-editor-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<PaletteEditor>", "palette-editor", NULL, "/palette-editor-popup", "palette-editor-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<ToolPresetEditor>", "tool-preset-editor", NULL, "/tool-preset-editor-popup", "tool-preset-editor-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Selection>", "select", "vectors", NULL, "/selection-popup", "selection-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<NavigationEditor>", "view", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<Undo>", "edit", NULL, "/undo-popup", "undo-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<ErrorConsole>", "error-console", NULL, "/error-console-popup", "error-console-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<ToolOptions>", "tool-options", NULL, "/tool-options-popup", "tool-options-menu.xml", tool_options_menu_setup, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<TextEditor>", "text-editor", NULL, "/text-editor-toolbar", "text-editor-toolbar.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<TextTool>", "text-tool", NULL, "/text-tool-popup", "text-tool-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<CursorInfo>", "cursor-info", NULL, "/cursor-info-popup", "cursor-info-menu.xml", NULL, NULL); gimp_menu_factory_manager_register (global_menu_factory, "<SamplePoints>", "sample-points", NULL, "/sample-points-popup", "sample-points-menu.xml", NULL, NULL); }