2 # include "elementary_config.h"
5 #include <dlfcn.h> /* dlopen,dlclose,etc */
7 #ifdef HAVE_CRT_EXTERNS_H
8 # include <crt_externs.h>
15 #include <Elementary.h>
18 #define SEMI_BROKEN_QUICKLAUNCH 1
20 static Elm_Version _version = { VMAJ, VMIN, VMIC, VREV };
21 EAPI Elm_Version *elm_version = &_version;
24 _elm_dangerous_call_check(const char *call)
29 snprintf(buf, sizeof(buf), "%i.%i.%i.%i", VMAJ, VMIN, VMIC, VREV);
30 eval = getenv("ELM_NO_FINGER_WAGGLING");
31 if ((eval) && (!strcmp(eval, buf)))
33 printf("ELEMENTARY FINGER WAGGLE!!!!!!!!!!\n"
36 "PLEASE see the API documentation for this function. This call\n"
37 "should almost never be used. Only in very special cases.\n"
39 "To remove this warning please set the environment variable:\n"
40 " ELM_NO_FINGER_WAGGLING\n"
41 "To the value of the Elementary version + revision number. e.g.:\n"
49 static Eina_Bool _elm_signal_exit(void *data,
53 static Eina_Prefix *pfx = NULL;
54 char *_elm_appname = NULL;
55 const char *_elm_data_dir = NULL;
56 const char *_elm_lib_dir = NULL;
57 int _elm_log_dom = -1;
59 EAPI int ELM_EVENT_POLICY_CHANGED = 0;
61 static int _elm_init_count = 0;
62 static int _elm_sub_init_count = 0;
63 static int _elm_ql_init_count = 0;
64 static int _elm_policies[ELM_POLICY_LAST];
65 static Ecore_Event_Handler *_elm_exit_handler = NULL;
66 static Eina_Bool quicklaunch_on = 0;
69 _elm_signal_exit(void *data __UNUSED__,
70 int ev_type __UNUSED__,
74 return ECORE_CALLBACK_PASS_ON;
80 edje_scale_set(_elm_config->scale);
81 _elm_win_rescale(NULL, EINA_FALSE);
84 static void *app_mainfunc = NULL;
85 static const char *app_domain = NULL;
86 static const char *app_checkfile = NULL;
88 static const char *app_compile_bin_dir = NULL;
89 static const char *app_compile_lib_dir = NULL;
90 static const char *app_compile_data_dir = NULL;
91 static const char *app_compile_locale_dir = NULL;
92 static const char *app_prefix_dir = NULL;
93 static const char *app_bin_dir = NULL;
94 static const char *app_lib_dir = NULL;
95 static const char *app_data_dir = NULL;
96 static const char *app_locale_dir = NULL;
98 static Eina_Prefix *app_pfx = NULL;
105 const char *dirs[4] = { NULL, NULL, NULL, NULL };
106 char *caps = NULL, *p1, *p2;
109 if (!app_domain) return;
111 ecore_app_args_get(&argc, &argv);
112 if (argc < 1) return;
114 dirs[0] = app_compile_bin_dir;
115 dirs[1] = app_compile_lib_dir;
116 dirs[2] = app_compile_data_dir;
117 dirs[3] = app_compile_locale_dir;
119 if (!dirs[1]) dirs[1] = dirs[0];
120 if (!dirs[0]) dirs[0] = dirs[1];
121 if (!dirs[3]) dirs[3] = dirs[2];
122 if (!dirs[2]) dirs[2] = dirs[3];
126 caps = alloca(strlen(app_domain) + 1);
127 for (p1 = (char *)app_domain, p2 = caps; *p1; p1++, p2++)
131 app_pfx = eina_prefix_new(argv[0], app_mainfunc, caps, app_domain,
132 app_checkfile, dirs[0], dirs[1], dirs[2], dirs[3]);
136 _prefix_shutdown(void)
138 if (app_pfx) eina_prefix_free(app_pfx);
139 if (app_domain) eina_stringshare_del(app_domain);
140 if (app_checkfile) eina_stringshare_del(app_checkfile);
141 if (app_compile_bin_dir) eina_stringshare_del(app_compile_bin_dir);
142 if (app_compile_lib_dir) eina_stringshare_del(app_compile_lib_dir);
143 if (app_compile_data_dir) eina_stringshare_del(app_compile_data_dir);
144 if (app_compile_locale_dir) eina_stringshare_del(app_compile_locale_dir);
145 if (app_prefix_dir) eina_stringshare_del(app_prefix_dir);
146 if (app_bin_dir) eina_stringshare_del(app_bin_dir);
147 if (app_lib_dir) eina_stringshare_del(app_lib_dir);
148 if (app_data_dir) eina_stringshare_del(app_data_dir);
149 if (app_locale_dir) eina_stringshare_del(app_locale_dir);
152 app_checkfile = NULL;
153 app_compile_bin_dir = NULL;
154 app_compile_lib_dir = NULL;
155 app_compile_data_dir = NULL;
156 app_compile_locale_dir = NULL;
157 app_prefix_dir = NULL;
161 app_locale_dir = NULL;
170 if (_elm_init_count > 1) return _elm_init_count;
171 elm_quicklaunch_init(argc, argv);
172 elm_quicklaunch_sub_init(argc, argv);
174 return _elm_init_count;
181 if (_elm_init_count > 0) return _elm_init_count;
183 while (_elm_win_deferred_free) ecore_main_loop_iterate();
185 // _prefix_shutdown();
186 elm_quicklaunch_sub_shutdown();
187 elm_quicklaunch_shutdown();
188 return _elm_init_count;
192 elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile)
194 app_mainfunc = mainfunc;
195 eina_stringshare_replace(&app_domain, dom);
196 eina_stringshare_replace(&app_checkfile, checkfile);
200 elm_app_compile_bin_dir_set(const char *dir)
202 eina_stringshare_replace(&app_compile_bin_dir, dir);
206 elm_app_compile_lib_dir_set(const char *dir)
208 eina_stringshare_replace(&app_compile_lib_dir, dir);
212 elm_app_compile_data_dir_set(const char *dir)
214 eina_stringshare_replace(&app_compile_data_dir, dir);
218 elm_app_compile_locale_set(const char *dir)
220 eina_stringshare_replace(&app_compile_locale_dir, dir);
224 elm_app_prefix_dir_get(void)
226 if (app_prefix_dir) return app_prefix_dir;
228 if (!app_pfx) return "";
229 app_prefix_dir = eina_prefix_get(app_pfx);
230 return app_prefix_dir;
234 elm_app_bin_dir_get(void)
236 if (app_bin_dir) return app_bin_dir;
238 if (!app_pfx) return "";
239 app_bin_dir = eina_prefix_bin_get(app_pfx);
244 elm_app_lib_dir_get(void)
246 if (app_lib_dir) return app_lib_dir;
248 if (!app_pfx) return "";
249 app_lib_dir = eina_prefix_lib_get(app_pfx);
254 elm_app_data_dir_get(void)
256 if (app_data_dir) return app_data_dir;
258 if (!app_pfx) return "";
259 app_data_dir = eina_prefix_data_get(app_pfx);
264 elm_app_locale_dir_get(void)
266 if (app_locale_dir) return app_locale_dir;
268 if (!app_pfx) return "";
269 app_locale_dir = eina_prefix_locale_get(app_pfx);
270 return app_locale_dir;
274 static int _elm_need_e_dbus = 0;
277 elm_need_e_dbus(void)
280 if (_elm_need_e_dbus++) return EINA_TRUE;
289 _elm_unneed_e_dbus(void)
292 if (--_elm_need_e_dbus) return;
294 _elm_need_e_dbus = 0;
300 static int _elm_need_efreet = 0;
303 elm_need_efreet(void)
306 if (_elm_need_efreet++) return EINA_TRUE;
314 list = efreet_icon_extra_list_get();
317 e_user_dir_concat_static(buf, "icons");
318 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
319 e_prefix_data_concat_static(buf, "data/icons");
320 *list = eina_list_prepend(*list, (void *)eina_stringshare_add(buf));
331 _elm_unneed_efreet(void)
334 if (--_elm_need_efreet) return;
336 _elm_need_efreet = 0;
337 efreet_trash_shutdown();
338 efreet_mime_shutdown();
344 elm_quicklaunch_mode_set(Eina_Bool ql_on)
346 quicklaunch_on = ql_on;
350 elm_quicklaunch_mode_get(void)
352 return quicklaunch_on;
356 elm_quicklaunch_init(int argc,
359 _elm_ql_init_count++;
360 if (_elm_ql_init_count > 1) return _elm_ql_init_count;
362 _elm_log_dom = eina_log_domain_register("elementary", EINA_COLOR_LIGHTBLUE);
365 EINA_LOG_ERR("could not register elementary log domain.");
366 _elm_log_dom = EINA_LOG_DOMAIN_GLOBAL;
372 #ifdef HAVE_ELEMENTARY_EMAP
375 ecore_app_args_set(argc, (const char **)argv);
377 memset(_elm_policies, 0, sizeof(_elm_policies));
378 if (!ELM_EVENT_POLICY_CHANGED)
379 ELM_EVENT_POLICY_CHANGED = ecore_event_type_new();
383 _elm_exit_handler = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _elm_signal_exit, NULL);
385 if (argv) _elm_appname = strdup(ecore_file_file_get(argv[0]));
387 pfx = eina_prefix_new(NULL, elm_quicklaunch_init,
388 "ELM", "elementary", "config/profile.cfg",
389 PACKAGE_LIB_DIR, /* don't have a bin dir currently */
395 _elm_data_dir = eina_stringshare_add(eina_prefix_data_get(pfx));
396 _elm_lib_dir = eina_stringshare_add(eina_prefix_lib_get(pfx));
398 if (!_elm_data_dir) _elm_data_dir = eina_stringshare_add("/");
399 if (!_elm_lib_dir) _elm_lib_dir = eina_stringshare_add("/");
402 return _elm_ql_init_count;
406 elm_quicklaunch_sub_init(int argc,
409 _elm_sub_init_count++;
410 if (_elm_sub_init_count > 1) return _elm_sub_init_count;
413 #ifdef SEMI_BROKEN_QUICKLAUNCH
414 return _elm_sub_init_count;
419 ecore_app_args_set(argc, (const char **)argv);
423 _elm_config_sub_init();
424 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
425 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
426 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
427 ENGINE_COMPARE(ELM_XRENDER_X11) ||
428 ENGINE_COMPARE(ELM_OPENGL_X11))
429 #undef ENGINE_COMPARE
431 #ifdef HAVE_ELEMENTARY_X
435 ecore_evas_init(); // FIXME: check errors
438 ecore_con_url_init();
440 return _elm_sub_init_count;
444 elm_quicklaunch_sub_shutdown(void)
446 _elm_sub_init_count--;
447 if (_elm_sub_init_count > 0) return _elm_sub_init_count;
450 #ifdef SEMI_BROKEN_QUICKLAUNCH
451 return _elm_sub_init_count;
457 _elm_module_shutdown();
458 ecore_con_url_shutdown();
459 ecore_con_shutdown();
460 ecore_imf_shutdown();
461 ecore_evas_shutdown();
462 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
463 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
464 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
465 ENGINE_COMPARE(ELM_XRENDER_X11) ||
466 ENGINE_COMPARE(ELM_OPENGL_X11))
467 #undef ENGINE_COMPARE
469 #ifdef HAVE_ELEMENTARY_X
470 ecore_x_disconnect();
473 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
474 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
475 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
476 ENGINE_COMPARE(ELM_XRENDER_X11) ||
477 ENGINE_COMPARE(ELM_OPENGL_X11) ||
478 ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
479 ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
480 ENGINE_COMPARE(ELM_OPENGL_SDL) ||
481 ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
482 ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
483 #undef ENGINE_COMPARE
484 evas_cserve_disconnect();
488 return _elm_sub_init_count;
492 elm_quicklaunch_shutdown(void)
494 _elm_ql_init_count--;
495 if (_elm_ql_init_count > 0) return _elm_ql_init_count;
496 if (pfx) eina_prefix_free(pfx);
498 eina_stringshare_del(_elm_data_dir);
499 _elm_data_dir = NULL;
500 eina_stringshare_del(_elm_lib_dir);
506 _elm_config_shutdown();
508 ecore_event_handler_del(_elm_exit_handler);
509 _elm_exit_handler = NULL;
511 _elm_theme_shutdown();
512 _elm_unneed_efreet();
513 _elm_unneed_e_dbus();
514 _elm_unneed_ethumb();
515 ecore_file_shutdown();
517 #ifdef HAVE_ELEMENTARY_EMAP
524 if ((_elm_log_dom > -1) && (_elm_log_dom != EINA_LOG_DOMAIN_GLOBAL))
526 eina_log_domain_unregister(_elm_log_dom);
530 _elm_widget_type_clear();
533 return _elm_ql_init_count;
537 elm_quicklaunch_seed(void)
539 #ifndef SEMI_BROKEN_QUICKLAUNCH
542 Evas_Object *win, *bg, *bt;
544 win = elm_win_add(NULL, "seed", ELM_WIN_BASIC);
545 bg = elm_bg_add(win);
546 elm_win_resize_object_add(win, bg);
547 evas_object_show(bg);
548 bt = elm_button_add(win);
549 elm_button_label_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
550 elm_win_resize_object_add(win, bt);
551 ecore_main_loop_iterate();
552 evas_object_del(win);
553 ecore_main_loop_iterate();
554 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
555 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
556 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
557 ENGINE_COMPARE(ELM_XRENDER_X11) ||
558 ENGINE_COMPARE(ELM_OPENGL_X11))
559 #undef ENGINE_COMPARE
561 # ifdef HAVE_ELEMENTARY_X
565 ecore_main_loop_iterate();
570 static void *qr_handle = NULL;
571 static int (*qr_main)(int argc,
575 elm_quicklaunch_prepare(int argc __UNUSED__,
579 char *exe = elm_quicklaunch_exe_path_get(argv[0]);
582 ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
590 exe2 = malloc(strlen(exe) + 1 + 10);
592 p = strrchr(exe2, '/');
595 exename = alloca(strlen(p) + 1);
598 strcat(p, "../lib/");
601 if (!access(exe2, R_OK | X_OK))
609 qr_handle = dlopen(exe, RTLD_NOW | RTLD_GLOBAL);
612 fprintf(stderr, "dlerr: %s\n", dlerror());
613 WRN("dlopen('%s') failed: %s", exe, dlerror());
617 INF("dlopen('%s') = %p", exe, qr_handle);
618 qr_main = dlsym(qr_handle, "elm_main");
619 INF("dlsym(%p, 'elm_main') = %p", qr_handle, qr_main);
622 WRN("not quicklauncher capable: no elm_main in '%s'", exe);
641 extern char **environ;
646 for (i = 0, size = 0; environ[i]; i++)
647 size += strlen(environ[i]) + 1;
649 p = malloc((i + 1) * sizeof(char *));
654 for (i = 0; oldenv[i]; i++)
655 environ[i] = strdup(oldenv[i]);
662 elm_quicklaunch_fork(int argc,
665 void (postfork_func) (void *data),
675 // need to accept current environment from elementary_run
682 if (child > 0) return EINA_TRUE;
685 perror("could not fork");
690 perror("could not chdir");
691 args = alloca((argc + 1) * sizeof(char *));
692 for (i = 0; i < argc; i++) args[i] = argv[i];
694 WRN("%s not quicklaunch capable, fallback...", argv[0]);
695 execvp(argv[0], args);
696 ERR("failed to execute '%s': %s", argv[0], strerror(errno));
700 if (child > 0) return EINA_TRUE;
703 perror("could not fork");
706 if (postfork_func) postfork_func(postfork_data);
710 #ifdef SEMI_BROKEN_QUICKLAUNCH
711 ecore_app_args_set(argc, (const char **)argv);
714 _elm_config_sub_init();
715 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
716 if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
717 ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
718 ENGINE_COMPARE(ELM_XRENDER_X11) ||
719 ENGINE_COMPARE(ELM_OPENGL_X11))
720 #undef ENGINE_COMPARE
722 # ifdef HAVE_ELEMENTARY_X
726 ecore_evas_init(); // FIXME: check errors
734 perror("could not chdir");
735 // FIXME: this is very linux specific. it changes argv[0] of the process
736 // so ps etc. report what you'd expect. for other unixes and os's this
743 ecore_app_args_get(&real_argc, &real_argv);
744 lastarg = real_argv[real_argc - 1] + strlen(real_argv[real_argc - 1]);
745 for (p = real_argv[0]; p < lastarg; p++) *p = 0;
746 strcpy(real_argv[0], argv[0]);
748 ecore_app_args_set(argc, (const char **)argv);
749 ret = qr_main(argc, argv);
763 elm_quicklaunch_cleanup(void)
776 elm_quicklaunch_fallback(int argc,
780 elm_quicklaunch_init(argc, argv);
781 elm_quicklaunch_sub_init(argc, argv);
782 elm_quicklaunch_prepare(argc, argv);
783 ret = qr_main(argc, argv);
789 elm_quicklaunch_exe_path_get(const char *exe)
791 static char *path = NULL;
792 static Eina_List *pathlist = NULL;
796 if (exe[0] == '/') return strdup(exe);
797 if ((exe[0] == '.') && (exe[1] == '/')) return strdup(exe);
798 if ((exe[0] == '.') && (exe[1] == '.') && (exe[2] == '/')) return strdup(exe);
803 path = getenv("PATH");
804 buf2 = alloca(strlen(path) + 1);
809 if ((*p == ':') || (!*p))
814 strncpy(buf2, pp, len);
816 pathlist = eina_list_append(pathlist, eina_stringshare_add(buf2));
828 EINA_LIST_FOREACH(pathlist, l, pathitr)
830 snprintf(buf, sizeof(buf), "%s/%s", pathitr, exe);
831 if (!access(buf, R_OK | X_OK)) return strdup(buf);
839 ecore_main_loop_begin();
845 ecore_main_loop_quit();
849 elm_policy_set(unsigned int policy,
852 Elm_Event_Policy_Changed *ev;
854 if (policy >= ELM_POLICY_LAST)
857 if (value == _elm_policies[policy])
860 /* TODO: validade policy? */
862 ev = malloc(sizeof(*ev));
864 ev->new_value = value;
865 ev->old_value = _elm_policies[policy];
867 _elm_policies[policy] = value;
869 ecore_event_add(ELM_EVENT_POLICY_CHANGED, ev, NULL, NULL);
875 elm_policy_get(unsigned int policy)
877 if (policy >= ELM_POLICY_LAST)
879 return _elm_policies[policy];
883 elm_object_mirrored_get(const Evas_Object *obj)
885 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
886 return elm_widget_mirrored_get(obj);
890 elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
892 EINA_SAFETY_ON_NULL_RETURN(obj);
893 elm_widget_mirrored_set(obj, mirrored);
897 elm_object_mirrored_automatic_get(const Evas_Object *obj)
899 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
900 return elm_widget_mirrored_automatic_get(obj);
904 elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
906 EINA_SAFETY_ON_NULL_RETURN(obj);
907 elm_widget_mirrored_automatic_set(obj, automatic);
915 elm_object_scale_set(Evas_Object *obj,
918 EINA_SAFETY_ON_NULL_RETURN(obj);
919 elm_widget_scale_set(obj, scale);
923 elm_object_scale_get(const Evas_Object *obj)
925 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0.0);
926 return elm_widget_scale_get(obj);
930 elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label)
932 EINA_SAFETY_ON_NULL_RETURN(obj);
933 elm_widget_text_part_set(obj, part, label);
937 elm_object_text_part_get(const Evas_Object *obj, const char *part)
939 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
940 return elm_widget_text_part_get(obj, part);
944 elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content)
946 EINA_SAFETY_ON_NULL_RETURN(obj);
947 elm_widget_content_part_set(obj, part, content);
951 elm_object_content_part_get(const Evas_Object *obj, const char *part)
953 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
954 return elm_widget_content_part_get(obj, part);
958 elm_object_content_part_unset(Evas_Object *obj, const char *part)
960 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
961 return elm_widget_content_part_unset(obj, part);
967 return _elm_config->scale;
971 elm_scale_set(double scale)
973 if (_elm_config->scale == scale) return;
974 _elm_config->scale = scale;
979 elm_scale_all_set(double scale)
981 #ifdef HAVE_ELEMENTARY_X
982 static Ecore_X_Atom atom = 0;
983 unsigned int scale_i = (unsigned int)(scale * 1000.0);
985 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_SCALE");
986 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
992 elm_password_show_last_get(void)
994 return _elm_config->password_show_last;
998 elm_password_show_last_set(Eina_Bool password_show_last)
1000 if (_elm_config->password_show_last == password_show_last) return;
1001 _elm_config->password_show_last = password_show_last;
1002 edje_password_show_last_set(_elm_config->password_show_last);
1006 elm_password_show_last_timeout_get(void)
1008 return _elm_config->password_show_last_timeout;
1012 elm_password_show_last_timeout_set(double password_show_last_timeout)
1014 if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
1015 _elm_config->password_show_last_timeout = password_show_last_timeout;
1016 edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
1020 elm_object_style_set(Evas_Object *obj,
1023 EINA_SAFETY_ON_NULL_RETURN(obj);
1024 elm_widget_style_set(obj, style);
1028 elm_object_style_get(const Evas_Object *obj)
1030 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1031 return elm_widget_style_get(obj);
1035 elm_object_disabled_set(Evas_Object *obj,
1038 EINA_SAFETY_ON_NULL_RETURN(obj);
1039 elm_widget_disabled_set(obj, disabled);
1043 elm_object_disabled_get(const Evas_Object *obj)
1045 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1046 return elm_widget_disabled_get(obj);
1050 elm_config_save(void)
1052 return _elm_config_save();
1056 elm_config_reload(void)
1058 _elm_config_reload();
1062 elm_profile_current_get(void)
1064 return _elm_config_current_profile_get();
1068 elm_profile_dir_get(const char *profile,
1071 return _elm_config_profile_dir_get(profile, is_user);
1075 elm_profile_dir_free(const char *p_dir)
1077 free((void *)p_dir);
1081 elm_profile_list_get(void)
1083 return _elm_config_profiles_list();
1087 elm_profile_list_free(Eina_List *l)
1091 EINA_LIST_FREE(l, dir)
1092 eina_stringshare_del(dir);
1096 elm_profile_set(const char *profile)
1098 EINA_SAFETY_ON_NULL_RETURN(profile);
1099 _elm_config_profile_set(profile);
1103 elm_profile_all_set(const char *profile)
1105 #ifdef HAVE_ELEMENTARY_X
1106 static Ecore_X_Atom atom = 0;
1108 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
1109 ecore_x_window_prop_string_set(ecore_x_window_root_first_get(),
1115 elm_engine_current_get(void)
1117 return _elm_config->engine;
1121 elm_engine_set(const char *engine)
1123 EINA_SAFETY_ON_NULL_RETURN(engine);
1125 _elm_config_engine_set(engine);
1128 EAPI const Eina_List *
1129 elm_text_classes_list_get(void)
1131 return _elm_config_text_classes_get();
1135 elm_text_classes_list_free(const Eina_List *list)
1137 _elm_config_text_classes_free((Eina_List *)list);
1140 EAPI const Eina_List *
1141 elm_font_overlay_list_get(void)
1143 return _elm_config_font_overlays_list();
1147 elm_font_overlay_set(const char *text_class,
1149 Evas_Font_Size size)
1151 _elm_config_font_overlay_set(text_class, font, size);
1155 elm_font_overlay_unset(const char *text_class)
1157 _elm_config_font_overlay_remove(text_class);
1161 elm_font_overlay_apply(void)
1163 _elm_config_font_overlay_apply();
1167 elm_font_overlay_all_apply(void)
1169 #ifdef HAVE_ELEMENTARY_X
1170 static Ecore_X_Atom atom = 0;
1171 unsigned int dummy = (unsigned int)(1 * 1000.0);
1173 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_OVERLAY");
1174 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(), atom, &dummy,
1179 EAPI Elm_Font_Properties *
1180 elm_font_properties_get(const char *font)
1182 EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
1183 return _elm_font_properties_get(NULL, font);
1187 elm_font_properties_free(Elm_Font_Properties *efp)
1191 EINA_SAFETY_ON_NULL_RETURN(efp);
1192 EINA_LIST_FREE(efp->styles, str)
1193 if (str) eina_stringshare_del(str);
1194 if (efp->name) eina_stringshare_del(efp->name);
1199 elm_font_fontconfig_name_get(const char *name,
1204 EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
1205 if (!style || style[0] == 0) return eina_stringshare_add(name);
1206 snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
1207 return eina_stringshare_add(buf);
1211 elm_font_fontconfig_name_free(const char *name)
1213 eina_stringshare_del(name);
1217 elm_font_available_hash_add(Eina_List *list)
1219 Eina_Hash *font_hash;
1225 /* populate with default font families */
1226 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
1227 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
1228 font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
1229 font_hash = _elm_font_available_hash_add(font_hash,
1230 "Sans:style=Bold Oblique");
1232 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
1233 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
1234 font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
1235 font_hash = _elm_font_available_hash_add(font_hash,
1236 "Serif:style=Bold Oblique");
1238 font_hash = _elm_font_available_hash_add(font_hash,
1239 "Monospace:style=Regular");
1240 font_hash = _elm_font_available_hash_add(font_hash,
1241 "Monospace:style=Bold");
1242 font_hash = _elm_font_available_hash_add(font_hash,
1243 "Monospace:style=Oblique");
1244 font_hash = _elm_font_available_hash_add(font_hash,
1245 "Monospace:style=Bold Oblique");
1247 EINA_LIST_FOREACH(list, l, key)
1248 font_hash = _elm_font_available_hash_add(font_hash, key);
1254 elm_font_available_hash_del(Eina_Hash *hash)
1256 _elm_font_available_hash_del(hash);
1260 elm_finger_size_get(void)
1262 return _elm_config->finger_size;
1266 elm_finger_size_set(Evas_Coord size)
1268 if (_elm_config->finger_size == size) return;
1269 _elm_config->finger_size = size;
1274 elm_finger_size_all_set(Evas_Coord size)
1276 #ifdef HAVE_ELEMENTARY_X
1277 static Ecore_X_Atom atom = 0;
1278 unsigned int size_i = (unsigned int)size;
1280 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FINGER_SIZE");
1281 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1287 elm_coords_finger_size_adjust(int times_w,
1292 if ((w) && (*w < (_elm_config->finger_size * times_w)))
1293 *w = _elm_config->finger_size * times_w;
1294 if ((h) && (*h < (_elm_config->finger_size * times_h)))
1295 *h = _elm_config->finger_size * times_h;
1304 edje_file_cache_flush();
1305 edje_collection_cache_flush();
1307 EINA_LIST_FOREACH(_elm_win_list, l, obj)
1309 Evas *e = evas_object_evas_get(obj);
1310 evas_image_cache_flush(e);
1311 evas_font_cache_flush(e);
1312 evas_render_dump(e);
1317 elm_cache_flush_interval_get(void)
1319 return _elm_config->cache_flush_poll_interval;
1323 elm_cache_flush_interval_set(int size)
1325 if (_elm_config->cache_flush_poll_interval == size) return;
1326 _elm_config->cache_flush_poll_interval = size;
1332 elm_cache_flush_interval_all_set(int size)
1334 #ifdef HAVE_ELEMENTARY_X
1335 static Ecore_X_Atom atom = 0;
1336 unsigned int size_i = (unsigned int)size;
1338 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_INTERVAL");
1339 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1345 elm_cache_flush_enabled_get(void)
1347 return _elm_config->cache_flush_enable;
1351 elm_cache_flush_enabled_set(Eina_Bool enabled)
1353 enabled = !!enabled;
1354 if (_elm_config->cache_flush_enable == enabled) return;
1355 _elm_config->cache_flush_enable = enabled;
1361 elm_cache_flush_enabled_all_set(Eina_Bool enabled)
1363 #ifdef HAVE_ELEMENTARY_X
1364 static Ecore_X_Atom atom = 0;
1365 unsigned int enabled_i = (unsigned int)enabled;
1367 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_ENABLE");
1368 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1369 atom, &enabled_i, 1);
1374 elm_font_cache_get(void)
1376 return _elm_config->font_cache;
1380 elm_font_cache_set(int size)
1382 if (_elm_config->font_cache == size) return;
1383 _elm_config->font_cache = size;
1389 elm_font_cache_all_set(int size)
1391 #ifdef HAVE_ELEMENTARY_X
1392 static Ecore_X_Atom atom = 0;
1393 unsigned int size_i = (unsigned int)size;
1395 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_FONT_CACHE");
1396 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1402 elm_image_cache_get(void)
1404 return _elm_config->image_cache;
1408 elm_image_cache_set(int size)
1410 if (_elm_config->image_cache == size) return;
1411 _elm_config->image_cache = size;
1417 elm_image_cache_all_set(int size)
1419 #ifdef HAVE_ELEMENTARY_X
1420 static Ecore_X_Atom atom = 0;
1421 unsigned int size_i = (unsigned int)size;
1423 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_IMAGE_CACHE");
1424 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1430 elm_edje_file_cache_get(void)
1432 return _elm_config->edje_cache;
1436 elm_edje_file_cache_set(int size)
1438 if (_elm_config->edje_cache == size) return;
1439 _elm_config->edje_cache = size;
1445 elm_edje_file_cache_all_set(int size)
1447 #ifdef HAVE_ELEMENTARY_X
1448 static Ecore_X_Atom atom = 0;
1449 unsigned int size_i = (unsigned int)size;
1451 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_FILE_CACHE");
1452 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1458 elm_edje_collection_cache_get(void)
1460 return _elm_config->edje_collection_cache;
1464 elm_edje_collection_cache_set(int size)
1466 if (_elm_config->edje_collection_cache == size) return;
1467 _elm_config->edje_collection_cache = size;
1473 elm_edje_collection_cache_all_set(int size)
1475 #ifdef HAVE_ELEMENTARY_X
1476 static Ecore_X_Atom atom = 0;
1477 unsigned int size_i = (unsigned int)size;
1479 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_COLLECTION_CACHE");
1480 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1486 elm_object_focus_get(const Evas_Object *obj)
1488 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1489 return elm_widget_focus_get(obj);
1493 elm_object_focus_set(Evas_Object *obj,
1496 EINA_SAFETY_ON_NULL_RETURN(obj);
1499 if (elm_widget_focus_get(obj)) return;
1500 elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
1504 if (!elm_widget_can_focus_get(obj)) return;
1505 elm_widget_focused_object_clear(obj);
1510 elm_object_focus(Evas_Object *obj)
1512 EINA_SAFETY_ON_NULL_RETURN(obj);
1513 elm_object_focus_set(obj, EINA_TRUE);
1517 elm_object_unfocus(Evas_Object *obj)
1519 EINA_SAFETY_ON_NULL_RETURN(obj);
1520 elm_object_focus_set(obj, EINA_FALSE);
1524 elm_object_focus_allow_set(Evas_Object *obj,
1527 EINA_SAFETY_ON_NULL_RETURN(obj);
1528 elm_widget_can_focus_set(obj, enable);
1532 elm_object_focus_allow_get(const Evas_Object *obj)
1534 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1535 return (elm_widget_can_focus_get(obj)) || (elm_widget_child_can_focus_get(obj));
1539 elm_object_focus_custom_chain_set(Evas_Object *obj,
1542 EINA_SAFETY_ON_NULL_RETURN(obj);
1543 elm_widget_focus_custom_chain_set(obj, objs);
1547 elm_object_focus_custom_chain_unset(Evas_Object *obj)
1549 EINA_SAFETY_ON_NULL_RETURN(obj);
1550 elm_widget_focus_custom_chain_unset(obj);
1553 EAPI const Eina_List *
1554 elm_object_focus_custom_chain_get(const Evas_Object *obj)
1556 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1557 return elm_widget_focus_custom_chain_get(obj);
1561 elm_object_focus_custom_chain_append(Evas_Object *obj,
1563 Evas_Object *relative_child)
1565 EINA_SAFETY_ON_NULL_RETURN(obj);
1566 EINA_SAFETY_ON_NULL_RETURN(child);
1567 elm_widget_focus_custom_chain_append(obj, child, relative_child);
1571 elm_object_focus_custom_chain_prepend(Evas_Object *obj,
1573 Evas_Object *relative_child)
1575 EINA_SAFETY_ON_NULL_RETURN(obj);
1576 EINA_SAFETY_ON_NULL_RETURN(child);
1577 elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
1581 elm_object_focus_cycle(Evas_Object *obj,
1582 Elm_Focus_Direction dir)
1584 EINA_SAFETY_ON_NULL_RETURN(obj);
1585 elm_widget_focus_cycle(obj, dir);
1589 elm_object_focus_direction_go(Evas_Object *obj,
1593 EINA_SAFETY_ON_NULL_RETURN(obj);
1594 elm_widget_focus_direction_go(obj, x, y);
1598 elm_object_tree_unfocusable_set(Evas_Object *obj,
1599 Eina_Bool tree_unfocusable)
1601 EINA_SAFETY_ON_NULL_RETURN(obj);
1602 elm_widget_tree_unfocusable_set(obj, tree_unfocusable);
1606 elm_object_tree_unfocusable_get(const Evas_Object *obj)
1608 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1609 return elm_widget_tree_unfocusable_get(obj);
1613 elm_focus_highlight_enabled_get(void)
1615 return _elm_config->focus_highlight_enable;
1619 elm_focus_highlight_enabled_set(Eina_Bool enable)
1621 _elm_config->focus_highlight_enable = !!enable;
1625 elm_focus_highlight_animate_get(void)
1627 return _elm_config->focus_highlight_animate;
1631 elm_focus_highlight_animate_set(Eina_Bool animate)
1633 _elm_config->focus_highlight_animate = !!animate;
1637 elm_scroll_bounce_enabled_get(void)
1639 return _elm_config->thumbscroll_bounce_enable;
1643 elm_scroll_bounce_enabled_set(Eina_Bool enabled)
1645 _elm_config->thumbscroll_bounce_enable = enabled;
1649 elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
1651 #ifdef HAVE_ELEMENTARY_X
1652 static Ecore_X_Atom atom = 0;
1653 unsigned int bounce_enable_i = (unsigned int)enabled;
1656 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE");
1657 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1658 atom, &bounce_enable_i, 1);
1663 elm_scroll_bounce_friction_get(void)
1665 return _elm_config->thumbscroll_bounce_friction;
1669 elm_scroll_bounce_friction_set(double friction)
1671 _elm_config->thumbscroll_bounce_friction = friction;
1675 elm_scroll_bounce_friction_all_set(double friction)
1677 #ifdef HAVE_ELEMENTARY_X
1678 static Ecore_X_Atom atom = 0;
1679 unsigned int bounce_friction_i = (unsigned int)(friction * 1000.0);
1682 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION");
1683 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1684 atom, &bounce_friction_i, 1);
1689 elm_scroll_page_scroll_friction_get(void)
1691 return _elm_config->page_scroll_friction;
1695 elm_scroll_page_scroll_friction_set(double friction)
1697 _elm_config->page_scroll_friction = friction;
1701 elm_scroll_page_scroll_friction_all_set(double friction)
1703 #ifdef HAVE_ELEMENTARY_X
1704 static Ecore_X_Atom atom = 0;
1705 unsigned int page_scroll_friction_i = (unsigned int)(friction * 1000.0);
1708 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION");
1709 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1710 atom, &page_scroll_friction_i, 1);
1715 elm_scroll_bring_in_scroll_friction_get(void)
1717 return _elm_config->bring_in_scroll_friction;
1721 elm_scroll_bring_in_scroll_friction_set(double friction)
1723 _elm_config->bring_in_scroll_friction = friction;
1727 elm_scroll_bring_in_scroll_friction_all_set(double friction)
1729 #ifdef HAVE_ELEMENTARY_X
1730 static Ecore_X_Atom atom = 0;
1731 unsigned int bring_in_scroll_friction_i = (unsigned int)(friction * 1000.0);
1735 ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION");
1736 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1737 atom, &bring_in_scroll_friction_i, 1);
1742 elm_scroll_zoom_friction_get(void)
1744 return _elm_config->zoom_friction;
1748 elm_scroll_zoom_friction_set(double friction)
1750 _elm_config->zoom_friction = friction;
1754 elm_scroll_zoom_friction_all_set(double friction)
1756 #ifdef HAVE_ELEMENTARY_X
1757 static Ecore_X_Atom atom = 0;
1758 unsigned int zoom_friction_i = (unsigned int)(friction * 1000.0);
1761 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION");
1762 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1763 atom, &zoom_friction_i, 1);
1768 elm_scroll_thumbscroll_enabled_get(void)
1770 return _elm_config->thumbscroll_enable;
1774 elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
1776 _elm_config->thumbscroll_enable = enabled;
1780 elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
1782 #ifdef HAVE_ELEMENTARY_X
1783 static Ecore_X_Atom atom = 0;
1784 unsigned int ts_enable_i = (unsigned int)enabled;
1786 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ENABLE");
1787 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1788 atom, &ts_enable_i, 1);
1793 elm_scroll_thumbscroll_threshold_get(void)
1795 return _elm_config->thumbscroll_threshold;
1799 elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
1801 _elm_config->thumbscroll_threshold = threshold;
1805 elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
1807 #ifdef HAVE_ELEMENTARY_X
1808 static Ecore_X_Atom atom = 0;
1809 unsigned int ts_threshold_i = (unsigned int)threshold;
1811 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_THRESHOLD");
1812 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1813 atom, &ts_threshold_i, 1);
1818 elm_scroll_thumbscroll_momentum_threshold_get(void)
1820 return _elm_config->thumbscroll_momentum_threshold;
1824 elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
1826 _elm_config->thumbscroll_momentum_threshold = threshold;
1830 elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
1832 #ifdef HAVE_ELEMENTARY_X
1833 static Ecore_X_Atom atom = 0;
1834 unsigned int ts_momentum_threshold_i = (unsigned int)(threshold * 1000.0);
1837 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD");
1838 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1839 atom, &ts_momentum_threshold_i, 1);
1844 elm_scroll_thumbscroll_friction_get(void)
1846 return _elm_config->thumbscroll_friction;
1850 elm_scroll_thumbscroll_friction_set(double friction)
1852 _elm_config->thumbscroll_friction = friction;
1856 elm_scroll_thumbscroll_friction_all_set(double friction)
1858 #ifdef HAVE_ELEMENTARY_X
1859 static Ecore_X_Atom atom = 0;
1860 unsigned int ts_friction_i = (unsigned int)(friction * 1000.0);
1862 if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_FRICTION");
1863 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1864 atom, &ts_friction_i, 1);
1869 elm_scroll_thumbscroll_border_friction_get(void)
1871 return _elm_config->thumbscroll_border_friction;
1875 elm_scroll_thumbscroll_border_friction_set(double friction)
1883 _elm_config->thumbscroll_friction = friction;
1887 elm_scroll_thumbscroll_border_friction_all_set(double friction)
1895 #ifdef HAVE_ELEMENTARY_X
1896 static Ecore_X_Atom atom = 0;
1897 unsigned int border_friction_i = (unsigned int)(friction * 1000.0);
1900 atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION");
1901 ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
1902 atom, &border_friction_i, 1);
1907 elm_object_scroll_hold_push(Evas_Object *obj)
1909 EINA_SAFETY_ON_NULL_RETURN(obj);
1910 elm_widget_scroll_hold_push(obj);
1914 elm_object_scroll_hold_pop(Evas_Object *obj)
1916 EINA_SAFETY_ON_NULL_RETURN(obj);
1917 elm_widget_scroll_hold_pop(obj);
1921 elm_object_scroll_freeze_push(Evas_Object *obj)
1923 EINA_SAFETY_ON_NULL_RETURN(obj);
1924 elm_widget_scroll_freeze_push(obj);
1928 elm_object_scroll_lock_x_set(Evas_Object *obj,
1931 EINA_SAFETY_ON_NULL_RETURN(obj);
1932 elm_widget_drag_lock_x_set(obj, lock);
1936 elm_object_scroll_lock_y_set(Evas_Object *obj,
1939 EINA_SAFETY_ON_NULL_RETURN(obj);
1940 elm_widget_drag_lock_y_set(obj, lock);
1944 elm_object_scroll_lock_x_get(const Evas_Object *obj)
1946 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1947 return elm_widget_drag_lock_x_get(obj);
1951 elm_object_scroll_lock_y_get(const Evas_Object *obj)
1953 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1954 return elm_widget_drag_lock_y_get(obj);
1958 elm_object_scroll_freeze_pop(Evas_Object *obj)
1960 EINA_SAFETY_ON_NULL_RETURN(obj);
1961 elm_widget_scroll_freeze_pop(obj);
1965 elm_object_widget_check(const Evas_Object *obj)
1967 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1968 return elm_widget_is(obj);
1972 elm_object_parent_widget_get(const Evas_Object *obj)
1974 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1975 return elm_widget_parent_widget_get(obj);
1979 elm_object_top_widget_get(const Evas_Object *obj)
1981 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1982 return elm_widget_top_get(obj);
1986 elm_object_widget_type_get(const Evas_Object *obj)
1988 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1989 return elm_widget_type_get(obj);
1993 elm_object_signal_emit(Evas_Object *obj,
1994 const char *emission,
1997 EINA_SAFETY_ON_NULL_RETURN(obj);
1998 elm_widget_signal_emit(obj, emission, source);
2002 elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
2004 EINA_SAFETY_ON_NULL_RETURN(obj);
2005 EINA_SAFETY_ON_NULL_RETURN(func);
2006 elm_widget_signal_callback_add(obj, emission, source, func, data);
2010 elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func)
2012 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2013 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2014 return elm_widget_signal_callback_del(obj, emission, source, func);
2018 elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2020 EINA_SAFETY_ON_NULL_RETURN(obj);
2021 EINA_SAFETY_ON_NULL_RETURN(func);
2022 elm_widget_event_callback_add(obj, func, data);
2026 elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data)
2028 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
2029 EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
2030 return elm_widget_event_callback_del(obj, func, data);
2034 elm_object_tree_dump(const Evas_Object *top)
2037 elm_widget_tree_dump(top);
2045 elm_object_tree_dot_dump(const Evas_Object *top,
2049 FILE *f = fopen(file, "wb");
2050 elm_widget_tree_dot_dump(top, f);
2060 elm_longpress_timeout_set(double longpress_timeout)
2062 _elm_config->longpress_timeout = longpress_timeout;
2066 elm_longpress_timeout_get(void)
2068 return _elm_config->longpress_timeout;
2072 elm_object_item_content_part_set(Elm_Object_Item *it,
2074 Evas_Object *content)
2076 elm_widget_item_content_part_set(it, part, content);
2080 elm_object_item_content_part_get(const Elm_Object_Item *it,
2083 return elm_widget_item_content_part_get(it, part);
2087 elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
2089 return elm_widget_item_content_part_unset(it, part);
2093 elm_object_item_text_part_set(Elm_Object_Item *it,
2097 elm_widget_item_text_part_set(it, part, label);
2101 elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
2103 return elm_widget_item_text_part_get(it, part);
2107 elm_object_access_info_set(Evas_Object *obj, const char *txt)
2109 elm_widget_access_info_set(obj, txt);
2113 elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
2115 _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);