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 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; } }
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); }
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_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 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_action_export_webalbum (GtkAction *action, 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); if (file_data_list == NULL) file_data_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser)); file_list = gth_file_data_list_to_file_list (file_data_list); dlg_web_exporter (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_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); }
void gth_browser_activate_add_to_selection (GthBrowser *browser, int n_selection) { char *uri; GFile *folder; GList *items; GList *file_list = NULL; GList *files; uri = g_strdup_printf ("selection:///%d", n_selection); folder = g_file_new_for_uri (uri); 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); gth_selections_manager_add_files (folder, files, -1); _g_object_list_unref (files); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); g_object_unref (folder); g_free (uri); }
void gth_browser_activate_remove_from_catalog (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); 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); gth_catalog_manager_remove_files (GTK_WINDOW (browser), gth_browser_get_location_data (browser), file_list, TRUE); _g_object_list_unref (file_list); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); }
static void gth_file_list_drag_data_received (GtkWidget *file_view, GdkDragContext *context, int x, int y, GtkSelectionData *selection_data, guint info, guint time, gpointer user_data) { GthBrowser *browser = user_data; gboolean success = FALSE; char **uris; GList *selected_files; GdkDragAction action; g_signal_stop_emission_by_name (file_view, "drag-data-received"); action = gdk_drag_context_get_suggested_action (context); if (action == GDK_ACTION_COPY || action == GDK_ACTION_MOVE) { success = TRUE; } if (action == GDK_ACTION_ASK) { GdkDragAction actions = _gtk_menu_ask_drag_drop_action (file_view, gdk_drag_context_get_actions (context), time); gdk_drag_status (context, actions, time); success = gdk_drag_context_get_selected_action (context) != 0; } if (gtk_selection_data_get_data_type (selection_data) == XDND_ACTION_DIRECT_SAVE_ATOM) { const guchar *data; int format; int length; data = gtk_selection_data_get_data (selection_data); format = gtk_selection_data_get_format (selection_data); length = gtk_selection_data_get_length (selection_data); if ((format == 8) && (length == 1) && (data[0] == 'S')) { success = TRUE; } else { gdk_property_change (gdk_drag_context_get_dest_window (context), XDND_ACTION_DIRECT_SAVE_ATOM, TEXT_PLAIN_ATOM, 8, GDK_PROP_MODE_REPLACE, (const guchar *) "", 0); success = FALSE; } gtk_drag_finish (context, success, FALSE, time); return; } gtk_drag_finish (context, success, FALSE, time); if (! success) return; uris = gtk_selection_data_get_uris (selection_data); selected_files = _g_file_list_new_from_uriv (uris); if (selected_files != NULL) { if (gtk_drag_get_source_widget (context) == file_view) { GList *file_data_list; GList *visible_files; BrowserData *data; GthTask *task; file_data_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser)); visible_files = gth_file_data_list_to_file_list (file_data_list); data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); task = gth_reorder_task_new (gth_browser_get_location_source (browser), gth_browser_get_location_data (browser), visible_files, selected_files, data->drop_pos); gth_browser_exec_task (browser, task, FALSE); g_object_unref (task); _g_object_list_unref (visible_files); _g_object_list_unref (file_data_list); } else { GthFileSource *file_source; gboolean cancel = FALSE; gboolean move; file_source = gth_browser_get_location_source (browser); move = gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE; if (move && ! gth_file_source_can_cut (file_source, (GFile *) selected_files->data)) { GtkWidget *dialog; int response; dialog = _gtk_message_dialog_new (GTK_WINDOW (browser), GTK_DIALOG_MODAL, GTK_STOCK_DIALOG_QUESTION, _("Could not move the files"), _("Files cannot be moved to the current location, as alternative you can choose to copy them."), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_COPY, GTK_RESPONSE_OK, NULL); response = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); if (response == GTK_RESPONSE_CANCEL) cancel = TRUE; move = FALSE; } if (! cancel) { GthFileSource *location_source; BrowserData *data; GthTask *task; location_source = gth_main_get_file_source (gth_browser_get_location (browser)); data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); task = gth_copy_task_new (location_source, gth_browser_get_location_data (browser), move, selected_files, data->drop_pos); gth_browser_exec_task (browser, task, FALSE); g_object_unref (task); g_object_unref (location_source); } } } _g_object_list_unref (selected_files); g_strfreev (uris); }
gpointer fm__gth_browser_file_list_key_press_cb (GthBrowser *browser, GdkEventKey *event) { gpointer result = NULL; guint modifiers; GList *items; GList *file_data_list; GList *file_list; modifiers = gtk_accelerator_get_default_mod_mask (); switch (event->keyval) { case GDK_KEY_g: if ((event->state & modifiers) == 0) { 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); _g_launch_command (GTK_WIDGET (browser), "gimp %U", "Gimp", file_list); _g_object_list_unref (file_list); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); result = GINT_TO_POINTER (1); } break; case GDK_KEY_Delete: if (((event->state & modifiers) == 0) || ((event->state & modifiers) == GDK_SHIFT_MASK) || ((event->state & modifiers) == GDK_CONTROL_MASK)) { GthFileSource *source; GthFileData *location; if ((event->state & modifiers) == 0) { /* Removes the files from the current location, * for example: when viewing a catalog removes * the files from the catalog; when viewing a * folder removes the files from the folder. */ source = gth_browser_get_location_source (browser); location = gth_browser_get_location_data (browser); } else { /* When a key modifier is active, use the VFS * file source to delete the files from the * disk. */ source = gth_main_get_file_source_for_uri ("file:///"); location = NULL; } if (source == NULL) return result; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); if (items == NULL) return result; file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); gth_file_source_remove (source, location, file_data_list, (event->state & modifiers) == GDK_SHIFT_MASK, GTK_WINDOW (browser)); result = GINT_TO_POINTER (1); _g_object_list_unref (file_data_list); _gtk_tree_path_list_free (items); } break; } return result; }
static void export_dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CANCEL: 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; int max_width; int max_height; if (! gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (GET_WIDGET ("albums_treeview"))), &tree_model, &iter)) { gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, 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->service), FALSE, NULL); file_list = gth_file_data_list_to_file_list (data->file_list); max_width = -1; max_height = -1; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("resize_checkbutton")))) { int idx = gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("resize_combobox"))); max_width = ImageSizeValues[idx].width; max_height = ImageSizeValues[idx].height; } g_settings_set_int (data->settings, PREF_PICASAWEB_RESIZE_WIDTH, max_width); g_settings_set_int (data->settings, PREF_PICASAWEB_RESIZE_HEIGHT, max_height); picasa_web_service_post_photos (data->service, data->album, file_list, max_width, max_height, data->cancellable, post_photos_ready_cb, data); _g_object_list_unref (file_list); } break; default: break; } }
static void export_dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CANCEL: gth_file_list_cancel (GTH_FILE_LIST (data->list_view), (DataFunc) destroy_dialog, data); break; case GTK_RESPONSE_OK: { const char *photoset_title; GList *file_list; int max_width; int max_height; gtk_widget_hide (data->dialog); gth_task_dialog (GTH_TASK (data->service), FALSE, NULL); data->photoset = NULL; photoset_title = gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (data->photoset_combobox)))); if ((photoset_title != NULL) && (g_strcmp0 (photoset_title, "") != 0)) { GList *link; link = g_list_find_custom (data->photosets, photoset_title, (GCompareFunc) find_photoset_by_title); if (link != NULL) data->photoset = g_object_ref (link->data); if (data->photoset == NULL) { data->photoset = flickr_photoset_new (); flickr_photoset_set_title (data->photoset, photoset_title); } } file_list = gth_file_data_list_to_file_list (data->file_list); max_width = -1; max_height = -1; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("resize_checkbutton")))) { int idx = gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("resize_combobox"))); max_width = ImageSizeValues[idx].width; max_height = ImageSizeValues[idx].height; } g_settings_set_int (data->settings, PREF_FLICKR_RESIZE_WIDTH, max_width); g_settings_set_int (data->settings, PREF_FLICKR_RESIZE_HEIGHT, max_height); flickr_service_post_photos (data->service, gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("privacy_combobox"))), gtk_combo_box_get_active (GTK_COMBO_BOX (GET_WIDGET ("safety_combobox"))), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("hidden_checkbutton"))), max_width, max_height, file_list, data->cancellable, post_photos_ready_cb, data); _g_object_list_unref (file_list); } break; default: break; } }