[Pkg-wmaker-commits] [wmforecast] 02/11: wmforecast.c: Switch preferences to use WMUserDefaults instead of manually writing my own PropList stuff. Moves location of preferences file to ~/GNUstep/Defaults/wmforecast.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Sun Sep 20 16:38:15 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch upstream
in repository wmforecast.

commit 1fdd618de18d57bda09c8e33084dd3a683ddea94
Author: Doug Torrance <dtorrance at monmouthcollege.edu>
Date:   Fri Oct 31 08:28:19 2014 -0500

    wmforecast.c: Switch preferences to use WMUserDefaults instead of manually writing my own PropList stuff. Moves location of preferences file to ~/GNUstep/Defaults/wmforecast.
---
 wmforecast.c | 155 ++++++++++++++++-------------------------------------------
 1 file changed, 41 insertions(+), 114 deletions(-)

diff --git a/wmforecast.c b/wmforecast.c
index e610811..76242c6 100755
--- a/wmforecast.c
+++ b/wmforecast.c
@@ -40,6 +40,7 @@ typedef struct {
 	long int interval;
 	char *background;
 	char *text;
+	WMUserDefaults *defaults;
 } Preferences;
 
 typedef struct {
@@ -530,69 +531,32 @@ static void updateDockapp(void *data)
 	freeWeather(weather);
 }
 
-char *WMGetPLStringForKey(WMPropList *propList, char *key)
-{
-	WMPropList *value;
-	value = WMGetFromPLDictionary(propList,WMCreatePLString(key));
-	if (value)
-		return WMGetPropListDescription(value, False);
-	else
-		return NULL;
-}
-
-char *getPreferencesDirectory()
-{
-	char *dir;
-	dir = getenv("XDG_CONFIG_DIR");
-	if (!dir)
-		dir = wstrconcat(getenv("HOME"), "/.config");
-	dir = wstrconcat(dir, "/wmforecast");
-	return dir;
-}
-
-char *getPreferencesFilename()
-{
-	char *filename;
-
-	filename = getPreferencesDirectory();
-	filename = wstrappend(filename, "/wmforecastrc");
-
-	return filename;
-}
-
 void readPreferences(Preferences *prefs)
 {
-	char *filename;
-	WMPropList *propList;
-
-	filename = getPreferencesFilename();
-	propList = WMReadPropListFromFile(filename);
-	if (propList) {
+	if (prefs->defaults) {
 		char *value;
-		value = WMGetPLStringForKey(propList, "units");
+		value = WMGetUDStringForKey(prefs->defaults, "units");
 		if (value)
 			prefs->units = value;
-		value = WMGetPLStringForKey(propList, "woeid");
+		value = WMGetUDStringForKey(prefs->defaults, "woeid");
 		if (value)
 			prefs->woeid = value;
-		value = WMGetPLStringForKey(propList, "zip");
+		value = WMGetUDStringForKey(prefs->defaults, "zip");
 		if (value)
 			prefs->zip = value;
-		value = WMGetPLStringForKey(propList, "woeid_or_zip");
+		value = WMGetUDStringForKey(prefs->defaults, "woeid_or_zip");
 		if (value)
 			prefs->woeid_or_zip = value;
-		value = WMGetPLStringForKey(propList, "interval");
+		value = WMGetUDStringForKey(prefs->defaults, "interval");
 		if (value)
 			prefs->interval = strtol(value, NULL, 10);
-		value = WMGetPLStringForKey(propList, "background");
+		value = WMGetUDStringForKey(prefs->defaults, "background");
 		if (value)
 			prefs->background = value;
-		value = WMGetPLStringForKey(propList, "text");
+		value = WMGetUDStringForKey(prefs->defaults, "text");
 		if (value)
 			prefs->text = value;
 	}
-
-
 }
 
 Preferences *setPreferences(int argc, char **argv)
@@ -608,7 +572,7 @@ Preferences *setPreferences(int argc, char **argv)
 	prefs->interval = 60;
 	prefs->background = DEFAULT_BG_COLOR;
 	prefs->text = DEFAULT_TEXT_COLOR;
-
+	prefs->defaults = WMGetStandardUserDefaults();
 	readPreferences(prefs);
 
 	//command line
@@ -728,75 +692,37 @@ static void closePreferences(WMWidget *widget, void *data)
 
 static void savePreferences(WMWidget *widget, void *data)
 {
-	char *dir;
-	char *filename;
-	char *prefsString;
 	Dockapp *d = (Dockapp *)data;
-	FILE *file;
-	int md;
-	WMPropList *prefsPL;
-	WMPropList *key;
-	WMPropList *object;
-
-	prefsPL = WMCreatePLDictionary(NULL,NULL);
-
-	key = WMCreatePLString("units");
-	if (WMGetButtonSelected(d->prefsWindow->celsius)) {
-		object = WMCreatePLString("c");
-		WMPutInPLDictionary(prefsPL, key, object);
-	}
-	if (WMGetButtonSelected(d->prefsWindow->fahrenheit)) {
-		object = WMCreatePLString("f");
-		WMPutInPLDictionary(prefsPL, key, object);
-	}
-
-	key = WMCreatePLString("woeid_or_zip");
-	if (WMGetButtonSelected(d->prefsWindow->woeid)) {
-		object = WMCreatePLString("w");
-		WMPutInPLDictionary(prefsPL, key, object);
-	}
-	if (WMGetButtonSelected(d->prefsWindow->zip)) {
-		object = WMCreatePLString("z");
-		WMPutInPLDictionary(prefsPL, key, object);
-	}
-
-	key = WMCreatePLString("woeid");
-	object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->woeidField));
-	WMPutInPLDictionary(prefsPL, key, object);
-
-	key = WMCreatePLString("zip");
-	object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->zipField));
-	WMPutInPLDictionary(prefsPL, key, object);
-
-	key = WMCreatePLString("interval");
-	object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->interval));
-	WMPutInPLDictionary(prefsPL, key, object);
-
-	key = WMCreatePLString("background");
-	object = WMCreatePLString(WMGetColorRGBDescription(WMGetColorWellColor(d->prefsWindow->background)));
-	WMPutInPLDictionary(prefsPL, key, object);
 
