Author: colossus
Date: 2008-08-01 11:10:02 +0000 (Fri, 01 Aug 2008)
New Revision: 27408

Modified:
   xarchiver/trunk/src/add_dialog.c
   xarchiver/trunk/src/add_dialog.h
   xarchiver/trunk/src/extract_dialog.c
   xarchiver/trunk/src/extract_dialog.h
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/interface.h
   xarchiver/trunk/src/main.c
   xarchiver/trunk/src/pref_dialog.c
   xarchiver/trunk/src/pref_dialog.h
   xarchiver/trunk/src/window.c
   xarchiver/trunk/src/window.h
Log:
Finally fixed bug #1950.
Reduced a lot of GtkWidget declarations in interface.h.


Modified: xarchiver/trunk/src/add_dialog.c
===================================================================
--- xarchiver/trunk/src/add_dialog.c    2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/add_dialog.c    2008-08-01 11:10:02 UTC (rev 27408)
@@ -18,26 +18,22 @@
 
 #include <gtk/gtk.h>
 #include "add_dialog.h"
-#include "interface.h"
 #include "window.h"
 #include "support.h"
 
-Add_dialog_data *xa_create_add_dialog (XArchive *archive)
+extern Prefs_dialog_data *prefs_window;
+
+Add_dialog_data *xa_create_add_dialog()
 {
        GtkWidget 
*label1,*label2,*label3,*label4,*label5,*label7,*hbox1,*hbox2,*hbox3,*hbox4,*option_notebook_vbox;
        GtkWidget 
*dialog_action_area1,*alignment1,*alignment2,*alignment3,*vbox3,*frame2,*frame3,*frame4,*alignment4;
        Add_dialog_data *add_dialog;
-       unsigned short int default_value, max_value;
-       default_value = max_value = 0;
-       gchar *compression_msg = NULL;
-       gboolean flag = FALSE;
 
        add_dialog = g_new0 (Add_dialog_data, 1);
        add_dialog->path_group = NULL;
        add_dialog->option_tooltip = gtk_tooltips_new ();
 
        add_dialog->dialog1 = gtk_dialog_new ();
-       gtk_widget_set_size_request (add_dialog->dialog1,530,420);
        gtk_window_set_title (GTK_WINDOW (add_dialog->dialog1), _("Add files to 
the archive"));
        gtk_window_set_transient_for (GTK_WINDOW 
(add_dialog->dialog1),GTK_WINDOW(xa_main_window));
        gtk_dialog_set_has_separator (GTK_DIALOG (add_dialog->dialog1),FALSE);
@@ -58,10 +54,6 @@
        
        add_dialog->filechooserwidget1 = gtk_file_chooser_widget_new 
(GTK_FILE_CHOOSER_ACTION_OPEN);
        gtk_box_pack_start (GTK_BOX (vbox1), add_dialog->filechooserwidget1, 
TRUE, TRUE,2);
-       if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
-               
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE);
-       else
-               
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE);
 
        add_dialog->frame1 = gtk_frame_new (NULL);
        gtk_box_pack_start (GTK_BOX (vbox1), add_dialog->frame1, FALSE, TRUE,5);
@@ -82,8 +74,6 @@
        gtk_radio_button_set_group (GTK_RADIO_BUTTON (add_dialog->store_path), 
add_dialog->path_group);
        add_dialog->path_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON 
(add_dialog->store_path));
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->store_path), 
FALSE);
-       if (archive->location_entry_path != NULL)
-               gtk_widget_set_sensitive(add_dialog->store_path,FALSE);
        
        add_dialog->no_store_path = gtk_radio_button_new_with_mnemonic (NULL, 
_("Do not store paths"));
        gtk_box_pack_start (GTK_BOX (hbox1), add_dialog->no_store_path, FALSE, 
FALSE, 0);
@@ -92,15 +82,6 @@
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->no_store_path), 
FALSE);
        
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(add_dialog->no_store_path),TRUE);
 
-       /* 7z doesn't appear to let the user chooses if storing full paths */
-       if (archive->type == XARCHIVETYPE_7ZIP || archive->type == 
XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == 
XARCHIVETYPE_LZMA)
-       {
-               gtk_widget_set_sensitive(label3,FALSE);
-               gtk_widget_set_sensitive(add_dialog->store_path,FALSE);
-               gtk_widget_set_sensitive(add_dialog->no_store_path,FALSE);
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->no_store_path), TRUE);
-       }
-
        /* Options page */
        option_notebook_vbox = gtk_vbox_new (FALSE, 0);
        gtk_container_add (GTK_CONTAINER (add_dialog->notebook1), 
option_notebook_vbox);
@@ -124,42 +105,28 @@
        gtk_container_add (GTK_CONTAINER (alignment4),vbox3);
 
        add_dialog->update = gtk_check_button_new_with_mnemonic (_("Update and 
add"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->update), 
archive->update);
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->update), FALSE);
        gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->update, 
_("This option will add any new files and update any files which have been 
modified since the archive was last created/modified."), NULL );
-
-       if (archive->type != XARCHIVETYPE_7ZIP)
-               g_signal_connect (G_OBJECT 
(add_dialog->update),"toggled",G_CALLBACK (add_update_fresh_toggled_cb) , 
add_dialog);
        gtk_box_pack_start (GTK_BOX (vbox3), add_dialog->update, FALSE, FALSE, 
0);
 
        add_dialog->freshen = gtk_check_button_new_with_mnemonic (_("Freshen 
and replace"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->freshen), 
archive->freshen);
+
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->freshen), FALSE);
        gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->freshen , 
_("This option affects the archive only if it has been modified more recently 
than the version already in the archive; unlike the update option it will not 
add files that are not already in the archive."), NULL );
-       if (archive->type != XARCHIVETYPE_7ZIP && archive->type != 
XARCHIVETYPE_LHA)
-               gtk_widget_set_sensitive(add_dialog->freshen,TRUE);
        gtk_box_pack_start (GTK_BOX (vbox3), add_dialog->freshen, FALSE, FALSE, 
0);
        g_signal_connect (G_OBJECT (add_dialog->freshen),"toggled",G_CALLBACK 
(add_fresh_update_toggled_cb) , add_dialog);
 
        add_dialog->recurse = gtk_check_button_new_with_mnemonic (_("Include 
subdirectories"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->recurse), 
archive->add_recurse);
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->recurse), FALSE);
-       if(archive->type == XARCHIVETYPE_LHA)
-               gtk_widget_set_sensitive(add_dialog->recurse,FALSE);
        gtk_box_pack_start (GTK_BOX (vbox3), add_dialog->recurse, FALSE, FALSE, 
0);
 
        add_dialog->solid_archive = gtk_check_button_new_with_mnemonic 
(_("Create a solid archive"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->solid_archive), archive->solid_archive);
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->solid_archive), 
FALSE);
        gtk_tooltips_set_tip 
