00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __EDELIB_XSETTINGSCOMMON_H__
00023 #define __EDELIB_XSETTINGSCOMMON_H__
00024
00025 #include "edelib-global.h"
00026 #include <X11/Xlib.h>
00027
00028 #define XSETTINGS_PAD(n, p) ((n + p - 1) & (~(p - 1)))
00029
00030 EDELIB_NS_BEGIN
00031
00036 enum XSettingsType {
00037 XSETTINGS_TYPE_INT = 0,
00038 XSETTINGS_TYPE_STRING,
00039 XSETTINGS_TYPE_COLOR
00040 };
00041
00046 struct XSettingsColor {
00048 unsigned short red;
00050 unsigned short green;
00052 unsigned short blue;
00054 unsigned short alpha;
00055 };
00056
00061 struct XSettingsSetting {
00063 char* name;
00065 XSettingsType type;
00066
00068 union {
00069 int v_int;
00070 char* v_string;
00071 XSettingsColor v_color;
00072 } data;
00073
00075 unsigned long last_change_serial;
00076 };
00077
00082 struct XSettingsList {
00084 XSettingsSetting* setting;
00086 XSettingsList* next;
00087 };
00088
00122 struct XSettingsData {
00124 Display* display;
00126 int screen;
00127
00129 Window manager_win;
00130
00132 Atom selection_atom;
00133
00135 Atom manager_atom;
00136
00138 Atom xsettings_atom;
00139
00141 XSettingsList* settings;
00142
00144 unsigned long serial;
00145 };
00146
00147 #ifndef SKIP_DOCS
00148 struct XSettingsBuffer {
00149 char byte_order;
00150 int len;
00151 unsigned char* data;
00152 unsigned char* pos;
00153 };
00154 #endif
00155
00159 EDELIB_API bool xsettings_list_add(XSettingsList** list, XSettingsSetting* setting);
00160
00164 EDELIB_API bool xsettings_list_remove(XSettingsList** list, const char* name);
00165
00169 EDELIB_API XSettingsSetting* xsettings_list_find(XSettingsList* list, const char* name);
00170
00174 EDELIB_API void xsettings_list_free(XSettingsList* list);
00175
00176
00177
00181 EDELIB_API XSettingsSetting* xsettings_setting_copy(XSettingsSetting* setting);
00182
00186 EDELIB_API void xsettings_setting_free(XSettingsSetting* setting);
00187
00191 EDELIB_API bool xsettings_setting_equal(XSettingsSetting* s1, XSettingsSetting* s2);
00192
00196 EDELIB_API int xsettings_setting_len(const XSettingsSetting* setting);
00197
00201 EDELIB_API char xsettings_byte_order(void);
00202
00203
00208 EDELIB_API XSettingsList* xsettings_decode(unsigned char* data, int len, unsigned long* serial);
00209
00213 EDELIB_API void xsettings_encode(const XSettingsSetting* setting, XSettingsBuffer* buffer);
00214
00215
00216 #ifndef SKIP_DOCS
00217 void xsettings_manager_notify(XSettingsData* data);
00218 void xsettings_manager_set_setting(XSettingsData* data, XSettingsSetting* setting);
00219 void xsettings_manager_delete_setting(XSettingsData* data, const char* name);
00220 #endif
00221
00222 EDELIB_NS_END
00223 #endif