[Xfce4-commits] r25954 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Fri Aug 3 12:49:45 CEST 2007


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 ();



More information about the Xfce4-commits mailing list