(add_dialog->option_tooltip,add_dialog->solid_archive , _("In a solid archive 
the files are grouped together featuring a better compression ratio."), NULL);
-       if (archive->type == XARCHIVETYPE_RAR || archive->type == 
XARCHIVETYPE_7ZIP)
-               flag = TRUE;
-       gtk_widget_set_sensitive(add_dialog->solid_archive,flag);
        gtk_box_pack_start (GTK_BOX (vbox3), add_dialog->solid_archive, FALSE, 
FALSE, 0);
 
        add_dialog->remove_files = gtk_check_button_new_with_mnemonic 
(_("Delete files after adding"));
        gtk_button_set_focus_on_click (GTK_BUTTON (add_dialog->remove_files), 
FALSE);
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->remove_files), archive->remove_files);
        gtk_box_pack_start (GTK_BOX (vbox3),add_dialog->remove_files, FALSE, 
FALSE, 0);
 
        label7 = gtk_label_new (_("Actions: "));
@@ -173,10 +140,106 @@
        gtk_box_pack_start (GTK_BOX (hbox3), frame2, TRUE, TRUE, 0);
        gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_OUT);
 
-       alignment2 = gtk_alignment_new (0.5, 0.5, 1, 1);
-       gtk_container_add (GTK_CONTAINER (frame2), alignment2);
-       gtk_alignment_set_padding (GTK_ALIGNMENT (alignment2), 0, 0, 5, 5);
+       add_dialog->alignment2 = gtk_alignment_new (0.5, 0.5, 1, 1);
+       gtk_container_add (GTK_CONTAINER (frame2), add_dialog->alignment2);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (add_dialog->alignment2), 0, 
0, 5, 5);
+
+       label4 = gtk_label_new (_("Compression: "));
+       gtk_frame_set_label_widget (GTK_FRAME (frame2), label4);
+
+       frame3 = gtk_frame_new (NULL);
+       gtk_box_pack_start (GTK_BOX (hbox3), frame3, TRUE, TRUE, 0);
+       gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_OUT);
+
+       alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1);
+       gtk_container_add (GTK_CONTAINER (frame3), alignment3);
+       gtk_alignment_set_padding (GTK_ALIGNMENT (alignment3), 0, 0, 5, 5);
+
+       hbox4 = gtk_hbox_new (FALSE, 0);
+       gtk_container_add (GTK_CONTAINER (alignment3), hbox4);
+
+       add_dialog->add_password = gtk_check_button_new_with_mnemonic 
(_("Password:"));
+       gtk_box_pack_start (GTK_BOX (hbox4), add_dialog->add_password, FALSE, 
FALSE, 0);
+       g_signal_connect (G_OBJECT (add_dialog->add_password), 
"toggled",G_CALLBACK (password_toggled_cb) , add_dialog);
+
+       add_dialog->add_password_entry = gtk_entry_new ();
+       gtk_box_pack_start (GTK_BOX (hbox4), add_dialog->add_password_entry, 
FALSE, FALSE, 0);
+       gtk_entry_set_visibility (GTK_ENTRY (add_dialog->add_password_entry), 
FALSE);
+       gtk_entry_set_width_chars (GTK_ENTRY (add_dialog->add_password_entry), 
15);
+       gtk_widget_set_sensitive (add_dialog->add_password_entry, FALSE);
+
+       label5 = gtk_label_new (_("Encryption: "));
+       gtk_frame_set_label_widget (GTK_FRAME (frame3), label5);
+  
+       dialog_action_area1 = GTK_DIALOG (add_dialog->dialog1)->action_area;
+       gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), 
GTK_BUTTONBOX_END);
+
+       add_dialog->cancel_button = gtk_button_new_from_stock ("gtk-cancel");
+       gtk_dialog_add_action_widget (GTK_DIALOG (add_dialog->dialog1), 
add_dialog->cancel_button, GTK_RESPONSE_CANCEL);
+       GTK_WIDGET_SET_FLAGS (add_dialog->cancel_button, GTK_CAN_DEFAULT);
+
+       add_dialog->add_button = gtk_button_new();
+       add_dialog->add_image = xa_main_window_find_image("xarchiver-add.png", 
GTK_ICON_SIZE_SMALL_TOOLBAR);
+       add_dialog->add_hbox = gtk_hbox_new(FALSE, 4);
+       add_dialog->add_label = gtk_label_new_with_mnemonic(_("_Add"));
+
+       alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0);
+       gtk_container_add (GTK_CONTAINER (alignment2), add_dialog->add_hbox);
+
+       gtk_box_pack_start(GTK_BOX(add_dialog->add_hbox), 
add_dialog->add_image, FALSE, TRUE, 0);
+       gtk_box_pack_start(GTK_BOX(add_dialog->add_hbox), 
add_dialog->add_label, FALSE, TRUE, 0);
+       gtk_container_add(GTK_CONTAINER(add_dialog->add_button), alignment2);
+
+       gtk_dialog_add_action_widget (GTK_DIALOG (add_dialog->dialog1), 
add_dialog->add_button, GTK_RESPONSE_OK);
+       GTK_WIDGET_SET_FLAGS (add_dialog->add_button, GTK_CAN_DEFAULT);
+       gtk_dialog_set_default_response (GTK_DIALOG (add_dialog->dialog1), 
GTK_RESPONSE_OK);
+       return add_dialog;
+}
+
+void xa_set_add_dialog_options(Add_dialog_data *add_dialog,XArchive *archive)
+{
+       gboolean flag = FALSE;
+       gchar *compression_msg = NULL;
+       unsigned short int default_value, max_value;
+       default_value = max_value = 0;
+
+       if 
(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_window->check_save_geometry))
 && prefs_window->add_coords[0] != -1)
