[file-roller] define the add and extract dialogs options with a .ui file



commit 39926e592b23757de3dfefe1abd3832b3daaee33
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Tue Aug 7 10:43:10 2012 +0200

    define the add and extract dialogs options with a .ui file

 po/POTFILES.in                   |    2 +
 src/dlg-add-folder.c             |  196 ++++++++++------------------------
 src/dlg-extract.c                |  209 ++++++++----------------------------
 src/file-roller.gresource.xml    |    2 +
 src/ui/Makefile.am               |    2 +
 src/ui/add-dialog-options.ui     |  222 ++++++++++++++++++++++++++++++++++++++
 src/ui/extract-dialog-options.ui |  215 ++++++++++++++++++++++++++++++++++++
 7 files changed, 542 insertions(+), 306 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1d4395a..46f4764 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -123,12 +123,14 @@ src/rar-utils.c
 src/rar-utils.h
 src/test-server.c
 src/typedefs.h
+[type: gettext/glade]src/ui/add-dialog-options.ui
 [type: gettext/glade]src/ui/add-options.ui
 [type: gettext/glade]src/ui/app-menu.ui
 [type: gettext/glade]src/ui/batch-add-files.ui
 [type: gettext/glade]src/ui/batch-password.ui
 [type: gettext/glade]src/ui/delete.ui
 [type: gettext/glade]src/ui/error-dialog.ui
+[type: gettext/glade]src/ui/extract-dialog-options.ui
 src/ui.h
 [type: gettext/glade]src/ui/menus-toolbars.ui
 [type: gettext/glade]src/ui/message-dialog.ui
diff --git a/src/dlg-add-folder.c b/src/dlg-add-folder.c
index f8b7e44..fdc16b6 100644
--- a/src/dlg-add-folder.c
+++ b/src/dlg-add-folder.c
@@ -35,27 +35,23 @@
 #include "preferences.h"
 
 
+#define GET_WIDGET(x) (_gtk_builder_get_widget (data->builder, (x)))
+
+
 typedef struct {
-	FrWindow    *window;
-	GSettings   *settings;
-	GtkWidget   *dialog;
-	GtkWidget   *add_if_newer_checkbutton;
-	GtkWidget   *exclude_symlinks;
-	GtkWidget   *include_files_checkbutton;
-	GtkWidget   *include_files_entry;
-	GtkWidget   *include_files_label;
-	GtkWidget   *exclude_files_entry;
-	GtkWidget   *exclude_files_label;
-	GtkWidget   *exclude_folders_entry;
-	GtkWidget   *exclude_folders_label;
-	char        *last_options;
+	FrWindow   *window;
+	GSettings  *settings;
+	GtkWidget  *dialog;
+	GtkBuilder *builder;
+	char       *last_options;
 } DialogData;
 
 
 static void
-open_file_destroy_cb (GtkWidget  *widget,
-		      DialogData *data)
+file_selector_destroy_cb (GtkWidget  *widget,
+			  DialogData *data)
 {
+	g_object_unref (data->builder);
 	g_object_unref (data->settings);
 	g_free (data->last_options);
 	g_free (data);
@@ -84,9 +80,9 @@ static void dlg_add_folder_save_last_options (DialogData *data);
 
 
 static int
-file_sel_response_cb (GtkWidget    *widget,
-		      int           response,
-		      DialogData   *data)
+file_selector_response_cb (GtkWidget    *widget,
+			   int           response,
+			   DialogData   *data)
 {
 	GtkFileChooser *file_sel = GTK_FILE_CHOOSER (widget);
 	FrWindow       *window = data->window;
@@ -130,18 +126,18 @@ file_sel_response_cb (GtkWidget    *widget,
 		return FALSE;
 	}
 
-	update = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->add_if_newer_checkbutton));
-	follow_links = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->exclude_symlinks));
+	update = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("update_checkbutton")));
+	follow_links = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("follow_links_checkbutton")));
 
