+void GConfOption::setGConfValue(const GConfValue *value) {
+ GError *error = NULL;
+
+ gconf_client_set(ourClient, myPath.c_str(), value, &error);
+
+ if (error != NULL) {
+ g_error_free(error);
+ }
+}
+
+GConfValue *GConfOption::getGConfValue() const {
+ GConfValue *result = NULL;
+ GError *error = NULL;
+
+ result = gconf_client_get_without_default(ourClient, myPath.c_str(), &error);
+
+ if (error != NULL) {
+ g_error_free(error);
+
+ if (result != NULL) {
+ gconf_value_free(result);
+ result = NULL;
+ }
+ }
+
+ if (result != NULL) {
+ if (result->type != kind()) {
+ gconf_value_free(result);
+
+ result = 0;
+ }
+ }
+
+ return result;
+}
+
+void GConfOption::unsetGConfValue() {
+ GError *error = NULL;
+
+ // TODO: should I be picky about errors?
+ gconf_client_unset(ourClient, myPath.c_str(), &error);
+
+ if (error != NULL) {
+ g_error_free(error);
+ }
+}
+