static void list_source_files (gpointer user_data) { DialogData *data = user_data; GList *list; _g_clear_object (&data->last_source); _g_object_list_unref (data->files); data->files = NULL; if (data->source == NULL) { gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("(Empty)")); update_sensitivity (data); return; } gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("Getting the folder content…")); data->loading_list = TRUE; list = g_list_prepend (NULL, data->source); _g_query_all_metadata_async (list, GTH_LIST_RECURSIVE | GTH_LIST_NO_HIDDEN_FILES | GTH_LIST_NO_BACKUP_FILES, DEFINE_STANDARD_ATTRIBUTES (",preview::icon,standard::fast-content-type,gth::file::display-size"), data->cancellable, list_ready_cb, data); g_list_free (list); }
static void device_chooser_changed_cb (GtkWidget *widget, DialogData *data) { GtkTreeIter iter; GMount *mount; if (! gtk_combo_box_get_active_iter (GTK_COMBO_BOX (data->device_chooser), &iter)) { _g_clear_object (&data->source); _g_clear_object (&data->last_source); gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("(Empty)")); return; } gtk_tree_model_get (GTK_TREE_MODEL (data->device_list_store), &iter, SOURCE_LIST_COLUMN_MOUNT, &mount, -1); if (mount == NULL) { _g_clear_object (&data->source); _g_clear_object (&data->last_source); gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("Empty")); return; } _g_object_unref (data->source); data->source = g_mount_get_root (mount); load_file_list (data); g_object_unref (mount); }
static void list_ready_cb (GList *files, GError *error, gpointer user_data) { DialogData *data = user_data; data->loading_list = FALSE; if (data->cancelling) { gth_file_list_cancel (GTH_FILE_LIST (data->file_list), cancel_done, data); } else if (error != NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not load the folder"), error); } else { _g_object_unref (data->last_source); data->last_source = g_file_dup (data->source); data->files = _g_object_list_ref (files); gth_file_list_set_files (GTH_FILE_LIST (data->file_list), data->files); } update_sensitivity (data); }
static gboolean update_file_list (gpointer user_data) { DialogData *data = user_data; LoaderData *loader_data; GList *items; GList *file_data_list; if (data->update_selectection_event != 0) { g_source_remove (data->update_selectection_event); data->update_selectection_event = 0; } cancel_file_list_loading (data); loader_data = g_new0 (LoaderData, 1); loader_data->data = dialog_data_ref (data); items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (data->browser))); file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (data->browser)), items); loader_data->files = gth_file_data_list_to_file_list (file_data_list); data->loader = gth_load_file_data_task_new (loader_data->files, "*"); g_signal_connect (data->loader, "completed", G_CALLBACK (loader_completed_cb), loader_data); gth_browser_exec_task (data->browser, data->loader, FALSE); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); return FALSE; }
static void gth_file_list_finalize (GObject *object) { GthFileList *file_list; g_return_if_fail (GTH_IS_FILE_LIST (object)); file_list = GTH_FILE_LIST (object); file_list->priv->finalizing = TRUE; file_list->view = NULL; gth_file_list_stop (file_list); if (file_list->priv->thumb_fd != NULL) { file_data_unref (file_list->priv->thumb_fd); file_list->priv->thumb_fd = NULL; } gth_file_list_free_list (file_list); g_object_unref (file_list->priv->thumb_loader); if (file_list->priv->filter != NULL) g_object_unref (file_list->priv->filter); gth_file_list_free_pixbufs (file_list); g_free (file_list->priv); G_OBJECT_CLASS (parent_class)->finalize (object); }
static void photoset_combobox_changed_cb (GtkComboBox *widget, gpointer user_data) { DialogData *data = user_data; GtkTreeIter iter; if (! gtk_combo_box_get_active_iter (widget, &iter)) { gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("No album selected")); return; } _g_object_unref (data->photoset); gtk_tree_model_get (gtk_combo_box_get_model (widget), &iter, PHOTOSET_DATA_COLUMN, &data->photoset, -1); gth_import_preferences_dialog_set_event (GTH_IMPORT_PREFERENCES_DIALOG (data->preferences_dialog), data->photoset->title); gth_task_dialog (GTH_TASK (data->service), FALSE, NULL); flickr_service_list_photos (data->service, data->photoset, "original_format, url_sq, url_t, url_s, url_m, url_z, url_b, url_o", data->cancellable, list_photos_ready_cb, data); }
void gth_browser_activate_go_to_container_from_catalog (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GList *items; GList *file_list = NULL; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); if (file_list != NULL) { GthFileData *first_file = file_list->data; GFile *parent; parent = g_file_get_parent (first_file->file); gth_browser_go_to (browser, parent, first_file->file); g_object_unref (parent); } _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
static void album_combobox_changed_cb (GtkComboBox *widget, gpointer user_data) { DialogData *data = user_data; GtkTreeIter iter; if (! gtk_combo_box_get_active_iter (widget, &iter)) { gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("No album selected")); return; } _g_object_unref (data->album); gtk_tree_model_get (gtk_combo_box_get_model (widget), &iter, ALBUM_DATA_COLUMN, &data->album, -1); gth_import_preferences_dialog_set_event (GTH_IMPORT_PREFERENCES_DIALOG (data->preferences_dialog), data->album->title); gth_task_dialog (GTH_TASK (data->service), FALSE, NULL); picasa_web_service_list_photos (data->service, data->album, data->cancellable, list_photos_ready_cb, data); }
static GList * get_files_to_download (DialogData *data) { GthFileView *file_view; GList *selected; GList *file_list; file_view = (GthFileView *) gth_file_list_get_view (GTH_FILE_LIST (data->file_list)); selected = gth_file_selection_get_selected (GTH_FILE_SELECTION (file_view)); if (selected != NULL) file_list = gth_file_list_get_files (GTH_FILE_LIST (data->file_list), selected); else file_list = gth_file_store_get_visibles (GTH_FILE_STORE (gth_file_view_get_model (file_view))); _gtk_tree_path_list_free (selected); return file_list; }
static GList * get_selected_file_list (DialogData *data) { GList *file_list = NULL; GtkWidget *file_view; GList *items; file_view = gth_file_list_get_view (GTH_FILE_LIST (data->file_list)); items = gth_file_selection_get_selected (GTH_FILE_SELECTION (file_view)); if (items != NULL) file_list = gth_file_list_get_files (GTH_FILE_LIST (data->file_list), items); else file_list = gth_file_store_get_visibles (GTH_FILE_STORE (gth_file_view_get_model (GTH_FILE_VIEW (file_view)))); _gtk_tree_path_list_free (items); return file_list; }
static void export_dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_HELP: show_help_dialog (GTK_WINDOW (data->browser), "export-to-picasaweb"); break; case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CANCEL: picasa_web_accounts_save_to_file (data->accounts, data->email); gth_file_list_cancel (GTH_FILE_LIST (data->list_view), (DataFunc) destroy_dialog, data); break; case GTK_RESPONSE_OK: { GtkTreeModel *tree_model; GtkTreeIter iter; GList *file_list; if (! gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (GET_WIDGET ("albums_treeview"))), &tree_model, &iter)) { gtk_widget_set_sensitive (GET_WIDGET ("upload_button"), FALSE); return; } _g_clear_object (&data->album); gtk_tree_model_get (tree_model, &iter, ALBUM_DATA_COLUMN, &data->album, -1); gtk_widget_hide (data->dialog); gth_task_dialog (GTH_TASK (data->conn), FALSE); file_list = gth_file_data_list_to_file_list (data->file_list); picasa_web_service_post_photos (data->picasaweb, data->album, file_list, data->cancellable, post_photos_ready_cb, data); _g_object_list_unref (file_list); } break; default: break; } }
static void file_list_info_ready_cb (GList *files, GError *error, gpointer user_data) { GthOrganizeTask *self = user_data; if (error != NULL) return; gth_file_list_set_files (GTH_FILE_LIST (self->priv->file_list), files); }
static void update_status (DialogData *data) { GtkWidget *file_view; int n_selected; goffset size; GList *selected; GList *file_list; GList *scan; char *ssize; char *status; file_view = gth_file_list_get_view (GTH_FILE_LIST (data->file_list)); selected = gth_file_selection_get_selected (GTH_FILE_SELECTION (file_view)); if (selected != NULL) file_list = gth_file_list_get_files (GTH_FILE_LIST (data->file_list), selected); else file_list = gth_file_store_get_visibles (GTH_FILE_STORE (gth_file_view_get_model (GTH_FILE_VIEW (file_view)))); n_selected = 0; size = 0; for (scan = file_list; scan; scan = scan->next) { GthFileData *file_data = scan->data; size += g_file_info_get_size (file_data->info); n_selected += 1; } ssize = g_format_size (size); /* translators: %d is the number of files, %s the total size */ status = g_strdup_printf (_("Files to import: %d (%s)"), n_selected, ssize); gtk_label_set_text (GTK_LABEL (GET_WIDGET ("status_label")), status); g_free (status); g_free (ssize); _g_object_list_unref (file_list); _gtk_tree_path_list_free (selected); }
static void cancel (DialogData *data, DataFunc done_func) { if (data->cancelling) return; data->done_func = done_func; data->cancelling = TRUE; if (data->loading_list) g_cancellable_cancel (data->cancellable); else gth_file_list_cancel (GTH_FILE_LIST (data->file_list), cancel_done, data); }
void gth_browser_activate_action_tool_resize_images (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); dlg_resize_images (browser, file_list); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
static void gth_organize_task_init (GthOrganizeTask *self) { GIcon *icon; self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GTH_TYPE_ORGANIZE_TASK, GthOrganizeTaskPrivate); self->priv->builder = _gtk_builder_new_from_file ("organize-files-task.ui", "catalogs"); self->priv->results_liststore = (GtkListStore *) gtk_builder_get_object (self->priv->builder, "results_liststore"); self->priv->catalogs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self->priv->results_liststore), KEY_COLUMN, GTK_SORT_ASCENDING); g_object_set (GET_WIDGET ("catalog_name_cellrenderertext"), "editable", TRUE, NULL); icon = g_themed_icon_new ("file-catalog"); self->priv->icon_pixbuf = _g_icon_get_pixbuf (icon, _gtk_icon_get_pixel_size (GET_WIDGET ("organization_treeview"), GTK_ICON_SIZE_MENU), gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GET_WIDGET ("organization_treeview")))); g_object_unref (icon); self->priv->file_list = gth_file_list_new (GTH_FILE_LIST_TYPE_NORMAL, FALSE); gth_file_list_set_caption (GTH_FILE_LIST (self->priv->file_list), "standard::display-name"); gtk_widget_show (self->priv->file_list); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("preview_box")), self->priv->file_list, TRUE, TRUE, 0); g_signal_connect (GET_WIDGET ("catalog_name_cellrenderertext"), "edited", G_CALLBACK (catalog_name_cellrenderertext_edited_cb), self); g_signal_connect (GET_WIDGET ("create_cellrenderertoggle"), "toggled", G_CALLBACK (create_cellrenderertoggle_toggled_cb), self); g_signal_connect (GET_WIDGET ("organize_files_dialog"), "response", G_CALLBACK (organize_files_dialog_response_cb), self); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (GET_WIDGET ("organization_treeview"))), "changed", G_CALLBACK (organization_treeview_selection_changed_cb), self); g_signal_connect (GET_WIDGET ("select_all_button"), "clicked", G_CALLBACK (select_all_button_clicked_cb), self); g_signal_connect (GET_WIDGET ("select_none_button"), "clicked", G_CALLBACK (select_none_button_clicked_cb), self); }
static void filter_combobox_changed_cb (GtkComboBox *widget, DialogData *data) { int idx; const char *test_id; GthTest *test; idx = gtk_combo_box_get_active (widget); test_id = g_list_nth (data->general_tests, idx)->data; test = gth_main_get_registered_object (GTH_TYPE_TEST, test_id); gth_file_list_set_filter (GTH_FILE_LIST (data->file_list), test); g_object_unref (test); }
void gth_browser_activate_trash (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GList *items; GList *file_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); gth_file_mananger_trash_files (GTK_WINDOW (browser), file_list); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_action_export_facebook (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); if (file_list == NULL) file_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser)); dlg_export_to_facebook (browser, file_list); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void rs__gth_browser_file_list_rename_cb (GthBrowser *browser) { GList *items; GList *file_data_list; GList *file_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); file_list = gth_file_data_list_to_file_list (file_data_list); if (file_list != NULL) dlg_rename_series (browser, file_list); _g_object_list_unref (file_list); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_action_edit_remove_from_catalog (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_data_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); gth_catalog_manager_remove_files (GTK_WINDOW (browser), gth_browser_get_location_data (browser), file_data_list); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_action_edit_add_to_catalog (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_list = NULL; GList *files; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); files = gth_file_data_list_to_file_list (file_list); dlg_add_to_catalog (browser, files); _g_object_list_unref (files); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
static void copy_selected_files_to_folder (GthBrowser *browser, gboolean move) { GList *items; GList *file_list; GList *files; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); files = gth_file_data_list_to_file_list (file_list); copy_to_folder_dialog (browser, files, move); _g_object_list_unref (files); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_export_23 (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GList *items; GList *file_list; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); if (file_list == NULL) file_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser)); dlg_export_to_flickr (&www_23hq_com, browser, file_list); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_add_to_catalog (GthBrowser *browser, GFile *catalog) { GList *items; GList *file_list; GList *files; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); files = gth_file_data_list_to_file_list (file_list); if (files != NULL) add_to_catalog (browser, catalog, files); _g_object_list_unref (files); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
static void list_photos_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; GList *list; GList *scan; gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _g_object_list_unref (data->photos); data->photos = flickr_service_list_photos_finish (data->service, result, &error); if (error != NULL) { if (data->service != NULL) gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), error); g_clear_error (&error); gtk_widget_destroy (data->dialog); return; } list = NULL; for (scan = data->photos; scan; scan = scan->next) { FlickrPhoto *photo = scan->data; GthFileData *file_data; if (photo->url[FLICKR_URL_O] == NULL) continue; file_data = gth_file_data_new_for_uri (photo->url[FLICKR_URL_O], (photo->mime_type != NULL) ? photo->mime_type : "image/jpeg"); g_file_info_set_file_type (file_data->info, G_FILE_TYPE_REGULAR); g_file_info_set_size (file_data->info, FAKE_SIZE); /* set a fake size to make the progress dialog work correctly */ g_file_info_set_attribute_object (file_data->info, "flickr::object", G_OBJECT (photo)); list = g_list_prepend (list, file_data); } gth_file_list_set_files (GTH_FILE_LIST (data->file_list), list); update_selection_status (data); gtk_widget_set_sensitive (GET_WIDGET ("download_button"), list != NULL); _g_object_list_unref (list); }
void gth_browser_activate_duplicate (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GList *items; GList *file_list; GthTask *task; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); task = gth_duplicate_task_new (file_list); gth_browser_exec_task (browser, task, GTH_TASK_FLAGS_DEFAULT); g_object_unref (task); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_action_tool_reset_orientation (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_data_list; GList *file_list; GthTask *task; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); file_list = gth_file_data_list_to_file_list (file_data_list); task = gth_reset_orientation_task_new (browser, file_list); gth_browser_exec_task (browser, task, FALSE); g_object_unref (task); _g_object_list_unref (file_list); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); }
static gboolean drag_motion_autoscroll_cb (gpointer user_data) { GthBrowser *browser = user_data; BrowserData *data; GtkAdjustment *adj; double max_value; double value; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); adj = gth_file_list_get_vadjustment (GTH_FILE_LIST (gth_browser_get_file_list (browser))); max_value = gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj); value = gtk_adjustment_get_value (adj) + data->scroll_diff; if (value > max_value) value = max_value; gtk_adjustment_set_value (adj, value); return TRUE; }
static void activate_open_with_application_item (GtkMenuItem *menuitem, gpointer data) { GthBrowser *browser = data; GList *items; GList *file_list; GList *uris; GList *scan; GAppInfo *appinfo; GdkAppLaunchContext *context; GError *error = NULL; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); uris = NULL; for (scan = file_list; scan; scan = scan->next) { GthFileData *file_data = scan->data; uris = g_list_prepend (uris, g_file_get_uri (file_data->file)); } uris = g_list_reverse (uris); appinfo = g_object_get_data (G_OBJECT (menuitem), "appinfo"); g_return_if_fail (G_IS_APP_INFO (appinfo)); context = gdk_display_get_app_launch_context (gtk_widget_get_display (GTK_WIDGET (browser))); gdk_app_launch_context_set_timestamp (context, 0); gdk_app_launch_context_set_icon (context, g_app_info_get_icon (appinfo)); if (! g_app_info_launch_uris (appinfo, uris, G_APP_LAUNCH_CONTEXT (context), &error)) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not perform the operation"), error); g_clear_error (&error); } g_object_unref (context); g_list_free (uris); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }