From 28ded42f0d78a1eca3dbd5d5881779ba09de0fd7 Mon Sep 17 00:00:00 2001 From: rephorm Date: Thu, 12 Jan 2006 02:12:21 +0000 Subject: [PATCH] Initial Color Class support in e17 only ipc at the moment (enlightenment_remote) no real theme support yet either. also, -color-class-del does not have the intended effect yet. need to add color_ class_del() to edje first SVN revision: 19731 --- src/bin/Makefile.am | 4 +- src/bin/e.h | 2 + src/bin/e_color_class.c | 107 ++++++++++++++++++ src/bin/e_color_class.h | 33 ++++++ src/bin/e_config.c | 31 ++++++ src/bin/e_config.h | 1 + src/bin/e_includes.h | 1 + src/bin/e_ipc_codec.c | 61 +++++++++++ src/bin/e_ipc_codec.h | 9 ++ src/bin/e_ipc_handlers.h | 197 ++++++++++++++++++++++++++++++++++ src/bin/e_ipc_handlers_list.h | 11 +- src/bin/e_main.c | 7 ++ 12 files changed, 462 insertions(+), 2 deletions(-) create mode 100644 src/bin/e_color_class.c create mode 100644 src/bin/e_color_class.h diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index f450102ef..5da65a267 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -129,7 +129,8 @@ e_int_config_winlist.h \ e_deskpreview.h \ e_exebuf.h \ e_int_config_modules.h \ -e_exehist.h +e_exehist.h \ +e_color_class.h enlightenment_src = \ e_user.c \ @@ -240,6 +241,7 @@ e_deskpreview.c \ e_exebuf.c \ e_int_config_modules.c \ e_exehist.c \ +e_color_class.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ diff --git a/src/bin/e.h b/src/bin/e.h index 7fffb3223..c743c3269 100644 --- a/src/bin/e.h +++ b/src/bin/e.h @@ -101,6 +101,8 @@ typedef struct _E_Rect E_Rect; #define E_NEW_BIG(s, n) (s *)malloc(n * sizeof(s)) #define E_FREE(p) { if (p) {free(p); p = NULL;} } +#define E_CLAMP(x, min, max) (x < min ? min : (x > max ? max : x)) + #define E_REMOTE_OPTIONS 1 #define E_REMOTE_OUT 2 #define E_WM_IN 3 diff --git a/src/bin/e_color_class.c b/src/bin/e_color_class.c new file mode 100644 index 000000000..b3fc0b700 --- /dev/null +++ b/src/bin/e_color_class.c @@ -0,0 +1,107 @@ +#include "e.h" + + +EAPI int +e_color_class_init(void) +{ + Evas_List *l; + + for (l = e_config->color_classes; l; l = l->next) + { + E_Color_Class *cc; + + cc = l->data; + if (!cc) continue; + + printf("INIT CC: %s, %d %d %d %d\n", cc->name, cc->r, cc->g, cc->b, cc->a); + edje_color_class_set(cc->name, + cc->r, cc->g, cc->b, cc->a, + cc->r2, cc->g2, cc->b2, cc->a2, + cc->r3, cc->g3, cc->b3, cc->a3); + + } + return 1; +} + +EAPI int +e_color_class_shutdown(void) +{ + return 1; +} + +EAPI void +e_color_class_set(const char *color_class, int r, int g, int b, int a, int r2, int b2, int g2, int a2, int r3, int g3, int b3, int a3) +{ + E_Color_Class *cc = NULL; + Evas_List *l; + int found = 0; + + cc = e_color_class_find(color_class); + if (!cc) + { + cc = E_NEW(E_Color_Class, 1); + e_config->color_classes = evas_list_append(e_config->color_classes, cc); + cc->name = evas_stringshare_add(color_class); + } + + if (r != -1) cc->r = E_CLAMP(r, 0, 255); + if (g != -1) cc->g = E_CLAMP(g, 0, 255); + if (b != -1) cc->b = E_CLAMP(b, 0, 255); + if (a != -1) cc->a = E_CLAMP(a, 0, 255); + if (r != -1) cc->r2 = E_CLAMP(r2, 0, 255); + if (g != -1) cc->g2 = E_CLAMP(g2, 0, 255); + if (b != -1) cc->b2 = E_CLAMP(b2, 0, 255); + if (a != -1) cc->a2 = E_CLAMP(a2, 0, 255); + if (r != -1) cc->r3 = E_CLAMP(r3, 0, 255); + if (g != -1) cc->g3 = E_CLAMP(g3, 0, 255); + if (b != -1) cc->b3 = E_CLAMP(b3, 0, 255); + if (a != -1) cc->a3 = E_CLAMP(a3, 0, 255); + + edje_color_class_set(cc->name, + cc->r, cc->g, cc->b, cc->a, + cc->r2, cc->g2, cc->b2, cc->a2, + cc->r3, cc->g3, cc->b3, cc->a3); +} + +EAPI void +e_color_class_del(const char *name) +{ + E_Color_Class *cc = NULL; + + cc = e_color_class_find(name); + if (cc) + { + e_config->color_classes = evas_list_remove(e_config->color_classes, cc); + /* FIXME: add edje_color_class_del() and use that) */ + edje_color_class_set(cc->name, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255); + evas_stringshare_del(cc->name); + E_FREE(cc); + } +} + +EAPI E_Color_Class * +e_color_class_find(const char *name) +{ + Evas_List *l; + E_Color_Class *cc = NULL; + + for(l = e_config->color_classes; l; l = l->next) + { + cc = l->data; + if (!cc) continue; + + if (!strcmp(cc->name, name)) + { + return cc; + break; + } + } + return NULL; +} + + +EAPI Evas_List * +e_color_class_list(void) +{ + return e_config->color_classes; +} diff --git a/src/bin/e_color_class.h b/src/bin/e_color_class.h new file mode 100644 index 000000000..419781e2f --- /dev/null +++ b/src/bin/e_color_class.h @@ -0,0 +1,33 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ + +#ifdef E_TYPEDEFS + +typedef struct _E_Color_Class E_Color_Class; + +#else +#ifndef E_COLOR_CLASSES_H +#define E_COLOR_CLASSES_H + +struct _E_Color_Class +{ + char *name; + int r, g, b, a; + int r2, g2, b2, a2; + int r3, g3, b3, a3; +}; + +EAPI int e_color_class_init(void); +EAPI int e_color_class_shutdown(void); +EAPI void e_color_class_set(const char *color_class, + int r, int g, int b, int a, + int r2, int b2, int g2, int a2, + int r3, int g3, int b3, int a3); +EAPI E_Color_Class *e_color_class_find(const char *name); +EAPI void e_color_class_del(const char *name); + +EAPI Evas_List *e_color_class_list(void); + +#endif +#endif diff --git a/src/bin/e_config.c b/src/bin/e_config.c index fb55d582b..b0db08c70 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -34,6 +34,8 @@ static E_Config_DD *_e_config_path_append_edd = NULL; static E_Config_DD *_e_config_desktop_bg_edd = NULL; static E_Config_DD *_e_config_desktop_name_edd = NULL; static E_Config_DD *_e_config_remember_edd = NULL; +static E_Config_DD *_e_config_color_class_edd = NULL; + /* externally accessible functions */ EAPI int @@ -242,6 +244,25 @@ e_config_init(void) E_CONFIG_VAL(D, T, prop.head, INT); E_CONFIG_VAL(D, T, prop.command, STR); + _e_config_color_class_edd = E_CONFIG_DD_NEW("E_Color_Class", E_Color_Class); +#undef T +#undef D +#define T E_Color_Class +#define D _e_config_color_class_edd + E_CONFIG_VAL(D, T, name, STR); + E_CONFIG_VAL(D, T, r, INT); + E_CONFIG_VAL(D, T, g, INT); + E_CONFIG_VAL(D, T, b, INT); + E_CONFIG_VAL(D, T, a, INT); + E_CONFIG_VAL(D, T, r2, INT); + E_CONFIG_VAL(D, T, g2, INT); + E_CONFIG_VAL(D, T, b2, INT); + E_CONFIG_VAL(D, T, a2, INT); + E_CONFIG_VAL(D, T, r3, INT); + E_CONFIG_VAL(D, T, g3, INT); + E_CONFIG_VAL(D, T, b3, INT); + E_CONFIG_VAL(D, T, a3, INT); + _e_config_edd = E_CONFIG_DD_NEW("E_Config", E_Config); #undef T #undef D @@ -379,6 +400,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, exebuf_pos_min_h, INT); E_CONFIG_VAL(D, T, exebuf_pos_max_w, INT); E_CONFIG_VAL(D, T, exebuf_pos_max_h, INT); + E_CONFIG_LIST(D, T, color_classes, _e_config_color_class_edd); e_config = e_config_domain_load("e", _e_config_edd); if (e_config) { @@ -2065,6 +2087,15 @@ _e_config_free(void) E_FREE(rem); } + while (e_config->color_classes) + { + E_Color_Class *cc; + cc = e_config->color_classes->data; + e_config->color_classes = evas_list_remove_list(e_config->color_classes, e_config->color_classes); + + if (cc->name) evas_stringshare_del(cc->name); + E_FREE(cc); + } if (e_config->desktop_default_background) evas_stringshare_del(e_config->desktop_default_background); if (e_config->desktop_default_name) evas_stringshare_del(e_config->desktop_default_name); if (e_config->language) evas_stringshare_del(e_config->language); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index de9850447..b1b508049 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -199,6 +199,7 @@ struct _E_Config int exebuf_pos_min_h; int exebuf_pos_max_w; int exebuf_pos_max_h; + Evas_List *color_classes; }; struct _E_Config_Module diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index 7e044de51..d82844d12 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -110,3 +110,4 @@ #include "e_exebuf.h" #include "e_int_config_modules.h" #include "e_exehist.h" +#include "e_color_class.h" diff --git a/src/bin/e_ipc_codec.c b/src/bin/e_ipc_codec.c index aaa4a6367..ce718a1f8 100644 --- a/src/bin/e_ipc_codec.c +++ b/src/bin/e_ipc_codec.c @@ -24,6 +24,8 @@ static Eet_Data_Descriptor *_e_ipc_3int_4str_edd = NULL; static Eet_Data_Descriptor *_e_ipc_3int_4str_list_edd = NULL; static Eet_Data_Descriptor *_e_ipc_3int_3str_edd = NULL; static Eet_Data_Descriptor *_e_ipc_3int_3str_list_edd = NULL; +static Eet_Data_Descriptor *_e_ipc_str_4int_edd = NULL; +static Eet_Data_Descriptor *_e_ipc_str_4int_list_edd = NULL; #define E_IPC_DD_NEW(str, typ) \ eet_data_descriptor_new(str, sizeof(typ), \ @@ -122,6 +124,17 @@ e_ipc_codec_init(void) _e_ipc_3int_3str_list_edd = E_IPC_DD_NEW("3int_3str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_3int_3str_list_edd, E_Ipc_List, list, _e_ipc_3int_3str_edd); + + _e_ipc_str_4int_edd = E_IPC_DD_NEW("str_4int", E_Ipc_Str_4Int); + E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, str, STR); + E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val1, INT); + E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val2, INT); + E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val3, INT); + E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val4, INT); + + _e_ipc_str_4int_list_edd = E_IPC_DD_NEW("str_4int_list", E_Ipc_List); + E_CONFIG_LIST(_e_ipc_str_4int_list_edd, E_Ipc_List, list, _e_ipc_str_4int_edd); + return 1; } @@ -607,5 +620,53 @@ e_ipc_codec_3int_3str_list_enc(Evas_List *list, int *size_ret) dat.list = list; return eet_data_descriptor_encode(_e_ipc_3int_3str_list_edd, &dat, size_ret); } + +EAPI int +e_ipc_codec_str_4int_dec(char *data, int bytes, E_Ipc_Str_4Int **dest) +{ + E_Ipc_Str_4Int *dat; + + if (!data) return 0; + dat = eet_data_descriptor_decode(_e_ipc_str_4int_edd, data, bytes); + if (!dat) return 0; + if (dest) *dest = dat; + return 1; +} + +EAPI void * +e_ipc_codec_str_4int_enc(char *str1, int val1, int val2, int val3, int val4, int *size_ret) +{ + E_Ipc_Str_4Int dat; + + dat.str = str1; + dat.val1 = val1; + dat.val2 = val2; + dat.val3 = val3; + dat.val4 = val4; + + return eet_data_descriptor_encode(_e_ipc_str_4int_edd, &dat, size_ret); +} + +EAPI int +e_ipc_codec_str_4int_list_dec(char *data, int bytes, Evas_List **dest) +{ + E_Ipc_List *dat; + + if (!data) return 0; + dat = eet_data_descriptor_decode(_e_ipc_str_4int_list_edd, data, bytes); + if (!dat) return 0; + if (dest) *dest = dat->list; + free(dat); + return 1; +} + +EAPI void * +e_ipc_codec_str_4int_list_enc(Evas_List *list, int *size_ret) +{ + E_Ipc_List dat; + dat.list = list; + return eet_data_descriptor_encode(_e_ipc_str_4int_list_edd, &dat, size_ret); +} + /* local subsystem globals */ diff --git a/src/bin/e_ipc_codec.h b/src/bin/e_ipc_codec.h index 4e0463af2..e91224080 100644 --- a/src/bin/e_ipc_codec.h +++ b/src/bin/e_ipc_codec.h @@ -17,6 +17,7 @@ typedef struct _E_Ipc_4Int_2Str E_Ipc_4Int_2Str; typedef struct _E_Ipc_5Int_2Str E_Ipc_5Int_2Str; typedef struct _E_Ipc_3Int_4Str E_Ipc_3Int_4Str; typedef struct _E_Ipc_3Int_3Str E_Ipc_3Int_3Str; +typedef struct _E_Ipc_Str_4Int E_Ipc_Str_4Int; #else #ifndef E_IPC_CODEC_H @@ -88,6 +89,12 @@ struct _E_Ipc_3Int_3Str char *str1, *str2, *str3; }; +struct _E_Ipc_Str_4Int +{ + char *str; + int val1, val2, val3, val4; +}; + EAPI int e_ipc_codec_init(void); EAPI void e_ipc_codec_shutdown(void); @@ -137,6 +144,8 @@ EAPI int e_ipc_codec_3int_3str_dec(char *data, int bytes, E_Ipc_3Int_3Str * EAPI void *e_ipc_codec_3int_3str_enc(int val1, int val2, int val3, char *str1, char *str2, char *str3, int *size_ret); EAPI int e_ipc_codec_3int_3str_list_dec(char *data, int bytes, Evas_List **dest); EAPI void *e_ipc_codec_3int_3str_list_enc(Evas_List *list, int *size_ret); +EAPI int e_ipc_codec_str_4int_dec(char *data, int bytes, E_Ipc_Str_4Int **dest); +EAPI void *e_ipc_codec_str_4int_enc(char *str1, int val1, int val2, int val3, int val4, int *size_ret); #endif #endif diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index 1790822b5..473a65927 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -180,6 +180,27 @@ if (e->data) { \ } \ break; +# define STRING_4INT(__str, __int1, __int2, __int3, __int4, __str_4int, HDL) \ +case HDL: \ +if (e->data) { \ + char *__str = NULL; \ + int __int1, __int2, __int3, __int4; \ + E_Ipc_Str_4Int *__str_4int = NULL; \ + __str_4int = calloc(1, sizeof(E_Ipc_Str_4Int)); \ + if (e_ipc_codec_str_4int_dec(e->data, e->size, &(__str_4int))) { \ + __str = __str_4int->str; \ + __int1 = __str_4int->val1; \ + __int2 = __str_4int->val2; \ + __int3 = __str_4int->val3; \ + __int4 = __str_4int->val4; +# define END_STRING_4INT(__str_4int) \ + free(__str_4int->str); \ + free(__str_4int); \ + } \ +} \ +break; + + /** * Get event data for libe processing */ @@ -285,6 +306,16 @@ case HDL: { void *data; int bytes; \ } \ break; +# define REQ_STRING_4INT(__str, __int1, __int2, __int3, __int4, HDL) \ +case HDL: { void *data; int bytes; \ + data = e_ipc_codec_str_4int_enc(__str, __int1, __int2, __int3, __int4, &bytes); \ + if (data) { \ + ecore_ipc_server_send(e->server, E_IPC_DOMAIN_REQUEST, HDL, 0, 0, 0, data, bytes); \ + free(data); \ + } \ +} \ +break; + # define REQ_DOUBLE(__dbl, HDL) \ case HDL: { void *data; int bytes; \ data = e_ipc_codec_double_enc(__dbl, &bytes); \ @@ -621,6 +652,50 @@ free(data); } \ break; +# define STRING_INT4_LIST(__v, HDL) \ + case HDL: { \ + Evas_List *dat = NULL, *l; \ + if (e_ipc_codec_str_4int_list_dec(e->data, e->size, &dat)) { \ + for (l = dat; l; l = l->next) { \ + E_Ipc_Str_4Int *__v; \ + __v = l->data; +#define END_STRING_INT4_LIST(__v) \ + free(__v->str); \ + free(__v); \ + } \ + evas_list_free(dat); \ + } \ + } \ + break; + +/** + * SEND_STRING_INT4_LIST: + * Start to encode a list of objects to prepare them for sending via + * ipc. The object __v1 will be of type __typ1 and __v2 will be of type + * E_Ipc_Str_4Int. + * + * Use END_SEND_STRING_INT4_LIST to terminate the encode iteration and + * send that data. The list will be freed. + */ +#define SEND_STRING_INT4_LIST(__list, __typ1, __v1, __v2, HDL) \ + case HDL: { \ + Evas_List *dat = NULL, *l; \ + void *data; int bytes; \ + for (l = __list; l; l = l->next) { \ + __typ1 *__v1; \ + E_Ipc_Str_4Int *__v2; \ + __v1 = l->data; \ + __v2 = calloc(1, sizeof(E_Ipc_Str_4Int)); +#define END_SEND_STRING_INT4_LIST(__v1, __op) \ + dat = evas_list_append(dat, __v1); \ + } \ + data = e_ipc_codec_str_4int_list_enc(dat, &bytes); \ + SEND_DATA(__op); \ + FREE_LIST(dat); \ + } \ + break; + + /** * STRING2_INT_LIST: * Decode event data which is a list of E_Ipc_2Str_Int objects and iterate @@ -7114,3 +7189,125 @@ break; #endif #undef HDL /****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color-set", 5, "Set color_class (OPT1) r, g, b, a (OPT2-5)", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING_4INT(params[0], atoi(params[1]), atoi(params[2]), atoi(params[3]), atoi(params[4]), HDL) +#elif (TYPE == E_WM_IN) + STRING_4INT(color_class, r, g, b, a, e_str_4int, HDL); + e_color_class_set(color_class, r, g, b, a, -1, -1, -1, -1, -1, -1, -1, -1); + SAVE; + END_STRING_4INT(e_str_4int); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR2_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color-set2", 5, "Set color_class (OPT1) color2 r, g, b, a (OPT2-5)", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING_4INT(params[0], atoi(params[1]), atoi(params[2]), atoi(params[3]), atoi(params[4]), HDL) +#elif (TYPE == E_WM_IN) + STRING_4INT(color_class, r, g, b, a, e_str_4int, HDL); + e_color_class_set(color_class, -1, -1, -1, -1, r, g, b, a, -1, -1, -1, -1); + SAVE; + END_STRING_4INT(e_str_4int); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR3_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color-set3", 5, "Set color_class (OPT1) color3 r, g, b, a (OPT2-5)", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING_4INT(params[0], atoi(params[1]), atoi(params[2]), atoi(params[3]), atoi(params[4]), HDL) +#elif (TYPE == E_WM_IN) + STRING_4INT(color_class, r, g, b, a, e_str_4int, HDL); + e_color_class_set(color_class, -1, -1, -1, -1, -1, -1, -1, -1, r, g, b, a); + SAVE; + END_STRING_4INT(e_str_4int); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR_LIST +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color-list", 0, "List color values for all set color classes", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_STRING_INT4_LIST(e_color_class_list(), E_Color_Class, cc, v, HDL); + v->str = cc->name; + v->val1 = cc->r; + v->val2 = cc->g; + v->val3 = cc->b; + v->val4 = cc->a; + END_SEND_STRING_INT4_LIST(v, E_IPC_OP_COLOR_CLASS_COLOR_LIST_REPLY); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR2_LIST +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color2-list", 0, "List color2 values for all set color classes", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_STRING_INT4_LIST(e_color_class_list(), E_Color_Class, cc, v, HDL); + v->str = cc->name; + v->val1 = cc->r2; + v->val2 = cc->g2; + v->val3 = cc->b2; + v->val4 = cc->a2; + END_SEND_STRING_INT4_LIST(v, E_IPC_OP_COLOR_CLASS_COLOR_LIST_REPLY); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR3_LIST +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-color3-list", 0, "List color3 values for all set color classes", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_STRING_INT4_LIST(e_color_class_list(), E_Color_Class, cc, v, HDL); + v->str = cc->name; + v->val1 = cc->r3; + v->val2 = cc->g3; + v->val3 = cc->b3; + v->val4 = cc->a3; + END_SEND_STRING_INT4_LIST(v, E_IPC_OP_COLOR_CLASS_COLOR_LIST_REPLY); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_DEL +#if (TYPE == E_REMOTE_OPTIONS) + OP("-color-class-del", 1, "Delete color class named OPT1", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_STRING(params[0], HDL); +#elif (TYPE == E_WM_IN) + STRING(s, HDL); + e_color_class_del(s); + END_STRING(s); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_COLOR_CLASS_COLOR_LIST_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + STRING_INT4_LIST(v, HDL); + if (v->str) printf("REPLY: \"%s\" (RGBA) %i %i %i %i\n", v->str, v->val1, v->val2, v->val3, v->val4); + else printf("REPLY: \"\" (RGBA) %i %i %i %i\n", v->val1, v->val2, v->val3, v->val4); + END_STRING_INT_LIST(v); +#elif (TYPE == E_LIB_IN) + /* FIXME implement */ +#endif +#undef HDL + +/****************************************************************************/ diff --git a/src/bin/e_ipc_handlers_list.h b/src/bin/e_ipc_handlers_list.h index 81f2cdfe5..3151690c7 100644 --- a/src/bin/e_ipc_handlers_list.h +++ b/src/bin/e_ipc_handlers_list.h @@ -353,4 +353,13 @@ #define E_IPC_OP_CACHE_FLUSH_INTERVAL_GET 331 #define E_IPC_OP_CACHE_FLUSH_INTERVAL_GET_REPLY 332 -#define E_IPC_EAP_EDIT_START 333 +#define E_IPC_EAP_EDIT_START 333 + +#define E_IPC_OP_COLOR_CLASS_COLOR_SET 334 +#define E_IPC_OP_COLOR_CLASS_COLOR2_SET 335 +#define E_IPC_OP_COLOR_CLASS_COLOR3_SET 336 +#define E_IPC_OP_COLOR_CLASS_COLOR_LIST 337 +#define E_IPC_OP_COLOR_CLASS_COLOR2_LIST 338 +#define E_IPC_OP_COLOR_CLASS_COLOR3_LIST 339 +#define E_IPC_OP_COLOR_CLASS_COLOR_LIST_REPLY 340 +#define E_IPC_OP_COLOR_CLASS_DEL 341 diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 5b7db5256..4877f3571 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -545,6 +545,13 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_winlist_shutdown); + /* setup color_class */ + if (!e_color_class_init()) + { + e_error_message_show(_("Enlightenment cannot set up its color class system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_color_class_shutdown); if (ipc_failed) e_error_dialog_show(_("Enlightenment IPC setup error!"),