mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
671f6544ac
This adds tested code for Linux and Mac OS, implementing the api that Linus suggested. The Windows code was moved into its own file, but hasn't even been compile tested, yet. In order to have just one interface to set or get a preference value we encode TRUE as (void *) 1 and FALSE as NULL. This works consistently on all platforms and regardless of whether we have 32 or 64 bit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
48 lines
1,014 B
C
48 lines
1,014 B
C
/* linux.c */
|
|
/* implements Linux specific functions */
|
|
#include "display-gtk.h"
|
|
#include <gconf/gconf-client.h>
|
|
|
|
GConfClient *gconf;
|
|
|
|
static char *gconf_name(char *name)
|
|
{
|
|
static char buf[255] = "/apps/subsurface/";
|
|
|
|
snprintf(buf, 255, "/apps/subsurface/%s", name);
|
|
|
|
return buf;
|
|
}
|
|
|
|
void subsurface_open_conf(void)
|
|
{
|
|
gconf = gconf_client_get_default();
|
|
}
|
|
|
|
void subsurface_set_conf(char *name, pref_type_t type, const void *value)
|
|
{
|
|
switch (type) {
|
|
case PREF_BOOL:
|
|
gconf_client_set_bool(gconf, gconf_name(name), value != NULL, NULL);
|
|
break;
|
|
case PREF_STRING:
|
|
gconf_client_set_string(gconf, gconf_name(name), value, NULL);
|
|
}
|
|
}
|
|
|
|
const void *subsurface_get_conf(char *name, pref_type_t type)
|
|
{
|
|
switch (type) {
|
|
case PREF_BOOL:
|
|
return gconf_client_get_bool(gconf, gconf_name(name), NULL) ? (void *) 1 : NULL;
|
|
case PREF_STRING:
|
|
return gconf_client_get_string(gconf, gconf_name(name), NULL);
|
|
}
|
|
/* we shouldn't get here */
|
|
return NULL;
|
|
}
|
|
|
|
void subsurface_close_conf(void)
|
|
{
|
|
/* this is a no-op */
|
|
}
|