static gboolean get_script_iter (DialogData *data, GthScript *script, GtkTreeIter *iter) { GtkTreeModel *model = GTK_TREE_MODEL (data->list_store); gboolean found = FALSE; const char *script_id; script_id = gth_script_get_id (script); if (! gtk_tree_model_get_iter_first (model, iter)) return FALSE; do { GthScript *list_script; gtk_tree_model_get (model, iter, COLUMN_SCRIPT, &list_script, -1); found = g_strcmp0 (script_id, gth_script_get_id (list_script)) == 0; g_object_unref (list_script); } while (! found && gtk_tree_model_iter_next (model, iter)); return found; }
static void update_scripts_menu (BrowserData *data) { GthMenuManager *menu_manager; GList *script_list; GList *scan; menu_manager = gth_browser_get_menu_manager (data->browser, GTH_BROWSER_MENU_MANAGER_TOOLS3); if (data->menu_merge_id != 0) gth_menu_manager_remove_entries (menu_manager, data->menu_merge_id); data->menu_merge_id = gth_menu_manager_new_merge_id (menu_manager); script_list = gth_script_file_get_scripts (gth_script_file_get ()); for (scan = script_list; scan; scan = scan->next) { GthScript *script = scan->data; char *detailed_action; if (! gth_script_is_visible (script)) continue; detailed_action = g_strdup_printf ("win.exec-script('%s')", gth_script_get_id (script)); gth_menu_manager_append_entry (menu_manager, data->menu_merge_id, gth_script_get_display_name (script), detailed_action, NULL, NULL); g_free (detailed_action); } list_tools__gth_browser_update_sensitivity_cb (data->browser); _g_object_list_unref (script_list); }