+               gtk_window_set_default_size (GTK_WINDOW(add_dialog->dialog1), 
prefs_window->add_coords[0], prefs_window->add_coords[1]);
+       else
+               gtk_widget_set_size_request (add_dialog->dialog1,530,420);
+
+       if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
+               
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE);
+       else
+               
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE);
+
+       if (archive->location_entry_path != NULL)
+               gtk_widget_set_sensitive(add_dialog->store_path,FALSE);
+       /* 7z doesn't appear to let the user chooses if storing full paths */
+       if (archive->type == XARCHIVETYPE_7ZIP || archive->type == 
XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == 
XARCHIVETYPE_LZMA)
+       {
+               gtk_widget_set_sensitive(label3,FALSE);
+               gtk_widget_set_sensitive(add_dialog->store_path,FALSE);
+               gtk_widget_set_sensitive(add_dialog->no_store_path,FALSE);
+               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->no_store_path), TRUE);
+       }
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->update), 
archive->update);
+       if (archive->type != XARCHIVETYPE_7ZIP)
+               g_signal_connect (G_OBJECT 
(add_dialog->update),"toggled",G_CALLBACK (add_update_fresh_toggled_cb) , 
add_dialog);
+
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->freshen), 
archive->freshen);
+       if (archive->type != XARCHIVETYPE_7ZIP && archive->type != 
XARCHIVETYPE_LHA)
+               gtk_widget_set_sensitive(add_dialog->freshen,TRUE);
+
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (add_dialog->recurse), 
archive->add_recurse);
+       if(archive->type == XARCHIVETYPE_LHA)
+               gtk_widget_set_sensitive(add_dialog->recurse,FALSE);
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->solid_archive), archive->solid_archive);
+       if (archive->type == XARCHIVETYPE_RAR || archive->type == 
XARCHIVETYPE_7ZIP)
+               flag = TRUE;
+       gtk_widget_set_sensitive(add_dialog->solid_archive,flag);
        
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(add_dialog->remove_files), archive->remove_files);     
        if (archive->type != XARCHIVETYPE_TAR && archive->type != 
XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type 
!= XARCHIVETYPE_TAR_BZ2)
        {
                flag = TRUE;
@@ -222,79 +285,30 @@
                add_dialog->compression_value = gtk_adjustment_new 
(default_value, 0, max_value, 0, 0, 0);
 
        add_dialog->compression_scale = gtk_hscale_new 
(GTK_ADJUSTMENT(add_dialog->compression_value));
-       gtk_widget_set_sensitive(add_dialog->compression_scale,flag);
-       gtk_container_add (GTK_CONTAINER (alignment2), 
add_dialog->compression_scale);
+       if (gtk_bin_get_child(GTK_BIN(add_dialog->alignment2)) == NULL)
+               gtk_container_add (GTK_CONTAINER (add_dialog->alignment2), 
add_dialog->compression_scale);
        gtk_scale_set_value_pos (GTK_SCALE (add_dialog->compression_scale), 
GTK_POS_TOP);
        gtk_scale_set_digits (GTK_SCALE (add_dialog->compression_scale), 0);
+
        if (archive->compression_level == 0)
                archive->compression_level = default_value;
+
+       gtk_widget_set_sensitive(add_dialog->compression_scale,flag);
        gtk_adjustment_set_value 
(GTK_ADJUSTMENT(add_dialog->compression_value), archive->compression_level);
 
        if (archive->type == XARCHIVETYPE_ARJ)
                gtk_range_set_inverted (GTK_RANGE 
(add_dialog->compression_scale), TRUE);
        else if (archive->type == XARCHIVETYPE_7ZIP)
                g_signal_connect (G_OBJECT 
(add_dialog->compression_value),"value-changed",G_CALLBACK 
(fix_adjustment_value), NULL);
-
        gtk_tooltips_set_tip 
(add_dialog->option_tooltip,add_dialog->compression_scale, compression_msg, 
NULL );
 
-       label4 = gtk_label_new (_("Compression: "));
-       gtk_frame_set_label_widget (GTK_FRAME (frame2), label4);
-
-       frame3 = gtk_frame_new (NULL);
-       gtk_box_pack_start (GTK_BOX (hbox3), frame3, TRUE, TRUE, 0);
-       gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_OUT);
-
-       alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1);
-       gtk_container_add (GTK_CONTAINER (frame3), alignment3);
-       gtk_alignment_set_padding (GTK_ALIGNMENT (alignment3), 0, 0, 5, 5);
-
-       hbox4 = gtk_hbox_new (FALSE, 0);
-       gtk_container_add (GTK_CONTAINER (alignment3), hbox4);
-
        if (archive->type == XARCHIVETYPE_TAR || archive->type == 
XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA || archive->type 
== XARCHIVETYPE_TAR_BZ2)
                flag = FALSE;
        else
                flag = TRUE;
 
-       add_dialog->add_password = gtk_check_button_new_with_mnemonic 
(_("Password:"));
-       gtk_box_pack_start (GTK_BOX (hbox4), add_dialog->add_password, FALSE, 
FALSE, 0);
        gtk_widget_set_sensitive(add_dialog->add_password,flag);
-       g_signal_connect (G_OBJECT (add_dialog->add_password), 
"toggled",G_CALLBACK (password_toggled_cb) , add_dialog);
-
-       add_dialog->add_password_entry = gtk_entry_new ();
-       gtk_box_pack_start (GTK_BOX (hbox4), add_dialog->add_password_entry, 
FALSE, FALSE, 0);
-       gtk_entry_set_visibility (GTK_ENTRY (add_dialog->add_password_entry), 
FALSE);
-       gtk_entry_set_width_chars (GTK_ENTRY (add_dialog->add_password_entry), 
15);
-       gtk_widget_set_sensitive (add_dialog->add_password_entry, FALSE);
-
-       label5 = gtk_label_new (_("Encryption: "));
-       gtk_frame_set_label_widget (GTK_FRAME (frame3), label5);
-  
-       dialog_action_area1 = GTK_DIALOG (add_dialog->dialog1)->action_area;
-       gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), 
GTK_BUTTONBOX_END);
-
-       add_dialog->cancel_button = gtk_button_new_from_stock ("gtk-cancel");
-       gtk_dialog_add_action_widget (GTK_DIALOG (add_dialog->dialog1), 
add_dialog->cancel_button, GTK_RESPONSE_CANCEL);
-       GTK_WIDGET_SET_FLAGS (add_dialog->cancel_button, GTK_CAN_DEFAULT);
-
-       add_dialog->add_button = gtk_button_new();
-       add_dialog->add_image = xa_main_window_find_image("xarchiver-add.png", 
GTK_ICON_SIZE_SMALL_TOOLBAR);
-       add_dialog->add_hbox = gtk_hbox_new(FALSE, 4);
-       add_dialog->add_label = gtk_label_new_with_mnemonic(_("_Add"));
-
-       alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0);
-       gtk_container_add (GTK_CONTAINER (alignment2), add_dialog->add_hbox);
-
-       gtk_box_pack_start(GTK_BOX(add_dialog->add_hbox), 
add_dialog->add_image, FALSE, TRUE, 0);
-       gtk_box_pack_start(GTK_BOX(add_dialog->add_hbox), 
add_dialog->add_label, FALSE, TRUE, 0);
-       gtk_container_add(GTK_CONTAINER(add_dialog->add_button), alignment2);
-
-       gtk_dialog_add_action_widget (GTK_DIALOG (add_dialog->dialog1), 
add_dialog->add_button, GTK_RESPONSE_OK);
-       GTK_WIDGET_SET_FLAGS (add_dialog->add_button, GTK_CAN_DEFAULT);
-       gtk_dialog_set_default_response (GTK_DIALOG (add_dialog->dialog1), 
GTK_RESPONSE_OK);
-       
        gtk_widget_show_all (add_dialog->dialog_vbox1);
-       return add_dialog;
 }
 
 void add_fresh_update_toggled_cb (GtkToggleButton *button, Add_dialog_data 
*data)
@@ -407,6 +421,7 @@
                                g_free (compression_string);
                }
        }
+       gtk_widget_hide (add_dialog->dialog1);
 }
 
 void xa_execute_add_commands (XArchive *archive,GSList *list,gchar 
*compression_string)

Modified: xarchiver/trunk/src/add_dialog.h
===================================================================
--- xarchiver/trunk/src/add_dialog.h    2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/add_dialog.h    2008-08-01 11:10:02 UTC (rev 27408)
@@ -25,6 +25,7 @@
 {
        GtkWidget *dialog1;
        GtkWidget *dialog_vbox1;
+       GtkWidget *alignment2;
        GtkWidget *notebook1;
        GtkWidget *filechooserwidget1;
        GtkWidget *frame1;
@@ -50,7 +51,8 @@
        GtkObject *compression_value;
 } Add_dialog_data;
 
-Add_dialog_data *xa_create_add_dialog (XArchive *);
+Add_dialog_data *xa_create_add_dialog();
+void xa_set_add_dialog_options(Add_dialog_data *,XArchive *);
 void add_fresh_update_toggled_cb (GtkToggleButton *, Add_dialog_data *);
 void add_update_fresh_toggled_cb (GtkToggleButton *, Add_dialog_data *);
 void password_toggled_cb ( GtkButton* ,gpointer);

Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c        2008-07-31 14:43:26 UTC (rev 
27407)
+++ xarchiver/trunk/src/extract_dialog.c        2008-08-01 11:10:02 UTC (rev 
27408)
@@ -24,26 +24,21 @@
 #include "support.h"
 
 extern gboolean unrar;