-	include_files = gtk_entry_get_text (GTK_ENTRY (data->include_files_entry));
+	include_files = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("include_files_entry")));
 	if (utf8_only_spaces (include_files))
 		include_files = "*";
 
-	exclude_files = gtk_entry_get_text (GTK_ENTRY (data->exclude_files_entry));
+	exclude_files = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("exclude_files_entry")));
 	if (utf8_only_spaces (exclude_files))
 		exclude_files = NULL;
 
-	exclude_folders = gtk_entry_get_text (GTK_ENTRY (data->exclude_folders_entry));
+	exclude_folders = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("exclude_folders_entry")));
 	if (utf8_only_spaces (exclude_folders))
 		exclude_folders = NULL;
 
@@ -180,50 +176,28 @@ void
 add_folder_cb (GtkWidget *widget,
 	       void      *callback_data)
 {
-	GtkWidget   *file_sel;
-	DialogData  *data;
-	GtkWidget   *options_button;
-	GtkWidget   *options_menu;
-	GtkWidget   *menu_item;
-	GtkWidget   *main_box;
-	GtkWidget   *vbox;
-	GtkWidget   *table;
+	DialogData *data;
+	GtkWidget  *options_button;
+	GtkWidget  *options_menu;
+	GtkWidget  *menu_item;
 
 	data = g_new0 (DialogData, 1);
 	data->settings = g_settings_new (FILE_ROLLER_SCHEMA_ADD);
 	data->window = callback_data;
-	data->dialog = file_sel =
-		gtk_file_chooser_dialog_new (_("Add a Folder"),
-					     GTK_WINDOW (data->window),
-					     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
-					     NULL, NULL);
-
+	data->dialog = gtk_file_chooser_dialog_new (_("Add a Folder"),
+						    GTK_WINDOW (data->window),
+						    GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+						    NULL,
+						    NULL);
 	gtk_window_set_default_size (GTK_WINDOW (data->dialog), 530, 510);
+	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (data->dialog), FALSE);
+	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (data->dialog), FALSE);
+	gtk_dialog_set_default_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK);
 
-	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_sel), FALSE);
-	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (file_sel), FALSE);
-	gtk_dialog_set_default_response (GTK_DIALOG (file_sel), GTK_RESPONSE_OK);
-
-	data->add_if_newer_checkbutton = gtk_check_button_new_with_mnemonic (_("Add only if _newer"));
-	data->exclude_symlinks = gtk_check_button_new_with_mnemonic (_("Exclude folders that are symbolic lin_ks"));
-
-	data->include_files_entry = gtk_entry_new ();
-	gtk_widget_set_tooltip_text (data->include_files_entry, _("example: *.o; *.bak"));
-	data->include_files_label = gtk_label_new_with_mnemonic (_("Include _files:"));
-	gtk_misc_set_alignment (GTK_MISC (data->include_files_label), 0.0, 0.5);
-	gtk_label_set_mnemonic_widget (GTK_LABEL (data->include_files_label), data->include_files_entry);
-
-	data->exclude_files_entry = gtk_entry_new ();
-	gtk_widget_set_tooltip_text (data->exclude_files_entry, _("example: *.o; *.bak"));
-	data->exclude_files_label = gtk_label_new_with_mnemonic (_("E_xclude files:"));
-	gtk_misc_set_alignment (GTK_MISC (data->exclude_files_label), 0.0, 0.5);
-	gtk_label_set_mnemonic_widget (GTK_LABEL (data->exclude_files_label), data->exclude_files_entry);
-
-	data->exclude_folders_entry = gtk_entry_new ();
-	gtk_widget_set_tooltip_text (data->exclude_folders_entry, _("example: *.o; *.bak"));
-	data->exclude_folders_label = gtk_label_new_with_mnemonic (_("_Exclude folders:"));
-	gtk_misc_set_alignment (GTK_MISC (data->exclude_folders_label), 0.0, 0.5);
-	gtk_label_set_mnemonic_widget (GTK_LABEL (data->exclude_folders_label), data->exclude_folders_entry);
+	data->builder = _gtk_builder_new_from_resource ("add-dialog-options.ui");
+	if (data->builder == NULL)
+		return;
+	gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (data->dialog), GET_WIDGET ("extra_widget"));
 
 	/* options menu button */
 
@@ -256,67 +230,7 @@ add_folder_cb (GtkWidget *widget,
 	g_signal_connect (menu_item, "activate", G_CALLBACK (clear_options_activate_cb), data);
 	gtk_menu_shell_append (GTK_MENU_SHELL (options_menu), menu_item);
 
-	/**/
-
-	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);
-
-	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-	gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
-	gtk_box_pack_start (GTK_BOX (main_box), vbox, TRUE, TRUE, 0);
-
-	gtk_box_pack_start (GTK_BOX (vbox), data->add_if_newer_checkbutton, TRUE, TRUE, 0);
-	gtk_box_pack_start (GTK_BOX (vbox), data->exclude_symlinks, TRUE, TRUE, 0);
-
-	table = gtk_table_new (2, 4, FALSE);
-	gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-	gtk_table_set_col_spacings (GTK_TABLE (table), 6);
-	gtk_box_pack_start (GTK_BOX (vbox), table,
-			    TRUE, TRUE, 0);
-
-	gtk_table_attach (GTK_TABLE (table),
-			  data->include_files_label,
-			  0, 1,
-			  0, 1,
-			  GTK_FILL, 0,
-			  0, 0);
-	gtk_table_attach (GTK_TABLE (table),
-			  data->include_files_entry,
-			  1, 4,
-			  0, 1,
-			  GTK_FILL|GTK_EXPAND, 0,
-			  0, 0);
-	gtk_table_attach (GTK_TABLE (table),
-			  data->exclude_files_label,
-			  0, 1,
-			  1, 2,
-			  GTK_FILL, 0,
-			  0, 0);
-	gtk_table_attach (GTK_TABLE (table),
-			  data->exclude_files_entry,
-			  1, 2,
-			  1, 2,
-			  GTK_FILL|GTK_EXPAND, 0,
-			  0, 0);
-	gtk_table_attach (GTK_TABLE (table),
-			  data->exclude_folders_label,
-			  2, 3,
-			  1, 2,
-			  GTK_FILL, 0,
-			  0, 0);
-	gtk_table_attach (GTK_TABLE (table),
-			  data->exclude_folders_entry,
-			  3, 4,
-			  1, 2,
-			  GTK_FILL|GTK_EXPAND, 0,
-			  0, 0);
-
-	/**/
-
-	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
-	gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
-	gtk_box_pack_start (GTK_BOX (main_box), vbox, FALSE, FALSE, 0);
+	/* add the buttons */
 
 	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (data->dialog))),
 			    options_button,
@@ -330,25 +244,23 @@ add_folder_cb (GtkWidget *widget,
 			       FR_STOCK_ADD_FOLDER,
 			       GTK_RESPONSE_OK);
 
-	gtk_widget_show_all (main_box);
-
 	/* set data */
 
 	dlg_add_folder_load_last_options (data);
 
 	/* signals */
 
-	g_signal_connect (G_OBJECT (file_sel),
+	g_signal_connect (G_OBJECT (data->dialog),
 			  "destroy",
-			  G_CALLBACK (open_file_destroy_cb),
+			  G_CALLBACK (file_selector_destroy_cb),
 			  data);
-	g_signal_connect (G_OBJECT (file_sel),
+	g_signal_connect (G_OBJECT (data->dialog),
 			  "response",
-			  G_CALLBACK (file_sel_response_cb),
+			  G_CALLBACK (file_selector_response_cb),
 			  data);
 
-	gtk_window_set_modal (GTK_WINDOW (file_sel), TRUE);
-	gtk_widget_show (file_sel);
+	gtk_window_set_modal (GTK_WINDOW (data->dialog), TRUE);
+	gtk_widget_show (data->dialog);
 }
 
 
@@ -382,14 +294,16 @@ sync_widgets_with_options (DialogData *data,
 	else
 		gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (data->dialog), directory, NULL);
 
-	if (include_files != NULL)
-		gtk_entry_set_text (GTK_ENTRY (data->include_files_entry), include_files);
+	if ((include_files == NULL) || (include_files[0] == '\0'))
+		include_files = "*";
+	gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("include_files_entry")), include_files);
+
 	if (exclude_files != NULL)
-		gtk_entry_set_text (GTK_ENTRY (data->exclude_files_entry), exclude_files);
+		gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("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->exclude_symlinks), no_symlinks);
+		gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("exclude_folders_entry")), exclude_folders);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("update_checkbutton")), update);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("follow_links_checkbutton")), ! no_symlinks);
 }
 
 
@@ -540,18 +454,18 @@ get_options_from_widgets (DialogData  *data,
 {
 	*base_dir = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (data->dialog));
 	*filename = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (data->dialog));
-	*update = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->add_if_newer_checkbutton));
-	*no_symlinks = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->exclude_symlinks));
+	*update = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("update_checkbutton")));
+	*no_symlinks = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("follow_links_checkbutton")));
 
-	*include_files = gtk_entry_get_text (GTK_ENTRY (data->include_files_entry));
+	*include_files = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("include_files_entry")));
 	if (utf8_only_spaces (*include_files))
 		*include_files = "";
 
-	*exclude_files = gtk_entry_get_text (GTK_ENTRY (data->exclude_files_entry));
+	*exclude_files = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("exclude_files_entry")));
 	if (utf8_only_spaces (*exclude_files))
 		*exclude_files = "";
 
-	*exclude_folders = gtk_entry_get_text (GTK_ENTRY (data->exclude_folders_entry));
+	*exclude_folders = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("exclude_folders_entry")));
 	if (utf8_only_spaces (*exclude_folders))
 		*exclude_folders = "";
 }
diff --git a/src/dlg-extract.c b/src/dlg-extract.c
index 4946b94..0a33b02 100644
--- a/src/dlg-extract.c
+++ b/src/dlg-extract.c
@@ -32,35 +32,29 @@
 #include "dlg-extract.h"
 
 
+#define GET_WIDGET(x) (_gtk_builder_get_widget (data->builder, (x)))
+
+
 typedef struct {
 	FrWindow     *window;
 	GSettings    *settings;
 	GList        *selected_files;
 	char         *base_dir_for_selection;
-
 	GtkWidget    *dialog;
-
-	GtkWidget    *e_main_vbox;
-	GtkWidget    *e_all_radiobutton;
-	GtkWidget    *e_selected_radiobutton;
-	GtkWidget    *e_files_radiobutton;
-	GtkWidget    *e_files_entry;
-	GtkWidget    *e_recreate_dir_checkbutton;
-	GtkWidget    *e_overwrite_checkbutton;
-	GtkWidget    *e_not_newer_checkbutton;
-
+	GtkBuilder   *builder;
 	gboolean      extract_clicked;
 } DialogData;
 
 
 /* called when the main dialog is closed. */
 static void
-destroy_cb (GtkWidget  *widget,
-	    DialogData *data)
+file_selector_destroy_cb (GtkWidget  *widget,
+			  DialogData *data)
 {
 	if (! data->extract_clicked)
 		fr_window_stop_batch (data->window);
 
+	g_object_unref (data->builder);
 	_g_string_list_free (data->selected_files);
 	g_free (data->base_dir_for_selection);
 	g_object_unref (data->settings);
@@ -186,15 +180,15 @@ extract_cb (GtkWidget   *w,
 
 	fr_window_set_extract_default_dir (window, destination, TRUE);
 
-	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));
+	skip_newer = ! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_newer_checkbutton"))) && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_newer_checkbutton")));
+	junk_paths = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_structure_checkbutton")));
 
-	if (! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton)))
+	if (! gtk_toggle_button_get_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_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));
+	selected_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("selected_files_radiobutton")));
+	pattern_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("file_pattern_radiobutton")));
 
 	/* create the file list. */
 
@@ -207,7 +201,7 @@ extract_cb (GtkWidget   *w,
 	else if (pattern_files) {
 		const char *pattern;
 
-		pattern = gtk_entry_get_text (GTK_ENTRY (data->e_files_entry));
+		pattern = gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("file_pattern_entry")));
 		file_list = fr_window_get_file_list_pattern (window, pattern);
 		if (file_list == NULL) {
 			gtk_widget_destroy (data->dialog);
@@ -247,7 +241,7 @@ extract_cb (GtkWidget   *w,
 
 
 static int
-file_sel_response_cb (GtkWidget    *widget,
+file_selector_response_cb (GtkWidget    *widget,
 		      int           response,
 		      DialogData   *data)
 {
@@ -267,125 +261,8 @@ static void
 files_entry_changed_cb (GtkWidget  *widget,
 			DialogData *data)
 {
-	if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->e_files_radiobutton)))
-		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_files_radiobutton), TRUE);
-}
-
-
-static void
-set_bold_label (GtkWidget  *label,
-		const char *label_txt)
-{
-	char *bold_label;
-
-	bold_label = g_strconcat ("<b>", label_txt, "</b>", NULL);
-	gtk_label_set_markup (GTK_LABEL (label), bold_label);
-	g_free (bold_label);
-}
-
-
-static GtkWidget *
-create_extra_widget (DialogData *data)
-{
-	GtkWidget *vbox1;
-	GtkWidget *hbox28;
-	GtkWidget *vbox19;
-	GtkWidget *e_files_label;
-	GtkWidget *hbox29;
-	GtkWidget *label47;
-	GtkWidget *table1;
-	GSList    *e_files_radiobutton_group = NULL;
-	GtkWidget *vbox20;
-	GtkWidget *e_actions_label;
-	GtkWidget *hbox30;
-	GtkWidget *label48;
-	GtkWidget *vbox15;
-
-	vbox1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-	gtk_container_set_border_width (GTK_CONTAINER (vbox1), 0);
-
-	hbox28 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
-	gtk_box_pack_start (GTK_BOX (vbox1), hbox28, TRUE, TRUE, 0);
-
-	vbox19 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-	gtk_box_pack_start (GTK_BOX (hbox28), vbox19, TRUE, TRUE, 0);
-
-	e_files_label = gtk_label_new ("");
-	set_bold_label (e_files_label, _("Extract"));
-	gtk_box_pack_start (GTK_BOX (vbox19), e_files_label, FALSE, FALSE, 0);
-	gtk_label_set_justify (GTK_LABEL (e_files_label), GTK_JUSTIFY_LEFT);
-	gtk_misc_set_alignment (GTK_MISC (e_files_label), 0, 0.5);
-
-	hbox29 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-	gtk_box_pack_start (GTK_BOX (vbox19), hbox29, TRUE, TRUE, 0);
-
-	label47 = gtk_label_new ("    ");
-	gtk_box_pack_start (GTK_BOX (hbox29), label47, FALSE, FALSE, 0);
-	gtk_label_set_justify (GTK_LABEL (label47), GTK_JUSTIFY_LEFT);
-
-	table1 = gtk_table_new (3, 2, FALSE);
-	gtk_box_pack_start (GTK_BOX (hbox29), table1, TRUE, TRUE, 0);
-	gtk_table_set_row_spacings (GTK_TABLE (table1), 6);
-	gtk_table_set_col_spacings (GTK_TABLE (table1), 6);
-
-	data->e_files_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("_Files:"));
-	gtk_table_attach (GTK_TABLE (table1), data->e_files_radiobutton, 0, 1, 2, 3,
-			  (GtkAttachOptions) (GTK_FILL),
-			  (GtkAttachOptions) (0), 0, 0);
-	gtk_radio_button_set_group (GTK_RADIO_BUTTON (data->e_files_radiobutton), e_files_radiobutton_group);
-	e_files_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (data->e_files_radiobutton));
-
-	data->e_files_entry = gtk_entry_new ();
-	gtk_table_attach (GTK_TABLE (table1), data->e_files_entry, 1, 2, 2, 3,
-			  (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-			  (GtkAttachOptions) (0), 0, 0);
-	gtk_widget_set_tooltip_text (data->e_files_entry, _("example: *.txt; *.doc"));
-	gtk_entry_set_activates_default (GTK_ENTRY (data->e_files_entry), TRUE);
-
-	data->e_all_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("_All files"));
-	gtk_table_attach (GTK_TABLE (table1), data->e_all_radiobutton, 0, 2, 0, 1,
-			  (GtkAttachOptions) (GTK_FILL),
-			  (GtkAttachOptions) (0), 0, 0);
-	gtk_radio_button_set_group (GTK_RADIO_BUTTON (data->e_all_radiobutton), e_files_radiobutton_group);
-	e_files_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (data->e_all_radiobutton));
-
-	data->e_selected_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("_Selected files"));
-	gtk_table_attach (GTK_TABLE (table1), data->e_selected_radiobutton, 0, 2, 1, 2,
-			  (GtkAttachOptions) (GTK_FILL),
-			  (GtkAttachOptions) (0), 0, 0);
-	gtk_radio_button_set_group (GTK_RADIO_BUTTON (data->e_selected_radiobutton), e_files_radiobutton_group);
-	e_files_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (data->e_selected_radiobutton));
-
-	vbox20 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-	gtk_box_pack_start (GTK_BOX (hbox28), vbox20, TRUE, TRUE, 0);
-
-	e_actions_label = gtk_label_new ("");
-	set_bold_label (e_actions_label, _("Actions"));
-	gtk_box_pack_start (GTK_BOX (vbox20), e_actions_label, FALSE, FALSE, 0);
-	gtk_label_set_use_markup (GTK_LABEL (e_actions_label), TRUE);
-	gtk_label_set_justify (GTK_LABEL (e_actions_label), GTK_JUSTIFY_LEFT);
-	gtk_misc_set_alignment (GTK_MISC (e_actions_label), 0, 0.5);
-
-	hbox30 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-	gtk_box_pack_start (GTK_BOX (vbox20), hbox30, TRUE, TRUE, 0);
-
-	label48 = gtk_label_new ("    ");
-	gtk_box_pack_start (GTK_BOX (hbox30), label48, FALSE, FALSE, 0);
-	gtk_label_set_justify (GTK_LABEL (label48), GTK_JUSTIFY_LEFT);
-
-	vbox15 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-	gtk_box_pack_start (GTK_BOX (hbox30), vbox15, TRUE, TRUE, 0);
-
-	data->e_recreate_dir_checkbutton = gtk_check_button_new_with_mnemonic (_("_Keep directory structure"));
-	gtk_box_pack_start (GTK_BOX (vbox15), data->e_recreate_dir_checkbutton, FALSE, FALSE, 0);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_recreate_dir_checkbutton), TRUE);
-
-	data->e_not_newer_checkbutton = gtk_check_button_new_with_mnemonic (_("Do not e_xtract older files"));
-	gtk_box_pack_start (GTK_BOX (vbox15), data->e_not_newer_checkbutton, FALSE, FALSE, 0);
-
-	gtk_widget_show_all (vbox1);
-
-	return vbox1;
+	if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("file_pattern_radiobutton"))))
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("file_pattern_radiobutton")), TRUE);
 }
 
 
@@ -395,7 +272,6 @@ dlg_extract__common (FrWindow *window,
 	             char     *base_dir_for_selection)
 {
 	DialogData *data;
-	GtkWidget  *file_sel;
 
 	data = g_new0 (DialogData, 1);
 	data->settings = g_settings_new (FILE_ROLLER_SCHEMA_EXTRACT);
@@ -404,54 +280,57 @@ dlg_extract__common (FrWindow *window,
 	data->base_dir_for_selection = base_dir_for_selection;
 	data->extract_clicked = FALSE;
 
-	data->dialog = file_sel =
-		gtk_file_chooser_dialog_new (_("Extract"),
-					     GTK_WINDOW (data->window),
-					     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
-					     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-					     FR_STOCK_EXTRACT, GTK_RESPONSE_OK,
-					     NULL);
+	data->dialog = gtk_file_chooser_dialog_new (_("Extract"),
+						    GTK_WINDOW (data->window),
+						    GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+						    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+						    FR_STOCK_EXTRACT, GTK_RESPONSE_OK,
+						    NULL);
 
-	gtk_window_set_default_size (GTK_WINDOW (file_sel), 530, 510);
-	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_sel), FALSE);
-	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (file_sel), FALSE);
-	gtk_file_chooser_set_create_folders (GTK_FILE_CHOOSER (file_sel), TRUE);
-	gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (file_sel), create_extra_widget (data));
-	gtk_dialog_set_default_response (GTK_DIALOG (file_sel), GTK_RESPONSE_OK);
+	gtk_window_set_default_size (GTK_WINDOW (data->dialog), 530, 510);
+	gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (data->dialog), FALSE);
+	gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (data->dialog), FALSE);
+	gtk_file_chooser_set_create_folders (GTK_FILE_CHOOSER (data->dialog), TRUE);
+	gtk_dialog_set_default_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK);
+
+	data->builder = _gtk_builder_new_from_resource ("extract-dialog-options.ui");
+	if (data->builder == NULL)
+		return;
+	gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (data->dialog), GET_WIDGET ("extra_widget"));
 
 	/* Set widgets data. */
 