-	key = WMCreatePLString("text");
-	object = WMCreatePLString(WMGetColorRGBDescription(WMGetColorWellColor(d->prefsWindow->text)));
-	WMPutInPLDictionary(prefsPL, key, object);
-
-	// since WMWritePropListToFile only writes to files in
-	// GNUSTEP_USER_ROOT, we need to write our own version
-	prefsString = WMGetPropListDescription(prefsPL, True);
-
-	dir = getPreferencesDirectory();
-	md = mkdir(dir, 0777);
-	if (md < 0) {
-		printf("Error making directory %s: %s\n", dir,
-		       strerror(errno));
-	}
-
-	filename = getPreferencesFilename();
-	file = fopen(filename, "w");
-	if (file) {
-		fputs(prefsString, file);
-		fclose(file);
-	}
+	if (WMGetButtonSelected(d->prefsWindow->celsius))
+		WMSetUDStringForKey(d->prefs->defaults, "c", "units");
+	if (WMGetButtonSelected(d->prefsWindow->fahrenheit))
+		WMSetUDStringForKey(d->prefs->defaults, "f", "units");
+	if (WMGetButtonSelected(d->prefsWindow->woeid))
+		WMSetUDStringForKey(d->prefs->defaults, "w", "woeid_or_zip");
+	if (WMGetButtonSelected(d->prefsWindow->zip))
+		WMSetUDStringForKey(d->prefs->defaults, "z", "woeid_or_zip");
+	WMSetUDStringForKey(d->prefs->defaults,
+			    WMGetTextFieldText(d->prefsWindow->woeidField),
+			    "woeid");
+	WMSetUDStringForKey(d->prefs->defaults,
+			    WMGetTextFieldText(d->prefsWindow->zipField),
+			    "zip");
+	WMSetUDStringForKey(d->prefs->defaults,
+			    WMGetTextFieldText(d->prefsWindow->interval),
+			    "interval");
+	WMSetUDStringForKey(d->prefs->defaults,
+			    WMGetColorRGBDescription(
+				    WMGetColorWellColor(
+					    d->prefsWindow->background)),
+			    "background");
+	WMSetUDStringForKey(d->prefs->defaults,
+			    WMGetColorRGBDescription(
+				    WMGetColorWellColor(
+					    d->prefsWindow->text)),
+			    "text");
+
+	WMSaveUserDefaults(d->prefs->defaults);
 
 	readPreferences(d->prefs);
 	updateDockapp(d);
@@ -985,9 +911,10 @@ int main(int argc, char **argv)
 	Preferences *prefs;
 	WMScreen *screen;
 
+	WMInitializeApplication("wmforecast", &argc, argv);
+
 	prefs = setPreferences(argc, argv);
 
-	WMInitializeApplication("wmforecast", &argc, argv);
 	display = XOpenDisplay("");
 
 	screen = WMCreateScreen(display, DefaultScreen(display));

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmforecast.git



More information about the Pkg-wmaker-commits mailing list