+extern Prefs_dialog_data *prefs_window;
 gchar *rar;
 
-Extract_dialog_data *xa_create_extract_dialog (gint selected,XArchive *archive)
+Extract_dialog_data *xa_create_extract_dialog()
 {
        GSList *radiobutton1_group = NULL;
        Extract_dialog_data *dialog_data;
-       gboolean flag = TRUE;
 
-       archive_dir = remove_level_from_path (archive->path);
-       dialog_data = g_new0 (Extract_dialog_data, 1);
-       dialog_data->dialog1 = gtk_dialog_new ();
-       if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
-               gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1), 
_("Decompress file"));
-       else
-               gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1), 
_("Extract files from archive"));
+       dialog_data = g_new0 (Extract_dialog_data,1);
+       dialog_data->dialog1 = gtk_dialog_new();
+
        gtk_window_set_type_hint (GTK_WINDOW (dialog_data->dialog1), 
GDK_WINDOW_TYPE_HINT_DIALOG);
        gtk_window_set_transient_for 
(GTK_WINDOW(dialog_data->dialog1),GTK_WINDOW (xa_main_window));
        gtk_dialog_set_has_separator (GTK_DIALOG(dialog_data->dialog1),FALSE);
-       //TODO set the size from the .xarchiverrc file
-       gtk_widget_set_size_request (dialog_data->dialog1,492,372);
+       gtk_window_set_destroy_with_parent(GTK_WINDOW 
(dialog_data->dialog1),TRUE);
 
        option_tooltip = gtk_tooltips_new ();
        dialog_data->dialog_vbox1 = GTK_DIALOG (dialog_data->dialog1)->vbox;
@@ -57,8 +52,6 @@
        gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
 
        dialog_data->destination_path_entry = gtk_entry_new ();
-       gtk_entry_set_text 
(GTK_ENTRY(dialog_data->destination_path_entry),archive_dir);
-       g_free(archive_dir);
        
gtk_entry_set_editable(GTK_ENTRY(dialog_data->destination_path_entry),FALSE);
        gtk_box_pack_start (GTK_BOX (vbox1), 
dialog_data->destination_path_entry, FALSE, FALSE, 0);
 
@@ -89,16 +82,6 @@
        gtk_radio_button_set_group (GTK_RADIO_BUTTON 
(dialog_data->selected_radio), radiobutton1_group);
        radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON 
(dialog_data->selected_radio));
 
-       if (archive->type != XARCHIVETYPE_RPM)
-       {
-               if (selected)
-                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->selected_radio),TRUE);
-               else
-                       gtk_widget_set_sensitive 
(dialog_data->selected_radio,FALSE);
-       }
-       else
-               gtk_widget_set_sensitive (dialog_data->selected_radio,FALSE);
-
        hbox2 = gtk_hbox_new (FALSE, 0);
        gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, FALSE, 0);
 
@@ -128,51 +111,26 @@
        gtk_container_add (GTK_CONTAINER (alignment2),vbox5);
 
        dialog_data->overwrite_check = gtk_check_button_new_with_mnemonic 
(_("Overwrite existing files"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->overwrite_check),archive->overwrite);
        gtk_box_pack_start (GTK_BOX (vbox5), 
dialog_data->overwrite_check,FALSE,FALSE,0);
 
        dialog_data->extract_full = gtk_check_button_new_with_mnemonic 
