static void ask_password__response_cb (GtkWidget *dialog, int response_id, DialogData *data) { char *password; switch (response_id) { case GTK_RESPONSE_OK: password = _gtk_entry_get_locale_text (GTK_ENTRY (data->pw_password_entry)); if (data->pwd_type == FR_PASSWORD_TYPE_MAIN) fr_window_set_password (data->window, password); else if (data->pwd_type == FR_PASSWORD_TYPE_PASTE_FROM) fr_window_set_password_for_paste (data->window, password); g_free (password); if (fr_window_is_batch_mode (data->window)) fr_window_resume_batch (data->window); else fr_window_restart_current_batch_action (data->window); break; default: if (fr_window_is_batch_mode (data->window)) gtk_widget_destroy (GTK_WIDGET (data->window)); else fr_window_reset_current_batch_action (data->window); break; } gtk_widget_destroy (data->dialog); }
static void new_archive (DlgNewData *data, char *uri) { GtkWidget *archive_window; gboolean new_window; const char *password; gboolean encrypt_header; int volume_size; new_window = fr_window_archive_is_present (data->window) && ! fr_window_is_batch_mode (data->window); if (new_window) archive_window = fr_window_new (); else archive_window = (GtkWidget *) data->window; password = dlg_new_data_get_password (data); encrypt_header = dlg_new_data_get_encrypt_header (data); volume_size = dlg_new_data_get_volume_size (data); fr_window_set_password (FR_WINDOW (archive_window), password); fr_window_set_encrypt_header (FR_WINDOW (archive_window), encrypt_header); fr_window_set_volume_size (FR_WINDOW (archive_window), volume_size); if (fr_window_archive_new (FR_WINDOW (archive_window), uri)) { gtk_widget_destroy (data->dialog); if (! fr_window_is_batch_mode (FR_WINDOW (archive_window))) gtk_window_present (GTK_WINDOW (archive_window)); } else if (new_window) gtk_widget_destroy (archive_window); }
static void package_installer_terminated (InstallerData *idata, FrProcErrorType error_type, const char *error_message) { GdkWindow *window; window = gtk_widget_get_window (GTK_WIDGET (idata->window)); if (window != NULL) gdk_window_set_cursor (window, NULL); if (error_type != FR_PROC_ERROR_NONE) { fr_archive_action_completed (idata->archive, idata->action, error_type, error_message); } else { update_registered_commands_capabilities (); if (fr_window_is_batch_mode (idata->window)) fr_window_resume_batch (idata->window); else fr_window_restart_current_batch_action (idata->window); } installer_data_free (idata); }
static void package_installer_terminated (InstallerData *idata, const char *error) { GdkWindow *window; window = gtk_widget_get_window (GTK_WIDGET (idata->window)); if (window != NULL) gdk_window_set_cursor (window, NULL); if (error != NULL) { fr_archive_action_completed (idata->archive, FR_ACTION_CREATING_NEW_ARCHIVE, FR_PROC_ERROR_GENERIC, error); } else { update_registered_commands_capabilities (); if (fr_window_is_batch_mode (idata->window)) fr_window_resume_batch (idata->window); else fr_window_restart_current_batch_action (idata->window); } installer_data_free (idata); }
static void fr_application_activate (GApplication *application) { GList *link; for (link = gtk_application_get_windows (GTK_APPLICATION (application)); link != NULL; link = link->next) { if (! fr_window_is_batch_mode (FR_WINDOW (link->data))) gtk_widget_show (GTK_WIDGET (link->data)); } gdk_notify_startup_complete (); }
static int extract_cb (GtkWidget *w, DialogData *data) { FrWindow *window = data->window; gboolean do_not_extract = FALSE; char *extract_to_dir; gboolean overwrite; gboolean skip_newer; gboolean selected_files; gboolean pattern_files; gboolean junk_paths; GList *file_list; char *base_dir = NULL; GError *error = NULL; data->extract_clicked = TRUE; /* collect extraction options. */ extract_to_dir = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (data->dialog)); /* check directory existence. */ if (! uri_is_dir (extract_to_dir)) { if (! ForceDirectoryCreation) { GtkWidget *d; int r; char *folder_name; char *msg; folder_name = g_filename_display_name (extract_to_dir); msg = g_strdup_printf (_("Destination folder \"%s\" does not exist.\n\nDo you want to create it?"), folder_name); g_free (folder_name); d = _gtk_message_dialog_new (GTK_WINDOW (data->dialog), GTK_DIALOG_MODAL, GTK_STOCK_DIALOG_QUESTION, msg, NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, _("Create _Folder"), GTK_RESPONSE_YES, NULL); gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_YES); r = gtk_dialog_run (GTK_DIALOG (d)); gtk_widget_destroy (GTK_WIDGET (d)); g_free (msg); if (r != GTK_RESPONSE_YES) do_not_extract = TRUE; } if (! do_not_extract && ! ensure_dir_exists (extract_to_dir, 0755, &error)) { GtkWidget *d; d = _gtk_error_dialog_new (GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, _("Extraction not performed"), _("Could not create the destination folder: %s."), error->message); gtk_dialog_run (GTK_DIALOG (d)); gtk_widget_destroy (GTK_WIDGET (d)); g_error_free (error); return FALSE; } } if (do_not_extract) { GtkWidget *d; d = _gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_DIALOG_WARNING, _("Extraction not performed"), NULL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (d), GTK_RESPONSE_OK); gtk_dialog_run (GTK_DIALOG (d)); gtk_widget_destroy (GTK_WIDGET (d)); if (fr_window_is_batch_mode (data->window)) gtk_widget_destroy (data->dialog); return FALSE; } /* check extraction directory permissions. */ if (uri_is_dir (extract_to_dir) && ! check_permissions (extract_to_dir, R_OK | W_OK)) { GtkWidget *d; char *utf8_path; utf8_path = g_filename_display_name (extract_to_dir); d = _gtk_error_dialog_new (GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, _("Extraction not performed"), _("You don't have the right permissions to extract archives in the folder \"%s\""), utf8_path); gtk_dialog_run (GTK_DIALOG (d)); gtk_widget_destroy (GTK_WIDGET (d)); g_free (utf8_path); g_free (extract_to_dir); return FALSE; } fr_window_set_extract_default_dir (window, extract_to_dir, TRUE); overwrite = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_overwrite_checkbutton)); skip_newer = ! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton)) && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton)); junk_paths = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_recreate_dir_checkbutton)); g_settings_set_boolean (data->settings, PREF_EXTRACT_OVERWRITE, overwrite); if (! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton))) g_settings_set_boolean (data->settings, PREF_EXTRACT_SKIP_NEWER, skip_newer); g_settings_set_boolean (data->settings, PREF_EXTRACT_RECREATE_FOLDERS, ! junk_paths); selected_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_selected_radiobutton)); pattern_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_files_radiobutton)); /* create the file list. */ file_list = NULL; if (selected_files) { file_list = data->selected_files; data->selected_files = NULL; /* do not the list when destroying the dialog. */ } else if (pattern_files) { const char *pattern; pattern = gtk_entry_get_text (GTK_ENTRY (data->e_files_entry)); file_list = fr_window_get_file_list_pattern (window, pattern); if (file_list == NULL) { gtk_widget_destroy (data->dialog); g_free (extract_to_dir); return FALSE; } } if (selected_files) { base_dir = data->base_dir_for_selection; data->base_dir_for_selection = NULL; } else base_dir = NULL; /* close the dialog. */ gtk_widget_destroy (data->dialog); /* extract ! */ fr_window_archive_extract (window, file_list, extract_to_dir, base_dir, skip_newer, overwrite ? FR_OVERWRITE_YES : FR_OVERWRITE_NO, junk_paths, TRUE); path_list_free (file_list); g_free (extract_to_dir); g_free (base_dir); return TRUE; }