00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCU_MACROS_H
00026 #define GCU_MACROS_H
00027
00028 #ifdef HAVE_GO_CONF_SYNC
00029 # include <goffice/app/go-conf.h>
00030 #else
00031 # include <gconf/gconf-client.h>
00032 #endif
00033
00054 #define GCU_PROP(type,member) \
00055 public: \
00056 void Set##member (type val) {m_##member = val;} \
00057 type Get##member (void) const {return m_##member;} \
00058 type &GetRef##member (void) {return m_##member;} \
00059 private: \
00060 type m_##member;
00061
00062 #define GCU_POINTER_PROP(type,member) \
00063 public: \
00064 void Set##member (type *val) {m_##member = val;} \
00065 type *Get##member (void) {return m_##member;} \
00066 type const *Get##member (void) const {return m_##member;} \
00067 private: \
00068 type *m_##member;
00069
00083 #define GCU_RO_PROP(type,member) \
00084 public: \
00085 type Get##member (void) {return m_##member;} \
00086 private: \
00087 type m_##member;
00088
00089 #define GCU_RO_POINTER_PROP(type,member) \
00090 public: \
00091 type const *Get##member (void) const {return m_##member;} \
00092 private: \
00093 type *m_##member;
00094
00108 #define GCU_PROT_PROP(type,member) \
00109 public: \
00110 type Get##member (void) {return m_##member;} \
00111 protected: \
00112 type m_##member;
00113
00114 #define GCU_PROT_POINTER_PROP(type,member) \
00115 public: \
00116 type *Get##member (void) {return m_##member;} \
00117 type const *Get##member (void) const {return m_##member;} \
00118 protected: \
00119 type *m_##member;
00120
00128 #ifdef HAVE_GO_CONF_SYNC
00129 #define go_conf_get_float go_conf_get_double
00130 #define GCU_GCONF_GET(key,type,target,defaultval) \
00131 target = go_conf_get_##type (m_ConfNode, key); \
00132 if (target == (type) 0) \
00133 target = defaultval;
00134 #else
00135 #define GCU_GCONF_GET(key,type,target,defaultval) \
00136 target = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00137 if (error) { \
00138 target = defaultval; \
00139 g_message ("GConf failed: %s", error->message); \
00140 g_error_free (error); \
00141 error = NULL; \
00142 } \
00143 if (target == (type) 0) \
00144 target = defaultval;
00145 #endif
00146
00152 #ifdef HAVE_GO_CONF_SYNC
00153 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
00154 target = go_conf_get_##type (m_ConfNode, key);
00155 #else
00156 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
00157 target = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00158 if (error) { \
00159 target = defaultval; \
00160 g_message ("GConf failed: %s", error->message); \
00161 g_error_free (error); \
00162 error = NULL; \
00163 }
00164 #endif
00165
00174 #ifdef HAVE_GO_CONF_SYNC
00175 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
00176 { \
00177 type val = go_conf_get_##type (m_ConfNode, key); \
00178 if (val == (type) 0) \
00179 val = defaultval; \
00180 target = func (val); \
00181 }
00182 #else
00183 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
00184 { \
00185 type val = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00186 if (error) { \
00187 val = defaultval; \
00188 g_message ("GConf failed: %s", error->message); \
00189 g_error_free (error); \
00190 error = NULL; \
00191 } \
00192 if (val == (type) 0) \
00193 val = defaultval; \
00194 target = func (val); \
00195 }
00196 #endif
00197
00206 #ifdef HAVE_GO_CONF_SYNC
00207 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
00208 if (target) { \
00209 g_free (target); \
00210 target = NULL; \
00211 } \
00212 target = go_conf_get_string (m_ConfNode, key); \
00213 if (target == NULL && defaultval) \
00214 target = g_strdup (defaultval);
00215 #else
00216 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
00217 if (target) { \
00218 g_free (target); \
00219 target = NULL; \
00220 } \
00221 target = gconf_client_get_string (m_ConfClient, ROOTDIR key, &error); \
00222 if (error) { \
00223 if (defaultval) \
00224 target = g_strdup (defaultval); \
00225 g_message ("GConf failed: %s", error->message); \
00226 g_error_free (error); \
00227 error = NULL; \
00228 } else if (target == NULL && defaultval) \
00229 target = g_strdup (defaultval);
00230 #endif
00231
00232 #ifdef HAVE_GO_CONF_SYNC
00233 #define GCU_UPDATE_KEY(key,type,target,action) \
00234 if (!strcmp (name, ROOTDIR key)) { \
00235 target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \
00236 action \
00237 return; \
00238 }
00239 #else
00240 #define GCU_UPDATE_KEY(key,type,target,action) \
00241 if (!strcmp (gconf_entry_get_key (entry), ROOTDIR key)) { \
00242 target = gconf_value_get_##type (gconf_entry_get_value (entry)); \
00243 action \
00244 return; \
00245 }
00246 #endif
00247
00248 #ifdef HAVE_GO_CONF_SYNC
00249 #define GCU_UPDATE_STRING_KEY(key,target,action) \
00250 if (!strcmp (name, ROOTDIR key)) { \
00251 target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \
00252 action \
00253 return; \
00254 }
00255 #else
00256 #define GCU_UPDATE_STRING_KEY(key,target,action) \
00257 if (!strcmp (gconf_entry_get_key (entry), ROOTDIR key)) { \
00258 target = g_strdup (gconf_value_get_string (gconf_entry_get_value (entry))); \
00259 action \
00260 return; \
00261 }
00262 #endif
00263
00264 #endif // GCU_MACROS_H