(_("Extract files with full path"));
-       if (archive->type == XARCHIVETYPE_GZIP || archive->type == 
XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_RPM)
-               flag = FALSE;
-
-       gtk_widget_set_sensitive (dialog_data->extract_full,flag);
-       if (archive->type == XARCHIVETYPE_RPM)
-               flag = ! flag;
-
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->extract_full),flag);
        gtk_tooltips_set_tip(option_tooltip,dialog_data->extract_full , _("The 
archive's directory structure is recreated in the extraction directory."), NULL 
);
        gtk_box_pack_start (GTK_BOX (vbox5), dialog_data->extract_full, FALSE, 
FALSE, 0);
 
-       if (archive->type != XARCHIVETYPE_TAR && archive->type != 
XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type 
!= XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_DEB)
-               flag = FALSE;
-       else
-               flag = TRUE;
-
        dialog_data->touch = gtk_check_button_new_with_mnemonic (_("Touch 
files"));
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->touch),archive->tar_touch);
        gtk_tooltips_set_tip (option_tooltip,dialog_data->touch, _("When this 
option is used, tar leaves the data modification times of the files it extracts 
as the times when the files were extracted, instead of setting it to the times 
recorded in the archive."), NULL );
        gtk_box_pack_start (GTK_BOX (vbox5), dialog_data->touch, FALSE,FALSE,0);
-       gtk_widget_set_sensitive (dialog_data->touch,flag);
 
-       if (archive->type == XARCHIVETYPE_RAR || archive->type == 
XARCHIVETYPE_ZIP || archive->type == XARCHIVETYPE_ARJ)
-               flag = TRUE;
-       else
-               flag = FALSE;   
-
        dialog_data->fresh = gtk_check_button_new_with_mnemonic (_("Freshen 
existing files"));
        gtk_tooltips_set_tip (option_tooltip,dialog_data->fresh , _("Extract 
only those files that already exist on disk and that are newer than the disk 
copies."), NULL );
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog_data->fresh), 
archive->freshen);
        gtk_box_pack_start (GTK_BOX (vbox5), dialog_data->fresh, FALSE, FALSE, 
0);
        g_signal_connect (G_OBJECT (dialog_data->fresh),"toggled",G_CALLBACK 
(fresh_update_toggled_cb) , dialog_data);
 
        dialog_data->update = gtk_check_button_new_with_mnemonic (_("Update 
existing files"));
        gtk_tooltips_set_tip (option_tooltip,dialog_data->update , _("This 
option performs the same function as the freshen one, extracting files that are 
newer than those with the same name on disk, and in addition it extracts those 
files that do not already exist on disk."), NULL );
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog_data->update), 
archive->update);
        gtk_box_pack_start (GTK_BOX (vbox5), dialog_data->update, FALSE, FALSE, 
0);
        g_signal_connect (G_OBJECT (dialog_data->update),"toggled",G_CALLBACK 
(update_fresh_toggled_cb) , dialog_data);
-       gtk_widget_set_sensitive(dialog_data->fresh,flag);
-       gtk_widget_set_sensitive(dialog_data->update,flag);
-
+       
        label3 = gtk_label_new (_("Options "));
        gtk_frame_set_label_widget (GTK_FRAME (frame2), label3);
 
@@ -211,13 +169,13 @@
        g_signal_connect (dialog_data->renderer, "edited",G_CALLBACK 
(xa_cell_edited),dialog_data);
 
        hbox4 = gtk_hbox_new (FALSE, 0);
-       gtk_box_pack_end (GTK_BOX (vbox1), hbox4, FALSE, FALSE, 0);
+       gtk_box_pack_end (GTK_BOX (vbox1),hbox4,FALSE,FALSE,0);
   
        dialog_data->create_dir = gtk_button_new_with_mnemonic (_("Create New 
Dir"));
        gtk_box_pack_end (GTK_BOX (hbox4),dialog_data->create_dir,FALSE, 
FALSE,0);
        g_signal_connect 
(G_OBJECT(dialog_data->create_dir),"clicked",G_CALLBACK(xa_create_dir_button_pressed),dialog_data);
 
-       hbox3 = gtk_hbox_new (FALSE, 0);
+       hbox3 = gtk_hbox_new (FALSE,0);
        gtk_box_pack_start (GTK_BOX (vbox5),hbox3,TRUE,TRUE,0);
 
        label_password = gtk_label_new (_("Password:"));
@@ -226,18 +184,6 @@
        dialog_data->password_entry = gtk_entry_new ();
        gtk_box_pack_start (GTK_BOX (hbox3), 
dialog_data->password_entry,TRUE,TRUE,0);
        gtk_entry_set_visibility (GTK_ENTRY 
(dialog_data->password_entry),FALSE);
-       if (archive->has_passwd)
-    {
-               gtk_widget_set_sensitive (label_password,TRUE);
-               gtk_widget_set_sensitive (dialog_data->password_entry,TRUE);
-               if (archive->passwd != NULL)
-                       gtk_entry_set_text 
(GTK_ENTRY(dialog_data->password_entry),archive->passwd);
-    }
-       else
-       {
-               gtk_widget_set_sensitive (label_password,FALSE);
-               gtk_widget_set_sensitive (dialog_data->password_entry,FALSE);
-       }
 
        dialog_action_area1 = GTK_DIALOG (dialog_data->dialog1)->action_area;
        gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), 
GTK_BUTTONBOX_END);
@@ -248,7 +194,7 @@
 
        extract_button = gtk_button_new();
        extract_image = xa_main_window_find_image("xarchiver-extract.png", 
GTK_ICON_SIZE_SMALL_TOOLBAR);
-       extract_hbox = gtk_hbox_new(FALSE, 4);
+       extract_hbox = gtk_hbox_new(FALSE,4);
        extract_label = gtk_label_new_with_mnemonic(_("_Extract"));
 
        alignment3 = gtk_alignment_new (0.5, 0.5, 0, 0);
@@ -261,7 +207,6 @@
        GTK_WIDGET_SET_FLAGS (extract_button, GTK_CAN_DEFAULT);
        gtk_dialog_set_default_response (GTK_DIALOG 
(dialog_data->dialog1),GTK_RESPONSE_OK);
        xa_browse_dir(model,NULL,NULL);
-       gtk_widget_show_all(dialog_data->dialog1);
        return dialog_data;
 }
 
@@ -379,6 +324,76 @@
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(data->fresh),FALSE);
 }
 
+void xa_set_extract_dialog_options(Extract_dialog_data *dialog_data,gint 
selected,XArchive *archive)
+{
+       gchar *archive_dir = NULL;
+       gboolean flag = TRUE;
+
+       archive_dir = remove_level_from_path (archive->path);
+
+       if 
(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_window->check_save_geometry))
 && prefs_window->extract_dialog[0] != -1)
+               gtk_window_set_default_size (GTK_WINDOW(dialog_data->dialog1), 
prefs_window->extract_dialog[0], prefs_window->extract_dialog[1]);
+       else
+               gtk_widget_set_size_request (dialog_data->dialog1,492,372);
+
+       if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
+               gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1), 
_("Decompress file"));
+       else
+               gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1), 
_("Extract files from archive"));
+
+       if (archive->type != XARCHIVETYPE_RPM)
+       {
+               if (selected)
+                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->selected_radio),TRUE);
+               else
+                       gtk_widget_set_sensitive 
(dialog_data->selected_radio,FALSE);
+       }
+       else
+               gtk_widget_set_sensitive (dialog_data->selected_radio,FALSE);
+
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->overwrite_check),archive->overwrite);
+       if (archive->type == XARCHIVETYPE_GZIP || archive->type == 
XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == 
XARCHIVETYPE_RPM)
+               flag = FALSE;
+
+       gtk_widget_set_sensitive (dialog_data->extract_full,flag);
+
+       if (archive->type == XARCHIVETYPE_RPM)
+               flag = ! flag;
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->extract_full),flag);
+       if (archive->type != XARCHIVETYPE_TAR && archive->type != 
XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type 
!= XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_DEB)
+               flag = FALSE;
+       else
+               flag = TRUE;
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(dialog_data->touch),archive->tar_touch);
+       gtk_widget_set_sensitive (dialog_data->touch,flag);
+
+       if (archive->type == XARCHIVETYPE_RAR || archive->type == 
XARCHIVETYPE_ZIP || archive->type == XARCHIVETYPE_ARJ)
+               flag = TRUE;
+       else
+               flag = FALSE;
+
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog_data->fresh), 
archive->freshen);
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog_data->update), 
archive->update);
+       gtk_widget_set_sensitive(dialog_data->fresh,flag);
+       gtk_widget_set_sensitive(dialog_data->update,flag);
+       
+       gtk_entry_set_text 
(GTK_ENTRY(dialog_data->destination_path_entry),archive_dir);
+       g_free(archive_dir);
+       if (archive->has_passwd)
+    {
+               gtk_widget_set_sensitive (label_password,TRUE);
+               gtk_widget_set_sensitive (dialog_data->password_entry,TRUE);
+               if (archive->passwd != NULL)
+                       gtk_entry_set_text 
(GTK_ENTRY(dialog_data->password_entry),archive->passwd);
+    }
+       else
+       {
+               gtk_widget_set_sensitive (label_password,FALSE);
+               gtk_widget_set_sensitive (dialog_data->password_entry,FALSE);
+       }
+       gtk_widget_show_all(dialog_data->dialog1);
+}
+
 void xa_parse_extract_dialog_options (XArchive *archive,Extract_dialog_data 
*dialog_data,GtkTreeSelection *selection)
 {
        gchar *destination_path = NULL, *string;
@@ -445,6 +460,8 @@
                                break;
                        }
                        done = TRUE;
+                       g_free (destination_path);
+
                        archive->overwrite = 
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog_data->overwrite_check));
                        archive->tar_touch = 
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog_data->touch));
                        archive->full_path = 
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog_data->extract_full));
@@ -471,7 +488,7 @@
                        (*archive->extract) (archive,names);
                }
        }
-       g_free (destination_path);
+       gtk_widget_hide (dialog_data->dialog1);
 }
 
 void xa_browse_dir(GtkTreeStore *model,gchar *path, GtkTreeIter *parent)

Modified: xarchiver/trunk/src/extract_dialog.h
===================================================================
--- xarchiver/trunk/src/extract_dialog.h        2008-07-31 14:43:26 UTC (rev 
27407)
+++ xarchiver/trunk/src/extract_dialog.h        2008-08-01 11:10:02 UTC (rev 
27408)
@@ -52,15 +52,15 @@
 GtkTreeStore *model;
 GtkTreeViewColumn *column;
 GtkTooltips *option_tooltip;
-gchar *archive_dir;
        
