gxsm_conf.C

Go to the documentation of this file.
00001 /* Gxsm - Gnome X Scanning Microscopy
00002  * universal STM/AFM/SARLS/SPALEED/... controlling and
00003  * data analysis software
00004  * 
00005  * Copyright (C) 1999,2000,2001,2002,2003 Percy Zahl
00006  *
00007  * Authors: Percy Zahl <zahl@users.sf.net>
00008  * additional features: Andreas Klust <klust@users.sf.net>
00009  * WWW Home: http://gxsm.sf.net
00010  *
00011  * This program is free software; you can redistribute it and/or modify
00012  * it under the terms of the GNU General Public License as published by
00013  * the Free Software Foundation; either version 2 of the License, or
00014  * (at your option) any later version.
00015  *
00016  * This program is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU General Public License
00022  * along with this program; if not, write to the Free Software
00023  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
00024  */
00025 
00026 #include <iostream>
00027 
00028 #include <string>
00029 #include <config.h>
00030 
00031 #include "gxsm_conf.h"
00032 #include "xsmdebug.h"
00033 
00034 /* ToDo/Fix
00035  * check if key does not exist in some way ???? -> apply default
00036  * -- now I assume "0" as unconfigured --
00037  */
00038 
00039 
00040 /* restore all GXSM buildin gconf defaults */
00041 extern int force_gconf_defaults;
00042 
00043 /* Generalize Rescoure Management 
00044  * Prefix allows to save different Value Sets by name
00045  */
00046 XsmRescourceManager::XsmRescourceManager(const gchar *prefix, const gchar *group){ 
00047         client = gconf_client_get_default ();
00048         if (prefix)
00049                 Prefix = g_strconcat ("/apps/gxsm2/", prefix, NULL);
00050         else
00051                 Prefix = g_strdup ("/apps/gxsm2/global");
00052         if (group)
00053                 Group = g_strdup (group);
00054         else
00055                 Group = g_strdup ("default");
00056 }
00057 
00058 XsmRescourceManager::~XsmRescourceManager(){ 
00059         g_free(Prefix);
00060         g_free(Group);
00061 }
00062 
00063 void XsmRescourceManager::SetGroup(const gchar *group){
00064         g_free(Group);
00065         if (group)
00066                 Group = g_strdup (group);
00067         else
00068                 Group = g_strdup ("default");
00069 }
00070 
00071 gchar* XsmRescourceManager::KeyTranslate(const gchar *name){
00072         gchar *name_key = g_strdelimit (g_strdup (name), ".", '/'); 
00073         gchar *tmp = g_strconcat (Prefix, "/", Group, "/", name_key, NULL);
00074         g_free (name_key);
00075         return tmp;
00076 }
00077 
00078 void XsmRescourceManager::PutBool(gchar *name, gboolean value){
00079         gchar *key = KeyTranslate (name);
00080         XSM_DEBUG (DBG_L2, "XsmRM::put-bool: " << key << " = " << value);
00081         gconf_client_set_bool (client, key, value, NULL);
00082         g_free(key);
00083 }
00084 
00085 void XsmRescourceManager::Put(gchar *name, double value){
00086         gchar *key = KeyTranslate (name);
00087         XSM_DEBUG (DBG_L2, "XsmRM::put-double: " << key << " = " << value);
00088         gconf_client_set_float (client, key, value, NULL);
00089         g_free(key);
00090 }
00091  
00092 void XsmRescourceManager::Put(gchar *name, int value){
00093         gchar *key = KeyTranslate (name);
00094         XSM_DEBUG (DBG_L2, "XsmRM::put-int: " << key << " = " << value);
00095         gconf_client_set_int (client, key, value, NULL);
00096         g_free(key);
00097 }
00098 
00099 void XsmRescourceManager::Put(gchar *name, gchar *value){
00100         gchar *key = KeyTranslate (name);
00101         XSM_DEBUG (DBG_L2, "XsmRM::put-string: " << key << " = " << value);
00102         gconf_client_set_string (client, key, value, NULL);
00103         g_free(key);
00104 }
00105 
00106 int XsmRescourceManager::GetBool(gchar *name, gboolean defaultv){
00107         gchar *key = KeyTranslate (name);
00108         gboolean value = gconf_client_get_bool (client, key, NULL);
00109         XSM_DEBUG (DBG_L2, "XsmRM::get-bool: " << key << " = " << value << "  default: " << defaultv);
00110         if (force_gconf_defaults){
00111                 if (defaultv){
00112                         value = defaultv;
00113                         gconf_client_set_bool (client, key, value, NULL);
00114                 }
00115         }
00116         g_free(key);
00117         return value;
00118 }
00119 
00120 int XsmRescourceManager::Get(gchar *name, double *value, gchar *defaultv){
00121         gchar *key = KeyTranslate (name);
00122         *value = gconf_client_get_float (client, key, NULL);
00123         XSM_DEBUG (DBG_L2, "XsmRM::get-float: " << key << " = " << *value << "  default: " << defaultv);
00124         if (force_gconf_defaults || *value == 0.){
00125                 if (defaultv){
00126                         *value = atof (defaultv);
00127                         gconf_client_set_float (client, key, (gfloat) (*value), NULL);
00128                 }
00129         }
00130         g_free(key);
00131         return 0;
00132 }
00133 
00134 int XsmRescourceManager::Get(gchar *name, int *value, gchar *defaultv){
00135         gchar *key = KeyTranslate (name);
00136         *value = gconf_client_get_int (client, key, NULL);
00137         XSM_DEBUG(DBG_L2, "XsmRM::get-int: " << key << " = " << *value << "  default: " << defaultv);
00138         if (force_gconf_defaults || *value == 0){
00139                 if (defaultv){
00140                         *value = atoi (defaultv);
00141                         gconf_client_set_int (client, key, *value, NULL);
00142                 }
00143         }
00144         g_free(key);
00145         return 0;
00146 }
00147 
00148 int XsmRescourceManager::Get(gchar *name, gchar **value, gchar *defaultv){
00149         gchar *key = KeyTranslate (name);
00150         *value = gconf_client_get_string (client, key, NULL);
00151         XSM_DEBUG(DBG_L2, "XsmRM::get-string: " << key << " = " << (*value?*value:"-UnSet-") << "  default: " << defaultv);
00152         if (!(*value) || force_gconf_defaults){
00153                 if (defaultv){
00154                         *value = defaultv;
00155                         gconf_client_set_string (client, key, defaultv, NULL);
00156                 } else {
00157                         *value = "?!-ERROR-!?";
00158                 }
00159         }
00160         g_free(key);
00161         *value = g_strdup (*value);
00162         return 0;
00163 }
00164 
00165 gchar *XsmRescourceManager::GetStr(gchar *name, gchar *defaultv){
00166         gchar *value;
00167         gchar *key = KeyTranslate (name);
00168         value = gconf_client_get_string (client, key, NULL);
00169         XSM_DEBUG(DBG_L2, "XsmRM::get-string*: " << key << " = " << (value?value:"-UnSet-") << "  default: " << defaultv);
00170         if (!value || force_gconf_defaults){
00171                 if (defaultv){
00172                         value = defaultv;
00173                         gconf_client_set_string (client, key, defaultv, NULL);
00174                 } else {
00175                         g_free(key);
00176                         return NULL;
00177                 }
00178         }
00179         g_free(key);
00180         return g_strdup (value);
00181 }

Generated on Sat Apr 1 09:03:58 2006 for GXSM by  doxygen 1.4.6