-	gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (file_sel), fr_window_get_extract_default_dir (window), NULL);
+	gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (data->dialog), fr_window_get_extract_default_dir (window), NULL);
 
 	if (data->selected_files != NULL)
-		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_selected_radiobutton), TRUE);
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("selected_files_radiobutton")), TRUE);
 	else {
-		gtk_widget_set_sensitive (data->e_selected_radiobutton, FALSE);
-		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_all_radiobutton), TRUE);
+		gtk_widget_set_sensitive (GET_WIDGET ("selected_files_radiobutton"), FALSE);
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("all_files_radiobutton")), TRUE);
 	}
 
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_not_newer_checkbutton), g_settings_get_boolean (data->settings, PREF_EXTRACT_SKIP_NEWER));
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->e_recreate_dir_checkbutton), g_settings_get_boolean (data->settings, PREF_EXTRACT_RECREATE_FOLDERS));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_newer_checkbutton")), g_settings_get_boolean (data->settings, PREF_EXTRACT_SKIP_NEWER));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_structure_checkbutton")), g_settings_get_boolean (data->settings, PREF_EXTRACT_RECREATE_FOLDERS));
 
 	/* Set the signals handlers. */
 
 	g_signal_connect (G_OBJECT (data->dialog),
 			  "destroy",
-			  G_CALLBACK (destroy_cb),
+			  G_CALLBACK (file_selector_destroy_cb),
 			  data);