-Extract_dialog_data *xa_create_extract_dialog (gint,XArchive *);
+Extract_dialog_data *xa_create_extract_dialog();
 void xa_create_dir_button_pressed (GtkButton *, gpointer );
 void xa_cell_edited_canceled(GtkCellRenderer *,gpointer );
 void xa_cell_edited (GtkCellRendererText *,const gchar *,const gchar 
*,gpointer );
 void xa_activate_entry(GtkToggleButton *,gpointer );
 void fresh_update_toggled_cb (GtkToggleButton *, Extract_dialog_data *);
 void update_fresh_toggled_cb (GtkToggleButton *, Extract_dialog_data *);
+void xa_set_extract_dialog_options(Extract_dialog_data *,gint ,XArchive *);
 void xa_parse_extract_dialog_options (XArchive * , Extract_dialog_data *, 
GtkTreeSelection *);
 void xa_browse_dir(GtkTreeStore *,gchar *,GtkTreeIter *);
 void xa_tree_view_row_selected(GtkTreeSelection *, gpointer );

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c     2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/interface.c     2008-08-01 11:10:02 UTC (rev 27408)
@@ -685,11 +685,11 @@
        gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(archive->treeview),TRUE);
 
        gtk_drag_source_set 
(archive->treeview,GDK_BUTTON1_MASK,drag_targets,1,GDK_ACTION_COPY | 
GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
-       g_signal_connect ((gpointer) sel,                               
"changed",              G_CALLBACK 
(xa_set_statusbar_message_for_selected_rows),archive);
+       g_signal_connect ((gpointer) sel,                          "changed",   
        G_CALLBACK (xa_set_statusbar_message_for_selected_rows),archive);
        g_signal_connect (G_OBJECT (archive->treeview),"drag-begin",    
G_CALLBACK (drag_begin),archive);
-       g_signal_connect (G_OBJECT 
(archive->treeview),"drag-data-get",G_CALLBACK (drag_data_get),archive);
+       g_signal_connect (G_OBJECT (archive->treeview),"drag-data-get", 
G_CALLBACK (drag_data_get),archive);
        g_signal_connect (G_OBJECT (archive->treeview),"drag-end",              
G_CALLBACK (drag_end),NULL);
-       g_signal_connect (G_OBJECT 
(archive->treeview),"row-activated",G_CALLBACK 
(xa_treeview_row_activated),archive);
+       g_signal_connect (G_OBJECT (archive->treeview),"row-activated", 
G_CALLBACK (xa_treeview_row_activated),archive);
        g_signal_connect (G_OBJECT 
(archive->treeview),"button-press-event",G_CALLBACK 
(xa_mouse_button_event),archive);
 }
 

Modified: xarchiver/trunk/src/interface.h
===================================================================
--- xarchiver/trunk/src/interface.h     2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/interface.h     2008-08-01 11:10:02 UTC (rev 27408)
@@ -1,124 +1,46 @@
 /*
  *  Copyright (c) 2008 Giuseppe Torelli <[EMAIL PROTECTED]>
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  This program is free software, you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
+ *  the Free Software Foundation, either version 2 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  but WITHOUT ANY WARRANTY, without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU Library General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
+ *  along with this program, if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  */
 
 #ifndef __XARCHIVER_INTERFACE_H__
 #define __XARCHIVER_INTERFACE_H__
-
 #include "archive.h"
-GtkWidget *xa_popup_menu;
-GtkWidget *xa_main_window;
-GtkWidget *vbox1;
+#include "pref_dialog.h"
+
 GtkNotebook *notebook;
-GtkWidget *hbox_sb;
-GtkWidget *menubar1;
-GtkWidget *menuitem1;
-GtkWidget *menuitem1_menu;
-GtkWidget *new1;
-GtkWidget *open1;
-GtkWidget *listing;
-GtkWidget *listing_submenu;
-GtkWidget *listing_text;
-GtkWidget *listing_html;
-GtkWidget *save1;
-GtkWidget *entry1;
-GtkWidget *green_led;
-GtkWidget *red_led;
-GtkWidget *progressbar;
-GtkWidget *total_label,*selected_label;
-GtkWidget *total_frame,*selected_frame;
-GtkWidget *archive_properties_window;
-GtkWidget *table1;
-GtkWidget *path_label;
-GtkWidget *modified_label;
-GtkWidget *size_label;
-GtkWidget *content_label;
-GtkWidget *comment_label;
-GtkWidget *compression_label;
-GtkWidget *number_of_files_label;
-GtkWidget *name_label;
-GtkWidget *type_label;
-GtkWidget *compression_data;
-GtkWidget *number_of_files_data;
-GtkWidget *content_data;
-GtkWidget *comment_data;
-GtkWidget *size_data;
-GtkWidget *modified_data;
-GtkWidget *path_data;
-GtkWidget *type_data;
-GtkWidget *name_data;
-GtkWidget *separatormenuitem1;
-GtkWidget *separatormenuitem2;
-GtkWidget *separatormenuitem3;
-GtkWidget *separatormenuitem4;
-GtkWidget *separatormenuitem5;
-GtkWidget *separatormenuitem6;
-GtkWidget *quit1;
-GtkWidget *close1;
-GtkWidget *check_menu;
-GtkWidget *properties;
-GtkWidget *menuitem2;
-GtkWidget *menuitem2_menu;
-GtkWidget *addfile;
-GtkWidget *extract_menu;
-GtkWidget *delete_menu;
-GtkWidget *comment_menu;
-GtkWidget *view_shell_output1;
-GtkWidget *prefs_menu;
-GtkWidget *password_entry_menu;
-GtkWidget *image1;
-GtkWidget *image2;
-GtkWidget *menuitem4;
-GtkWidget *select_all,*deselect_all,*select_pattern;
-GtkWidget *exe_menu;
-GtkWidget *menuitem4_menu;
-GtkWidget *about1;
-GtkWidget *help1;
-GtkWidget *toolbar1;
-GtkWidget *toolbar2;
-GtkWidget *hbox1;
 GtkIconSize tmp_toolbar_icon_size;
-GtkWidget *tmp_image;
-GtkWidget *pad_image;
-GtkWidget *New_button;
-GtkWidget *Open_button;
-GtkWidget *back_button;
-GtkWidget *home_button;
-GtkWidget *forward_button;
-GtkWidget *up_button;
-GtkWidget *separatortoolitem1;
-GtkWidget *separatortoolitem2;
-GtkWidget *separatortoolitem3;
-GtkWidget *AddFile_button;
-GtkWidget *Extract_button;
-GtkWidget *Stop_button;
-GtkWidget *toolitem1;
-GtkWidget *location_label;
-GtkWidget *location_entry;
-GtkWidget *hpaned1;
-GtkWidget *archive_dir_treeview,*scrolledwindow2;
 GtkTreeStore *archive_dir_model;
 GtkTreeViewColumn *column;
 GtkCellRenderer *archive_dir_renderer;
-GtkWidget *ebox;
 GtkAccelGroup *accel_group;
 GtkTooltips *tooltips;
 
