Author: colossus
Date: 2007-08-03 10:49:45 +0000 (Fri, 03 Aug 2007)
New Revision: 25954
Modified:
xarchiver/trunk/src/main.c
xarchiver/trunk/src/pref_dialog.c
xarchiver/trunk/src/pref_dialog.h
Log:
The preferences are stored and restored in the file xarchiverrc.
Modified: xarchiver/trunk/src/main.c
===================================================================
--- xarchiver/trunk/src/main.c 2007-08-02 11:10:22 UTC (rev 25953)
+++ xarchiver/trunk/src/main.c 2007-08-03 10:49:45 UTC (rev 25954)
@@ -226,8 +226,16 @@
prefs_window = xa_create_prefs_dialog();
xa_prefs_load_options (prefs_window);
- gtk_window_set_position ( GTK_WINDOW
(MainWindow),GTK_WIN_POS_CENTER);
- gtk_window_set_default_size (GTK_WINDOW(MainWindow), 600, 400);
+ if (prefs_window->check_save_geometry &&
prefs_window->geometry[0] != -1)
+ {
+ gtk_window_move (GTK_WINDOW(MainWindow),
prefs_window->geometry[0], prefs_window->geometry[1]);
+ gtk_window_set_default_size (GTK_WINDOW(MainWindow),
prefs_window->geometry[2], prefs_window->geometry[3]);
+ }
+ else
+ {
+ gtk_window_set_position
(GTK_WINDOW(MainWindow),GTK_WIN_POS_CENTER);
+ gtk_window_set_default_size (GTK_WINDOW(MainWindow),
600, 400);
+ }
Update_StatusBar ( _("Ready."));
gtk_widget_show (MainWindow);
@@ -246,6 +254,7 @@
}
#endif
gtk_main ();
+ xa_prefs_save_options
(prefs_window,"/home/gt/.config/xarchiver/xarchiverrc");
g_list_free ( ArchiveSuffix);
g_list_free ( ArchiveType);
return 0;
Modified: xarchiver/trunk/src/pref_dialog.c
===================================================================
--- xarchiver/trunk/src/pref_dialog.c 2007-08-02 11:10:22 UTC (rev 25953)
+++ xarchiver/trunk/src/pref_dialog.c 2007-08-03 10:49:45 UTC (rev 25954)
@@ -218,13 +218,13 @@
prefs_data->combo_prefered_editor = gtk_combo_box_new_text();
gtk_box_pack_start (GTK_BOX (hbox5), prefs_data->combo_prefered_editor,
FALSE, TRUE, 0);
gtk_combo_box_append_text (GTK_COMBO_BOX
(prefs_data->combo_prefered_editor), _("choose...") );
-
+
hbox6 = gtk_hbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (vbox3), hbox6, FALSE, TRUE, 0);
label8 = gtk_label_new (_("Preferred temp directory:"));
gtk_box_pack_start (GTK_BOX (hbox6), label8, FALSE, FALSE, 0);
-
+
prefs_data->combo_prefered_temp_dir = gtk_combo_box_new_text();
gtk_box_pack_start (GTK_BOX (hbox6),
prefs_data->combo_prefered_temp_dir, FALSE, TRUE, 0);
gtk_combo_box_append_text (GTK_COMBO_BOX
(prefs_data->combo_prefered_temp_dir), _("/tmp") );
@@ -276,26 +276,64 @@
gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_archive_view),0);
gtk_combo_box_set_active (GTK_COMBO_BOX(prefs_data->combo_icon_size),0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->show_location_bar),TRUE);
-
+
gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_web_browser),0);
gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_temp_dir),0);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->check_save_geometry),TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->check_save_geometry),FALSE);
}
void xa_prefs_save_options(Prefs_dialog_data *prefs_data, const char *filename)
{
- // leggi i valori dei widget e salva
+ gchar *conf;
+ FILE *fp;
+ gint bytes_written, len;
+ GKeyFile *xa_key_file = g_key_file_new();
+
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"preferred_format",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_format)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"save_add_dialog_settings",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->check_save_add_dialog)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"save_ext_dialog_settings",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->check_save_extract_dialog)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"allow_ext_dir_by_dnd",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->allow_dir_extract_with_dnd)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"confirm_deletion",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->confirm_deletion)));
+
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"archive_view",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_archive_view)));
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"icon_size",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_icon_size)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"show_archive_comment",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->check_show_comment)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"show_iso_info",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->check_show_iso_info)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"sort_filename_content",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->check_sort_filename_column)));
+ g_key_file_set_boolean
(xa_key_file,PACKAGE,"show_location_bar",gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (prefs_data->show_location_bar)));
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"preferred_web_browser",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_web_browser)));
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"preferred_editor",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_editor)));
+ g_key_file_set_integer
(xa_key_file,PACKAGE,"preferred_temp_dir",gtk_combo_box_get_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_temp_dir)));
+ if
(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_data->check_save_geometry))
)
+ {
+ gtk_window_get_position
(GTK_WINDOW(MainWindow),&prefs_data->geometry[0],&prefs_data->geometry[1]);
+ gtk_window_get_size
(GTK_WINDOW(MainWindow),&prefs_data->geometry[2],&prefs_data->geometry[3]);
+ g_key_file_set_integer_list(xa_key_file, PACKAGE, "geometry",
prefs_data->geometry, 4);
+ }
+ conf = g_key_file_to_data (xa_key_file, NULL, NULL);
+ len = strlen(conf);
+
+ fp = fopen(filename, "w");
+ if (fp != NULL)
+ {
+ bytes_written = fwrite(conf, sizeof (gchar), len, fp);
+ fclose(fp);
+ }
+ g_free (conf);
+ g_key_file_free(xa_key_file);
}
void xa_prefs_load_options(Prefs_dialog_data *prefs_data)
{
- GKeyFile *xa_key_file = NULL;
+ gint *coords;
+ guint coords_len;
gchar *config_dir = NULL;
gchar *xarchiver_config_dir = NULL;
gchar *config_file = NULL;
+ GKeyFile *xa_key_file = g_key_file_new();
+ GError *error = NULL;
- xa_key_file = g_key_file_new();
config_dir = g_strconcat (g_get_home_dir(),"/.config",NULL);
if (g_file_test(config_dir, G_FILE_TEST_EXISTS) == FALSE)
g_mkdir_with_parents(config_dir,0600);
@@ -303,19 +341,54 @@
xarchiver_config_dir = g_strconcat (config_dir,"/xarchiver",NULL);
g_free (config_dir);
if (g_file_test(xarchiver_config_dir, G_FILE_TEST_EXISTS) == FALSE)
- g_mkdir_with_parents(xarchiver_config_dir,0600);
+ g_mkdir_with_parents(xarchiver_config_dir,0700);
config_file = g_strconcat (xarchiver_config_dir,"/xarchiverrc",NULL);
g_free (xarchiver_config_dir);
if ( !
g_key_file_load_from_file(xa_key_file,config_file,G_KEY_FILE_KEEP_COMMENTS,NULL)
)
{
- g_print ("Chiamo il default\n");
+ /* Write the config file with the default options */
xa_prefs_dialog_set_default_options(prefs_data);
xa_prefs_save_options(prefs_data,config_file);
}
else
- //imposta i widget con i valori caricati
- g_key_file_free(xa_key_file);
+ {
+ /* set the options from the config file */
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_format),g_key_file_get_integer(xa_key_file,PACKAGE,"preferred_format",NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->check_save_add_dialog),g_key_file_get_boolean(xa_key_file,PACKAGE,"save_add_dialog_settings",NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->check_save_extract_dialog),g_key_file_get_boolean(xa_key_file,PACKAGE,"save_ext_dialog_settings",NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->allow_dir_extract_with_dnd),g_key_file_get_boolean(xa_key_file,PACKAGE,"allow_ext_dir_by_dnd",NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
(prefs_data->confirm_deletion),g_key_file_get_boolean(xa_key_file,PACKAGE,"confirm_deletion",NULL));
+
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_archive_view),g_key_file_get_integer(xa_key_file,PACKAGE,"archive_view",NULL));
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_icon_size),g_key_file_get_integer(xa_key_file,PACKAGE,"icon_size",NULL));
+
+ gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(prefs_data->check_show_comment),g_key_file_get_integer(xa_key_file,PACKAGE,"show_archive_comment",NULL));
+ gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(prefs_data->check_show_iso_info),g_key_file_get_integer(xa_key_file,PACKAGE,"show_iso_info",NULL));
+ gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(prefs_data->check_sort_filename_column),g_key_file_get_integer(xa_key_file,PACKAGE,"sort_filename_content",NULL));
+ gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(prefs_data->show_location_bar),g_key_file_get_integer(xa_key_file,PACKAGE,"show_location_bar",NULL));
+
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_web_browser),g_key_file_get_integer(xa_key_file,PACKAGE,"preferred_web_browser",NULL));
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_editor),g_key_file_get_integer(xa_key_file,PACKAGE,"preferred_editor",NULL));
+ gtk_combo_box_set_active
(GTK_COMBO_BOX(prefs_data->combo_prefered_temp_dir),g_key_file_get_integer(xa_key_file,PACKAGE,"preferred_temp_dir",NULL));
+ coords = g_key_file_get_integer_list(xa_key_file, PACKAGE,
"geometry", &coords_len, &error);
+ if (error)
+ {
+ prefs_data->geometry[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->geometry[0] = coords[0];
+ prefs_data->geometry[1] = coords[1];
+ prefs_data->geometry[2] = coords[2];
+ prefs_data->geometry[3] = coords[3];
+ }
+ }
+ g_key_file_free (xa_key_file);
+ g_free (config_file);
}
Modified: xarchiver/trunk/src/pref_dialog.h
===================================================================
--- xarchiver/trunk/src/pref_dialog.h 2007-08-02 11:10:22 UTC (rev 25953)
+++ xarchiver/trunk/src/pref_dialog.h 2007-08-03 10:49:45 UTC (rev 25954)
@@ -29,6 +29,7 @@
GtkWidget *combo_prefered_web_browser, *combo_prefered_editor,
*combo_prefered_temp_dir, *check_save_geometry,*prefs_notebook;
GtkListStore *prefs_liststore;
GtkTooltips *tooltips;
+ int geometry[3];
} Prefs_dialog_data;
Prefs_dialog_data *xa_create_prefs_dialog ();
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits