static void sync_widgets_with_options (DialogData *data, const char *base_dir, const char *filename, const char *include_files, const char *exclude_files, const char *exclude_folders, gboolean update, gboolean recursive, gboolean no_symlinks) { if ((base_dir == NULL) || (strcmp (base_dir, "") == 0)) base_dir = fr_window_get_add_default_dir (data->window); if ((filename != NULL) && (strcmp (filename, base_dir) != 0)) gtk_file_chooser_select_uri (GTK_FILE_CHOOSER (data->dialog), filename); else gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->dialog), base_dir); if (include_files != NULL) gtk_entry_set_text (GTK_ENTRY (data->include_files_entry), include_files); if (exclude_files != NULL) gtk_entry_set_text (GTK_ENTRY (data->exclude_files_entry), exclude_files); if (exclude_folders != NULL) gtk_entry_set_text (GTK_ENTRY (data->exclude_folders_entry), exclude_folders); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->add_if_newer_checkbutton), update); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->include_subfold_checkbutton), recursive); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->exclude_symlinks), no_symlinks); }
void dlg_batch_add_files (FrWindow *window, GList *file_list) { GFile *first_file; GFile *parent; char *filename; GtkWidget *dialog; g_return_if_fail (file_list != NULL); first_file = G_FILE (file_list->data); parent = _g_object_ref (fr_window_get_add_default_dir (window)); if (parent == NULL) parent = g_file_get_parent (first_file); filename = NULL; if (file_list->next == NULL) filename = g_file_get_basename (first_file); else filename = g_file_get_basename (parent); if (! _g_file_check_permissions (parent, R_OK | W_OK)) { g_object_unref (parent); parent = g_object_ref (_g_file_get_home ()); } dialog = fr_new_archive_dialog_new (_("Compress"), NULL, ((file_list->next == NULL) ? FR_NEW_ARCHIVE_ACTION_NEW_SINGLE_FILE : FR_NEW_ARCHIVE_ACTION_NEW_MANY_FILES), parent, filename); g_signal_connect (dialog, "response", G_CALLBACK (dialog_response_cb), window); gtk_window_present (GTK_WINDOW (dialog)); g_object_unref (parent); g_free (filename); }
/* create the "add" dialog. */ void add_files_cb (GtkWidget *widget, void *callback_data) { GtkWidget *file_sel; DialogData *data; GtkWidget *main_box; char *folder; data = g_new0 (DialogData, 1); data->window = callback_data; data->settings = g_settings_new (FILE_ROLLER_SCHEMA_ADD); data->dialog = file_sel = gtk_file_chooser_dialog_new (_("Add Files"), GTK_WINDOW (data->window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, FR_STOCK_ADD_FILES, GTK_RESPONSE_OK, GTK_STOCK_HELP, GTK_RESPONSE_HELP, NULL); gtk_window_set_default_size (GTK_WINDOW (data->dialog), 530, 450); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_sel), TRUE); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (file_sel), FALSE); gtk_dialog_set_default_response (GTK_DIALOG (file_sel), GTK_RESPONSE_OK); /* Translators: add a file to the archive only if the disk version is * newer than the archive version. */ data->add_if_newer_checkbutton = gtk_check_button_new_with_mnemonic (_("Add only if _newer")); main_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20); gtk_container_set_border_width (GTK_CONTAINER (main_box), 0); gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (file_sel), main_box); gtk_box_pack_start (GTK_BOX (main_box), data->add_if_newer_checkbutton, TRUE, TRUE, 0); gtk_widget_show_all (main_box); /* set data */ folder = g_settings_get_string (data->settings, PREF_ADD_CURRENT_FOLDER); if ((folder == NULL) || (strcmp (folder, "") == 0)) folder = g_strdup (fr_window_get_add_default_dir (data->window)); gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (file_sel), folder); g_free (folder); /* signals */ g_signal_connect (G_OBJECT (file_sel), "destroy", G_CALLBACK (open_file_destroy_cb), data); g_signal_connect (G_OBJECT (file_sel), "response", G_CALLBACK (file_sel_response_cb), data); gtk_window_set_modal (GTK_WINDOW (file_sel), TRUE); gtk_widget_show (file_sel); }