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