-	g_signal_connect (G_OBJECT (file_sel),
+	g_signal_connect (G_OBJECT (data->dialog),
 			  "response",
-			  G_CALLBACK (file_sel_response_cb),
+			  G_CALLBACK (file_selector_response_cb),
 			  data);
-	g_signal_connect (G_OBJECT (data->e_files_entry),
+	g_signal_connect (G_OBJECT (GET_WIDGET ("file_pattern_entry")),
 			  "changed",
 			  G_CALLBACK (files_entry_changed_cb),
 			  data);
 
 	/* Run dialog. */
 
-	gtk_window_set_modal (GTK_WINDOW (file_sel),TRUE);
-	gtk_widget_show (file_sel);
+	gtk_window_set_modal (GTK_WINDOW (data->dialog),TRUE);
+	gtk_widget_show (data->dialog);
 }
 
 
diff --git a/src/file-roller.gresource.xml b/src/file-roller.gresource.xml
index 54b76a2..6873efb 100644
--- a/src/file-roller.gresource.xml
+++ b/src/file-roller.gresource.xml
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/org/gnome/FileRoller">
+    <file compressed="true">ui/add-dialog-options.ui</file>
     <file compressed="true">ui/add-options.ui</file>
     <file compressed="true">ui/app-menu.ui</file>
     <file compressed="true">ui/batch-add-files.ui</file>
     <file compressed="true">ui/batch-password.ui</file>
     <file compressed="true">ui/delete.ui</file>
     <file compressed="true">ui/error-dialog.ui</file>
+    <file compressed="true">ui/extract-dialog-options.ui</file>
     <file compressed="true">ui/menus-toolbars.ui</file>
     <file compressed="true">ui/message-dialog.ui</file>
     <file compressed="true">ui/new-archive-dialog-options.ui</file>
diff --git a/src/ui/Makefile.am b/src/ui/Makefile.am
index 8bb0ca7..c1693bd 100644
--- a/src/ui/Makefile.am
+++ b/src/ui/Makefile.am
@@ -1,10 +1,12 @@
 EXTRA_DIST = 				\
+	add-dialog-options.ui		\
 	add-options.ui			\
 	app-menu.ui			\
 	batch-add-files.ui		\
 	batch-password.ui		\
 	delete.ui			\
 	error-dialog.ui			\
+	extract-dialog-options.ui	\
 	menus-toolbars.ui		\
 	message-dialog.ui		\
 	new-archive-dialog-options.ui	\
diff --git a/src/ui/add-dialog-options.ui b/src/ui/add-dialog-options.ui
new file mode 100644
index 0000000..719b42f
--- /dev/null
+++ b/src/ui/add-dialog-options.ui
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkBox" id="extra_widget">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkBox" id="box2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="label1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Filters</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid" id="grid2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="row_spacing">6</property>
+            <property name="column_spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Include _files:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">include_files_entry</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">E_xclude files:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">exclude_files_entry</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label5">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">_Exclude folders:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">exclude_folders_entry</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">2</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="include_files_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">example: *.o; *.bak</property>
+                <property name="invisible_char">â</property>
+                <property name="width_chars">30</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="exclude_files_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">example: *.o; *.bak</property>
+                <property name="invisible_char">â</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">1</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="exclude_folders_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">example: *.o; *.bak</property>
+                <property name="invisible_char">â</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">2</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="box5">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Actions</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkCheckButton" id="update_checkbutton">
+                <property name="label" translatable="yes">Add only if _newer</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="follow_links_checkbutton">
+                <property name="label" translatable="yes">_Follow symbolic links</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/src/ui/extract-dialog-options.ui b/src/ui/extract-dialog-options.ui
new file mode 100644
index 0000000..0f6acf7
--- /dev/null
+++ b/src/ui/extract-dialog-options.ui
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkBox" id="extra_widget">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkBox" id="box2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="label1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Extract</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkRadioButton" id="all_files_radiobutton">
+                <property name="label" translatable="yes">_All files</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="selected_files_radiobutton">
+                <property name="label" translatable="yes">_Selected files</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="active">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">all_files_radiobutton</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox" id="box4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkRadioButton" id="file_pattern_radiobutton">
+                    <property name="label" translatable="yes">_Files:</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">all_files_radiobutton</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="file_pattern_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="tooltip_text" translatable="yes">example: *.o; *.bak</property>
+                    <property name="invisible_char">â</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="box5">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Actions</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="box6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_left">12</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkCheckButton" id="keep_structure_checkbutton">
+                <property name="label" translatable="yes">_Keep directory structure</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="keep_newer_checkbutton">
+                <property name="label" translatable="yes">Do not _overwrite newer files</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+  </object>
+</interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]