+GtkWidget *xa_popup_menu, *xa_main_window, *vbox1, *hbox_sb, *menubar1, 
*menuitem1, *menuitem1_menu, *new1, *open1, *listing, *listing_submenu,
+*listing_text, *listing_html, *save1, *entry1, *green_led, *red_led, 
*progressbar, *total_label,*selected_label, *total_frame,*selected_frame,
+*archive_properties_window, *table1, *path_label, *modified_label, 
*size_label, *content_label, *comment_label, *compression_label, 
*number_of_files_label,
+*name_label, *type_label, *compression_data, *number_of_files_data, 
*content_data, *comment_data, *size_data, *modified_data, *path_data, 
*type_data,
+*name_data, *separatormenuitem1, *separatormenuitem2, *separatormenuitem3, 
*separatormenuitem4, *separatormenuitem5, *separatormenuitem6, *quit1,
+*close1, *check_menu, *properties, *menuitem2, *menuitem2_menu, *addfile, 
*extract_menu, *delete_menu, *comment_menu, *view_shell_output1,
+*prefs_menu,*password_entry_menu, *image1, *image2, *menuitem4, 
*select_all,*deselect_all,*select_pattern, *exe_menu, *menuitem4_menu,
+*about1, *help1, *toolbar1, *toolbar2, *hbox1, *tmp_image, *pad_image, 
*New_button, *Open_button, *back_button, *home_button, *forward_button,
+*up_button,*separatortoolitem1,*separatortoolitem2,*separatortoolitem3,*AddFile_button,*Extract_button,*Stop_button,*toolitem1,*location_label,
+*location_entry,*hpaned1,*archive_dir_treeview,*scrolledwindow2;
+
 gchar *xa_create_password_dialog(XArchive *);
 void set_label (GtkWidget *label,gchar *);
 int xa_flash_led_indicator (gpointer );
@@ -130,12 +52,12 @@
 void xa_handle_navigation_buttons (GtkMenuItem *, gpointer );
 void xa_add_page (XArchive *);
 void xa_page_has_changed (GtkNotebook *, GtkNotebookPage *, guint ,gpointer );
-void xa_close_page (GtkWidget *, gpointer );
+void xa_close_page ( GtkWidget*, gpointer );
 void xa_set_button_state 
(gboolean,gboolean,gboolean,gboolean,gboolean,gboolean, gboolean, 
gboolean,gboolean);
 void xa_restore_navigation(int idx);
 void xa_disable_delete_buttons (gboolean);
 void xa_sidepane_row_expanded(GtkTreeView *,GtkTreeIter *,GtkTreePath 
*,gpointer );
-void xa_sidepane_drag_data_received (GtkWidget *,GdkDragContext *,int x,int 
y,GtkSelectionData *, unsigned int info,unsigned int time,gpointer );
+void xa_sidepane_drag_data_received ( GtkWidget*,GdkDragContext *,int x,int 
y,GtkSelectionData *, unsigned int info,unsigned int time,gpointer );
 gboolean xa_sidepane_drag_motion_expand_timeout (GtkTreePath **);
-gboolean xa_sidepane_drag_motion (GtkWidget *,GdkDragContext *,gint x,gint 
y,guint ,gpointer );
+gboolean xa_sidepane_drag_motion ( GtkWidget*,GdkDragContext *,gint x,gint 
y,guint ,gpointer );
 #endif

Modified: xarchiver/trunk/src/main.c
===================================================================
--- xarchiver/trunk/src/main.c  2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/main.c  2008-08-01 11:10:02 UTC (rev 27408)
@@ -38,7 +38,9 @@
 int response;
 extern gchar *current_open_directory;
 extern int status;
-Prefs_dialog_data *prefs_window = NULL;
+Prefs_dialog_data   *prefs_window   = NULL;
+Extract_dialog_data *extract_window = NULL;
+Add_dialog_data     *add_window = NULL;
 
 delete_func            delete[XARCHIVETYPE_COUNT]      = {NULL};
 add_func               add[XARCHIVETYPE_COUNT]         = {NULL};
@@ -103,8 +105,10 @@
        xa_mime_type_init();    /* initialize mime-type cache */
 
        xa_set_available_archivers();
-       prefs_window = xa_create_prefs_dialog();
-       xa_prefs_load_options(prefs_window);
+       prefs_window   = xa_create_prefs_dialog();
+       extract_window = xa_create_extract_dialog();
+       add_window     = xa_create_add_dialog();
+       xa_prefs_load_options(prefs_window,extract_window);//add_window);
 
        if (batch_mode == TRUE)
        {
@@ -150,7 +154,7 @@
                        if (xa_detect_encrypted_archive (archive))
                                archive->has_passwd = TRUE;
 
-                       extract_window = xa_create_extract_dialog (0,archive);
+                       xa_set_extract_dialog_options(extract_window,0,archive);
                        xa_parse_extract_dialog_options 
(archive,extract_window,NULL);
                        gtk_widget_destroy (extract_window->dialog1);
                        g_free (extract_window);

Modified: xarchiver/trunk/src/pref_dialog.c
===================================================================
--- xarchiver/trunk/src/pref_dialog.c   2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/pref_dialog.c   2008-08-01 11:10:02 UTC (rev 27408)
@@ -25,6 +25,9 @@
 
 extern gboolean unrar;
 extern gboolean xdg_open;
+extern Extract_dialog_data *extract_window;
+extern Add_dialog_data *add_window;
+
 Prefs_dialog_data *xa_create_prefs_dialog()
 {
        GtkWidget *vbox1, *vbox3,*vbox4, *hbox1, *scrolledwindow1, 
*prefs_iconview;
@@ -365,10 +368,17 @@
        }
        if 
(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_data->check_save_geometry))
 )
        {
+               /* Main window coords */
                prefs_data->geometry[4] = 
gtk_paned_get_position(GTK_PANED(hpaned1));
                gtk_window_get_position 
(GTK_WINDOW(xa_main_window),&prefs_data->geometry[0],&prefs_data->geometry[1]);
                gtk_window_get_size 
(GTK_WINDOW(xa_main_window),&prefs_data->geometry[2],&prefs_data->geometry[3]);
-               g_key_file_set_integer_list(xa_key_file, PACKAGE, "geometry", 
prefs_data->geometry,5);
+               g_key_file_set_integer_list(xa_key_file, PACKAGE, "mainwindow", 
prefs_data->geometry,5);
+               /* Extract dialog coords */
+               gtk_window_get_size 
(GTK_WINDOW(extract_window->dialog1),&prefs_data->extract_dialog[0],&prefs_data->extract_dialog[1]);
+               g_key_file_set_integer_list(xa_key_file, PACKAGE, "extract", 
prefs_data->extract_dialog,2);
+               /* Add dialog coords */
+               gtk_window_get_size 
(GTK_WINDOW(add_window->dialog1),&prefs_data->add_coords[0],&prefs_data->add_coords[1]);
+               g_key_file_set_integer_list(xa_key_file, PACKAGE, "add", 
prefs_data->add_coords,2);
        }
        conf = g_key_file_to_data (xa_key_file, NULL, NULL);
        len = strlen(conf);
@@ -383,9 +393,11 @@
        g_key_file_free(xa_key_file);
 }
 
-void xa_prefs_load_options(Prefs_dialog_data *prefs_data)
+void xa_prefs_load_options(Prefs_dialog_data *prefs_data,Extract_dialog_data 
*extract_data)
 {
        gint *coords = NULL;
+       gint *extract_coords = NULL;
+       gint *add_coords = NULL;
        gchar *value;
        gsize coords_len = 0;
        gchar *config_dir = NULL;
@@ -462,7 +474,7 @@
                        }
                }
                gtk_combo_box_set_active 
