static GtkTargetList * gnm_soi_get_target_list (SheetObject const *so) { SheetObjectImage *soi = SHEET_OBJECT_IMAGE (so); GtkTargetList *tl = gtk_target_list_new (NULL, 0); char *mime_str = go_image_format_to_mime (soi->type); GSList *mimes, *ptr; GdkPixbuf *pixbuf; mimes = go_strsplit_to_slist (mime_str, ','); for (ptr = mimes; ptr != NULL; ptr = ptr->next) { const char *mime = ptr->data; if (mime != NULL && *mime != '\0') gtk_target_list_add (tl, gdk_atom_intern (mime, FALSE), 0, 0); } g_free (mime_str); go_slist_free_custom (mimes, g_free); /* No need to eliminate duplicates. */ if ((pixbuf = soi_get_pixbuf (soi, 1.0)) != NULL) { gtk_target_list_add_image_targets (tl, 0, TRUE); g_object_unref (pixbuf); } return tl; }
static void pm_gui_load_directory_page (PluginManagerGUI *pm_gui) { GtkTreeIter iter; char * sys_plugins = g_build_filename (gnm_sys_lib_dir (), PLUGIN_SUBDIR, NULL); char * usr_plugins = (gnm_usr_dir (TRUE) == NULL ? NULL : g_build_filename (gnm_usr_dir (TRUE), PLUGIN_SUBDIR, NULL)); char * go_plugins = go_plugins_get_plugin_dir (); GSList *plugin_dirs; gchar const *plugin_path_env; gtk_list_store_clear (pm_gui->model_directories); gtk_list_store_append (pm_gui->model_directories, &iter); gtk_list_store_set (pm_gui->model_directories, &iter, DIR_NAME, sys_plugins, DIR_IS_SYSTEM, TRUE, -1); g_free (sys_plugins); gtk_list_store_append (pm_gui->model_directories, &iter); gtk_list_store_set (pm_gui->model_directories, &iter, DIR_NAME, usr_plugins, DIR_IS_SYSTEM, TRUE, -1); g_free (usr_plugins); gtk_list_store_append (pm_gui->model_directories, &iter); gtk_list_store_set (pm_gui->model_directories, &iter, DIR_NAME, go_plugins, DIR_IS_SYSTEM, TRUE, -1); g_free (go_plugins); plugin_path_env = g_getenv ("GNUMERIC_PLUGIN_PATH"); if (plugin_path_env != NULL) { plugin_dirs = go_strsplit_to_slist (plugin_path_env, G_SEARCHPATH_SEPARATOR); pm_gui_load_directories (pm_gui, plugin_dirs, FALSE); g_slist_free_full (plugin_dirs, g_free); } pm_gui_load_directories (pm_gui, gnm_conf_get_plugins_extra_dirs (), TRUE); }