fix up config code so i can do lists and structs etc.
SVN revision: 12357
This commit is contained in:
parent
35ad8eb192
commit
7562a08b5a
|
@ -12,8 +12,8 @@ e_canvas_add(Ecore_Evas *ee)
|
|||
|
||||
_e_canvases = evas_list_prepend(_e_canvases, ee);
|
||||
e = ecore_evas_get(ee);
|
||||
evas_image_cache_set(e, e_config_val_image_cache * 1024);
|
||||
evas_font_cache_set(e, e_config_val_font_cache * 1024);
|
||||
evas_image_cache_set(e, e_config->image_cache * 1024);
|
||||
evas_font_cache_set(e, e_config->font_cache * 1024);
|
||||
// evas_image_cache_flush(e);
|
||||
// evas_image_cache_reload(e);
|
||||
}
|
||||
|
@ -36,8 +36,8 @@ e_canvas_recache(void)
|
|||
|
||||
ee = l->data;
|
||||
e = ecore_evas_get(ee);
|
||||
evas_image_cache_set(e, e_config_val_image_cache * 1024);
|
||||
evas_font_cache_set(e, e_config_val_font_cache * 1024);
|
||||
evas_image_cache_set(e, e_config->image_cache * 1024);
|
||||
evas_font_cache_set(e, e_config->font_cache * 1024);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,125 +11,67 @@
|
|||
#define DEF_MENUCLICK 0.25
|
||||
#endif
|
||||
|
||||
char *e_config_val_desktop_default_background = NULL;
|
||||
double e_config_val_menus_scroll_speed = 1000.0;
|
||||
double e_config_val_menus_fast_mouse_move_thresthold = 500.0;
|
||||
double e_config_val_menus_click_drag_timeout = DEF_MENUCLICK;
|
||||
double e_config_val_framerate = 30.0;
|
||||
int e_config_val_image_cache = 2048;
|
||||
int e_config_val_font_cache = 512;
|
||||
E_Config *e_config = NULL;
|
||||
|
||||
/* local subsystem functions */
|
||||
static void _e_config_save_cb(void *data);
|
||||
|
||||
static int _e_config_listener_desktop_default_background(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_menus_scroll_speed(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_menus_fast_mouse_move_threshold(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_menus_click_drag_timeout(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_framerate(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_image_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _e_config_listener_font_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
|
||||
/* local subsystem globals */
|
||||
static Ecore_Job *_e_config_save_job = NULL;
|
||||
static E_Config_DD *_e_config_edd = NULL;
|
||||
|
||||
/* externally accessible functions */
|
||||
int
|
||||
e_config_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ecore_config_init("e");
|
||||
|
||||
ecore_config_string_create
|
||||
("e.desktop.default.background",
|
||||
PACKAGE_DATA_DIR"/data/themes/default.eet",
|
||||
'b', "default-background",
|
||||
"The default background for desktops without a custom background");
|
||||
ecore_config_float_create_bound
|
||||
("e.menus.scroll_speed",
|
||||
1000.0, 1.0, 20000.0, 10.0,
|
||||
0, "menus-scroll-speed",
|
||||
"Pixels per second menus scroll around the screen");
|
||||
ecore_config_float_create_bound
|
||||
("e.menus.fast_mouse_move_threshold",
|
||||
300.0, 1.0, 2000.0, 1.0,
|
||||
0, "menus-scroll-speed",
|
||||
"Pixels per second menus scroll around the screen");
|
||||
ecore_config_float_create_bound
|
||||
("e.menus.click_drag_timeout",
|
||||
DEF_MENUCLICK, 0.0, 10.0, 0.01,
|
||||
0, "menus-click-drag-timeout",
|
||||
"Seconds after a mouse press when a release will not hide the menu");
|
||||
ecore_config_float_create_bound
|
||||
("e.framerate",
|
||||
30.0, 1.0, 200.0, 0.1,
|
||||
0, "framerate",
|
||||
"A hint at the framerate (in frames per second) Enlightenment should try and animate at");
|
||||
ecore_config_int_create_bound
|
||||
("e.image-cache",
|
||||
2048, 0, 32768, 1,
|
||||
0, "image-cache",
|
||||
"The mount of memory (in Kb) to use as a sepculative image cache");
|
||||
ecore_config_int_create_bound
|
||||
("e.font-cache",
|
||||
512, 0, 4096, 1,
|
||||
0, "font-cache",
|
||||
"The mount of memory (in Kb) to use as a sepculative font cache");
|
||||
|
||||
ecore_config_load();
|
||||
ret = ecore_config_args_parse();
|
||||
|
||||
e_config_val_desktop_default_background =
|
||||
ecore_config_string_get("e.desktop.default.background");
|
||||
ecore_config_listen("e.desktop.default.background",
|
||||
"e.desktop.default.background",
|
||||
_e_config_listener_desktop_default_background,
|
||||
0, NULL);
|
||||
e_config_val_menus_scroll_speed =
|
||||
ecore_config_float_get("e.menus.scroll_speed");
|
||||
ecore_config_listen("e.menus.scroll_speed",
|
||||
"e.menus.scroll_speed",
|
||||
_e_config_listener_menus_scroll_speed,
|
||||
0, NULL);
|
||||
e_config_val_menus_fast_mouse_move_thresthold =
|
||||
ecore_config_float_get("e.menus.fast_mouse_move_threshold");
|
||||
ecore_config_listen("e.menus.fast_mouse_move_threshold",
|
||||
"e.menus.fast_mouse_move_threshold",
|
||||
_e_config_listener_menus_fast_mouse_move_threshold,
|
||||
0, NULL);
|
||||
e_config_val_menus_click_drag_timeout =
|
||||
ecore_config_float_get("e.menus.click_drag_timeout");
|
||||
ecore_config_listen("e.menus.click_drag_timeout",
|
||||
"e.menus.click_drag_timeout",
|
||||
_e_config_listener_menus_click_drag_timeout,
|
||||
0, NULL);
|
||||
e_config_val_framerate =
|
||||
ecore_config_float_get("e.framerate");
|
||||
if (e_config_val_framerate <= 0.0) e_config_val_framerate = 30.0;
|
||||
ecore_config_listen("e.framerate",
|
||||
"e.framerate",
|
||||
_e_config_listener_framerate,
|
||||
0, NULL);
|
||||
e_config_val_image_cache =
|
||||
ecore_config_int_get("e.image-cache");
|
||||
ecore_config_listen("e.image-cache",
|
||||
"e.image-cache",
|
||||
_e_config_listener_image_cache,
|
||||
0, NULL);
|
||||
e_config_val_font_cache =
|
||||
ecore_config_int_get("e.font-cache");
|
||||
ecore_config_listen("e.font-cache",
|
||||
"e.font-cache",
|
||||
_e_config_listener_font_cache,
|
||||
0, NULL);
|
||||
_e_config_edd = E_CONFIG_DD_NEW("E_Config", E_Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T E_Config
|
||||
#define D _e_config_edd
|
||||
E_CONFIG_VAL(D, T, desktop_default_background, STR);
|
||||
E_CONFIG_VAL(D, T, menus_scroll_speed, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, menus_fast_mouse_move_thresthold, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, menus_click_drag_timeout, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, framerate, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, image_cache, INT);
|
||||
E_CONFIG_VAL(D, T, font_cache, INT);
|
||||
|
||||
e_config = e_config_domain_load("e", _e_config_edd);
|
||||
if (!e_config) e_config = E_NEW(E_Config, 1);
|
||||
if (e_config)
|
||||
{
|
||||
e_config->desktop_default_background = strdup(PACKAGE_DATA_DIR"/data/themes/default.eet");
|
||||
e_config->menus_scroll_speed = 1000.0;
|
||||
e_config->menus_fast_mouse_move_thresthold = 300.0;
|
||||
e_config->menus_click_drag_timeout = DEF_MENUCLICK;
|
||||
e_config->framerate = 30.0;
|
||||
e_config->image_cache = 2048;
|
||||
e_config->font_cache = 512;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
E_CONFIG_LIMIT(e_config->menus_scroll_speed, 1.0, 20000.0);
|
||||
E_CONFIG_LIMIT(e_config->menus_fast_mouse_move_thresthold, 1.0, 2000.0);
|
||||
E_CONFIG_LIMIT(e_config->menus_click_drag_timeout, 0.0, 10.0);
|
||||
E_CONFIG_LIMIT(e_config->framerate, 1.0, 200.0);
|
||||
E_CONFIG_LIMIT(e_config->image_cache, 0, 256 * 1024);
|
||||
E_CONFIG_LIMIT(e_config->font_cache, 0, 32 * 1024);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
e_config_shutdown(void)
|
||||
{
|
||||
/* FIXME: unset listeners */
|
||||
if (e_config)
|
||||
{
|
||||
E_FREE(e_config->desktop_default_background);
|
||||
E_FREE(e_config);
|
||||
}
|
||||
if (_e_config_edd)
|
||||
{
|
||||
E_CONFIG_DD_FREE(_e_config_edd);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -141,7 +83,7 @@ e_config_save(void)
|
|||
ecore_job_del(_e_config_save_job);
|
||||
_e_config_save_job = NULL;
|
||||
}
|
||||
return ecore_config_save();
|
||||
return e_config_domain_save("e", _e_config_edd, e_config);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -151,98 +93,53 @@ e_config_save_queue(void)
|
|||
_e_config_save_job = ecore_job_add(_e_config_save_cb, NULL);
|
||||
}
|
||||
|
||||
void *
|
||||
e_config_domain_load(char *domain, E_Config_DD *edd)
|
||||
{
|
||||
Eet_File *ef;
|
||||
char buf[4096];
|
||||
char *homedir;
|
||||
void *data = NULL;
|
||||
|
||||
homedir = e_user_homedir_get();
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/config/%s.cfg", homedir, domain);
|
||||
E_FREE(homedir);
|
||||
ef = eet_open(buf, EET_FILE_MODE_READ);
|
||||
if (ef)
|
||||
{
|
||||
data = eet_data_read(ef, edd, "config");
|
||||
eet_close(ef);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
int
|
||||
e_config_domain_save(char *domain, E_Config_DD *edd, void *data)
|
||||
{
|
||||
Eet_File *ef;
|
||||
char buf[4096];
|
||||
char *homedir;
|
||||
int ok = 0;
|
||||
|
||||
/* FIXME: check for other sessions fo E runing */
|
||||
homedir = e_user_homedir_get();
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/config/%s.cfg", homedir, domain);
|
||||
E_FREE(homedir);
|
||||
ef = eet_open(buf, EET_FILE_MODE_WRITE);
|
||||
if (ef)
|
||||
{
|
||||
ok = eet_data_write(ef, edd, "config", data, 0);
|
||||
eet_close(ef);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_e_config_save_cb(void *data)
|
||||
{
|
||||
_e_config_save_job = NULL;
|
||||
e_module_save_all();
|
||||
e_config_save();
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_desktop_default_background(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
Evas_List *managers, *l;
|
||||
|
||||
if (e_config_val_desktop_default_background)
|
||||
free(e_config_val_desktop_default_background);
|
||||
e_config_val_desktop_default_background =
|
||||
ecore_config_string_get("e.desktop.default.background");
|
||||
managers = e_manager_list();
|
||||
for (l = managers; l; l = l->next)
|
||||
{
|
||||
Evas_List *ll;
|
||||
E_Manager *man;
|
||||
|
||||
man = l->data;
|
||||
for (ll = man->containers; ll; ll = ll->next)
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
con = ll->data;
|
||||
e_container_bg_reconfigure(con);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_menus_scroll_speed(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_menus_scroll_speed =
|
||||
ecore_config_float_get("e.menus.scroll_speed");
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_menus_fast_mouse_move_threshold(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_menus_fast_mouse_move_thresthold =
|
||||
ecore_config_float_get("e.menus.fast_mouse_move_threshold");
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_menus_click_drag_timeout(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_menus_click_drag_timeout =
|
||||
ecore_config_float_get("e.menus.click_drag_timeout");
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_framerate(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_framerate =
|
||||
ecore_config_float_get("e.framerate");
|
||||
if (e_config_val_framerate <= 0.0) e_config_val_framerate = 30.0;
|
||||
edje_frametime_set(1.0 / e_config_val_framerate);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_image_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_image_cache =
|
||||
ecore_config_int_get("e.image-cache");
|
||||
ecore_config_listen("e.image-cache",
|
||||
"e.image-cache",
|
||||
_e_config_listener_image_cache,
|
||||
0, NULL);
|
||||
e_canvas_recache();
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_config_listener_font_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
e_config_val_font_cache =
|
||||
ecore_config_int_get("e.font-cache");
|
||||
ecore_config_listen("e.font-cache",
|
||||
"e.font-cache",
|
||||
_e_config_listener_font_cache,
|
||||
0, NULL);
|
||||
e_canvas_recache();
|
||||
return 1;
|
||||
e_config_domain_save("e", _e_config_edd, e_config);
|
||||
_e_config_save_job = NULL;
|
||||
}
|
||||
|
|
|
@ -1,18 +1,63 @@
|
|||
#ifndef E_CONFIG_H
|
||||
#define E_CONFIG_H
|
||||
|
||||
typedef struct _E_Config E_Config;
|
||||
typedef Eet_Data_Descriptor E_Config_DD;
|
||||
|
||||
struct _E_Config
|
||||
{
|
||||
char *desktop_default_background;
|
||||
double menus_scroll_speed;
|
||||
double menus_fast_mouse_move_thresthold;
|
||||
double menus_click_drag_timeout;
|
||||
double framerate;
|
||||
int image_cache;
|
||||
int font_cache;
|
||||
};
|
||||
|
||||
#define E_CONFIG_DD_NEW(str, typ) \
|
||||
eet_data_descriptor_new(str, sizeof(typ), \
|
||||
(void *(*) (void *))evas_list_next, \
|
||||
(void *(*) (void *, void *))evas_list_append, \
|
||||
(void *(*) (void *))evas_list_data, \
|
||||
(void *(*) (void *))evas_list_free, \
|
||||
(void (*) (void *, int (*) (void *, const char *, void *, void *), void *))evas_hash_foreach, \
|
||||
(void *(*) (void *, const char *, void *))evas_hash_add, \
|
||||
(void (*) (void *))evas_hash_free)
|
||||
#define E_CONFIG_DD_FREE(eed) \
|
||||
if (eed) { eet_data_descriptor_free((eed)); (eed) = NULL; }
|
||||
|
||||
#define E_CONFIG_VAL(edd, type, member, dtype) \
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(edd, type, #member, member, dtype)
|
||||
#define E_CONFIG_SUB(edd, type, member, eddtype) \
|
||||
EET_DATA_DESCRIPTOR_ADD_SUB(edd, type, #member, member, eddtype)
|
||||
#define E_CONFIG_LIST(edd, type, member, eddtype) \
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(edd, type, #member, member, eddtype)
|
||||
|
||||
#define CHAR EET_T_CHAR
|
||||
#define SHORT EET_T_SHORT
|
||||
#define INT EET_T_INT
|
||||
#define LL EET_T_LONG_LONG
|
||||
#define FLOAT EET_T_FLOAT
|
||||
#define DOUBLE EET_T_DOUBLE
|
||||
#define UCHAR EET_T_UCHAR
|
||||
#define USHORT EET_T_USHORT
|
||||
#define UINT EET_T_UINT
|
||||
#define ULL EET_T_ULONG_LONG
|
||||
#define STR EET_T_STRING
|
||||
|
||||
#define E_CONFIG_LIMIT(v, min, max) \
|
||||
{if (v > max) v = max; else if (v < min) v = min;}
|
||||
|
||||
EAPI int e_config_init(void);
|
||||
EAPI int e_config_shutdown(void);
|
||||
|
||||
EAPI void *e_config_domain_load(char *domain, E_Config_DD *edd);
|
||||
EAPI int e_config_domain_save(char *domain, E_Config_DD *edd, void *data);
|
||||
|
||||
EAPI int e_config_save(void);
|
||||
EAPI void e_config_save_queue(void);
|
||||
|
||||
extern EAPI char *e_config_val_desktop_default_background;
|
||||
extern EAPI double e_config_val_menus_scroll_speed;
|
||||
extern EAPI double e_config_val_menus_fast_mouse_move_thresthold;
|
||||
extern EAPI double e_config_val_menus_click_drag_timeout;
|
||||
extern EAPI double e_config_val_framerate;
|
||||
extern EAPI int e_config_val_image_cache;
|
||||
extern EAPI int e_config_val_font_cache;
|
||||
|
||||
extern EAPI E_Config *e_config;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -77,7 +77,7 @@ e_container_new(E_Manager *man)
|
|||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, con->w, con->h);
|
||||
edje_object_file_set(o,
|
||||
e_config_val_desktop_default_background,
|
||||
e_config->desktop_default_background,
|
||||
"desktop/background");
|
||||
evas_object_show(o);
|
||||
|
||||
|
@ -171,7 +171,7 @@ e_container_bg_reconfigure(E_Container *con)
|
|||
o = con->bg_object;
|
||||
evas_object_hide(o);
|
||||
edje_object_file_set(o,
|
||||
e_config_val_desktop_default_background,
|
||||
e_config->desktop_default_background,
|
||||
"desktop/background");
|
||||
evas_object_layer_set(o, -1);
|
||||
evas_object_show(o);
|
||||
|
|
|
@ -171,32 +171,33 @@ _e_ipc_cb_client_data(void *data, int type, void *event)
|
|||
break;
|
||||
case E_IPC_OP_BG_SET:
|
||||
{
|
||||
char *file;
|
||||
char *valstr;
|
||||
Evas_List *cl;
|
||||
int cont;
|
||||
|
||||
|
||||
file = malloc(e->size + 1);
|
||||
file[e->size] = 0;
|
||||
memcpy(file, e->data, e->size);
|
||||
|
||||
valstr=strdup("desktop/background");
|
||||
cl=edje_file_collection_list(file);
|
||||
cont=1;
|
||||
while(cl && cont)
|
||||
{
|
||||
if(!strcmp(cl->data,valstr))
|
||||
{
|
||||
cont=0;
|
||||
ecore_config_string_set("e.desktop.default.background", file);
|
||||
}
|
||||
else
|
||||
cl++;
|
||||
}
|
||||
edje_file_collection_list_free(cl);
|
||||
free(valstr);
|
||||
free(file);
|
||||
char *file;
|
||||
char *valstr;
|
||||
Evas_List *managers, *l;
|
||||
int cont;
|
||||
|
||||
file = malloc(e->size + 1);
|
||||
file[e->size] = 0;
|
||||
memcpy(file, e->data, e->size);
|
||||
E_FREE(e_config->desktop_default_background);
|
||||
e_config->desktop_default_background = file;
|
||||
|
||||
managers = e_manager_list();
|
||||
for (l = managers; l; l = l->next)
|
||||
{
|
||||
Evas_List *ll;
|
||||
E_Manager *man;
|
||||
|
||||
man = l->data;
|
||||
for (ll = man->containers; ll; ll = ll->next)
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
con = ll->data;
|
||||
e_container_bg_reconfigure(con);
|
||||
}
|
||||
}
|
||||
e_config_save_queue();
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -161,8 +161,8 @@ main(int argc, char **argv)
|
|||
}
|
||||
_e_main_shutdown_push(e_config_shutdown);
|
||||
|
||||
/* setup edje to animate @ e_config_val_framerate frames per sec. */
|
||||
edje_frametime_set(1.0 / e_config_val_framerate);
|
||||
/* setup edje to animate @ e_config->framerate frames per sec. */
|
||||
edje_frametime_set(1.0 / e_config->framerate);
|
||||
e_canvas_recache();
|
||||
|
||||
/* setup init status window/screen */
|
||||
|
@ -375,7 +375,8 @@ _e_main_dirs_init(void)
|
|||
"%s/.e/e/applications/all",
|
||||
"%s/.e/e/applications/favorite",
|
||||
"%s/.e/e/applications/bar",
|
||||
"%s/.e/e/modules"
|
||||
"%s/.e/e/modules",
|
||||
"%s/.e/e/config"
|
||||
};
|
||||
int i;
|
||||
|
||||
|
|
|
@ -1913,7 +1913,7 @@ _e_menu_cb_mouse_up(void *data, int type, void *event)
|
|||
if (ev->win != _e_menu_win) return 1;
|
||||
t = ecore_time_get();
|
||||
if ((_e_menu_activate_time != 0.0) &&
|
||||
((t - _e_menu_activate_time) < e_config_val_menus_click_drag_timeout))
|
||||
((t - _e_menu_activate_time) < e_config->menus_click_drag_timeout))
|
||||
return 1;
|
||||
ret = _e_menu_active_call();
|
||||
if (ret == 1)
|
||||
|
@ -1938,7 +1938,7 @@ _e_menu_cb_mouse_move(void *data, int type, void *event)
|
|||
|
||||
ev = event;
|
||||
if (ev->win != _e_menu_win) return 1;
|
||||
fast_move_threshold = e_config_val_menus_fast_mouse_move_thresthold;
|
||||
fast_move_threshold = e_config->menus_fast_mouse_move_thresthold;
|
||||
dx = ev->x - _e_menu_x;
|
||||
dy = ev->y - _e_menu_y;
|
||||
d = (dx * dx) + (dy * dy);
|
||||
|
@ -2023,7 +2023,7 @@ _e_menu_cb_scroll_timer(void *data)
|
|||
double spd;
|
||||
|
||||
t = ecore_time_get();
|
||||
spd = e_config_val_menus_scroll_speed;
|
||||
spd = e_config->menus_scroll_speed;
|
||||
dt = t - _e_menu_scroll_start;
|
||||
_e_menu_scroll_start = t;
|
||||
dx = 0;
|
||||
|
|
|
@ -34,18 +34,18 @@ static int reply_expect = 0;
|
|||
#define SIMPLE_STR_REQ 1
|
||||
#define FULL_FUNC 2
|
||||
|
||||
#define REQ(opt, desc, ipc, rep) {opt, desc, 0, rep, SIMPLE_REQ, ipc, NULL}
|
||||
#define STR(opt, desc, ipc, rep) {opt, desc, 1, rep, SIMPLE_STR_REQ, ipc, NULL}
|
||||
#define FNC(opt, desc, param, fn, rep) {opt, desc, param, rep, SIMPLE_FUNC, 0, fn}
|
||||
#define OREQ(opt, desc, ipc, rep) {opt, desc, 0, rep, SIMPLE_REQ, ipc, NULL}
|
||||
#define OSTR(opt, desc, ipc, rep) {opt, desc, 1, rep, SIMPLE_STR_REQ, ipc, NULL}
|
||||
#define OFNC(opt, desc, param, fn, rep) {opt, desc, param, rep, SIMPLE_FUNC, 0, fn}
|
||||
|
||||
E_IPC_Opt_Handler handlers[] =
|
||||
{
|
||||
STR("-module-load", "Load module OPT1 into memory", E_IPC_OP_MODULE_LOAD, 0),
|
||||
STR("-module-unload", "Unload (and disable) module OPT1 from memory", E_IPC_OP_MODULE_UNLOAD, 0),
|
||||
STR("-module-enable", "Enable module OPT1 if not enabled", E_IPC_OP_MODULE_ENABLE, 0),
|
||||
STR("-module-disable", "Disable module OPT1 if not disabled", E_IPC_OP_MODULE_DISABLE, 0),
|
||||
REQ("-module-list", "List all loaded modules and their states", E_IPC_OP_MODULE_LIST, 1),
|
||||
STR("-bg-set", "Set the background edje file to be OPT1", E_IPC_OP_BG_SET, 0)
|
||||
OSTR("-module-load", "Load module OPT1 into memory", E_IPC_OP_MODULE_LOAD, 0),
|
||||
OSTR("-module-unload", "Unload (and disable) module OPT1 from memory", E_IPC_OP_MODULE_UNLOAD, 0),
|
||||
OSTR("-module-enable", "Enable module OPT1 if not enabled", E_IPC_OP_MODULE_ENABLE, 0),
|
||||
OSTR("-module-disable", "Disable module OPT1 if not disabled", E_IPC_OP_MODULE_DISABLE, 0),
|
||||
OREQ("-module-list", "List all loaded modules and their states", E_IPC_OP_MODULE_LIST, 1),
|
||||
OSTR("-bg-set", "Set the background edje file to be OPT1", E_IPC_OP_BG_SET, 0)
|
||||
};
|
||||
|
||||
/* externally accessible functions */
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
/* TODO List:
|
||||
*
|
||||
* fix up a better default x and y
|
||||
* should support proepr resize and move handles in the edje.
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -19,8 +19,6 @@ static void _clock_cb_face_down(void *data, Evas *e, Evas_Object *obj, void *
|
|||
static void _clock_cb_face_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _clock_cb_face_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
|
||||
char *_clock_module_dir;
|
||||
|
||||
/* public module routines. all modules must have these */
|
||||
void *
|
||||
init(E_Module *m)
|
||||
|
@ -69,10 +67,7 @@ save(E_Module *m)
|
|||
Clock *e;
|
||||
|
||||
e = m->data;
|
||||
ecore_config_int_set("e.module.clock.x", e->face->fx);
|
||||
ecore_config_int_set("e.module.clock.y", e->face->fy);
|
||||
ecore_config_int_set("e.module.clock.width", e->face->fw);
|
||||
e_config_save_queue();
|
||||
e_config_domain_save("module.clock", e->conf_edd, e->conf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -96,32 +91,35 @@ about(E_Module *m)
|
|||
}
|
||||
|
||||
/* module private routines */
|
||||
static
|
||||
Clock *_clock_init(E_Module *m)
|
||||
static Clock *
|
||||
_clock_init(E_Module *m)
|
||||
{
|
||||
Clock *e;
|
||||
char buf[4096];
|
||||
Evas_List *managers, *l, *l2;
|
||||
|
||||
e = calloc(1, sizeof(Clock));
|
||||
if (!e) return NULL;
|
||||
|
||||
ecore_config_int_create
|
||||
("e.module.clock.x", 50, 0, "",
|
||||
"Clock module: X start position");
|
||||
ecore_config_int_create
|
||||
("e.module.clock.y", 50, 0, "",
|
||||
"Clock module: Y start position");
|
||||
ecore_config_int_create
|
||||
("e.module.clock.width", 64, 0, "",
|
||||
"Clock module: Start width");
|
||||
e->conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config
|
||||
#define D e->conf_edd
|
||||
E_CONFIG_VAL(D, T, width, INT);
|
||||
E_CONFIG_VAL(D, T, x, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, y, DOUBLE);
|
||||
|
||||
ecore_config_load();
|
||||
|
||||
e->conf.width = ecore_config_int_get("e.module.clock.width");
|
||||
e->conf.x = ecore_config_int_get("e.module.clock.x");
|
||||
e->conf.y = ecore_config_int_get("e.module.clock.y");
|
||||
_clock_module_dir = e_module_dir_get(m);
|
||||
e->conf = e_config_domain_load("module.clock", e->conf_edd);
|
||||
if (!e->conf)
|
||||
{
|
||||
e->conf = E_NEW(Config, 1);
|
||||
e->conf->width = 64;
|
||||
e->conf->x = 0.0;
|
||||
e->conf->y = 1.0;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->width, 2, 256);
|
||||
E_CONFIG_LIMIT(e->conf->x, 0.0, 1.0);
|
||||
E_CONFIG_LIMIT(e->conf->y, 0.0, 1.0);
|
||||
|
||||
managers = e_manager_list();
|
||||
for (l = managers; l; l = l->next)
|
||||
|
@ -152,6 +150,9 @@ Clock *_clock_init(E_Module *m)
|
|||
static void
|
||||
_clock_shutdown(Clock *e)
|
||||
{
|
||||
free(e->conf);
|
||||
E_CONFIG_DD_FREE(e->conf_edd);
|
||||
|
||||
_clock_face_free(e->face);
|
||||
free(e);
|
||||
}
|
||||
|
@ -190,16 +191,15 @@ _clock_face_init(Clock_Face *ef)
|
|||
Evas_List *l;
|
||||
Evas_Coord ww, hh, bw, bh;
|
||||
Evas_Object *o;
|
||||
char buf[4096];
|
||||
|
||||
ef->fx = ef->clock->conf.x;
|
||||
ef->fy = ef->clock->conf.y;
|
||||
evas_output_viewport_get(ef->evas, NULL, NULL, &ww, &hh);
|
||||
ef->fx = ef->clock->conf->x * (ww - ef->clock->conf->width);
|
||||
ef->fy = ef->clock->conf->y * (hh - ef->clock->conf->width);
|
||||
|
||||
evas_event_freeze(ef->evas);
|
||||
o = edje_object_add(ef->evas);
|
||||
ef->clock_object = o;
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/default.eet", _clock_module_dir);
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
|
@ -237,20 +237,21 @@ _clock_face_free(Clock_Face *ef)
|
|||
static void
|
||||
_clock_face_reconfigure(Clock_Face *ef)
|
||||
{
|
||||
Evas_Coord minw, minh, maxw, maxh;
|
||||
Evas_Coord minw, minh, maxw, maxh, ww, hh;
|
||||
|
||||
edje_object_size_min_calc(ef->clock_object, &minw, &maxh);
|
||||
edje_object_size_max_get(ef->clock_object, &maxw, &minh);
|
||||
ef->fx = ef->clock->conf.x;
|
||||
ef->fy = ef->clock->conf.y;
|
||||
ef->fw = ef->clock->conf.width;
|
||||
evas_output_viewport_get(ef->evas, NULL, NULL, &ww, &hh);
|
||||
ef->fx = ef->clock->conf->x * (ww - ef->clock->conf->width);
|
||||
ef->fy = ef->clock->conf->y * (hh - ef->clock->conf->width);
|
||||
ef->fw = ef->clock->conf->width;
|
||||
ef->minsize = minw;
|
||||
ef->maxsize = maxw;
|
||||
|
||||
evas_object_move(ef->clock_object, ef->clock->conf.x, ef->clock->conf.y);
|
||||
evas_object_resize(ef->clock_object, ef->clock->conf.width, ef->clock->conf.width);
|
||||
evas_object_move(ef->event_object, ef->clock->conf.x, ef->clock->conf.y);
|
||||
evas_object_resize(ef->event_object, ef->clock->conf.width, ef->clock->conf.width);
|
||||
evas_object_move(ef->clock_object, ef->fx, ef->fy);
|
||||
evas_object_resize(ef->clock_object, ef->clock->conf->width, ef->clock->conf->width);
|
||||
evas_object_move(ef->event_object, ef->fx, ef->fy);
|
||||
evas_object_resize(ef->event_object, ef->clock->conf->width, ef->clock->conf->width);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -284,11 +285,16 @@ _clock_cb_face_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
Evas_Event_Mouse_Up *ev;
|
||||
Clock_Face *ef;
|
||||
Evas_Coord ww, hh;
|
||||
|
||||
ev = event_info;
|
||||
ef = data;
|
||||
ef->move = 0;
|
||||
ef->resize = 0;
|
||||
evas_output_viewport_get(ef->evas, NULL, NULL, &ww, &hh);
|
||||
ef->clock->conf->x = (double)ef->fx / (double)(ww - ef->clock->conf->width);
|
||||
ef->clock->conf->y = (double)ef->fy / (double)(hh - ef->clock->conf->width);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -297,6 +303,7 @@ _clock_cb_face_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
Evas_Event_Mouse_Move *ev;
|
||||
Clock_Face *ef;
|
||||
Evas_Coord x, y, w, h, cx, cy, sw, sh;
|
||||
|
||||
evas_pointer_canvas_xy_get(e, &cx, &cy);
|
||||
evas_output_viewport_get(e, NULL, NULL, &sw, &sh);
|
||||
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Clock Clock;
|
||||
typedef struct _Clock_Face Clock_Face;
|
||||
|
||||
struct _Config
|
||||
{
|
||||
int width;
|
||||
double x, y;
|
||||
};
|
||||
|
||||
struct _Clock
|
||||
{
|
||||
E_Menu *config_menu;
|
||||
Clock_Face *face;
|
||||
struct {
|
||||
int width;
|
||||
int x, y;
|
||||
} conf;
|
||||
|
||||
E_Config_DD *conf_edd;
|
||||
Config *conf;
|
||||
};
|
||||
|
||||
struct _Clock_Face
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
/* TODO List:
|
||||
*
|
||||
* * bug in shadow_x < 0 and shadow_y < 0 needs to be fixed (not urgent though)
|
||||
* * bug in ecore_config ? when we change shadow darkness in examine, _ds_config_listen_shadow_darkness does not get called - only when we change other values like x, y, blur and when it gets called we are not getting the value set in examine - always getting 0.5
|
||||
* * add alpha-pixel only pixel space to image objects in evas and make use of it to save cpu and ram
|
||||
* * when blurring ALSO cut out the overlayed rect frrom the blur algorithm
|
||||
* * handle shaped windows efficiently (as possible).
|
||||
|
@ -14,10 +13,6 @@
|
|||
/* module private routines */
|
||||
static Dropshadow *_ds_init(E_Module *m);
|
||||
static void _ds_shutdown(Dropshadow *ds);
|
||||
static int _ds_config_listen_shadow_x(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _ds_config_listen_shadow_y(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _ds_config_listen_blur(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static int _ds_config_listen_shadow_darkness(const char *key, const Ecore_Config_Type type, const int tag, void *data);
|
||||
static E_Menu *_ds_config_menu_new(Dropshadow *ds);
|
||||
static void _ds_menu_very_fuzzy(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _ds_menu_fuzzy(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -108,10 +103,12 @@ save(E_Module *m)
|
|||
|
||||
ds = m->data;
|
||||
if (!ds) return;
|
||||
ecore_config_int_set("e.module.dropshadow.shadow.x", ds->conf.shadow_x);
|
||||
ecore_config_int_set("e.module.dropshadow.shadow.y", ds->conf.shadow_y);
|
||||
ecore_config_int_set("e.module.dropshadow.blur", ds->conf.blur_size);
|
||||
ecore_config_float_set("e.module.dropshadow.shadow.darkness", ds->conf.shadow_darkness);
|
||||
printf("SAVE: %i %i, %i, %3.3f\n",
|
||||
ds->conf->shadow_x,
|
||||
ds->conf->shadow_y,
|
||||
ds->conf->blur_size,
|
||||
ds->conf->shadow_darkness);
|
||||
e_config_domain_save("module.dropshadow", ds->conf_edd, ds->conf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -147,49 +144,29 @@ _ds_init(E_Module *m)
|
|||
if (!ds) return NULL;
|
||||
|
||||
ds->module = m;
|
||||
ecore_config_int_create_bound
|
||||
("e.module.dropshadow.shadow.x",
|
||||
4, -200, 200, 1,
|
||||
0, "",
|
||||
"Dropshadow module: Shadow X offset");
|
||||
ecore_config_int_create_bound
|
||||
("e.module.dropshadow.shadow.y",
|
||||
4, -200, 200, 1,
|
||||
0, "",
|
||||
"Dropshadow module: Shadow Y offset");
|
||||
ecore_config_int_create_bound
|
||||
("e.module.dropshadow.blur",
|
||||
10, 1, 120, 1,
|
||||
0, "",
|
||||
"Dropshadow module: Shadow blur radius");
|
||||
ecore_config_float_create_bound
|
||||
("e.module.dropshadow.shadow.darkness",
|
||||
0.5, 0.0, 1.0, 0.001,
|
||||
0, "",
|
||||
"Dropshadow module: Shadow darkness");
|
||||
|
||||
ecore_config_load();
|
||||
ds->conf_edd = E_CONFIG_DD_NEW("Dropshadow_Config", Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config
|
||||
#define D ds->conf_edd
|
||||
E_CONFIG_VAL(D, T, shadow_x, INT);
|
||||
E_CONFIG_VAL(D, T, shadow_y, INT);
|
||||
E_CONFIG_VAL(D, T, blur_size, INT);
|
||||
E_CONFIG_VAL(D, T, shadow_darkness, DOUBLE);
|
||||
|
||||
ds->conf.shadow_x = ecore_config_int_get("e.module.dropshadow.shadow.x");
|
||||
ecore_config_listen("e.module.dropshadow.shadow.x",
|
||||
"e.module.dropshadow.shadow.x",
|
||||
_ds_config_listen_shadow_x,
|
||||
0, ds);
|
||||
ds->conf.shadow_y = ecore_config_int_get("e.module.dropshadow.shadow.y");
|
||||
ecore_config_listen("e.module.dropshadow.shadow.y",
|
||||
"e.module.dropshadow.shadow.y",
|
||||
_ds_config_listen_shadow_y,
|
||||
0, ds);
|
||||
ds->conf.blur_size = ecore_config_int_get("e.module.dropshadow.blur");
|
||||
ecore_config_listen("e.module.dropshadow.blur",
|
||||
"e.module.dropshadow.blur",
|
||||
_ds_config_listen_blur,
|
||||
0, ds);
|
||||
ds->conf.shadow_darkness = ecore_config_float_get("e.module.dropshadow.shadow.darkness");
|
||||
ecore_config_listen("e.module.dropshadow.shadow.darkness",
|
||||
"e.module.dropshadow.shadow.darkness",
|
||||
_ds_config_listen_shadow_darkness,
|
||||
0, ds);
|
||||
ds->conf = e_config_domain_load("module.dropshadow", ds->conf_edd);
|
||||
if (!ds->conf)
|
||||
{
|
||||
ds->conf = E_NEW(Config, 1);
|
||||
ds->conf->shadow_x = 4;
|
||||
ds->conf->shadow_y = 4;
|
||||
ds->conf->blur_size = 10;
|
||||
ds->conf->shadow_darkness = 0.5;
|
||||
}
|
||||
E_CONFIG_LIMIT(ds->conf->shadow_x, -200, 200);
|
||||
E_CONFIG_LIMIT(ds->conf->shadow_y, -200, 200);
|
||||
E_CONFIG_LIMIT(ds->conf->blur_size, 1, 120);
|
||||
E_CONFIG_LIMIT(ds->conf->shadow_darkness, 0.0, 1.0);
|
||||
|
||||
_ds_blur_init(ds);
|
||||
|
||||
|
@ -216,18 +193,8 @@ _ds_init(E_Module *m)
|
|||
static void
|
||||
_ds_shutdown(Dropshadow *ds)
|
||||
{
|
||||
ecore_config_deaf("e.module.dropshadow.shadow.x",
|
||||
"e.module.dropshadow.shadow.x",
|
||||
_ds_config_listen_shadow_x);
|
||||
ecore_config_deaf("e.module.dropshadow.shadow.y",
|
||||
"e.module.dropshadow.shadow.y",
|
||||
_ds_config_listen_shadow_y);
|
||||
ecore_config_deaf("e.module.dropshadow.blur",
|
||||
"e.module.dropshadow.blur",
|
||||
_ds_config_listen_blur);
|
||||
ecore_config_deaf("e.module.dropshadow.shadow.darkness",
|
||||
"e.module.dropshadow.shadow.darkness",
|
||||
_ds_config_listen_shadow_darkness);
|
||||
free(ds->conf);
|
||||
E_CONFIG_DD_FREE(ds->conf_edd);
|
||||
while (ds->cons)
|
||||
{
|
||||
E_Container *con;
|
||||
|
@ -248,62 +215,6 @@ _ds_shutdown(Dropshadow *ds)
|
|||
free(ds);
|
||||
}
|
||||
|
||||
static int
|
||||
_ds_config_listen_shadow_x(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
Dropshadow *ds;
|
||||
int v;
|
||||
|
||||
ds = data;
|
||||
v = ecore_config_int_get("e.module.dropshadow.shadow.x");
|
||||
if (v < -200) v = -200;
|
||||
else if (v > 200) v = 200;
|
||||
_ds_config_shadow_xy_set(ds, v, ds->conf.shadow_y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_ds_config_listen_shadow_y(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
Dropshadow *ds;
|
||||
int v;
|
||||
|
||||
ds = data;
|
||||
v = ecore_config_int_get("e.module.dropshadow.shadow.y");
|
||||
if (v < -200) v = -200;
|
||||
else if (v > 200) v = 200;
|
||||
_ds_config_shadow_xy_set(ds, ds->conf.shadow_x, v);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_ds_config_listen_blur(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
Dropshadow *ds;
|
||||
int v;
|
||||
|
||||
ds = data;
|
||||
v = ecore_config_int_get("e.module.dropshadow.blur");
|
||||
if (v < 1) v = 1;
|
||||
else if (v > 120) v= 120;
|
||||
_ds_config_blur_set(ds, v);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_ds_config_listen_shadow_darkness(const char *key, const Ecore_Config_Type type, const int tag, void *data)
|
||||
{
|
||||
Dropshadow *ds;
|
||||
double v;
|
||||
|
||||
ds = data;
|
||||
v = ecore_config_float_get("e.module.dropshadow.shadow.darkness");
|
||||
if (v < 0.0) v = 0.0;
|
||||
else if (v > 1.0) v = 1.0;
|
||||
_ds_config_darkness_set(ds, v);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static E_Menu *
|
||||
_ds_config_menu_new(Dropshadow *ds)
|
||||
{
|
||||
|
@ -319,7 +230,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (ds->conf.blur_size == 80) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->blur_size == 80) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_fuzzy, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -328,7 +239,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (ds->conf.blur_size == 40) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->blur_size == 40) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_fuzzy, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -337,7 +248,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (ds->conf.blur_size == 20) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->blur_size == 20) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_medium, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -346,7 +257,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (ds->conf.blur_size == 10) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->blur_size == 10) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_sharp, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -355,7 +266,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (ds->conf.blur_size == 5) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->blur_size == 5) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_sharp, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -367,7 +278,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
if (ds->conf.shadow_darkness == 1.0) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_darkness == 1.0) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_dark, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -376,7 +287,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
if (ds->conf.shadow_darkness == 0.75) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_darkness == 0.75) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_dark, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -385,7 +296,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
if (ds->conf.shadow_darkness == 0.5) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_darkness == 0.5) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_light, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -394,7 +305,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
if (ds->conf.shadow_darkness == 0.25) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_darkness == 0.25) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_light, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -406,7 +317,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 32) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 32) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_far, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -415,7 +326,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 16) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 16) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_far, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -424,7 +335,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 8) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 8) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_close, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -433,7 +344,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 4) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 4) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_very_close, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -442,7 +353,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 2) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 2) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_extremely_close, ds);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
|
@ -451,7 +362,7 @@ _ds_config_menu_new(Dropshadow *ds)
|
|||
e_menu_item_icon_file_set(mi, buf);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
if (ds->conf.shadow_x == 0) e_menu_item_toggle_set(mi, 1);
|
||||
if (ds->conf->shadow_x == 0) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _ds_menu_under, ds);
|
||||
return mn;
|
||||
}
|
||||
|
@ -701,7 +612,7 @@ _ds_shadow_obj_init(Shadow *sh)
|
|||
evas_object_resize(sh->object[i], 0, 0);
|
||||
evas_object_color_set(sh->object[i],
|
||||
255, 255, 255,
|
||||
255 * sh->ds->conf.shadow_darkness);
|
||||
255 * sh->ds->conf->shadow_darkness);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -767,23 +678,23 @@ _ds_shadow_move(Shadow *sh, int x, int y)
|
|||
if (sh->square)
|
||||
{
|
||||
evas_object_move(sh->object[0],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->y + sh->ds->conf.shadow_y - sh->ds->conf.blur_size);
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->ds->conf->shadow_y - sh->ds->conf->blur_size);
|
||||
evas_object_move(sh->object[1],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y);
|
||||
evas_object_move(sh->object[2],
|
||||
sh->x + sh->w,
|
||||
sh->y);
|
||||
evas_object_move(sh->object[3],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->h);
|
||||
}
|
||||
else
|
||||
{
|
||||
evas_object_move(sh->object[0],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->y + sh->ds->conf.shadow_y - sh->ds->conf.blur_size);
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->ds->conf->shadow_y - sh->ds->conf->blur_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -836,8 +747,8 @@ _ds_shadow_recalc(Shadow *sh)
|
|||
Evas_List *l;
|
||||
|
||||
sh->square = 0;
|
||||
pix_w = sh->w + (sh->ds->conf.blur_size * 2);
|
||||
pix_h = sh->h + (sh->ds->conf.blur_size * 2);
|
||||
pix_w = sh->w + (sh->ds->conf->blur_size * 2);
|
||||
pix_h = sh->h + (sh->ds->conf->blur_size * 2);
|
||||
pix = calloc(1, pix_w * pix_h * sizeof(unsigned char));
|
||||
|
||||
/* for every rect in the shape - fill it */
|
||||
|
@ -850,10 +761,10 @@ _ds_shadow_recalc(Shadow *sh)
|
|||
}
|
||||
/* FIXME: need to find an optimal "inner rect" fromt he above rect list */
|
||||
/*
|
||||
sx = sh->ds->conf.blur_size;
|
||||
sy = sh->ds->conf.blur_size;
|
||||
sxx = pix_w - sh->ds->conf.blur_size;
|
||||
syy = pix_h - sh->ds->conf.blur_size;
|
||||
sx = sh->ds->conf->blur_size;
|
||||
sy = sh->ds->conf->blur_size;
|
||||
sxx = pix_w - sh->ds->conf->blur_size;
|
||||
syy = pix_h - sh->ds->conf->blur_size;
|
||||
*/
|
||||
sx = 0;
|
||||
sy = 0;
|
||||
|
@ -861,15 +772,15 @@ _ds_shadow_recalc(Shadow *sh)
|
|||
syy = 0;
|
||||
|
||||
_ds_gauss_blur(pix, pix_w, pix_h,
|
||||
sh->ds->table.gauss, sh->ds->conf.blur_size,
|
||||
sh->ds->table.gauss, sh->ds->conf->blur_size,
|
||||
sx, sy, sxx, syy);
|
||||
evas_object_move(sh->object[0],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->y + sh->ds->conf.shadow_y - sh->ds->conf.blur_size);
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->ds->conf->shadow_y - sh->ds->conf->blur_size);
|
||||
sx = 0;
|
||||
sy = 0;
|
||||
ssw = sh->w + (sh->ds->conf.blur_size * 2);
|
||||
ssh = sh->h + (sh->ds->conf.blur_size * 2);
|
||||
ssw = sh->w + (sh->ds->conf->blur_size * 2);
|
||||
ssh = sh->h + (sh->ds->conf->blur_size * 2);
|
||||
_ds_shadow_object_pixels_set(sh->object[0], pix, pix_w, pix_h,
|
||||
sx, sy, ssw, ssh);
|
||||
if (evas_object_visible_get(sh->object[0]))
|
||||
|
@ -883,55 +794,55 @@ _ds_shadow_recalc(Shadow *sh)
|
|||
else
|
||||
{
|
||||
sh->square = 1;
|
||||
pix_w = sh->w + (sh->ds->conf.blur_size * 2);
|
||||
pix_h = sh->h + (sh->ds->conf.blur_size * 2);
|
||||
pix_w = sh->w + (sh->ds->conf->blur_size * 2);
|
||||
pix_h = sh->h + (sh->ds->conf->blur_size * 2);
|
||||
pix = calloc(1, pix_w * pix_h * sizeof(unsigned char));
|
||||
sx = sh->ds->conf.blur_size;
|
||||
sy = sh->ds->conf.blur_size;
|
||||
sxx = pix_w - sh->ds->conf.blur_size;
|
||||
syy = pix_h - sh->ds->conf.blur_size;
|
||||
sx = sh->ds->conf->blur_size;
|
||||
sy = sh->ds->conf->blur_size;
|
||||
sxx = pix_w - sh->ds->conf->blur_size;
|
||||
syy = pix_h - sh->ds->conf->blur_size;
|
||||
_ds_gauss_fill(pix, pix_w, pix_h, 255, sx, sy, sxx, syy);
|
||||
sx = sh->ds->conf.blur_size * 2;
|
||||
sy = sh->ds->conf.blur_size * 2;
|
||||
ssw = pix_w - (sh->ds->conf.blur_size * 4);
|
||||
ssh = pix_h - (sh->ds->conf.blur_size * 4);
|
||||
sx = sh->ds->conf->blur_size * 2;
|
||||
sy = sh->ds->conf->blur_size * 2;
|
||||
ssw = pix_w - (sh->ds->conf->blur_size * 4);
|
||||
ssh = pix_h - (sh->ds->conf->blur_size * 4);
|
||||
_ds_gauss_blur(pix, pix_w, pix_h,
|
||||
sh->ds->table.gauss, sh->ds->conf.blur_size,
|
||||
sh->ds->table.gauss, sh->ds->conf->blur_size,
|
||||
sx, sy, ssw, ssh);
|
||||
evas_object_move(sh->object[0],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->y + sh->ds->conf.shadow_y - sh->ds->conf.blur_size);
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->ds->conf->shadow_y - sh->ds->conf->blur_size);
|
||||
evas_object_move(sh->object[1],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y);
|
||||
evas_object_move(sh->object[2],
|
||||
sh->x + sh->w,
|
||||
sh->y);
|
||||
evas_object_move(sh->object[3],
|
||||
sh->x + sh->ds->conf.shadow_x - sh->ds->conf.blur_size,
|
||||
sh->x + sh->ds->conf->shadow_x - sh->ds->conf->blur_size,
|
||||
sh->y + sh->h);
|
||||
sx = 0;
|
||||
sy = 0;
|
||||
ssw = sh->w + (sh->ds->conf.blur_size * 2);
|
||||
ssh = sh->ds->conf.blur_size - sh->ds->conf.shadow_y;
|
||||
ssw = sh->w + (sh->ds->conf->blur_size * 2);
|
||||
ssh = sh->ds->conf->blur_size - sh->ds->conf->shadow_y;
|
||||
_ds_shadow_object_pixels_set(sh->object[0], pix, pix_w, pix_h,
|
||||
sx, sy, ssw, ssh);
|
||||
sx = 0;
|
||||
sy = sh->ds->conf.blur_size - sh->ds->conf.shadow_y;
|
||||
ssw = sh->ds->conf.blur_size - sh->ds->conf.shadow_x;
|
||||
sy = sh->ds->conf->blur_size - sh->ds->conf->shadow_y;
|
||||
ssw = sh->ds->conf->blur_size - sh->ds->conf->shadow_x;
|
||||
ssh = sh->h;
|
||||
_ds_shadow_object_pixels_set(sh->object[1], pix, pix_w, pix_h,
|
||||
sx, sy, ssw, ssh);
|
||||
sx = sh->ds->conf.blur_size - sh->ds->conf.shadow_y + sh->w;
|
||||
sy = sh->ds->conf.blur_size - sh->ds->conf.shadow_y;
|
||||
ssw = sh->ds->conf.blur_size + sh->ds->conf.shadow_x;
|
||||
sx = sh->ds->conf->blur_size - sh->ds->conf->shadow_y + sh->w;
|
||||
sy = sh->ds->conf->blur_size - sh->ds->conf->shadow_y;
|
||||
ssw = sh->ds->conf->blur_size + sh->ds->conf->shadow_x;
|
||||
ssh = sh->h;
|
||||
_ds_shadow_object_pixels_set(sh->object[2], pix, pix_w, pix_h,
|
||||
sx, sy, ssw, ssh);
|
||||
sx = 0;
|
||||
sy = sh->ds->conf.blur_size - sh->ds->conf.shadow_y + sh->h;
|
||||
ssw = sh->w + (sh->ds->conf.blur_size * 2);
|
||||
ssh = sh->ds->conf.blur_size + sh->ds->conf.shadow_y;
|
||||
sy = sh->ds->conf->blur_size - sh->ds->conf->shadow_y + sh->h;
|
||||
ssw = sh->w + (sh->ds->conf->blur_size * 2);
|
||||
ssh = sh->ds->conf->blur_size + sh->ds->conf->shadow_y;
|
||||
_ds_shadow_object_pixels_set(sh->object[3], pix, pix_w, pix_h,
|
||||
sx, sy, ssw, ssh);
|
||||
if (evas_object_visible_get(sh->object[0]))
|
||||
|
@ -1040,8 +951,8 @@ _ds_config_darkness_set(Dropshadow *ds, double v)
|
|||
|
||||
if (v < 0.0) v = 0.0;
|
||||
else if (v > 1.0) v = 1.0;
|
||||
if (ds->conf.shadow_darkness == v) return;
|
||||
ds->conf.shadow_darkness = v;
|
||||
if (ds->conf->shadow_darkness == v) return;
|
||||
ds->conf->shadow_darkness = v;
|
||||
for (l = ds->shadows; l; l = l->next)
|
||||
{
|
||||
Shadow *sh;
|
||||
|
@ -1051,7 +962,7 @@ _ds_config_darkness_set(Dropshadow *ds, double v)
|
|||
for (i = 0; i < 4; i++)
|
||||
evas_object_color_set(sh->object[i],
|
||||
255, 255, 255,
|
||||
255 * ds->conf.shadow_darkness);
|
||||
255 * ds->conf->shadow_darkness);
|
||||
}
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
@ -1061,9 +972,9 @@ _ds_config_shadow_xy_set(Dropshadow *ds, int x, int y)
|
|||
{
|
||||
Evas_List *l;
|
||||
|
||||
if ((ds->conf.shadow_x == x) && (ds->conf.shadow_y == y)) return;
|
||||
ds->conf.shadow_x = x;
|
||||
ds->conf.shadow_y = y;
|
||||
if ((ds->conf->shadow_x == x) && (ds->conf->shadow_y == y)) return;
|
||||
ds->conf->shadow_x = x;
|
||||
ds->conf->shadow_y = y;
|
||||
for (l = ds->shadows; l; l = l->next)
|
||||
{
|
||||
Shadow *sh;
|
||||
|
@ -1080,8 +991,8 @@ _ds_config_blur_set(Dropshadow *ds, int blur)
|
|||
Evas_List *l;
|
||||
|
||||
if (blur < 0) blur = 0;
|
||||
if (ds->conf.blur_size == blur) return;
|
||||
ds->conf.blur_size = blur;
|
||||
if (ds->conf->blur_size == blur) return;
|
||||
ds->conf->blur_size = blur;
|
||||
|
||||
_ds_blur_init(ds);
|
||||
for (l = ds->shadows; l; l = l->next)
|
||||
|
@ -1100,17 +1011,17 @@ _ds_blur_init(Dropshadow *ds)
|
|||
int i;
|
||||
|
||||
if (ds->table.gauss) free(ds->table.gauss);
|
||||
ds->table.gauss_size = (ds->conf.blur_size * 2) - 1;
|
||||
ds->table.gauss_size = (ds->conf->blur_size * 2) - 1;
|
||||
ds->table.gauss = calloc(1, ds->table.gauss_size * sizeof(unsigned char));
|
||||
|
||||
ds->table.gauss[ds->conf.blur_size - 1] = 255;
|
||||
for (i = 1; i < (ds->conf.blur_size - 1); i++)
|
||||
ds->table.gauss[ds->conf->blur_size - 1] = 255;
|
||||
for (i = 1; i < (ds->conf->blur_size - 1); i++)
|
||||
{
|
||||
double v;
|
||||
|
||||
v = (double)i / (ds->conf.blur_size - 2);
|
||||
ds->table.gauss[ds->conf.blur_size - 1 + i] =
|
||||
ds->table.gauss[ds->conf.blur_size - 1 - i] =
|
||||
v = (double)i / (ds->conf->blur_size - 2);
|
||||
ds->table.gauss[ds->conf->blur_size - 1 + i] =
|
||||
ds->table.gauss[ds->conf->blur_size - 1 - i] =
|
||||
_ds_gauss_int(-1.5 + (v * 3.0)) * 255.0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Dropshadow Dropshadow;
|
||||
typedef struct _Shadow Shadow;
|
||||
typedef struct _Shadow Shadow;
|
||||
|
||||
struct _Config
|
||||
{
|
||||
int shadow_x, shadow_y;
|
||||
int blur_size;
|
||||
double shadow_darkness;
|
||||
};
|
||||
|
||||
struct _Dropshadow
|
||||
{
|
||||
|
@ -10,12 +18,9 @@ struct _Dropshadow
|
|||
Evas_List *shadows;
|
||||
Evas_List *cons;
|
||||
E_Before_Idler *idler_before;
|
||||
|
||||
struct {
|
||||
int shadow_x, shadow_y;
|
||||
int blur_size;
|
||||
double shadow_darkness;
|
||||
} conf;
|
||||
|
||||
E_Config_DD *conf_edd;
|
||||
Config *conf;
|
||||
|
||||
struct {
|
||||
unsigned char *gauss;
|
||||
|
|
Loading…
Reference in New Issue