(GTK_COMBO_BOX(prefs_data->combo_prefered_temp_dir),0);
-               coords = g_key_file_get_integer_list(xa_key_file, PACKAGE, 
"geometry", &coords_len, &error);
+               coords = g_key_file_get_integer_list(xa_key_file, PACKAGE, 
"mainwindow", &coords_len, &error);
                if (error)
                {
                        prefs_data->geometry[0] = -1;
@@ -478,6 +490,32 @@
                        prefs_data->geometry[3] = coords[3];
                        prefs_data->geometry[4] = coords[4];
                }
+               extract_coords = g_key_file_get_integer_list(xa_key_file, 
PACKAGE, "extract", &coords_len, &error);
+               if (error)
+               {
+                       prefs_data->extract_dialog[0] = -1;
+                       g_error_free(error);
+                       error = NULL;
+               }
+               else
+               {       
+                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs_data->check_save_geometry),TRUE);        
+                       prefs_data->extract_dialog[0] = extract_coords[0];
+                       prefs_data->extract_dialog[1] = extract_coords[1];
+               }
+               add_coords = g_key_file_get_integer_list(xa_key_file, PACKAGE, 
"add", &coords_len, &error);
+               if (error)
+               {
+                       prefs_data->add_coords[0] = -1;
+                       g_error_free(error);
+                       error = NULL;
+               }
+               else
+               {       
+                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs_data->check_save_geometry),TRUE);        
+                       prefs_data->add_coords[0] = add_coords[0];
+                       prefs_data->add_coords[1] = add_coords[1];
+               }
        }
        g_key_file_free (xa_key_file);
        /* config_file is freed in window.c xa_quit_application */

Modified: xarchiver/trunk/src/pref_dialog.h
===================================================================
--- xarchiver/trunk/src/pref_dialog.h   2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/pref_dialog.h   2008-08-01 11:10:02 UTC (rev 27408)
@@ -18,6 +18,7 @@
 
 #ifndef __PREF_DIALOG_H
 #define __PREF_DIALOG_H
+#include "extract_dialog.h"
 
 typedef struct
 {
@@ -28,15 +29,17 @@
        GtkListStore *prefs_liststore;
        GtkTooltips *tooltips;
        gint geometry[5];
+       gint extract_dialog[2];
+       gint add_coords[2];
 } Prefs_dialog_data;
 
 Prefs_dialog_data *xa_create_prefs_dialog ();
-void xa_prefs_iconview_changed (GtkIconView *iconview, gpointer user_data);
-void xa_prefs_dialog_set_default_options (Prefs_dialog_data *prefs_data);
-void xa_prefs_save_options (Prefs_dialog_data *prefs_data,const char 
*filename);
-void xa_prefs_load_options (Prefs_dialog_data *prefs_data);
-void xa_prefs_combo_changed (GtkComboBox *widget,gpointer user_data);
+void xa_prefs_iconview_changed (GtkIconView *, gpointer );
+void xa_prefs_dialog_set_default_options (Prefs_dialog_data *);
+void xa_prefs_save_options (Prefs_dialog_data *,const char *);
+void xa_prefs_load_options(Prefs_dialog_data *,Extract_dialog_data *);
+void xa_prefs_combo_changed (GtkComboBox *,gpointer );
 void xa_apply_prefs_option(Prefs_dialog_data *);
-gchar *xa_prefs_choose_program(gboolean flag);
+gchar *xa_prefs_choose_program(gboolean );
 #endif
 

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/window.c        2008-08-01 11:10:02 UTC (rev 27408)
@@ -33,7 +33,9 @@
 extern GList *ArchiveSuffix;
 extern gboolean unrar;
 extern gboolean xdg_open;
-extern Prefs_dialog_data *prefs_window;
+extern Prefs_dialog_data   *prefs_window;
+extern Extract_dialog_data *extract_window;
+extern Add_dialog_data     *add_window;
 extern gchar *config_file;
 extern void xa_free_icon_cache();
 
@@ -749,8 +751,15 @@
                g_free (current_open_directory);
 
        xa_prefs_save_options (prefs_window,config_file);
-       //gtk_widget_destroy (extract_window->dialog1);
        gtk_widget_destroy(prefs_window->dialog1);
+       g_free(prefs_window);
+       
+       gtk_widget_destroy (extract_window->dialog1);
+       g_free(extract_window);
+       
+       gtk_widget_destroy (add_window->dialog1);
+       g_free(add_window);
+
        gtk_widget_destroy(xa_popup_menu);
        g_free (config_file);
        xa_free_icon_cache();
@@ -811,42 +820,26 @@
 
 void xa_add_files_archive (GtkMenuItem *menuitem,gpointer data)
 {
-       gint current_page;
-       gint idx;
+       gint current_page,idx;
 
        current_page = gtk_notebook_get_current_page (notebook);
        idx = xa_find_archive_index (current_page);
 
-       add_window = xa_create_add_dialog (archive[idx]);
+       xa_set_add_dialog_options(add_window,archive[idx]);
        xa_parse_add_dialog_options (archive[idx],add_window);
-       gtk_widget_destroy (add_window->dialog1);
-       add_window->dialog1 = NULL;
-       g_free (add_window);
-       add_window = NULL;
 }
 
 void xa_extract_archive (GtkMenuItem *menuitem,gpointer user_data)
 {
-       gint current_page;
-       gint idx;
+       gint current_page,idx,selected;
 
        current_page = gtk_notebook_get_current_page(notebook);
        idx = xa_find_archive_index (current_page);
 
        GtkTreeSelection *selection = gtk_tree_view_get_selection 
(GTK_TREE_VIEW(archive[idx]->treeview));
-       gint selected = gtk_tree_selection_count_selected_rows (selection);
-
-       //xa_set_extract_dialog_options(selected,archive[idx]);
-       extract_window = xa_create_extract_dialog (selected,archive[idx]);
-       if (archive[idx]->extraction_path != NULL)
-               gtk_entry_set_text 
(GTK_ENTRY(extract_window->destination_path_entry),archive[idx]->extraction_path);
-
+       selected = gtk_tree_selection_count_selected_rows (selection);
+       xa_set_extract_dialog_options(extract_window,selected,archive[idx]);
     xa_parse_extract_dialog_options(archive[idx],extract_window,selection);
-       //TODO: remove the following so to allow xa_prefs_save_options to store 
all the settings of the extract dialog.
-       gtk_widget_destroy (extract_window->dialog1);
-       extract_window->dialog1 = NULL;
-       g_free (extract_window);
-       extract_window = NULL;
 }
 
 void xa_show_prefs_dialog (GtkMenuItem *menuitem,gpointer user_data)

Modified: xarchiver/trunk/src/window.h
===================================================================
--- xarchiver/trunk/src/window.h        2008-07-31 14:43:26 UTC (rev 27407)
+++ xarchiver/trunk/src/window.h        2008-08-01 11:10:02 UTC (rev 27408)
@@ -53,7 +53,6 @@
 #include "pref_dialog.h"
 
 unsigned long long int file_offset;
-Extract_dialog_data *extract_window;
 Add_dialog_data *add_window;
 GtkWidget *dialog, *scrollwin, *view_window, *_properties_win,*comment_dialog;
 

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to