summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-08 11:23:11 -0700
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-08 11:23:11 -0700
commita13d3172fa1cd66cd81b84f1c92f0c8e7de09375 (patch)
tree57618b94a497f3eee369f429a1f1a2426bc9aae1
parent91439f3aff9250da0ea423a560fec53db83fa4e7 (diff)
downloadsubsurface-a13d3172fa1cd66cd81b84f1c92f0c8e7de09375.tar.gz
Save default units using GConf
That seems to be the gtk2 way. Whatever. diveclog ends up defaulting to metric units, because we all know that's the right thing to do. However, I learnt to dive in the US, so I'm used to seeing psi and feet. So despite the sane defaults, I want diveclog to use the broken imperial units for me. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--Makefile5
-rw-r--r--README2
-rw-r--r--main.c21
3 files changed, 25 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index b47a531bb..a2062e6fc 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@ OBJS=main.o dive.o profile.o info.o divelist.o parse-xml.o save-xml.o
divelog: $(OBJS)
$(CC) $(LDFLAGS) -o divelog $(OBJS) \
`xml2-config --libs` \
- `pkg-config --libs gtk+-2.0 glib-2.0`
+ `pkg-config --libs gtk+-2.0 glib-2.0 gconf-2.0`
parse-xml.o: parse-xml.c dive.h
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0` -c `xml2-config --cflags` parse-xml.c
@@ -18,7 +18,8 @@ dive.o: dive.c dive.h
$(CC) $(CFLAGS) `pkg-config --cflags glib-2.0` -c dive.c
main.o: main.c dive.h display.h divelist.h
- $(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c main.c
+ $(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0 gconf-2.0` \
+ -c main.c
profile.o: profile.c dive.h display.h divelist.h
$(CC) $(CFLAGS) `pkg-config --cflags gtk+-2.0 glib-2.0` -c profile.c
diff --git a/README b/README
index a9eb649ee..527bdb345 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@ I'm tired of java programs that don't work etc.
License: GPLv2
-You need libxml2-devel and gtk2-devel to build this.
+You need libxml2-devel, gtk2-devel and GConf2-devel to build this.
Usage:
diff --git a/main.c b/main.c
index e9274129c..7088a6dfa 100644
--- a/main.c
+++ b/main.c
@@ -3,6 +3,8 @@
#include <stdlib.h>
#include <time.h>
+#include <gconf/gconf-client.h>
+
#include "dive.h"
#include "divelist.h"
#include "display.h"
@@ -14,8 +16,11 @@ GtkWidget *error_label;
int error_count;
struct DiveList dive_list;
+GConfClient *gconf;
struct units output_units;
+#define GCONF_NAME(x) "/apps/diveclog/" #x
+
static int sortfn(const void *_a, const void *_b)
{
const struct dive *a = *(void **)_a;
@@ -297,6 +302,10 @@ static void unit_dialog(GtkWidget *w, gpointer data)
output_units = menu_units;
update_dive_list_units(&dive_list);
repaint_dive();
+ gconf_client_set_bool(gconf, GCONF_NAME(feet), output_units.length == FEET, NULL);
+ gconf_client_set_bool(gconf, GCONF_NAME(psi), output_units.pressure == PSI, NULL);
+ gconf_client_set_bool(gconf, GCONF_NAME(cuft), output_units.volume == CUFT, NULL);
+ gconf_client_set_bool(gconf, GCONF_NAME(fahrenheit), output_units.temperature == FAHRENHEIT, NULL);
}
gtk_widget_destroy(dialog);
}
@@ -358,6 +367,18 @@ int main(int argc, char **argv)
gtk_init(&argc, &argv);
+ g_type_init();
+ gconf = gconf_client_get_default();
+
+ if (gconf_client_get_bool(gconf, GCONF_NAME(feet), NULL))
+ output_units.length = FEET;
+ if (gconf_client_get_bool(gconf, GCONF_NAME(psi), NULL))
+ output_units.pressure = PSI;
+ if (gconf_client_get_bool(gconf, GCONF_NAME(cuft), NULL))
+ output_units.volume = CUFT;
+ if (gconf_client_get_bool(gconf, GCONF_NAME(fahrenheit), NULL))
+ output_units.temperature = FAHRENHEIT;
+
error_info_bar = NULL;
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(on_destroy), NULL);