SVN revision: 73128
devs/princeamd/enlightenment-0.17-elive
Mike Blumenkrantz 11 years ago
parent 82ee910b78
commit f19d0eeaba
  1. 195
      src/modules/conf_theme/e_int_config_borders.c
  2. 747
      src/modules/conf_theme/e_int_config_color_classes.c
  3. 54
      src/modules/conf_theme/e_int_config_cursor.c
  4. 781
      src/modules/conf_theme/e_int_config_fonts.c
  5. 149
      src/modules/conf_theme/e_int_config_icon_themes.c
  6. 135
      src/modules/conf_theme/e_int_config_scale.c
  7. 175
      src/modules/conf_theme/e_int_config_startup.c
  8. 101
      src/modules/conf_theme/e_int_config_theme.c
  9. 343
      src/modules/conf_theme/e_int_config_theme_import.c
  10. 13
      src/modules/conf_theme/e_int_config_theme_web.c
  11. 252
      src/modules/conf_theme/e_int_config_transitions.c
  12. 79
      src/modules/conf_theme/e_int_config_wallpaper.c
  13. 829
      src/modules/conf_theme/e_int_config_wallpaper_import.c
  14. 73
      src/modules/conf_theme/e_int_config_wallpaper_web.c
  15. 33
      src/modules/conf_theme/e_int_config_xsettings.c
  16. 89
      src/modules/conf_theme/e_mod_main.c

