Example #1
0
void
plug_in_actions_setup (GimpActionGroup *group)
{
  GimpPlugInManager *manager = group->gimp->plug_in_manager;
  GSList            *list;

  gimp_action_group_add_actions (group, "plug-in-action",
                                 plug_in_actions,
                                 G_N_ELEMENTS (plug_in_actions));

  for (list = gimp_plug_in_manager_get_menu_branches (manager);
       list;
       list = g_slist_next (list))
    {
      GimpPlugInMenuBranch *branch = list->data;

      plug_in_actions_menu_branch_added (manager,
                                         branch->file,
                                         branch->menu_path,
                                         branch->menu_label,
                                         group);
    }

  g_signal_connect_object (manager,
                           "menu-branch-added",
                           G_CALLBACK (plug_in_actions_menu_branch_added),
                           group, 0);

  for (list = manager->plug_in_procedures;
       list;
       list = g_slist_next (list))
    {
      GimpPlugInProcedure *plug_in_proc = list->data;

      if (plug_in_proc->file)
        plug_in_actions_register_procedure (group->gimp->pdb,
                                            GIMP_PROCEDURE (plug_in_proc),
                                            group);
    }

  g_signal_connect_object (group->gimp->pdb, "register-procedure",
                           G_CALLBACK (plug_in_actions_register_procedure),
                           group, 0);
  g_signal_connect_object (group->gimp->pdb, "unregister-procedure",
                           G_CALLBACK (plug_in_actions_unregister_procedure),
                           group, 0);
}
Example #2
0
void
plug_in_actions_setup (GimpActionGroup *group)
{
    GimpPlugInActionEntry *entries;
    GSList                *list;
    gint                   n_entries;
    gint                   i;

    gimp_action_group_add_actions (group,
                                   plug_in_actions,
                                   G_N_ELEMENTS (plug_in_actions));

    gimp_action_group_add_enum_actions (group,
                                        plug_in_repeat_actions,
                                        G_N_ELEMENTS (plug_in_repeat_actions),
                                        G_CALLBACK (plug_in_repeat_cmd_callback));

    for (list = group->gimp->plug_in_manager->menu_branches;
            list;
            list = g_slist_next (list))
    {
        GimpPlugInMenuBranch *branch = list->data;

        plug_in_actions_menu_branch_added (group->gimp->plug_in_manager,
                                           branch->prog_name,
                                           branch->menu_path,
                                           branch->menu_label,
                                           group);
    }

    g_signal_connect_object (group->gimp->plug_in_manager,
                             "menu-branch-added",
                             G_CALLBACK (plug_in_actions_menu_branch_added),
                             group, 0);

    for (list = group->gimp->plug_in_manager->plug_in_procedures;
            list;
            list = g_slist_next (list))
    {
        GimpPlugInProcedure *plug_in_proc = list->data;

        if (plug_in_proc->prog)
            plug_in_actions_register_procedure (group->gimp->pdb,
                                                GIMP_PROCEDURE (plug_in_proc),
                                                group);
    }

    g_signal_connect_object (group->gimp->pdb, "register-procedure",
                             G_CALLBACK (plug_in_actions_register_procedure),
                             group, 0);
    g_signal_connect_object (group->gimp->pdb, "unregister-procedure",
                             G_CALLBACK (plug_in_actions_unregister_procedure),
                             group, 0);

    n_entries = gimp_plug_in_manager_history_size (group->gimp->plug_in_manager);

    entries = g_new0 (GimpPlugInActionEntry, n_entries);

    for (i = 0; i < n_entries; i++)
    {
        entries[i].name        = g_strdup_printf ("plug-in-recent-%02d", i + 1);
        entries[i].stock_id    = NULL;
        entries[i].label       = "";
        entries[i].accelerator = "";
        entries[i].tooltip     = NULL;
        entries[i].procedure   = NULL;
        entries[i].help_id     = GIMP_HELP_FILTER_RESHOW;
    }

    gimp_action_group_add_plug_in_actions (group, entries, n_entries,
                                           G_CALLBACK (plug_in_history_cmd_callback));

    for (i = 0; i < n_entries; i++)
    {
        gimp_action_group_set_action_visible (group, entries[i].name, FALSE);
        g_free ((gchar *) entries[i].name);
    }

    g_free (entries);

    g_signal_connect_object (group->gimp->plug_in_manager, "history-changed",
                             G_CALLBACK (plug_in_actions_history_changed),
                             group, 0);

    plug_in_actions_history_changed (group->gimp->plug_in_manager, group);
}