#include <Elementary.h>
#include "elm_priv.h"
+EAPI int ELM_EVENT_CONFIG_ALL_CHANGED = 0;
Elm_Config *_elm_config = NULL;
char *_elm_profile = NULL;
static Eet_Data_Descriptor *_config_edd = NULL;
static Eet_Data_Descriptor *_config_font_overlay_edd = NULL;
+static Eet_Data_Descriptor *_config_color_edd = NULL;
+static Eet_Data_Descriptor *_config_color_palette_edd = NULL;
+const char *_elm_preferred_engine = NULL;
static Ecore_Poller *_elm_cache_flush_poller = NULL;
"sdl",
"software_16_sdl",
"opengl_sdl",
+ "buffer",
+ "ews",
+ "opengl_cocoa",
+ "psl1ght",
+ "wayland_shm",
+ "wayland_egl",
NULL
};
#ifdef HAVE_ELEMENTARY_X
static Ecore_Event_Handler *_prop_change_handler = NULL;
+static Ecore_Timer *_prop_all_update_timer = NULL;
+static Ecore_Timer *_prop_change_delay_timer = NULL;
static Ecore_X_Window _root_1st = 0;
-#define ATOM_COUNT 22
+#define ATOM_COUNT 2
static Ecore_X_Atom _atom[ATOM_COUNT];
static Ecore_X_Atom _atom_config = 0;
static const char *_atom_names[ATOM_COUNT] =
{
- "ENLIGHTENMENT_SCALE",
- "ENLIGHTENMENT_FINGER_SIZE",
- "ENLIGHTENMENT_THEME",
- "ENLIGHTENMENT_PROFILE",
- "ENLIGHTENMENT_FONT_OVERLAY",
- "ENLIGHTENMENT_CACHE_FLUSH_INTERVAL",
- "ENLIGHTENMENT_CACHE_FLUSH_ENABLE",
- "ENLIGHTENMENT_FONT_CACHE",
- "ENLIGHTENMENT_IMAGE_CACHE",
- "ENLIGHTENMENT_EDJE_FILE_CACHE",
- "ENLIGHTENMENT_EDJE_COLLECTION_CACHE",
- "ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE",
- "ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION",
- "ENLIGHTENMENT_THUMBSCROLL_ENABLE",
- "ENLIGHTENMENT_THUMBSCROLL_THRESHOLD",
- "ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD",
- "ENLIGHTENMENT_THUMBSCROLL_FRICTION",
- "ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION",
- "ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION",
- "ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION",
- "ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION",
- "ENLIGHTENMENT_INPUT_PANEL",
- "ENLIGHTENMENT_AUTOCAPITAL_ALLOW",
- "ENLIGHTENMENT_AUTOPERIOD_ALLOW",
- "ENLIGHTENMENT_CONFIG"
+ "ELM_PROFILE",
+ "ELM_CONFIG"
};
-#define ATOM_E_SCALE 0
-#define ATOM_E_FINGER_SIZE 1
-#define ATOM_E_THEME 2
-#define ATOM_E_PROFILE 3
-#define ATOM_E_FONT_OVERLAY 4
-#define ATOM_E_CACHE_FLUSH_INTERVAL 5
-#define ATOM_E_CACHE_FLUSH_ENABLE 6
-#define ATOM_E_FONT_CACHE 7
-#define ATOM_E_IMAGE_CACHE 8
-#define ATOM_E_EDJE_FILE_CACHE 9
-#define ATOM_E_EDJE_COLLECTION_CACHE 10
-#define ATOM_E_THUMBSCROLL_BOUNCE_ENABLE 11
-#define ATOM_E_THUMBSCROLL_BOUNCE_FRICTION 12
-#define ATOM_E_THUMBSCROLL_ENABLE 13
-#define ATOM_E_THUMBSCROLL_THRESHOLD 14
-#define ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD 15
-#define ATOM_E_THUMBSCROLL_FRICTION 16
-#define ATOM_E_THUMBSCROLL_BORDER_FRICTION 17
-#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION 18
-#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 19
-#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION 20
-#define ATOM_E_CONFIG 21
-#define ATOM_E_INPUT_PANEL 22
-#define ATOM_E_AUTOCAPITAL_ALLOW 23
-#define ATOM_E_AUTOPERIOD_ALLOW 24
+#define ATOM_E_PROFILE 0
+#define ATOM_E_CONFIG 1
+static Eina_Bool _prop_all_update_cb(void *data __UNUSED__);
static Eina_Bool _prop_config_get(void);
+static void _prop_config_set(void);
static Eina_Bool _prop_change(void *data __UNUSED__,
int ev_type __UNUSED__,
void *ev);
static Eina_Bool
+_prop_all_update_cb(void *data __UNUSED__)
+{
+ _prop_config_set();
+ ecore_x_window_prop_string_set(_root_1st, _atom[ATOM_E_PROFILE],
+ _elm_profile);
+ _prop_all_update_timer = NULL;
+ return EINA_FALSE;
+}
+
+static Eina_Bool
_prop_config_get(void)
{
int size = 0;
unsigned char *data = NULL;
Elm_Config *config_data;
- snprintf(buf, sizeof(buf), "ENLIGHTENMENT_CONFIG_%s", _elm_profile);
+ snprintf(buf, sizeof(buf), "ELM_CONFIG_%s", _elm_profile);
atom = ecore_x_atom_get(buf);
_atom_config = atom;
if (!ecore_x_window_prop_property_get(_root_1st,
_elm_config_font_overlay_apply();
_elm_rescale();
_elm_recache();
+ ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
return EINA_TRUE;
}
-static Eina_Bool
-_prop_change(void *data __UNUSED__,
- int ev_type __UNUSED__,
- void *ev)
+static void
+_prop_config_set(void)
{
- Ecore_X_Event_Window_Property *event = ev;
+ unsigned char *config_data = NULL;
+ int size = 0;
- if (event->win == _root_1st)
+ config_data = eet_data_descriptor_encode(_config_edd, _elm_config, &size);
+ if (config_data)
{
- if (event->atom == _atom[ATOM_E_SCALE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- double pscale;
-
- pscale = _elm_config->scale;
- if (val > 0) _elm_config->scale = (double)val / 1000.0;
- if (pscale != _elm_config->scale)
- {
- _elm_rescale();
- _elm_recache();
- }
- }
- }
- else if (event->atom == _atom[ATOM_E_FINGER_SIZE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int pfinger_size;
-
- pfinger_size = _elm_config->finger_size;
- _elm_config->finger_size = val;
- if (pfinger_size != _elm_config->finger_size)
- {
- _elm_rescale();
- _elm_recache();
- }
- }
- }
- else if (event->atom == _atom[ATOM_E_THEME])
- {
- char *val = NULL;
-
- val = ecore_x_window_prop_string_get(event->win,
- event->atom);
- eina_stringshare_replace(&_elm_config->theme, val);
- if (val)
- {
- _elm_theme_parse(NULL, val);
- free(val);
- _elm_rescale();
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_PROFILE])
- {
- char *val = NULL;
-
- val = ecore_x_window_prop_string_get(event->win,
- event->atom);
- if (val)
- {
- int changed = 0;
-
- if (_elm_profile)
- {
- if (strcmp(_elm_profile, val)) changed = 1;
- free(_elm_profile);
- }
- _elm_profile = val;
- if (changed)
- {
- if (!_prop_config_get())
- {
- _config_free();
- _config_load();
- _config_apply();
- _elm_config_font_overlay_apply();
- _elm_rescale();
- }
- }
- }
- }
- else if (event->atom == _atom[ATOM_E_FONT_OVERLAY])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _config_free();
- _config_load();
- _config_apply();
- _elm_config_font_overlay_apply();
- _elm_rescale();
- }
- }
- else if (event->atom == _atom[ATOM_E_CACHE_FLUSH_INTERVAL])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int cache_flush_interval;
-
- cache_flush_interval = _elm_config->cache_flush_poll_interval;
- _elm_config->cache_flush_poll_interval = val;
- if (cache_flush_interval !=
- _elm_config->cache_flush_poll_interval)
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_CACHE_FLUSH_ENABLE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->cache_flush_enable = !!val;
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_FONT_CACHE])
- {
- unsigned int val = 1000;
+ Ecore_X_Atom atom;
+ char buf[512];
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int font_cache;
-
- font_cache = _elm_config->font_cache;
- _elm_config->font_cache = val;
- if (font_cache != _elm_config->font_cache)
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_IMAGE_CACHE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int image_cache;
-
- image_cache = _elm_config->image_cache;
- _elm_config->image_cache = val;
- if (image_cache != _elm_config->image_cache)
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_EDJE_FILE_CACHE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int edje_file_cache;
-
- edje_file_cache = _elm_config->edje_cache;
- _elm_config->edje_cache = val;
- if (edje_file_cache != _elm_config->edje_cache)
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_EDJE_COLLECTION_CACHE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int edje_collection_cache;
-
- edje_collection_cache = _elm_config->edje_collection_cache;
- _elm_config->edje_collection_cache = val;
- if (edje_collection_cache !=
- _elm_config->edje_collection_cache)
- _elm_recache();
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BOUNCE_ENABLE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->thumbscroll_bounce_enable = !!val;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BOUNCE_FRICTION])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- if (val > 0)
- _elm_config->thumbscroll_bounce_friction =
- (double)val / 1000.0;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_ENABLE])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->thumbscroll_enable = !!val;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_THRESHOLD])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- if (val > 0) _elm_config->thumbscroll_threshold = val;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->thumbscroll_momentum_threshold =
- (double)val / 1000.0;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_FRICTION])
- {
- unsigned int val = 1000;
+ snprintf(buf, sizeof(buf), "ELM_CONFIG_%s", _elm_profile);
+ atom = ecore_x_atom_get(buf);
+ _atom_config = atom;
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->thumbscroll_friction = (double)val / 1000.0;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BORDER_FRICTION])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->thumbscroll_border_friction =
- (double)val / 1000.0;
- }
- }
- else if (event->atom == _atom[ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION])
- {
- unsigned int val = 1000;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->page_scroll_friction =
- (double)val / 1000.0;
- }
- }
- else if (event->atom ==
- _atom[ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION])
- {
- unsigned int val = 1000;
+ ecore_x_window_prop_property_set(_root_1st, _atom_config,
+ _atom[ATOM_E_CONFIG], 8,
+ config_data, size);
+ free(config_data);
+ }
+}
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->bring_in_scroll_friction =
- (double)val / 1000.0;
- }
- }
- else if (event->atom ==
- _atom[ATOM_E_THUMBSCROLL_ZOOM_FRICTION])
- {
- unsigned int val = 1000;
+static Eina_Bool
+_prop_change_delay_cb(void *data __UNUSED__)
+{
+ char *s;
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- _elm_config->zoom_friction = (double)val / 1000.0;
- }
- }
- else if (event->atom == _atom[ATOM_E_INPUT_PANEL])
- {
- unsigned int val = 0;
+ s = ecore_x_window_prop_string_get(_root_1st, _atom[ATOM_E_PROFILE]);
+ if (s)
+ {
+ if (_elm_profile) free(_elm_profile);
+ _elm_profile = s;
+ }
+ _prop_config_get();
+ _prop_change_delay_timer = NULL;
+ return EINA_FALSE;
+}
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int input_panel_enable;
-
- input_panel_enable = _elm_config->input_panel_enable;
- _elm_config->input_panel_enable = val;
- if (input_panel_enable != _elm_config->input_panel_enable)
- {
- edje_input_panel_enabled_set(_elm_config->input_panel_enable);
- }
- }
- }
- else if (event->atom == _atom[ATOM_E_AUTOCAPITAL_ALLOW])
- {
- unsigned int val = 0;
+static Eina_Bool
+_prop_change(void *data __UNUSED__,
+ int ev_type __UNUSED__,
+ void *ev)
+{
+ Ecore_X_Event_Window_Property *event = ev;
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int autocapital_allow;
-
- autocapital_allow = _elm_config->autocapital_allow;
- _elm_config->autocapital_allow = val;
- if (autocapital_allow != _elm_config->autocapital_allow)
- {
- edje_autocapitalization_allow_set(_elm_config->autocapital_allow);
- }
- }
- }
- else if (event->atom == _atom[ATOM_E_AUTOPERIOD_ALLOW])
+ if (event->win == _root_1st)
+ {
+ if (event->atom == _atom[ATOM_E_PROFILE])
{
- unsigned int val = 0;
-
- if (ecore_x_window_prop_card32_get(event->win,
- event->atom,
- &val, 1) > 0)
- {
- int autoperiod_allow;
-
- autoperiod_allow = _elm_config->autoperiod_allow;
- _elm_config->autoperiod_allow = val;
- if (autoperiod_allow != _elm_config->autoperiod_allow)
- {
- edje_autoperiod_allow_set(_elm_config->autoperiod_allow);
- }
- }
+ if (_prop_change_delay_timer) ecore_timer_del(_prop_change_delay_timer);
+ _prop_change_delay_timer = ecore_timer_add(0.1, _prop_change_delay_cb, NULL);
}
else if (((_atom_config > 0) && (event->atom == _atom_config)) ||
(event->atom == _atom[ATOM_E_CONFIG]))
{
- _prop_config_get();
+ if (_prop_change_delay_timer) ecore_timer_del(_prop_change_delay_timer);
+ _prop_change_delay_timer = ecore_timer_add(0.1, _prop_change_delay_cb, NULL);
}
}
return ECORE_CALLBACK_PASS_ON;
eet_data_descriptor_free(_config_edd);
return;
}
+
+ memset(&eddc, 0, sizeof(eddc)); /* just in case... */
+ EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_Color_RGBA);
+ eddc.func.str_direct_alloc = NULL;
+ eddc.func.str_direct_free = NULL;
+
+ _config_color_edd = eet_data_descriptor_stream_new(&eddc);
+ if (!_config_color_edd)
+ {
+ printf("EEEK! eet_data_descriptor_stream_new() failed\n");
+ eet_data_descriptor_free(_config_edd);
+ return;
+ }
+
+ memset(&eddc, 0, sizeof(eddc)); /* just in case... */
+ EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_Custom_Palette);
+ eddc.func.str_direct_alloc = NULL;
+ eddc.func.str_direct_free = NULL;
+
+ _config_color_palette_edd = eet_data_descriptor_stream_new(&eddc);
+ if (!_config_color_palette_edd)
+ {
+ printf("EEEK! eet_data_descriptor_stream_new() failed\n");
+ eet_data_descriptor_free(_config_edd);
+ return;
+ }
+
#define T_INT EET_T_INT
#define T_DOUBLE EET_T_DOUBLE
#define T_STRING EET_T_STRING
#undef T
#undef D
+#define T Elm_Color_RGBA
+#define D _config_color_edd
+ ELM_CONFIG_VAL(D, T, r, EET_T_UINT);
+ ELM_CONFIG_VAL(D, T, g, EET_T_UINT);
+ ELM_CONFIG_VAL(D, T, b, EET_T_UINT);
+ ELM_CONFIG_VAL(D, T, a, EET_T_UINT);
+#undef T
+#undef D
+
+#define T Elm_Custom_Palette
+#define D _config_color_palette_edd
+ ELM_CONFIG_VAL(D, T, palette_name, EET_T_STRING);
+ ELM_CONFIG_LIST(D, T, color_list, _config_color_edd);
+#undef T
+#undef D
+
#define T Elm_Config
#define D _config_edd
ELM_CONFIG_VAL(D, T, config_version, T_INT);
ELM_CONFIG_VAL(D, T, thumbscroll_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, thumbscroll_bounce_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, thumbscroll_border_friction, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, thumbscroll_sensitivity_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, page_scroll_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, bring_in_scroll_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, longpress_timeout, T_DOUBLE);
ELM_CONFIG_VAL(D, T, effect_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, desktop_entry, T_UCHAR);
- ELM_CONFIG_VAL(D, T, input_panel_enable, T_INT);
ELM_CONFIG_VAL(D, T, password_show_last, T_UCHAR);
ELM_CONFIG_VAL(D, T, password_show_last_timeout, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_zoom_finger_enable, T_UCHAR);
+ ELM_CONFIG_VAL(D, T, glayer_zoom_finger_factor, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_zoom_wheel_factor, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_zoom_distance_tolerance, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_rotate_finger_enable, T_UCHAR);
+ ELM_CONFIG_VAL(D, T, glayer_rotate_angular_tolerance, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_line_min_length, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_line_distance_tolerance, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_line_angular_tolerance, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, glayer_flick_time_limit_ms, T_INT);
+ ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, access_mode, T_INT);
+ ELM_CONFIG_VAL(D, T, glayer_continues_enable, T_UCHAR);
+ ELM_CONFIG_VAL(D, T, week_start, T_INT);
+ ELM_CONFIG_VAL(D, T, weekend_start, T_INT);
+ ELM_CONFIG_VAL(D, T, weekend_len, T_INT);
+ ELM_CONFIG_LIST(D, T, color_palette, _config_color_palette_edd);
#undef T
#undef D
#undef T_INT
eet_data_descriptor_free(_config_font_overlay_edd);
_config_font_overlay_edd = NULL;
}
+
+ if (_config_color_edd)
+ {
+ eet_data_descriptor_free(_config_color_edd);
+ _config_color_edd = NULL;
+ }
+
+ if (_config_color_palette_edd)
+ {
+ eet_data_descriptor_free(_config_color_palette_edd);
+ _config_color_palette_edd = NULL;
+ }
}
static int
home = "/";
user_dir_len = eina_str_join_len(dst, size, '/', home, strlen(home),
- ".elementary", sizeof(".elementary") - 1);
+ ELEMENTARY_BASE_DIR, sizeof(ELEMENTARY_BASE_DIR) - 1);
off = user_dir_len + 1;
if (off >= size)
{
Elm_Text_Class *tc;
tc = malloc(sizeof(*tc));
+ if (!tc) continue;
*tc = _elm_text_classes[i];
}
Eina_List *
+_elm_config_color_list_get(const char *palette_name)
+{
+ Eina_List *plist;
+ Elm_Custom_Palette *cpalette;
+ EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette)
+ {
+ if (strcmp(cpalette->palette_name, palette_name))
+ continue;
+ return cpalette->color_list;
+ }
+ return NULL;
+}
+
+void
+_elm_config_color_set(const char *palette_name,
+ int r,
+ int g,
+ int b,
+ int a)
+{
+ Eina_List *plist;
+ Elm_Custom_Palette *cpalette;
+ Elm_Color_RGBA *color;
+ EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette)
+ {
+ if (strcmp(cpalette->palette_name, palette_name))
+ continue;
+
+ color = calloc(1, sizeof(Elm_Color_RGBA));
+ color->r = r;
+ color->g = g;
+ color->b = b;
+ color->a = a;
+ cpalette->color_list = eina_list_prepend(cpalette->color_list,
+ color);
+ }
+}
+
+void
+_elm_config_colors_free(const char *palette_name)
+{
+ Eina_List *plist;
+ Elm_Custom_Palette *cpalette;
+ Elm_Color_RGBA *color;
+ EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette)
+ {
+ if (strcmp(cpalette->palette_name, palette_name))
+ continue;
+
+ EINA_LIST_FREE(cpalette->color_list, color)
+ {
+ free(color);
+ }
+ }
+}
+
+Eina_List *
_elm_config_profiles_list(void)
{
- const Eina_File_Direct_Info *info;
+ Eina_File_Direct_Info *info;
Eina_List *flist = NULL;
Eina_Iterator *file_it;
char buf[PATH_MAX];
EINA_ITERATOR_FOREACH(file_it, info)
{
+ Eina_Stat st;
+
+ if (eina_file_statat(eina_iterator_container_get(file_it), info, &st))
+ {
+ ERR("this is bad.");
+ continue;
+ }
if (info->name_length >= len)
continue;
continue;
}
}
- return flist;
-
eina_iterator_free(file_it);
+ return flist;
list_free:
EINA_LIST_FREE(flist, dir)
{
Elm_Font_Overlay *fo;
const char *fontdir;
+ Elm_Custom_Palette *palette;
+ Elm_Color_RGBA *color;
if (!_elm_config) return;
EINA_LIST_FREE(_elm_config->font_dirs, fontdir)
if (fo->font) eina_stringshare_del(fo->font);
free(fo);
}
+ EINA_LIST_FREE(_elm_config->color_palette, palette)
+ {
+ if (palette->palette_name) eina_stringshare_del(palette->palette_name);
+ EINA_LIST_FREE(palette->color_list, color) free(color);
+ free(palette);
+ }
if (_elm_config->theme) eina_stringshare_del(_elm_config->theme);
if (_elm_config->modules) eina_stringshare_del(_elm_config->modules);
free(_elm_config);
edje_password_show_last_set(_elm_config->password_show_last);
edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
if (_elm_config->modules) _elm_module_parse(_elm_config->modules);
- edje_input_panel_enabled_set(_elm_config->input_panel_enable);
- edje_autocapitalization_allow_set(_elm_config->autocapital_allow);
- edje_autoperiod_allow_set(_elm_config->autoperiod_allow);
- if (_elm_config->modules) _elm_module_parse(_elm_config->modules);
}
static Eina_Bool
_elm_cache_flush_cb(void *data __UNUSED__)
{
- elm_all_flush();
+ elm_cache_all_flush();
return ECORE_CALLBACK_RENEW;
}
Eina_List *l;
Evas_Object *win;
- elm_all_flush();
+ elm_cache_all_flush();
EINA_LIST_FOREACH(_elm_win_list, l, win)
{
* profile. Fallback to default before moving on */
// config load fail - defaults
- /* XXX: do these make sense? Only if it's valid to install the lib
- * without the config, but do we want that? */
+ // why are these here? well if they are, it means you can make a gui
+ // config recovery app i guess...
_elm_config = ELM_NEW(Elm_Config);
_elm_config->config_version = ELM_CONFIG_VERSION;
_elm_config->engine = eina_stringshare_add("software_x11");
_elm_config->bring_in_scroll_friction = 0.5;
_elm_config->zoom_friction = 0.5;
_elm_config->thumbscroll_border_friction = 0.5;
+ _elm_config->thumbscroll_sensitivity_friction = 0.25; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
_elm_config->scroll_smooth_time_interval = 0.008;
_elm_config->scroll_smooth_amount = 1.0;
_elm_config->scroll_smooth_history_weight = 0.3;
_elm_config->is_mirrored = EINA_FALSE; /* Read sys value in env_get() */
_elm_config->password_show_last = EINA_FALSE;
_elm_config->password_show_last_timeout = 2.0;
+ _elm_config->glayer_zoom_finger_enable = EINA_TRUE;
+ _elm_config->glayer_zoom_finger_factor = 1.0;
+ _elm_config->glayer_zoom_wheel_factor = 0.05;
+ _elm_config->glayer_zoom_distance_tolerance = 1.0; /* 1 times elm_finger_size_get() */
+ _elm_config->glayer_rotate_finger_enable = EINA_TRUE;
+ _elm_config->glayer_rotate_angular_tolerance = 2.0; /* 2 DEG */
+ _elm_config->glayer_line_min_length = 1.0; /* 1 times elm_finger_size_get() */
+ _elm_config->glayer_line_distance_tolerance = 3.0; /* 3 times elm_finger_size_get() */
+ _elm_config->glayer_line_angular_tolerance = 20.0; /* 20 DEG */
+ _elm_config->glayer_flick_time_limit_ms = 120; /* ms to finish flick */
+ _elm_config->glayer_long_tap_start_timeout = 1.2; /* 1.2 second to start long-tap */
+ _elm_config->glayer_continues_enable = EINA_TRUE; /* Continue gestures default */
+ _elm_config->week_start = 1; /* monday */
+ _elm_config->weekend_start = 6; /* saturday */
+ _elm_config->weekend_len = 2;
+ _elm_config->color_palette = NULL;
}
static const char *
ok = ecore_file_mkpath(buf);
if (!ok)
{
- ERR("Problem acessing Elementary's user configuration directory: %s",
+ ERR("Problem accessing Elementary's user configuration directory: %s",
buf);
return EINA_FALSE;
}
else if ((!strcasecmp(s, "directfb")) ||
(!strcasecmp(s, "dfb")))
eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_DIRECTFB);
+ else if ((!strcasecmp(s, "psl1ght")))
+ eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_PSL1GHT);
else if ((!strcasecmp(s, "sdl")) ||
(!strcasecmp(s, "software-sdl")) ||
(!strcasecmp(s, "software_sdl")))
(!strcasecmp(s, "gl-sdl")) ||
(!strcasecmp(s, "gl_sdl")))
eina_stringshare_replace(&_elm_config->engine, ELM_OPENGL_SDL);
+ else if ((!strcasecmp(s, "opengl-cocoa")) ||
+ (!strcasecmp(s, "opengl_cocoa")) ||
+ (!strcasecmp(s, "gl-cocoa")) ||
+ (!strcasecmp(s, "gl_cocoa")))
+ eina_stringshare_replace(&_elm_config->engine, ELM_OPENGL_COCOA);
else if ((!strcasecmp(s, "gdi")) ||
(!strcasecmp(s, "software-gdi")) ||
(!strcasecmp(s, "software_gdi")))
(!strcasecmp(s, "software-16-wince-gdi")) ||
(!strcasecmp(s, "software_16_wince_gdi")))
eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_WINCE);
+ else if (!strcasecmp(s, "buffer"))
+ eina_stringshare_replace(&_elm_config->engine, ELM_BUFFER);
else if ((!strncmp(s, "shot:", 5)))
eina_stringshare_replace(&_elm_config->engine, s);
+ else if ((!strcasecmp(s, "ews")))
+ eina_stringshare_replace(&_elm_config->engine, ELM_EWS);
+ else if ((!strcasecmp(s, "wayland_shm")))
+ eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_SHM);
+ else if ((!strcasecmp(s, "wayland_egl")))
+ eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_EGL);
+ else
+ ERR("Unknown engine '%s'.", s);
}
s = getenv("ELM_VSYNC");
_elm_config->thumbscroll_border_friction = friction;
}
+ s = getenv("ELM_THUMBSCROLL_SENSITIVITY_FRICTION");
+ if (s)
+ {
+ friction = atof(s);
+ if (friction < 0.1)
+ friction = 0.1;
+
+ if (friction > 1.0)
+ friction = 1.0;
+
+ _elm_config->thumbscroll_sensitivity_friction = friction;
+ }
s = getenv("ELM_SCROLL_SMOOTH_TIME_INTERVAL");
if (s) _elm_config->scroll_smooth_time_interval = atof(s);
s = getenv("ELM_SCROLL_SMOOTH_AMOUNT");
s = getenv("ELM_SCALE");
if (s) _elm_config->scale = atof(s);
- _elm_config->finger_size =
- (double)_elm_config->finger_size * _elm_config->scale;
s = getenv("ELM_FINGER_SIZE");
if (s) _elm_config->finger_size = atoi(s);
s = getenv("ELM_ICON_SIZE");
if (s) _elm_config->icon_size = atoi(s);
- s = getenv("ELM_INPUT_PANEL");
- if (s) _elm_config->input_panel_enable = atoi(s);
-
s = getenv("ELM_LONGPRESS_TIMEOUT");
if (s) _elm_config->longpress_timeout = atof(s);
if (_elm_config->longpress_timeout < 0.0)
s = getenv("ELM_DESKTOP_ENTRY");
if (s) _elm_config->desktop_entry = !!atoi(s);
+ s = getenv("ELM_ACCESS_MODE");
+ if (s) _elm_config->access_mode = ELM_ACCESS_MODE_ON;
}
-/**
- * Get the system mirrored mode. This determines the default mirrored mode
- * of widgets.
- *
- * @return EINA_TRUE if mirrored is set, EINA_FALSE otherwise
- */
EAPI Eina_Bool
-elm_mirrored_get(void)
+elm_config_mirrored_get(void)
{
return _elm_config->is_mirrored;
}
-/**
- * Set the system mirrored mode. This determines the default mirrored mode
- * of widgets.
- *
- * @param mirrored EINA_TRUE to set mirrored mode, EINA_FALSE to unset it.
- */
EAPI void
-elm_mirrored_set(Eina_Bool mirrored)
+elm_config_mirrored_set(Eina_Bool mirrored)
{
_elm_config->is_mirrored = mirrored;
_elm_rescale();
}
-void
-_elm_config_init(void)
+EAPI Eina_Bool
+elm_config_cursor_engine_only_get(void)
{
- _desc_init();
- _profile_fetch_from_conf();
- _config_load();
-// NOTE: Do not merge upstream code. Just leave it.
-// _env_get();
-// _config_apply();
-// _elm_config_font_overlay_apply();
-// _elm_recache();
+ return _elm_config->cursor_engine_only;
}
-void
-_elm_config_sub_init(void)
+EAPI void
+elm_config_cursor_engine_only_set(Eina_Bool engine_only)
{
- // NOTE: Do not merge upstream code. Just leave it.
- _env_get();
- _config_apply();
- _elm_config_font_overlay_apply();
- _elm_recache();
+ engine_only = !!engine_only;
+ _elm_config->cursor_engine_only = engine_only;
+}
+EINA_DEPRECATED EAPI double
+elm_tooltip_delay_get(void)
+{
+ return elm_config_tooltip_delay_get();
+}
+
+EINA_DEPRECATED EAPI Eina_Bool
+elm_tooltip_delay_set(double delay)
+{
+ elm_config_tooltip_delay_set(delay);
+ return EINA_TRUE;
+}
+
+EAPI double
+elm_config_tooltip_delay_get(void)
+{
+ return _elm_config->tooltip_delay;
+}
+
+EAPI void
+elm_config_tooltip_delay_set(double delay)
+{
+ if (delay < 0.0) return;
+ _elm_config->tooltip_delay = delay;
+}
+
+EAPI double
+elm_scale_get(void)
+{
+ return elm_config_scale_get();
+}
+
+EAPI double
+elm_config_scale_get(void)
+{
+ return _elm_config->scale;
+}
+
+EAPI void
+elm_scale_set(double scale)
+{
+ elm_config_scale_set(scale);
+}
+
+EAPI void
+elm_config_scale_set(double scale)
+{
+ if (_elm_config->scale == scale) return;
+ _elm_config->scale = scale;
+ _elm_rescale();
+}
+
+EAPI Eina_Bool
+elm_config_password_show_last_get(void)
+{
+ return _elm_config->password_show_last;
+}
+
+EAPI void
+elm_config_password_show_last_set(Eina_Bool password_show_last)
+{
+ if (_elm_config->password_show_last == password_show_last) return;
+ _elm_config->password_show_last = password_show_last;
+ edje_password_show_last_set(_elm_config->password_show_last);
+}
+
+EAPI double
+elm_config_password_show_last_timeout_get(void)
+{
+ return _elm_config->password_show_last_timeout;
+}
+
+EAPI void
+elm_config_password_show_last_timeout_set(double password_show_last_timeout)
+{
+ if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
+ _elm_config->password_show_last_timeout = password_show_last_timeout;
+ edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
+}
+
+EAPI Eina_Bool
+elm_config_save(void)
+{
+ return _elm_config_save();
+}
+
+EAPI void
+elm_config_reload(void)
+{
+ _elm_config_reload();
+}
+
+EAPI const char *
+elm_config_profile_get(void)
+{
+ return _elm_config_current_profile_get();
+}
+
+EAPI const char *
+elm_config_profile_dir_get(const char *profile,
+ Eina_Bool is_user)
+{
+ return _elm_config_profile_dir_get(profile, is_user);
+}
+
+EAPI void
+elm_config_profile_dir_free(const char *p_dir)
+{
+ free((void *)p_dir);
+}
+
+EAPI Eina_List *
+elm_config_profile_list_get(void)
+{
+ return _elm_config_profiles_list();
+}
+
+EAPI void
+elm_config_profile_list_free(Eina_List *l)
+{
+ const char *dir;
+
+ EINA_LIST_FREE(l, dir)
+ eina_stringshare_del(dir);
+}
+
+EAPI void
+elm_config_profile_set(const char *profile)
+{
+ EINA_SAFETY_ON_NULL_RETURN(profile);
+ _elm_config_profile_set(profile);
+}
+
+EAPI const char *
+elm_config_engine_get(void)
+{
+ return _elm_config->engine;
+}
+
+EAPI void
+elm_config_engine_set(const char *engine)
+{
+ EINA_SAFETY_ON_NULL_RETURN(engine);
+
+ _elm_config_engine_set(engine);
+}
+
+EAPI Eina_List *
+elm_config_text_classes_list_get(void)
+{
+ return _elm_config_text_classes_get();
+}
+
+EAPI void
+elm_config_text_classes_list_free(Eina_List *list)
+{
+ _elm_config_text_classes_free(list);
+}
+
+EAPI const Eina_List *
+elm_config_font_overlay_list_get(void)
+{
+ return _elm_config_font_overlays_list();
+}
+
+EAPI void
+elm_config_font_overlay_set(const char *text_class,
+ const char *font,
+ Evas_Font_Size size)
+{
+ EINA_SAFETY_ON_NULL_RETURN(text_class);
+ _elm_config_font_overlay_set(text_class, font, size);
+}
+
+EAPI void
+elm_config_font_overlay_unset(const char *text_class)
+{
+ EINA_SAFETY_ON_NULL_RETURN(text_class);
+ _elm_config_font_overlay_remove(text_class);
+}
+
+EAPI void
+elm_config_font_overlay_apply(void)
+{
+ _elm_config_font_overlay_apply();
+}
+// WRAPPER:: will be removed soon.
+EAPI Evas_Coord
+elm_finger_size_get(void)
+{
+ return elm_config_finger_size_get();
+}
+
+EAPI Evas_Coord
+elm_config_finger_size_get(void)
+{
+ return _elm_config->finger_size;
+}
+
+// WRAPPER:: will be removed soon.
+EAPI void
+elm_finger_size_set(Evas_Coord size)
+{
+ elm_config_finger_size_set(size);
+}
+
+EAPI void
+elm_config_finger_size_set(Evas_Coord size)
+{
+ if (_elm_config->finger_size == size) return;
+ _elm_config->finger_size = size;
+ _elm_rescale();
+}
+
+EAPI int
+elm_config_cache_flush_interval_get(void)
+{
+ return _elm_config->cache_flush_poll_interval;
+}
+
+EAPI void
+elm_config_cache_flush_interval_set(int size)
+{
+ if (_elm_config->cache_flush_poll_interval == size) return;
+ _elm_config->cache_flush_poll_interval = size;
+
+ _elm_recache();
+}
+
+EAPI Eina_Bool
+elm_config_cache_flush_enabled_get(void)
+{
+ return _elm_config->cache_flush_enable;
+}
+
+EAPI void
+elm_config_cache_flush_enabled_set(Eina_Bool enabled)
+{
+ enabled = !!enabled;
+ if (_elm_config->cache_flush_enable == enabled) return;
+ _elm_config->cache_flush_enable = enabled;
+
+ _elm_recache();
+}
+
+EINA_DEPRECATED EAPI int
+elm_font_cache_get(void)
+{
+ return elm_config_cache_font_cache_size_get();
+}
+
+EAPI int
+elm_config_cache_font_cache_size_get(void)
+{
+ return _elm_config->font_cache;
+}
+
+EINA_DEPRECATED EAPI void
+elm_font_cache_set(int size)
+{
+ elm_config_cache_font_cache_size_set(size);
+}
+
+EAPI void
+elm_config_cache_font_cache_size_set(int size)
+{
+ if (_elm_config->font_cache == size) return;
+ _elm_config->font_cache = size;
+
+ _elm_recache();
+}
+
+EINA_DEPRECATED EAPI int
+elm_image_cache_get(void)
+{
+ return elm_config_cache_image_cache_size_get();
+}
+
+EAPI int
+elm_config_cache_image_cache_size_get(void)
+{
+ return _elm_config->image_cache;
+}
+
+EINA_DEPRECATED EAPI void
+elm_image_cache_set(int size)
+{
+ elm_config_cache_image_cache_size_set(size);
+}
+
+EAPI void
+elm_config_cache_image_cache_size_set(int size)
+{
+ if (_elm_config->image_cache == size) return;
+ _elm_config->image_cache = size;
+
+ _elm_recache();
+}
+
+EINA_DEPRECATED EAPI int
+elm_edje_file_cache_get(void)
+{
+ return elm_config_cache_edje_file_cache_size_get();
+}
+
+EAPI int
+elm_config_cache_edje_file_cache_size_get()
+{
+ return _elm_config->edje_cache;
+}
+
+EINA_DEPRECATED EAPI void
+elm_edje_file_cache_set(int size)
+{
+ elm_config_cache_edje_file_cache_size_set(size);
+}
+
+EAPI void
+elm_config_cache_edje_file_cache_size_set(int size)
+{
+ if (_elm_config->edje_cache == size) return;
+ _elm_config->edje_cache = size;
+
+ _elm_recache();
+}
+
+EINA_DEPRECATED EAPI int
+elm_edje_collection_cache_get(void)
+{
+ return elm_config_cache_edje_collection_cache_size_get();
+}
+
+EAPI int
+elm_config_cache_edje_collection_cache_size_get(void)
+{
+ return _elm_config->edje_collection_cache;
+}
+
+EINA_DEPRECATED EAPI void
+elm_edje_collection_cache_set(int size)
+{
+ elm_config_cache_edje_collection_cache_size_set(size);
+}
+
+EAPI void
+elm_config_cache_edje_collection_cache_size_set(int size)
+{
+ if (_elm_config->edje_collection_cache == size) return;
+ _elm_config->edje_collection_cache = size;
+
+ _elm_recache();
+}
+
+EAPI Eina_Bool
+elm_config_focus_highlight_enabled_get(void)
+{
+ return _elm_config->focus_highlight_enable;
+}
+
+EAPI void
+elm_config_focus_highlight_enabled_set(Eina_Bool enable)
+{
+ _elm_config->focus_highlight_enable = !!enable;
+}
+
+EAPI Eina_Bool
+elm_config_focus_highlight_animate_get(void)
+{
+ return _elm_config->focus_highlight_animate;
+}
+
+EAPI void
+elm_config_focus_highlight_animate_set(Eina_Bool animate)
+{
+ _elm_config->focus_highlight_animate = !!animate;
+}
+
+EAPI Eina_Bool
+elm_config_scroll_bounce_enabled_get(void)
+{
+ return _elm_config->thumbscroll_bounce_enable;
+}
+
+EAPI void
+elm_config_scroll_bounce_enabled_set(Eina_Bool enabled)
+{
+ _elm_config->thumbscroll_bounce_enable = enabled;
+}
+
+EAPI double
+elm_config_scroll_bounce_friction_get(void)
+{
+ return _elm_config->thumbscroll_bounce_friction;
+}
+
+EAPI void
+elm_config_scroll_bounce_friction_set(double friction)
+{
+ _elm_config->thumbscroll_bounce_friction = friction;
+}
+
+EAPI double
+elm_config_scroll_page_scroll_friction_get(void)
+{
+ return _elm_config->page_scroll_friction;
+}
+
+EAPI void
+elm_config_scroll_page_scroll_friction_set(double friction)
+{
+ _elm_config->page_scroll_friction = friction;
+}
+
+EAPI double
+elm_config_scroll_bring_in_scroll_friction_get(void)
+{
+ return _elm_config->bring_in_scroll_friction;
+}
+
+EAPI void
+elm_config_scroll_bring_in_scroll_friction_set(double friction)
+{
+ _elm_config->bring_in_scroll_friction = friction;
+}
+
+EAPI double
+elm_config_scroll_zoom_friction_get(void)
+{
+ return _elm_config->zoom_friction;
+}
+
+EAPI void
+elm_config_scroll_zoom_friction_set(double friction)
+{
+ _elm_config->zoom_friction = friction;
+}
+
+EAPI Eina_Bool
+elm_config_scroll_thumbscroll_enabled_get(void)
+{
+ return _elm_config->thumbscroll_enable;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
+{
+ _elm_config->thumbscroll_enable = enabled;
+}
+
+EAPI unsigned int
+elm_config_scroll_thumbscroll_threshold_get(void)
+{
+ return _elm_config->thumbscroll_threshold;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold)
+{
+ _elm_config->thumbscroll_threshold = threshold;
+}
+
+EAPI double
+elm_config_scroll_thumbscroll_momentum_threshold_get(void)
+{
+ return _elm_config->thumbscroll_momentum_threshold;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold)
+{
+ _elm_config->thumbscroll_momentum_threshold = threshold;
+}
+
+EAPI double
+elm_config_scroll_thumbscroll_friction_get(void)
+{
+ return _elm_config->thumbscroll_friction;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_friction_set(double friction)
+{
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI double
+elm_config_scroll_thumbscroll_border_friction_get(void)
+{
+ return _elm_config->thumbscroll_border_friction;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_border_friction_set(double friction)
+{
+ if (friction < 0.0) friction = 0.0;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI double
+elm_config_scroll_thumbscroll_sensitivity_friction_get(void)
+{
+ return _elm_config->thumbscroll_sensitivity_friction;
+}
+
+EAPI void
+elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction)
+{
+ if (friction < 0.1) friction = 0.1;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI void
+elm_config_longpress_timeout_set(double longpress_timeout)
+{
+ _elm_config->longpress_timeout = longpress_timeout;
+}
+
+EAPI double
+elm_config_longpress_timeout_get(void)
+{
+ return _elm_config->longpress_timeout;
+}
+
+EAPI void
+elm_config_all_flush(void)
+{
+#ifdef HAVE_ELEMENTARY_X
+ if (_prop_all_update_timer) ecore_timer_del(_prop_all_update_timer);
+ _prop_all_update_timer = ecore_timer_add(0.1, _prop_all_update_cb, NULL);
+#endif
+}
+
+static void
+_translation_init()
+{
+#ifdef ENABLE_NLS
+ const char *cur_dom = textdomain(NULL);
+ const char *trans_comment = gettext("");
+ const char *msg_locale = setlocale(LC_MESSAGES, NULL);
+
+ /* Same concept as what glib does:
+ * We shouldn't translate if there are no translations for the
+ * application in the current locale + domain. (Unless locale is
+ * en_/C where translating only parts of the interface make some
+ * sense).
+ */
+ _elm_config->translate = !(strcmp (cur_dom, "messages") &&
+ !*trans_comment && strncmp (msg_locale, "en_", 3) &&
+ strcmp (msg_locale, "C"));
+#endif
+}
+
+void
+_elm_config_init(void)
+{
+ if (!ELM_EVENT_CONFIG_ALL_CHANGED)
+ ELM_EVENT_CONFIG_ALL_CHANGED = ecore_event_type_new();
+ _desc_init();
+ _profile_fetch_from_conf();
+ _config_load();
+ if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine);
+ if (_elm_config->engine)
+ _elm_preferred_engine = eina_stringshare_add(_elm_config->engine);
+ else
+ _elm_preferred_engine = NULL;
+ _translation_init();
+ _env_get();
+ _config_apply();
+ _elm_config_font_overlay_apply();
+ _elm_recache();
+}
+
+void
+_elm_config_sub_shutdown(void)
+{
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
ENGINE_COMPARE(ELM_XRENDER_X11) ||
- ENGINE_COMPARE(ELM_OPENGL_X11))
+ ENGINE_COMPARE(ELM_OPENGL_X11) ||
+ ENGINE_COMPARE(ELM_OPENGL_COCOA))
#undef ENGINE_COMPARE
{
#ifdef HAVE_ELEMENTARY_X
- unsigned int val = 1000;
+ ecore_x_disconnect();
+#endif
+ }
+}
+void
+_elm_config_sub_init(void)
+{
+#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
+ if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
+ ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
+ ENGINE_COMPARE(ELM_XRENDER_X11) ||
+ ENGINE_COMPARE(ELM_OPENGL_X11) ||
+ ENGINE_COMPARE(ELM_OPENGL_COCOA))
+#undef ENGINE_COMPARE
+ {
+#ifdef HAVE_ELEMENTARY_X
if (!ecore_x_init(NULL))
{
ERR("Cannot connect to X11 display. check $DISPLAY variable");
ECORE_X_EVENT_MASK_WINDOW_PROPERTY);
_prop_change_handler = ecore_event_handler_add
(ECORE_X_EVENT_WINDOW_PROPERTY, _prop_change, NULL);
- if (!getenv("ELM_SCALE"))
- {
- if (ecore_x_window_prop_card32_get(_root_1st,
- _atom[ATOM_E_SCALE],
- &val, 1) > 0)
- {
- if (val > 0)
- {
- _elm_config->scale = (double)val / 1000.0;
- // FIXME: hack until e export finger size too
- if (!getenv("ELM_FINGER_SIZE"))
- {
- _elm_config->finger_size = 40.0 * _elm_config->scale;
- }
- edje_scale_set(_elm_config->scale);
- }
- }
- }
- if (!getenv("ELM_FINGER_SIZE"))
- {
- if (ecore_x_window_prop_card32_get(_root_1st,
- _atom[ATOM_E_FINGER_SIZE],
- &val, 1) > 0)
- {
- if (val > 0)
- {
- _elm_config->finger_size = val;
- }
- }
- }
- if (!getenv("ELM_THEME"))
- {
- char *s;
-
- s = ecore_x_window_prop_string_get(_root_1st,
- _atom[ATOM_E_THEME]);
- if (s)
- {
- eina_stringshare_replace(&_elm_config->theme, s);
- _elm_theme_parse(NULL, s);
- free(s);
- }
- }
if (!getenv("ELM_PROFILE"))
{
char *s;
}
_elm_profile = s;
if (changed) _prop_config_get();
- }
- }
- if (!getenv("ELM_INPUT_PANEL"))
- {
- if (ecore_x_window_prop_card32_get(_root_1st,
- _atom[ATOM_E_INPUT_PANEL],
- &val, 1) > 0)
- {
- if (val > 0)
- {
- _elm_config->input_panel_enable = val;
- edje_input_panel_enabled_set(_elm_config->input_panel_enable);
- }
- }
- }
- if (ecore_x_window_prop_card32_get(_root_1st,
- _atom[ATOM_E_AUTOCAPITAL_ALLOW],
- &val, 1) > 0)
- {
- if (val > 0)
- {
- _elm_config->autocapital_allow = val;
- edje_autocapitalization_allow_set(_elm_config->autocapital_allow);
- }
- }
- if (ecore_x_window_prop_card32_get(_root_1st,
- _atom[ATOM_E_AUTOPERIOD_ALLOW],
- &val, 1) > 0)
- {
- if (val > 0)
- {
- _elm_config->autoperiod_allow = val;
- edje_autoperiod_allow_set(_elm_config->autoperiod_allow);
}
}
#endif
_elm_config->engine = eina_stringshare_add(engine);
}
+EAPI const char *
+elm_config_preferred_engine_get(void)
+{
+ return _elm_preferred_engine;
+}
+
+EAPI void
+elm_config_preferred_engine_set(const char *engine)
+{
+ if (engine)
+ eina_stringshare_replace(&(_elm_preferred_engine), engine);
+ else
+ {
+ if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine);
+ _elm_preferred_engine = eina_stringshare_add(_elm_config->engine);
+ }
+}
+
void
_elm_config_profile_set(const char *profile)
{
void
_elm_config_shutdown(void)
{
+#ifdef HAVE_ELEMENTARY_X
+ if (_prop_all_update_timer)
+ {
+ ecore_timer_del(_prop_all_update_timer);
+ _prop_all_update_timer = NULL;
+ _prop_all_update_cb(NULL);
+ }
+ if (_prop_change_delay_timer) ecore_timer_del(_prop_change_delay_timer);
+ _prop_change_delay_timer = NULL;
+#endif
+
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
#endif
}
_config_free();
+ if (_elm_preferred_engine)
+ {
+ eina_stringshare_del(_elm_preferred_engine);
+ _elm_preferred_engine = NULL;
+ }
if (_elm_profile)
{
free(_elm_profile);