void gth_browser_activate_rename (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GtkWidget *folder_tree; GtkWidget *file_list; folder_tree = gth_browser_get_folder_tree (browser); if (gtk_widget_has_focus (folder_tree)) { GthFileData *file_data; file_data = gth_folder_tree_get_selected (GTH_FOLDER_TREE (folder_tree)); if (file_data == NULL) return; if (! g_file_info_get_attribute_boolean (file_data->info, G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME)) return; gth_folder_tree_start_editing (GTH_FOLDER_TREE (gth_browser_get_folder_tree (browser)), file_data->file); g_object_unref (file_data); return; } file_list = gth_browser_get_file_list_view (browser); if (gtk_widget_has_focus (file_list)) { gth_hook_invoke ("gth-browser-file-list-rename", browser); return; } if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_VIEWER) { gth_hook_invoke ("gth-browser-file-list-rename", browser); return; } }
static void dialog_data_unref (DialogData *data) { if (! g_atomic_int_dec_and_test (&data->ref)) return; if (data->file_selection_changed_event != 0) { g_signal_handler_disconnect (gth_browser_get_file_list_view (data->browser), data->file_selection_changed_event); data->file_selection_changed_event = 0; } if (data->update_selectection_event != 0) { g_source_remove (data->update_selectection_event); data->update_selectection_event = 0; } cancel_file_list_loading (data); gth_browser_set_dialog (data->browser, data->dialog_name, NULL); gtk_widget_destroy (data->dialog); g_free (data->dialog_name); _g_object_list_unref (data->file_list); _g_object_list_unref (data->parents); g_free (data); }
void ir__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; GtkAction *action; int n_selected; gboolean sensitive; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); sensitive = n_selected > 0; action = gtk_action_group_get_action (data->action_group, "Tool_RotateRight"); g_object_set (action, "sensitive", sensitive, NULL); action = gtk_action_group_get_action (data->action_group, "Tool_RotateLeft"); g_object_set (action, "sensitive", sensitive, NULL); action = gtk_action_group_get_action (data->action_group, "Tool_ApplyOrientation"); g_object_set (action, "sensitive", sensitive, NULL); action = gtk_action_group_get_action (data->action_group, "Tool_ResetOrientation"); g_object_set (action, "sensitive", sensitive, NULL); }
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; }
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 close_dialog (DialogData *data) { if (data->file_selection_changed_event != 0) { g_signal_handler_disconnect (gth_browser_get_file_list_view (data->browser), data->file_selection_changed_event); data->file_selection_changed_event = 0; } gtk_widget_hide (data->dialog); dialog_data_unref (data); }
void ip__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; int n_selected; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); set_action_sensitive (data, "File_Print", n_selected > 0); }
void ss__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; GtkTreeModel *file_store; gboolean sensitive; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); file_store = gth_file_view_get_model (GTH_FILE_VIEW (gth_browser_get_file_list_view (browser))); sensitive = (gth_file_store_n_visibles (GTH_FILE_STORE (file_store)) > 0); set_action_sensitive (data, "View_Slideshow", sensitive); }
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 list_tools__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; int n_selected; gboolean sensitive; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); sensitive = (n_selected > 0); gth_window_enable_action (GTH_WINDOW (browser), "exec-script", sensitive); }
void catalogs__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; int n_selected; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); gth_window_enable_action (GTH_WINDOW (browser), "add-to-catalog", n_selected > 0); gth_window_enable_action (GTH_WINDOW (browser), "remove-from-catalog", (n_selected > 0) && GTH_IS_FILE_SOURCE_CATALOGS (gth_browser_get_location_source (browser))); gth_window_enable_action (GTH_WINDOW (browser), "go-to-container-from-catalog", n_selected == 1); }
void edit_metadata__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; int n_selected; gboolean sensitive; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); sensitive = (n_selected > 0); g_object_set (gtk_action_group_get_action (data->actions, "Edit_Metadata"), "sensitive", sensitive, NULL); g_object_set (gtk_action_group_get_action (data->actions, "Tool_DeleteMetadata"), "sensitive", sensitive, NULL); }
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 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 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); }
void wa__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; GtkAction *action; int n_selected; gboolean sensitive; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); sensitive = n_selected > 0; action = gtk_action_group_get_action (data->action_group, "File_CreateWebAlbum"); g_object_set (action, "sensitive", sensitive, NULL); }
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 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 fm__gth_browser_update_sensitivity_cb (GthBrowser *browser) { BrowserData *data; GthFileSource *file_source; int n_selected; GthFileData *location_data; gboolean sensitive; GthFileData *folder; data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY); g_return_if_fail (data != NULL); file_source = gth_browser_get_location_source (browser); n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); location_data = gth_browser_get_location_data (browser); sensitive = (n_selected > 0) && (file_source != NULL) && (location_data != NULL) && gth_file_source_can_cut (file_source, location_data->file); set_action_sensitive (data, "Edit_CutFiles", sensitive); sensitive = (n_selected > 0) && (file_source != NULL); set_action_sensitive (data, "Edit_CopyFiles", sensitive); set_action_sensitive (data, "Edit_Trash", sensitive); set_action_sensitive (data, "Edit_Delete", sensitive); set_action_sensitive (data, "Edit_Duplicate", sensitive); set_action_sensitive (data, "Tool_MoveToFolder", sensitive); set_action_sensitive (data, "Tool_CopyToFolder", sensitive); folder = gth_browser_get_folder_popup_file_data (browser); set_action_sensitive (data, "Folder_Create", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)); set_action_sensitive (data, "Folder_Rename", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME)); set_action_sensitive (data, "Folder_Delete", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE)); set_action_sensitive (data, "Folder_Trash", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH)); set_action_sensitive (data, "Folder_Cut", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE)); /* folder = gth_browser_get_location_data (browser); set_action_sensitive (data, "File_NewFolder", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)); */ _g_object_unref (folder); _gth_browser_update_paste_command_sensitivity (browser, NULL); }
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 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); }
void gth_browser_activate_action_file_print (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) { GthImagePrintJob *print_job; print_job = gth_image_print_job_new (file_list); gth_image_print_job_run (print_job, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, browser); } _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_edit_copy (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GtkWidget *focused_widget; GList *items; GList *file_list; focused_widget = gtk_window_get_focus (GTK_WINDOW (browser)); if ((focused_widget != NULL) && GTK_IS_EDITABLE (focused_widget)) return; 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_browser_clipboard_copy_or_cut (browser, file_list, FALSE); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
void gth_browser_activate_action_tool_import_embedded_metadata (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_data_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); /* use all the files if no file or only one file is selected */ if ((file_data_list == NULL) || (file_data_list->next == NULL)) { _g_object_list_unref (file_data_list); file_data_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser)); } task = gth_import_metadata_task_new (browser, file_data_list); gth_browser_exec_task (browser, task, FALSE); g_object_unref (task); _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_action_go_to_container (GtkAction *action, GthBrowser *browser) { 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); }