@ -2,24 +2,24 @@
static E_Config_Dialog_View *_config_view_new(void);
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static int _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static void _fill_data(E_Config_Dialog_Data *cfdata);
static void _basic_apply_border(E_Config_Dialog_Data *cfdata);
struct _E_Config_Dialog_Data
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static int _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static void _fill_data(E_Config_Dialog_Data *cfdata);
static void _basic_apply_border(E_Config_Dialog_Data *cfdata);
struct _E_Config_Dialog_Data
{
E_Border *border;
E_Border *border;
E_Container *container;
const char *bordername;
int remember_border;
const char *bordername;
int remember_border;
};
E_Config_Dialog *
e_int_config_borders(E_Container *con, const char *params __UNUSED__)
e_int_config_borders(E_Container *con, const char *params __UNUSED__)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
@ -27,38 +27,38 @@ e_int_config_borders(E_Container *con, const char *params __UNUSED__)
if (e_config_dialog_find("E", "appearance/borders")) return NULL;
v = _config_view_new();
if (!v) return NULL;
cfd = e_config_dialog_new(con, _("Default Border Style"),
"E", "appearance/borders",
"preferences-system-windows", 0, v, con);
cfd = e_config_dialog_new(con, _("Default Border Style"),
"E", "appearance/borders",
"preferences-system-windows", 0, v, con);
return cfd;
}
E_Config_Dialog *
e_int_config_borders_border(E_Container *con __UNUSED__, const char *params)
e_int_config_borders_border(E_Container *con __UNUSED__, const char *params)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
E_Border *bd;
if (!params) return NULL;
bd = NULL;
sscanf(params, "%p", &bd);
if (!bd) return NULL;
v = _config_view_new();
if (!v) return NULL;
cfd = e_config_dialog_new(bd->zone->container,
_("Window Border Selection"),
"E", "_config_border_border_style_dialog",
"preferences-system-windows", 0, v, bd);
cfd = e_config_dialog_new(bd->zone->container,
_("Window Border Selection"),
"E", "_config_border_border_style_dialog",
"preferences-system-windows", 0, v, bd);
bd->border_border_dialog = cfd;
return cfd;
}
static E_Config_Dialog_View *
_config_view_new(void)
_config_view_new(void)
{
E_Config_Dialog_View *v;
v = E_NEW(E_Config_Dialog_View, 1);
if (!v) return NULL;
v->create_cfdata = _create_data;
@ -71,10 +71,10 @@ _config_view_new(void)
}
static void *
_create_data(E_Config_Dialog *cfd)
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->container = NULL;
cfdata->border = NULL;
@ -87,26 +87,26 @@ _create_data(E_Config_Dialog *cfd)
return cfdata;
}
static void
_fill_data(E_Config_Dialog_Data *cfdata)
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
if (cfdata->border)
if (cfdata->border)
{
if ((cfdata->border->remember) &&
(cfdata->border->remember->apply & E_REMEMBER_APPLY_BORDER))
{
cfdata->remember_border = 1;
}
cfdata->bordername = eina_stringshare_add(cfdata->border->client.border.name);
if ((cfdata->border->remember) &&
(cfdata->border->remember->apply & E_REMEMBER_APPLY_BORDER))
{
cfdata->remember_border = 1;
}
cfdata->bordername = eina_stringshare_add(cfdata->border->client.border.name);
}
else
cfdata->bordername = eina_stringshare_add(e_config->theme_default_border_style);
}
static void
_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
static void
_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
if (cfdata->border)
if (cfdata->border)
cfdata->border->border_border_dialog = NULL;
eina_stringshare_del(cfdata->bordername);
@ -114,7 +114,7 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
}
static int
_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
if (cfdata->border)
return strcmp(cfdata->bordername, cfdata->border->client.border.name);
@ -122,68 +122,68 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda
return strcmp(cfdata->bordername, e_config->theme_default_border_style);
}
static int
_basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
static int
_basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
if (cfdata->border)
if (cfdata->border)
_basic_apply_border(cfdata);
else if (cfdata->container)
{
eina_stringshare_del(e_config->theme_default_border_style);
e_config->theme_default_border_style =
eina_stringshare_del(e_config->theme_default_border_style);
e_config->theme_default_border_style =
eina_stringshare_ref(cfdata->bordername);
/* FIXME: Should this trigger an E Restart to reset all borders ? */
/* FIXME: Should this trigger an E Restart to reset all borders ? */
}
e_config_save_queue();
return 1;
}
static void
_basic_apply_border(E_Config_Dialog_Data *cfdata)
static void
_basic_apply_border(E_Config_Dialog_Data *cfdata)
{
if ((!cfdata->border->lock_border) && (!cfdata->border->shaded))
if ((!cfdata->border->lock_border) && (!cfdata->border->shaded))
{
eina_stringshare_del(cfdata->border->bordername);
cfdata->border->bordername = eina_stringshare_ref(cfdata->bordername);
cfdata->border->client.border.changed = 1;
cfdata->border->changed = 1;
eina_stringshare_del(cfdata->border->bordername);
cfdata->border->bordername = eina_stringshare_ref(cfdata->bordername);
cfdata->border->client.border.changed = 1;
cfdata->border->changed = 1;
}
if (cfdata->remember_border)
if (cfdata->remember_border)
{
E_Remember *rem = cfdata->border->remember;
E_Remember *rem = cfdata->border->remember;
if (!rem)
{
if (!rem)
{
rem = e_remember_new();
if (rem) e_remember_use(rem);
}
if (rem)
{
rem->apply |= E_REMEMBER_APPLY_BORDER;
}
if (rem)
{
rem->apply |= E_REMEMBER_APPLY_BORDER;
e_remember_default_match_set(rem, cfdata->border);
if (rem->prop.border) eina_stringshare_del(rem->prop.border);
rem->prop.border = eina_stringshare_add(cfdata->border->bordername);
cfdata->border->remember = rem;
if (rem->prop.border) eina_stringshare_del(rem->prop.border);
rem->prop.border = eina_stringshare_add(cfdata->border->bordername);
cfdata->border->remember = rem;
e_remember_update(cfdata->border);
}
}
}
else
else
{
if (cfdata->border->remember)
{
cfdata->border->remember->apply &= ~E_REMEMBER_APPLY_BORDER;
if (cfdata->border->remember->apply == 0)
{
e_remember_unuse(cfdata->border->remember);
e_remember_del(cfdata->border->remember);
cfdata->border->remember = NULL;
}
}
if (cfdata->border->remember)
{
cfdata->border->remember->apply &= ~E_REMEMBER_APPLY_BORDER;
if (cfdata->border->remember->apply == 0)
{
e_remember_unuse(cfdata->border->remember);
e_remember_del(cfdata->border->remember);
cfdata->border->remember = NULL;
}
}
}
}
static Evas_Object *
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *ol, *ob, *oj, *orect, *of;
Evas_Coord w, h;
@ -204,32 +204,32 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
borders = e_theme_border_list();
orect = evas_object_rectangle_add(evas);
evas_object_color_set(orect, 0, 0, 0, 128);
evas_event_freeze(evas_object_evas_get(ol));
edje_freeze();
e_widget_ilist_freeze(ol);
e_widget_ilist_append(ol, orect, "borderless", NULL, NULL, "borderless");
for (n = 1, l = borders; l; l = l->next, n++)
for (n = 1, l = borders; l; l = l->next, n++)
{
char buf[PATH_MAX];
char buf[PATH_MAX];
ob = e_livethumb_add(evas);
e_livethumb_vsize_set(ob, 96, 96);
oj = edje_object_add(e_livethumb_evas_get(ob));
snprintf(buf, sizeof(buf), "e/widgets/border/%s/border",
ob = e_livethumb_add(evas);
e_livethumb_vsize_set(ob, 96, 96);
oj = edje_object_add(e_livethumb_evas_get(ob));
snprintf(buf, sizeof(buf), "e/widgets/border/%s/border",
(char *)l->data);
e_theme_edje_object_set(oj, "base/theme/borders", buf);
e_livethumb_thumb_set(ob, oj);
orect = evas_object_rectangle_add(e_livethumb_evas_get(ob));
evas_object_color_set(orect, 0, 0, 0, 128);
evas_object_show(orect);
edje_object_part_swallow(oj, "e.swallow.client", orect);
e_widget_ilist_append(ol, ob, (char *)l->data, NULL, NULL, l->data);
if (!strcmp(tmp, (char *)l->data))
sel = n;
e_theme_edje_object_set(oj, "base/theme/borders", buf);
e_livethumb_thumb_set(ob, oj);
orect = evas_object_rectangle_add(e_livethumb_evas_get(ob));
evas_object_color_set(orect, 0, 0, 0, 128);
evas_object_show(orect);
edje_object_part_swallow(oj, "e.swallow.client", orect);
e_widget_ilist_append(ol, ob, (char *)l->data, NULL, NULL, l->data);
if (!strcmp(tmp, (char *)l->data))
sel = n;
}
e_widget_size_min_get(ol, &w, &h);
e_widget_size_min_set(ol, w > 200 ? w : 200, 100);
@ -242,11 +242,11 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_framelist_object_append(of, ol);
e_widget_list_object_append(o, of, 1, 1, 0.5);
if (cfdata->border)
if (cfdata->border)
{
ob = e_widget_check_add(evas, _("Remember this Border for this window next time it appears"),
ob = e_widget_check_add(evas, _("Remember this Border for this window next time it appears"),
&(cfdata->remember_border));
e_widget_list_object_append(o, ob, 1, 0, 0.0);
e_widget_list_object_append(o, ob, 1, 0, 0.0);
}
EINA_LIST_FREE(borders, str)
@ -256,3 +256,4 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_dialog_resizable_set(cfd->dia, 1);
return o;
}

@ -1,66 +1,69 @@
#include "e.h"
typedef struct _CFColor_Class CFColor_Class;
typedef struct _CFColor_Class CFColor_Class;
typedef struct _CFColor_Class_Description CFColor_Class_Description;
typedef enum {
COLOR_CLASS_UNKNOWN = 0,
COLOR_CLASS_SOLID = 1,
COLOR_CLASS_TEXT = 2
COLOR_CLASS_UNKNOWN = 0,
COLOR_CLASS_SOLID = 1,
COLOR_CLASS_TEXT = 2
} CFColor_Class_Type;
struct _CFColor_Class
{
const char *key;
const char *name;
const char *key;
const char *name;
E_Color_Class *cc;
struct {
int r[3], g[3], b[3], a[3];
struct
{
int r[3], g[3], b[3], a[3];
Eina_Bool changed;
Eina_Bool enabled;
} val;
struct {
Evas_Object *icon;
Evas_Object *end;
struct
{
Evas_Object *icon;
Evas_Object *end;
CFColor_Class_Type type;
} gui;
};
struct _E_Config_Dialog_Data
{
int state;
E_Color color[3];
int state;
E_Color color[3];
Eina_List *classes;
Eina_List *selected;
Eina_List *changed;
struct {
Evas *evas;
struct
{
Evas *evas;
Evas_Object *ilist;
Evas_Object *frame;
Evas_Object *state;
Evas_Object *color[3];
Evas_Object *reset;
Evas_Object *text_preview;
Eina_List *disable_list;
Eina_List *disable_list;
} gui;
Ecore_Timer *delay_load_timer;
Ecore_Timer *delay_color_timer;
Ecore_Idler *selection_idler;
Eina_Bool populating;
Eina_Bool populating;
};
struct _CFColor_Class_Description
{
const char *key;
size_t keylen;
const char *name;
const char *key;
size_t keylen;
const char *name;
CFColor_Class_Type type;
};
@ -72,76 +75,75 @@ struct _CFColor_Class_Description
*/
static const CFColor_Class_Description _color_classes_wm[] =
{
CCDESC_T("border_title", N_("Border Title")),
CCDESC_T("border_title_active", N_("Border Title Active")),
CCDESC_T("border_frame", N_("Border Frame")),
CCDESC_T("border_frame_active", N_("Border Frame Active")),
CCDESC_T("error_text", N_("Error Text")),
CCDESC_S("menu_base", N_("Menu Background Base")),
CCDESC_T("menu_title", N_("Menu Title")),
CCDESC_T("menu_title_active", N_("Menu Title Active")),
CCDESC_T("menu_item", N_("Menu Item")),
CCDESC_T("menu_item_active", N_("Menu Item Active")),
CCDESC_T("menu_item_disabled", N_("Menu Item Disabled")),
CCDESC_T("move_text", N_("Move Text")),
CCDESC_T("resize_text", N_("Resize Text")),
CCDESC_T("winlist_item", N_("Winlist Item")),
CCDESC_T("winlist_item_active", N_("Winlist Item Active")),
CCDESC_T("winlist_label", N_("Winlist Label")),
CCDESC_T("winlist_title", N_("Winlist Title")),
CCDESC_S("dialog_base", N_("Dialog Background Base")),
CCDESC_S("shelf_base", N_("Shelf Background Base")),
CCDESC_S("fileman_base", N_("File Manager Background Base")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
CCDESC_T("border_title", N_("Border Title")),
CCDESC_T("border_title_active", N_("Border Title Active")),
CCDESC_T("border_frame", N_("Border Frame")),
CCDESC_T("border_frame_active", N_("Border Frame Active")),
CCDESC_T("error_text", N_("Error Text")),
CCDESC_S("menu_base", N_("Menu Background Base")),
CCDESC_T("menu_title", N_("Menu Title")),
CCDESC_T("menu_title_active", N_("Menu Title Active")),
CCDESC_T("menu_item", N_("Menu Item")),
CCDESC_T("menu_item_active", N_("Menu Item Active")),
CCDESC_T("menu_item_disabled", N_("Menu Item Disabled")),
CCDESC_T("move_text", N_("Move Text")),
CCDESC_T("resize_text", N_("Resize Text")),
CCDESC_T("winlist_item", N_("Winlist Item")),
CCDESC_T("winlist_item_active", N_("Winlist Item Active")),
CCDESC_T("winlist_label", N_("Winlist Label")),
CCDESC_T("winlist_title", N_("Winlist Title")),
CCDESC_S("dialog_base", N_("Dialog Background Base")),
CCDESC_S("shelf_base", N_("Shelf Background Base")),
CCDESC_S("fileman_base", N_("File Manager Background Base")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
};
static const CFColor_Class_Description _color_classes_widgets[] =
{
CCDESC_S("focus", N_("Focus")),
CCDESC_T("button_text", N_("Button Text")),
CCDESC_T("button_text_disabled", N_("Button Text Disabled")),
CCDESC_T("check_text", N_("Check Text")),
CCDESC_T("check_text_disabled", N_("Check Text Disabled")),
CCDESC_T("entry_text", N_("Entry Text")),
CCDESC_T("entry_text_disabled", N_("Entry Text Disabled")),
CCDESC_T("label_text", N_("Label Text")),
CCDESC_T("ilist_item_selected", N_("List Item Text Selected")),
CCDESC_T("ilist_item", N_("List Item Text (Even)")),
CCDESC_S("ilist_item_base", N_("List Item Background Base (Even)")),
CCDESC_T("ilist_item_odd", N_("List Item Text (Odd)")),
CCDESC_S("ilist_item_odd_base", N_("List Item Background Base (Odd)")),
CCDESC_T("ilist_item_header", N_("List Header Text (Even)")),
CCDESC_S("ilist_item_header_base", N_("List Header Background Base (Even)")),
CCDESC_T("ilist_item_header_odd", N_("List Header Text (Odd)")),
CCDESC_S("ilist_item_header_odd_base",
N_("List Header Background Base (Odd)")),
CCDESC_T("radio_text", N_("Radio Text")),
CCDESC_T("radio_text_disabled", N_("Radio Text Disabled")),
CCDESC_T("slider_text", N_("Slider Text")),
CCDESC_T("slider_text_disabled", N_("Slider Text Disabled")),
CCDESC_S("frame_base", N_("Frame Background Base")),
CCDESC_S("scrollframe_base", N_("Scroller Frame Background Base")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
CCDESC_S("focus", N_("Focus")),
CCDESC_T("button_text", N_("Button Text")),
CCDESC_T("button_text_disabled", N_("Button Text Disabled")),
CCDESC_T("check_text", N_("Check Text")),
CCDESC_T("check_text_disabled", N_("Check Text Disabled")),
CCDESC_T("entry_text", N_("Entry Text")),
CCDESC_T("entry_text_disabled", N_("Entry Text Disabled")),
CCDESC_T("label_text", N_("Label Text")),
CCDESC_T("ilist_item_selected", N_("List Item Text Selected")),
CCDESC_T("ilist_item", N_("List Item Text (Even)")),
CCDESC_S("ilist_item_base", N_("List Item Background Base (Even)")),
CCDESC_T("ilist_item_odd", N_("List Item Text (Odd)")),
CCDESC_S("ilist_item_odd_base", N_("List Item Background Base (Odd)")),
CCDESC_T("ilist_item_header", N_("List Header Text (Even)")),
CCDESC_S("ilist_item_header_base", N_("List Header Background Base (Even)")),
CCDESC_T("ilist_item_header_odd", N_("List Header Text (Odd)")),
CCDESC_S("ilist_item_header_odd_base",
N_("List Header Background Base (Odd)")),
CCDESC_T("radio_text", N_("Radio Text")),
CCDESC_T("radio_text_disabled", N_("Radio Text Disabled")),
CCDESC_T("slider_text", N_("Slider Text")),
CCDESC_T("slider_text_disabled", N_("Slider Text Disabled")),
CCDESC_S("frame_base", N_("Frame Background Base")),
CCDESC_S("scrollframe_base", N_("Scroller Frame Background Base")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
};
static const CFColor_Class_Description _color_classes_modules[] =
{
CCDESC_T("module_label", N_("Module Label")),
CCDESC_S("comp_focus-out_color", N_("Composite Focus-out Color")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
CCDESC_T("module_label", N_("Module Label")),
CCDESC_S("comp_focus-out_color", N_("Composite Focus-out Color")),
{NULL, 0, NULL, COLOR_CLASS_UNKNOWN}
};
#undef CCDESC_S
#undef CCDESC_T
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static void _config_color_class_free(CFColor_Class *ccc);
static void _config_color_class_icon_state_apply(CFColor_Class *ccc);
static void _config_color_class_end_state_apply(CFColor_Class *ccc);
static Eina_Bool _fill_data_delayed(void *data);
static Eina_Bool _color_changed_delay(void *data);
static void _config_color_class_free(CFColor_Class *ccc);
static void _config_color_class_icon_state_apply(CFColor_Class *ccc);
static void _config_color_class_end_state_apply(CFColor_Class *ccc);
static Eina_Bool _fill_data_delayed(void *data);
static Eina_Bool _color_changed_delay(void *data);
E_Config_Dialog *
e_int_config_color_classes(E_Container *con, const char *params __UNUSED__)
@ -159,7 +161,7 @@ e_int_config_color_classes(E_Container *con, const char *params __UNUSED__)
v->basic.create_widgets = _basic_create_widgets;
cfd = e_config_dialog_new(con, _("Colors"), "E", "appearance/colors",
"preferences-desktop-color", 0, v, NULL);
"preferences-desktop-color", 0, v, NULL);
return cfd;
}
@ -213,9 +215,9 @@ _color_class_list_selection_idler(void *data)
if (cfdata->delay_color_timer)
{
ecore_timer_del(cfdata->delay_color_timer);
cfdata->delay_color_timer = NULL;
_color_changed_delay(cfdata);
ecore_timer_del(cfdata->delay_color_timer);
cfdata->delay_color_timer = NULL;
_color_changed_delay(cfdata);
}
eina_list_free(cfdata->selected);
@ -223,64 +225,64 @@ _color_class_list_selection_idler(void *data)
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->gui.ilist), l, it)
{
if ((!it->selected) || (it->header)) continue;
ccc = e_widget_ilist_item_data_get(it);
cfdata->selected = eina_list_append(cfdata->selected, ccc);
if ((!enabled) && (ccc->val.enabled))
enabled = EINA_TRUE;
#define _X(_n) \
do \
{ \
for (i = 0; i < 3; i++) \
{ \
if (ccc->val._n[i] >= 0) \
{ \
if (_n[i] == -1) \
_n[i] = ccc->val._n[i]; \
else if ((_n[i] >= 0) && \
(ccc->val._n[i] != _n[i])) \
_n[i] = -2; \
} \
} \
} \
while (0)
_X(r);
_X(g);
_X(b);
_X(a);
if ((!it->selected) || (it->header)) continue;
ccc = e_widget_ilist_item_data_get(it);
cfdata->selected = eina_list_append(cfdata->selected, ccc);
if ((!enabled) && (ccc->val.enabled))
enabled = EINA_TRUE;
#define _X(_n) \
do \
{ \
for (i = 0; i < 3; i++) \
{ \
if (ccc->val._n[i] >= 0) \
{ \
if (_n[i] == -1) \
_n[i] = ccc->val._n[i]; \
else if ((_n[i] >= 0) && \
(ccc->val._n[i] != _n[i])) \
_n[i] = -2; \
} \
} \
} \
while (0)
_X(r);
_X(g);
_X(b);
_X(a);
#undef _X
}
for (i = 0; i < 3; i++)
{
mixed[i] = ((r[i] == -2) || (g[i] == -2) ||
(b[i] == -2) || (a[i] == -2));
mixed[i] = ((r[i] == -2) || (g[i] == -2) ||
(b[i] == -2) || (a[i] == -2));
unset[i] = ((r[i] == -1) && (g[i] == -1) &&
(b[i] == -1) && (a[i] == -1));
unset[i] = ((r[i] == -1) && (g[i] == -1) &&
(b[i] == -1) && (a[i] == -1));
}
count = eina_list_count(cfdata->selected);
if ((ccc) && (count == 1))
{
snprintf(buf, sizeof(buf), _("Color class: %s"), ccc->name);
description = buf;
snprintf(buf, sizeof(buf), _("Color class: %s"), ccc->name);
description = buf;
}
else if (count > 1)
{
if (mixed[0] || mixed[1] || mixed[2])
snprintf(buf, sizeof(buf),
_("Selected %u mixed colors classes"), count);
else if (unset[0] && unset[1] && unset[2])
snprintf(buf, sizeof(buf),
_("Selected %u unset colors classes"), count);
else
snprintf(buf, sizeof(buf),
_("Selected %u uniform colors classes"), count);
description = buf;
if (mixed[0] || mixed[1] || mixed[2])
snprintf(buf, sizeof(buf),
_("Selected %u mixed colors classes"), count);
else if (unset[0] && unset[1] && unset[2])
snprintf(buf, sizeof(buf),
_("Selected %u unset colors classes"), count);
else
snprintf(buf, sizeof(buf),
_("Selected %u uniform colors classes"), count);
description = buf;
}
else
description = _("No selected color class");
@ -289,22 +291,22 @@ _color_class_list_selection_idler(void *data)
for (i = 0; i < 3; i++)
{
if (unset[i] || mixed[i])
r[i] = g[i] = b[i] = a[i] = 0;
cfdata->color[i].r = r[i];
cfdata->color[i].g = g[i];
cfdata->color[i].b = b[i];
cfdata->color[i].a = a[i];
e_color_update_rgb(cfdata->color + i);
e_widget_color_well_update(cfdata->gui.color[i]);
if (unset[i] || mixed[i])
r[i] = g[i] = b[i] = a[i] = 0;
cfdata->color[i].r = r[i];
cfdata->color[i].g = g[i];
cfdata->color[i].b = b[i];
cfdata->color[i].a = a[i];
e_color_update_rgb(cfdata->color + i);
e_widget_color_well_update(cfdata->gui.color[i]);
}
edje_object_color_class_set
(cfdata->gui.text_preview, "color_preview",
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
e_widget_frametable_label_set(cfdata->gui.frame, description);
@ -327,7 +329,7 @@ _color_class_list_selection_changed(void *data, Evas_Object *obj __UNUSED__)
if (cfdata->selection_idler)
ecore_idler_del(cfdata->selection_idler);
cfdata->selection_idler = ecore_idler_add
(_color_class_list_selection_idler, cfdata);
(_color_class_list_selection_idler, cfdata);
}
static Eina_Bool
@ -346,21 +348,21 @@ _config_color_class_color_reset(CFColor_Class *ccc)
*/
if (ccc->gui.icon)
ret = edje_object_color_class_get
(ccc->gui.icon, ccc->key,
r + 0, g + 0, b + 0, a + 0,
r + 1, g + 1, b + 1, a + 1,
r + 2, g + 2, b + 2, a + 2);
(ccc->gui.icon, ccc->key,
r + 0, g + 0, b + 0, a + 0,
r + 1, g + 1, b + 1, a + 1,
r + 2, g + 2, b + 2, a + 2);
if (!ret)
{
unsigned int i;
for (i = 0; i < 3; i++)
{
r[i] = -1;
g[i] = -1;
b[i] = -1;
a[i] = -1;
}
unsigned int i;
for (i = 0; i < 3; i++)
{
r[i] = -1;
g[i] = -1;
b[i] = -1;
a[i] = -1;
}
}
return ret;
@ -373,49 +375,49 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
if (cfdata->delay_color_timer)
{
ecore_timer_del(cfdata->delay_color_timer);
cfdata->delay_color_timer = NULL;
_color_changed_delay(cfdata);
ecore_timer_del(cfdata->delay_color_timer);
cfdata->delay_color_timer = NULL;
_color_changed_delay(cfdata);
}
EINA_LIST_FREE(cfdata->changed, ccc)
{
ccc->val.changed = EINA_FALSE;
if (ccc->val.enabled)
{
int *r = ccc->val.r;
int *g = ccc->val.g;
int *b = ccc->val.b;
int *a = ccc->val.a;
if (ccc->cc)
{
e_color_class_instance_set
(ccc->cc,
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
}
else
{
ccc->cc = e_color_class_set_stringshared
(ccc->key,
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
}
}
else
{
if (ccc->cc)
{
e_color_class_instance_del(ccc->cc);
ccc->cc = NULL;
}
_config_color_class_color_reset(ccc);
_config_color_class_icon_state_apply(ccc);
}
ccc->val.changed = EINA_FALSE;
if (ccc->val.enabled)
{
int *r = ccc->val.r;
int *g = ccc->val.g;
int *b = ccc->val.b;
int *a = ccc->val.a;
if (ccc->cc)
{
e_color_class_instance_set
(ccc->cc,
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
}
else
{
ccc->cc = e_color_class_set_stringshared
(ccc->key,
r[0], g[0], b[0], a[0],
r[1], g[1], b[1], a[1],
r[2], g[2], b[2], a[2]);
}
}
else
{
if (ccc->cc)
{
e_color_class_instance_del(ccc->cc);
ccc->cc = NULL;
}
_config_color_class_color_reset(ccc);
_config_color_class_icon_state_apply(ccc);
}
}
return 1;
@ -435,19 +437,19 @@ _custom_color_cb_change(void *data, Evas_Object *obj)
enabled = e_widget_check_checked_get(obj);
EINA_LIST_FOREACH(cfdata->selected, l, ccc)
{
ccc->val.enabled = enabled;
_config_color_class_end_state_apply(ccc);
if (!enabled)
{
_config_color_class_color_reset(ccc);
_config_color_class_icon_state_apply(ccc);
}
if (!ccc->val.changed)
{
ccc->val.changed = EINA_TRUE;
cfdata->changed = eina_list_append(cfdata->changed, ccc);
}
ccc->val.enabled = enabled;
_config_color_class_end_state_apply(ccc);
if (!enabled)
{
_config_color_class_color_reset(ccc);
_config_color_class_icon_state_apply(ccc);
}
if (!ccc->val.changed)
{
ccc->val.changed = EINA_TRUE;
cfdata->changed = eina_list_append(cfdata->changed, ccc);
}
}
EINA_LIST_FOREACH(cfdata->gui.disable_list, l, o)
@ -470,9 +472,9 @@ _color_changed_delay(void *data)
col = cfdata->color;
edje_object_color_class_set
(cfdata->gui.text_preview, "color_preview",
col[0].r, col[0].g, col[0].b, col[0].a,
col[1].r, col[1].g, col[1].b, col[1].a,
col[2].r, col[2].g, col[2].b, col[2].a);
col[0].r, col[0].g, col[0].b, col[0].a,
col[1].r, col[1].g, col[1].b, col[1].a,
col[2].r, col[2].g, col[2].b, col[2].a);
cfdata->delay_color_timer = NULL;
return ECORE_CALLBACK_CANCEL;
@ -495,28 +497,28 @@ _color_cb_change(void *data, Evas_Object *obj)
if (i == 3)
{
EINA_LOG_ERR("unknown widget changed color: %p\n", obj);
return;
EINA_LOG_ERR("unknown widget changed color: %p\n", obj);
return;
}
col = cfdata->color + i;
EINA_LIST_FOREACH(cfdata->selected, l, ccc)
{
ccc->val.r[i] = col->r;
ccc->val.g[i] = col->g;
ccc->val.b[i] = col->b;
ccc->val.a[i] = col->a;
if (!ccc->val.changed)
{
ccc->val.changed = EINA_TRUE;
cfdata->changed = eina_list_append(cfdata->changed, ccc);
}
ccc->val.r[i] = col->r;
ccc->val.g[i] = col->g;
ccc->val.b[i] = col->b;
ccc->val.a[i] = col->a;
if (!ccc->val.changed)
{
ccc->val.changed = EINA_TRUE;
cfdata->changed = eina_list_append(cfdata->changed, ccc);
}
}
if (!cfdata->delay_color_timer)
cfdata->delay_color_timer = ecore_timer_add
(0.2, _color_changed_delay, cfdata);
(0.2, _color_changed_delay, cfdata);
}
static Evas_Object *
@ -542,10 +544,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_list_object_append(ol, cfdata->gui.ilist, 1, 1, 0.0);
cfdata->gui.frame = ot = e_widget_frametable_add
(evas, _("No selected color class"), 0);
(evas, _("No selected color class"), 0);
cfdata->gui.state = o = e_widget_check_add
(evas, _("Custom colors"), &(cfdata->state));
(evas, _("Custom colors"), &(cfdata->state));
e_widget_on_change_hook_set(o, _custom_color_cb_change, cfdata);
e_widget_size_min_get(o, &mw, &mh);
e_widget_frametable_object_append_full
@ -573,32 +575,32 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
for (i = 0; i < 3; i++)
{
o = e_widget_color_well_add_full(evas, cfdata->color + i, 1, 1);
cfdata->gui.color[i] = o;
cfdata->gui.disable_list = eina_list_append
(cfdata->gui.disable_list, o);
e_widget_on_change_hook_set(o, _color_cb_change, cfdata);
e_widget_size_min_get(o, &mw, NULL);
mw = 32 * e_scale;
e_widget_frametable_object_append_full
(ot, o, i, 2, 1, 1, 1, 1, 1, 0, 0.0, 0.0, mw, mh, 9999, 9999);
o = e_widget_color_well_add_full(evas, cfdata->color + i, 1, 1);
cfdata->gui.color[i] = o;
cfdata->gui.disable_list = eina_list_append
(cfdata->gui.disable_list, o);
e_widget_on_change_hook_set(o, _color_cb_change, cfdata);
e_widget_size_min_get(o, &mw, NULL);
mw = 32 * e_scale;
e_widget_frametable_object_append_full
(ot, o, i, 2, 1, 1, 1, 1, 1, 0, 0.0, 0.0, mw, mh, 9999, 9999);
}
o = edje_object_add(evas);
if (!e_theme_edje_object_set(o, "base/theme/widgets",
"e/modules/conf_colors/preview/text"))
"e/modules/conf_colors/preview/text"))
{
evas_object_del(o);
evas_object_del(o);
}
else
{
cfdata->gui.text_preview = o;
edje_object_color_class_set
(o, "color_preview", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
edje_object_part_text_set(o, "e.text", _("Text with applied colors."));
edje_object_size_min_calc(o, &mw, &mh);
e_widget_frametable_object_append_full
(ot, o, 0, 3, 3, 1, 0, 0, 0, 0, 0.5, 0.5, mw, mh, 9999, 9999);
cfdata->gui.text_preview = o;
edje_object_color_class_set
(o, "color_preview", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
edje_object_part_text_set(o, "e.text", _("Text with applied colors."));
edje_object_size_min_calc(o, &mw, &mh);
e_widget_frametable_object_append_full
(ot, o, 0, 3, 3, 1, 0, 0, 0, 0, 0.5, 0.5, mw, mh, 9999, 9999);
}
o = e_widget_label_add(evas, _("Colors depend on theme capabilities."));
@ -642,30 +644,30 @@ _config_color_class_new(const char *key_stringshared, const char *name, E_Color_
if (cc)
{
ccc->val.r[0] = cc->r;
ccc->val.g[0] = cc->g;
ccc->val.b[0] = cc->b;
ccc->val.a[0] = cc->a;
ccc->val.r[1] = cc->r2;
ccc->val.g[1] = cc->g2;
ccc->val.b[1] = cc->b2;
ccc->val.a[1] = cc->a2;
ccc->val.r[2] = cc->r3;
ccc->val.g[2] = cc->g3;
ccc->val.b[2] = cc->b3;
ccc->val.a[2] = cc->a3;
ccc->val.enabled = EINA_TRUE;
ccc->val.r[0] = cc->r;
ccc->val.g[0] = cc->g;
ccc->val.b[0] = cc->b;
ccc->val.a[0] = cc->a;
ccc->val.r[1] = cc->r2;
ccc->val.g[1] = cc->g2;
ccc->val.b[1] = cc->b2;
ccc->val.a[1] = cc->a2;
ccc->val.r[2] = cc->r3;
ccc->val.g[2] = cc->g3;
ccc->val.b[2] = cc->b3;
ccc->val.a[2] = cc->a3;
ccc->val.enabled = EINA_TRUE;
}
else
{
unsigned int i;
for (i = 0; i < 3; i++)
ccc->val.r[i] = ccc->val.g[i] = ccc->val.b[i] = ccc->val.a[i] = -1;
unsigned int i;
for (i = 0; i < 3; i++)
ccc->val.r[i] = ccc->val.g[i] = ccc->val.b[i] = ccc->val.a[i] = -1;
ccc->val.enabled = EINA_FALSE;
ccc->val.enabled = EINA_FALSE;
}
return ccc;
@ -680,28 +682,28 @@ _config_color_class_icon_state_apply(CFColor_Class *ccc)
if ((ccc->gui.type == COLOR_CLASS_TEXT) ||
(ccc->gui.type == COLOR_CLASS_SOLID))
{
edje_object_color_class_set
(ccc->gui.icon, "color_preview",
ccc->val.r[0], ccc->val.g[0], ccc->val.b[0], ccc->val.a[0],
ccc->val.r[1], ccc->val.g[1], ccc->val.b[1], ccc->val.a[1],
ccc->val.r[2], ccc->val.g[2], ccc->val.b[2], ccc->val.a[2]);
edje_object_color_class_set
(ccc->gui.icon, "color_preview",
ccc->val.r[0], ccc->val.g[0], ccc->val.b[0], ccc->val.a[0],
ccc->val.r[1], ccc->val.g[1], ccc->val.b[1], ccc->val.a[1],
ccc->val.r[2], ccc->val.g[2], ccc->val.b[2], ccc->val.a[2]);
}
else
{
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c1",
ccc->val.r[0], ccc->val.g[0], ccc->val.b[0], ccc->val.a[0],
0, 0, 0, 0, 0, 0, 0, 0);
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c2",
ccc->val.r[1], ccc->val.g[1], ccc->val.b[1], ccc->val.a[1],
0, 0, 0, 0, 0, 0, 0, 0);
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c3",
ccc->val.r[2], ccc->val.g[2], ccc->val.b[2], ccc->val.a[2],
0, 0, 0, 0, 0, 0, 0, 0);
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c1",
ccc->val.r[0], ccc->val.g[0], ccc->val.b[0], ccc->val.a[0],
0, 0, 0, 0, 0, 0, 0, 0);
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c2",
ccc->val.r[1], ccc->val.g[1], ccc->val.b[1], ccc->val.a[1],
0, 0, 0, 0, 0, 0, 0, 0);
edje_object_color_class_set
(ccc->gui.icon, "color_preview_c3",
ccc->val.r[2], ccc->val.g[2], ccc->val.b[2], ccc->val.a[2],
0, 0, 0, 0, 0, 0, 0, 0);
}
}
@ -735,8 +737,8 @@ _fill_data_add_header(E_Config_Dialog_Data *cfdata, const char *name, const char
if (icon)
{
ic = e_icon_add(cfdata->gui.evas);
e_util_icon_theme_set(ic, icon);
ic = e_icon_add(cfdata->gui.evas);
e_util_icon_theme_set(ic, icon);
}
else
ic = NULL;
@ -752,48 +754,50 @@ _fill_data_add_item(E_Config_Dialog_Data *cfdata, CFColor_Class *ccc)
icon = edje_object_add(cfdata->gui.evas);
if (icon)
{
const char *group;
switch (ccc->gui.type)
{
case COLOR_CLASS_TEXT:
group = "e/modules/conf_colors/preview/text";
break;
case COLOR_CLASS_SOLID:
group = "e/modules/conf_colors/preview/solid";
break;
default:
group = "e/modules/conf_colors/preview/unknown";
}
if (e_theme_edje_object_set(icon, "base/theme/widgets", group))
{
ccc->gui.icon = icon;
_config_color_class_icon_state_apply(ccc);
}
else
{
EINA_LOG_ERR("your theme misses '%s'!", group);
evas_object_del(icon);
icon = NULL;
}
const char *group;
switch (ccc->gui.type)
{
case COLOR_CLASS_TEXT:
group = "e/modules/conf_colors/preview/text";
break;
case COLOR_CLASS_SOLID:
group = "e/modules/conf_colors/preview/solid";
break;
default:
group = "e/modules/conf_colors/preview/unknown";
}
if (e_theme_edje_object_set(icon, "base/theme/widgets", group))
{
ccc->gui.icon = icon;
_config_color_class_icon_state_apply(ccc);
}
else
{
EINA_LOG_ERR("your theme misses '%s'!", group);
evas_object_del(icon);
icon = NULL;
}
}
end = edje_object_add(cfdata->gui.evas);
if (end)
{
if (e_theme_edje_object_set(end, "base/theme/widgets",
"e/widgets/ilist/toggle_end"))
{
ccc->gui.end = end;
_config_color_class_end_state_apply(ccc);
}
else
{
EINA_LOG_ERR("your theme misses 'e/widgets/ilist/toggle_end'!");
evas_object_del(end);
end = NULL;
}
if (e_theme_edje_object_set(end, "base/theme/widgets",
"e/widgets/ilist/toggle_end"))
{
ccc->gui.end = end;
_config_color_class_end_state_apply(ccc);
}
else
{
EINA_LOG_ERR("your theme misses 'e/widgets/ilist/toggle_end'!");
evas_object_del(end);
end = NULL;
}
}
e_widget_ilist_append_full
@ -809,35 +813,35 @@ _fill_data_add_batch(E_Config_Dialog_Data *cfdata, Eina_List **p_todo, const CFC
for (itr = descs; itr->key; itr++)
{
E_Color_Class *cc;
Eina_List *l, *found_node = NULL;
const char *key_stringshared = eina_stringshare_add(itr->key);
EINA_LIST_FOREACH(*p_todo, l, cc)
{
if (cc->name == key_stringshared)