Initial Color Class support in e17
authorrephorm <rephorm>
Thu, 12 Jan 2006 02:12:21 +0000 (02:12 +0000)
committerrephorm <rephorm@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 12 Jan 2006 02:12:21 +0000 (02:12 +0000)
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

12 files changed:
src/bin/Makefile.am
src/bin/e.h
src/bin/e_color_class.c [new file with mode: 0644]
src/bin/e_color_class.h [new file with mode: 0644]
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_includes.h
src/bin/e_ipc_codec.c
src/bin/e_ipc_codec.h
src/bin/e_ipc_handlers.h
src/bin/e_ipc_handlers_list.h
src/bin/e_main.c

index f450102..5da65a2 100644 (file)
@@ -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 = \
index 7fffb32..c743c32 100644 (file)
@@ -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 (file)
index 0000000..b3fc0b7
--- /dev/null
@@ -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 (file)
index 0000000..419781e
--- /dev/null
@@ -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
index fb55d58..b0db08c 100644 (file)
@@ -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);
index de98504..b1b5080 100644 (file)
@@ -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
index 7e044de..d82844d 100644 (file)
 #include "e_exebuf.h"
 #include "e_int_config_modules.h"
 #include "e_exehist.h"
+#include "e_color_class.h"
index aaa4a63..ce718a1 100644 (file)
@@ -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 */
 
index 4e0463a..e912240 100644 (file)
@@ -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
index 1790822..473a659 100644 (file)
@@ -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
+     
+/****************************************************************************/
index 81f2cdf..3151690 100644 (file)
 #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
index 5b7db52..4877f35 100644 (file)
@@ -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!"),