summaryrefslogtreecommitdiffstats
path: root/pref.h
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-28 11:21:27 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-29 12:59:46 +0900
commit4f53ad736dc3e9942b12f4240b8c391b0100206b (patch)
treed0d98322b55fd8b2aef79dde8c77289c3cacaa43 /pref.h
parent8394828806baf050fa833402c969139d52dc221d (diff)
downloadsubsurface-4f53ad736dc3e9942b12f4240b8c391b0100206b.tar.gz
Connect preferences to the rest of the code
The biggest problem here was that bool has different sizes in C and C++ code. So using this in a structure shared between the two sides wasn't a smart idea. Instead I went with 'short', but that caused problems with Qt being to smart for its own good and not doing the right thing when dealing with 'boolean' settings and a short value. This may be something in the way I implemented things (as I doubt that something this fundamental would be broken) but the workaround implemented here (explicitly using 0 or 1 depending on the value of the boolean) seems to work. I also decided to get rid of the confusion of where gflow/gfhigh are floating point (0..1) and when they are integers (0..100). We now use integers anywhere outside of deco.c. I also applied some serious spelling corrections to the preferences dialog's ui file. Finally, this enables the code that selects which partial pressure graph to show. Still to do: font size, metric/imperial logic Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'pref.h')
-rw-r--r--pref.h50
1 files changed, 27 insertions, 23 deletions
diff --git a/pref.h b/pref.h
index db26aee0d..7bf71b44c 100644
--- a/pref.h
+++ b/pref.h
@@ -5,42 +5,46 @@
extern "C" {
#endif
+/* can't use 'bool' for the boolean values - different size in C and C++ */
typedef struct {
- gboolean cylinder;
- gboolean temperature;
- gboolean totalweight;
- gboolean suit;
- gboolean nitrox;
- gboolean sac;
- gboolean otu;
- gboolean maxcns;
+ short cylinder;
+ short temperature;
+ short totalweight;
+ short suit;
+ short nitrox;
+ short sac;
+ short otu;
+ short maxcns;
} visible_cols_t;
typedef struct {
- gboolean po2;
- gboolean pn2;
- gboolean phe;
+ short po2;
+ short pn2;
+ short phe;
double po2_threshold;
double pn2_threshold;
double phe_threshold;
} partial_pressure_graphs_t;
struct preferences {
- struct units units;
+ const char *divelist_font;
+ const char *default_filename;
+ double font_size;
visible_cols_t visible_cols;
partial_pressure_graphs_t pp_graphs;
- gboolean mod;
+ short mod;
double mod_ppO2;
- gboolean ead;
- gboolean profile_red_ceiling;
- gboolean profile_calc_ceiling;
- gboolean calc_ceiling_3m_incr;
- double gflow;
- double gfhigh;
+ short ead;
+ short profile_dc_ceiling;
+ short profile_red_ceiling;
+ short profile_calc_ceiling;
+ short calc_ceiling_3m_incr;
+ short gflow;
+ short gfhigh;
int map_provider;
- const char *divelist_font;
- const char *default_filename;
- short display_invalid_dives;
+ short display_invalid_dives;
+ short show_invalid;
+ struct units units;
};
extern struct preferences prefs, default_prefs;
@@ -49,7 +53,7 @@ extern struct preferences prefs, default_prefs;
extern void subsurface_open_conf(void);
extern void subsurface_set_conf(const char *name, const char *value);
-extern void subsurface_set_conf_bool(const char *name, gboolean value);
+extern void subsurface_set_conf_bool(const char *name, bool value);
extern void subsurface_set_conf_int(const char *name, int value);
extern void subsurface_unset_conf(const char *name);
extern const char *subsurface_get_conf(const char *name);