2005-02-07 05:51:09 -08:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
2004-11-24 19:37:45 -08:00
|
|
|
#include "e.h"
|
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
#if 1
|
|
|
|
|
|
|
|
static const char *title = NULL;
|
|
|
|
static const char *version = NULL;
|
|
|
|
static Ecore_Exe *init_exe = NULL;
|
|
|
|
static Ecore_Event_Handler *exe_del_handler = NULL;
|
|
|
|
static Ecore_Ipc_Client *client = NULL;
|
|
|
|
static int done = 0;
|
|
|
|
static int undone = 0;
|
2007-09-24 03:53:44 -07:00
|
|
|
static Evas_List *stats = NULL;
|
2007-09-23 18:16:47 -07:00
|
|
|
|
|
|
|
static int
|
|
|
|
_e_init_cb_exe_event_del(void *data, int type, void *event)
|
|
|
|
{
|
|
|
|
Ecore_Exe_Event_Del *ev;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
ev = event;
|
|
|
|
if (ev->exe == init_exe)
|
|
|
|
{
|
|
|
|
/* init exited */
|
|
|
|
// ecore_exe_free(init_exe);
|
|
|
|
init_exe = NULL;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI int
|
|
|
|
e_init_init(void)
|
2007-10-30 19:41:52 -07:00
|
|
|
{
|
2007-09-23 18:16:47 -07:00
|
|
|
exe_del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
|
|
|
_e_init_cb_exe_event_del,
|
|
|
|
NULL);
|
|
|
|
client = NULL;
|
|
|
|
done = 0;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI int
|
|
|
|
e_init_shutdown(void)
|
|
|
|
{
|
|
|
|
/* if not killed, kill init */
|
|
|
|
e_init_hide();
|
|
|
|
if (title) evas_stringshare_del(title);
|
|
|
|
if (version) evas_stringshare_del(version);
|
|
|
|
title = NULL;
|
|
|
|
version = NULL;
|
|
|
|
ecore_event_handler_del(exe_del_handler);
|
|
|
|
exe_del_handler = NULL;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_show(void)
|
|
|
|
{
|
|
|
|
char buf[8192], *theme, *tit, *ver;
|
|
|
|
const char *s = NULL;
|
|
|
|
|
|
|
|
/* exec init */
|
|
|
|
|
|
|
|
if (!e_config->init_default_theme)
|
|
|
|
s = e_path_find(path_init, "default.edj");
|
|
|
|
else if (e_config->init_default_theme[0] == '/')
|
|
|
|
s = evas_stringshare_add(e_config->init_default_theme);
|
|
|
|
else
|
|
|
|
s = e_path_find(path_init, e_config->init_default_theme);
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
if (s) theme = strdup(e_util_filename_escape(s));
|
|
|
|
else theme = strdup("XdX");
|
|
|
|
if (s) evas_stringshare_del(s);
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
if (title) tit = strdup(e_util_filename_escape(title));
|
|
|
|
else tit = strdup("XtX");
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
if (version) ver = strdup(e_util_filename_escape(version));
|
|
|
|
else ver = strdup("XvX");
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2008-07-16 10:06:23 -07:00
|
|
|
snprintf(buf, sizeof(buf), "%s/enlightenment_init \'%s\' \'%i\' \'%i\' \'%s\' \'%s\'",
|
2007-09-23 18:16:47 -07:00
|
|
|
e_prefix_bin_get(),
|
2007-10-30 19:41:52 -07:00
|
|
|
theme,
|
2007-09-23 18:16:47 -07:00
|
|
|
e_canvas_engine_decide(e_config->evas_engine_init),
|
|
|
|
e_config->font_hinting,
|
|
|
|
tit, ver);
|
2008-07-16 10:06:23 -07:00
|
|
|
printf("RUN INIT: %s\n", buf);
|
2007-09-23 18:16:47 -07:00
|
|
|
free(theme);
|
|
|
|
free(tit);
|
|
|
|
free(ver);
|
|
|
|
/* FIXME: add font path to cmd-line */
|
|
|
|
init_exe = ecore_exe_run(buf, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_hide(void)
|
|
|
|
{
|
|
|
|
if (init_exe) ecore_exe_terminate(init_exe);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_title_set(const char *str)
|
|
|
|
{
|
|
|
|
if (title) evas_stringshare_del(title);
|
|
|
|
title = evas_stringshare_add(str);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_version_set(const char *str)
|
|
|
|
{
|
|
|
|
if (version) evas_stringshare_del(version);
|
|
|
|
version = evas_stringshare_add(str);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_status_set(const char *str)
|
|
|
|
{
|
2007-09-24 03:53:44 -07:00
|
|
|
if (!init_exe) return;
|
2007-09-23 18:16:47 -07:00
|
|
|
printf("---STAT %p %s\n", client, str);
|
2007-09-24 03:53:44 -07:00
|
|
|
if (!client)
|
|
|
|
{
|
|
|
|
stats = evas_list_append(stats, evas_stringshare_add(str));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
printf("---SEND\n");
|
2007-10-30 19:41:52 -07:00
|
|
|
ecore_ipc_client_send(client, E_IPC_DOMAIN_INIT, 1, 0, 0, 0, (void *)str,
|
2007-10-21 03:59:35 -07:00
|
|
|
strlen(str) + 1);
|
2007-09-23 18:16:47 -07:00
|
|
|
ecore_ipc_client_flush(client);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_done(void)
|
|
|
|
{
|
|
|
|
undone--;
|
|
|
|
if (undone > 0) return;
|
|
|
|
done = 1;
|
|
|
|
printf("---DONE %p\n", client);
|
|
|
|
if (!client) return;
|
|
|
|
ecore_ipc_client_send(client, E_IPC_DOMAIN_INIT, 2, 0, 0, 0, NULL, 0);
|
|
|
|
ecore_ipc_client_flush(client);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_undone(void)
|
|
|
|
{
|
|
|
|
undone++;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_client_data(Ecore_Ipc_Event_Client_Data *e)
|
|
|
|
{
|
|
|
|
printf("---new init client\n");
|
|
|
|
if (!client) client = e->client;
|
|
|
|
if (e->minor == 1)
|
|
|
|
{
|
|
|
|
if (e->data)
|
|
|
|
{
|
|
|
|
int i, num;
|
|
|
|
Ecore_X_Window *initwins;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
num = e->size / sizeof(Ecore_X_Window);
|
|
|
|
initwins = e->data;
|
|
|
|
for (i = 0; i < num; i+= 2)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
for (l = e_manager_list(); l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Manager *man;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
man = l->data;
|
|
|
|
if (man->root == initwins[i + 0])
|
|
|
|
{
|
|
|
|
man->initwin = initwins[i + 1];
|
|
|
|
ecore_x_window_raise(man->initwin);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-09-24 03:53:44 -07:00
|
|
|
while (stats)
|
|
|
|
{
|
|
|
|
const char *s;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-24 03:53:44 -07:00
|
|
|
s = stats->data;
|
|
|
|
stats = evas_list_remove_list(stats, stats);
|
|
|
|
printf("---SPOOL %s\n", s);
|
|
|
|
e_init_status_set(s);
|
|
|
|
evas_stringshare_del(s);
|
|
|
|
}
|
2007-09-23 18:16:47 -07:00
|
|
|
}
|
|
|
|
else if (e->minor == 2)
|
|
|
|
{
|
|
|
|
e_config->show_splash = e->ref;
|
|
|
|
e_config_save_queue();
|
|
|
|
}
|
|
|
|
if (done) e_init_done();
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
e_init_client_del(Ecore_Ipc_Event_Client_Del *e)
|
|
|
|
{
|
|
|
|
printf("---del init client\n");
|
|
|
|
if (e->client == client)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
client = NULL;
|
|
|
|
for (l = e_manager_list(); l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Manager *man;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-09-23 18:16:47 -07:00
|
|
|
man = l->data;
|
|
|
|
man->initwin = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#else /* OLD INIT CODE */
|
2005-03-07 23:24:39 -08:00
|
|
|
static void _e_init_icons_del(void);
|
2005-05-27 03:04:53 -07:00
|
|
|
static void _e_init_cb_signal_disable(void *data, Evas_Object *obj, const char *emission, const char *source);
|
2006-08-26 04:14:16 -07:00
|
|
|
static void _e_init_cb_signal_enable(void *data, Evas_Object *obj, const char *emission, const char *source);
|
2005-06-22 07:09:17 -07:00
|
|
|
static void _e_init_cb_signal_done_ok(void *data, Evas_Object *obj, const char *emission, const char *source);
|
2006-10-30 03:13:34 -08:00
|
|
|
static int _e_init_cb_window_configure(void *data, int ev_type, void *ev);
|
2006-11-11 18:16:16 -08:00
|
|
|
static int _e_init_cb_timeout(void *data);
|
2005-02-07 07:09:37 -08:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
/* local subsystem globals */
|
2006-10-30 03:13:34 -08:00
|
|
|
static Ecore_X_Window _e_init_root_win = 0;
|
2004-11-24 19:37:45 -08:00
|
|
|
static Ecore_X_Window _e_init_win = 0;
|
|
|
|
static Ecore_Evas *_e_init_ecore_evas = NULL;
|
|
|
|
static Evas *_e_init_evas = NULL;
|
|
|
|
static Evas_Object *_e_init_object = NULL;
|
2005-02-27 21:35:02 -08:00
|
|
|
static Evas_Object *_e_init_icon_box = NULL;
|
2005-08-16 18:35:48 -07:00
|
|
|
static E_Pointer *_e_init_pointer = NULL;
|
2006-11-11 18:16:16 -08:00
|
|
|
static Ecore_Event_Handler *_e_init_configure_handler = NULL;
|
|
|
|
static Ecore_Timer *_e_init_timeout_timer = NULL;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-02-07 07:09:37 -08:00
|
|
|
/* startup icons */
|
2005-03-07 23:24:39 -08:00
|
|
|
static Evas_Coord _e_init_icon_size = 0;
|
|
|
|
static Evas_List *_e_init_icon_list = NULL;
|
2005-02-07 07:09:37 -08:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
/* externally accessible functions */
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI int
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_init(void)
|
|
|
|
{
|
2005-04-12 23:03:50 -07:00
|
|
|
int w, h;
|
2004-11-24 19:37:45 -08:00
|
|
|
Ecore_X_Window root;
|
|
|
|
Ecore_X_Window *roots;
|
2005-02-07 05:51:09 -08:00
|
|
|
int num;
|
2004-11-24 19:37:45 -08:00
|
|
|
Evas_Object *o;
|
2005-03-07 01:56:49 -08:00
|
|
|
Evas_List *l, *screens;
|
2006-03-02 04:03:48 -08:00
|
|
|
const char *s;
|
2006-10-30 03:13:34 -08:00
|
|
|
|
2007-10-30 19:41:52 -07:00
|
|
|
_e_init_configure_handler =
|
|
|
|
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE,
|
2006-10-30 03:13:34 -08:00
|
|
|
_e_init_cb_window_configure, NULL);
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
num = 0;
|
|
|
|
roots = ecore_x_window_root_list(&num);
|
|
|
|
if ((!roots) || (num <= 0))
|
|
|
|
{
|
2005-04-11 13:25:52 -07:00
|
|
|
e_error_message_show(_("X reports there are no root windows and %i screens!\n"),
|
2004-11-24 19:37:45 -08:00
|
|
|
num);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
root = roots[0];
|
2006-10-30 03:13:34 -08:00
|
|
|
_e_init_root_win = root;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-01-11 06:17:36 -08:00
|
|
|
ecore_x_window_size_get(root, &w, &h);
|
2005-10-03 00:36:23 -07:00
|
|
|
_e_init_ecore_evas = e_canvas_new(e_config->evas_engine_init, root,
|
|
|
|
0, 0, w, h, 1, 1,
|
|
|
|
&(_e_init_win), NULL);
|
2004-11-24 19:37:45 -08:00
|
|
|
e_canvas_add(_e_init_ecore_evas);
|
|
|
|
_e_init_evas = ecore_evas_get(_e_init_ecore_evas);
|
|
|
|
ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window");
|
|
|
|
ecore_evas_title_set(_e_init_ecore_evas, "Enlightenment Init");
|
2005-09-26 09:14:31 -07:00
|
|
|
|
2006-08-19 21:48:27 -07:00
|
|
|
_e_init_pointer = e_pointer_window_new(_e_init_win, 1);
|
2005-09-26 09:14:31 -07:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
ecore_evas_raise(_e_init_ecore_evas);
|
|
|
|
ecore_evas_show(_e_init_ecore_evas);
|
2005-03-07 22:51:21 -08:00
|
|
|
|
2006-08-26 04:06:05 -07:00
|
|
|
if (!e_config->init_default_theme)
|
|
|
|
s = e_path_find(path_init, "default.edj");
|
2006-08-26 04:19:07 -07:00
|
|
|
else if (e_config->init_default_theme[0] == '/')
|
2006-08-26 04:06:05 -07:00
|
|
|
s = evas_stringshare_add(e_config->init_default_theme);
|
|
|
|
else
|
|
|
|
s = e_path_find(path_init, e_config->init_default_theme);
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-03-07 01:56:49 -08:00
|
|
|
screens = (Evas_List *)e_xinerama_screens_get();
|
2005-04-25 01:29:53 -07:00
|
|
|
if (screens)
|
2005-01-11 06:17:36 -08:00
|
|
|
{
|
2005-04-25 01:29:53 -07:00
|
|
|
for (l = screens; l; l = l->next)
|
2005-03-07 01:56:49 -08:00
|
|
|
{
|
2005-04-25 01:29:53 -07:00
|
|
|
E_Screen *scr;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-04-25 01:29:53 -07:00
|
|
|
scr = l->data;
|
|
|
|
o = edje_object_add(_e_init_evas);
|
|
|
|
/* first screen */
|
|
|
|
if (l == screens)
|
|
|
|
{
|
2006-08-26 04:06:05 -07:00
|
|
|
edje_object_file_set(o, s, "e/init/splash");
|
2005-04-25 01:29:53 -07:00
|
|
|
_e_init_object = o;
|
|
|
|
}
|
|
|
|
/* other screens */
|
|
|
|
else
|
2006-08-26 04:06:05 -07:00
|
|
|
edje_object_file_set(o, s, "e/init/extra_screen");
|
2005-04-25 01:29:53 -07:00
|
|
|
evas_object_move(o, scr->x, scr->y);
|
|
|
|
evas_object_resize(o, scr->w, scr->h);
|
|
|
|
evas_object_show(o);
|
2005-03-07 01:56:49 -08:00
|
|
|
}
|
2005-04-25 01:29:53 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
o = edje_object_add(_e_init_evas);
|
2006-08-26 04:06:05 -07:00
|
|
|
edje_object_file_set(o, s, "e/init/splash");
|
2005-12-04 04:03:59 -08:00
|
|
|
if (s) evas_stringshare_del(s);
|
2005-04-25 01:29:53 -07:00
|
|
|
_e_init_object = o;
|
|
|
|
evas_object_move(o, 0, 0);
|
|
|
|
evas_object_resize(o, w, h);
|
2005-03-07 22:51:21 -08:00
|
|
|
evas_object_show(o);
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
2006-08-26 04:06:05 -07:00
|
|
|
if (s) evas_stringshare_del(s);
|
2007-10-30 19:41:52 -07:00
|
|
|
|
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.disable_text",
|
2005-05-27 03:04:53 -07:00
|
|
|
_("Disable this splash screen in the future?"));
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_signal_callback_add(_e_init_object, "e,action,init,disable", "e",
|
2005-05-27 03:04:53 -07:00
|
|
|
_e_init_cb_signal_disable, NULL);
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_signal_callback_add(_e_init_object, "e,action,init,enable", "e",
|
|
|
|
_e_init_cb_signal_enable, NULL);
|
|
|
|
edje_object_signal_callback_add(_e_init_object, "e,state,done_ok", "e",
|
2005-06-22 07:09:17 -07:00
|
|
|
_e_init_cb_signal_done_ok, NULL);
|
2004-11-24 19:37:45 -08:00
|
|
|
free(roots);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI int
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_shutdown(void)
|
|
|
|
{
|
2006-11-11 18:16:16 -08:00
|
|
|
ecore_event_handler_del(_e_init_configure_handler);
|
|
|
|
_e_init_configure_handler = NULL;
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_hide();
|
|
|
|
e_canvas_cache_flush();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_show(void)
|
|
|
|
{
|
|
|
|
if (!_e_init_ecore_evas) return;
|
|
|
|
ecore_evas_raise(_e_init_ecore_evas);
|
|
|
|
ecore_evas_show(_e_init_ecore_evas);
|
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_hide(void)
|
|
|
|
{
|
|
|
|
/* FIXME: emit signal to edje and wait for it to respond or until a */
|
|
|
|
/* in case the edje was badly created and never responds */
|
|
|
|
if (!_e_init_ecore_evas) return;
|
2005-04-14 03:03:59 -07:00
|
|
|
_e_init_icons_del();
|
2004-11-24 19:37:45 -08:00
|
|
|
ecore_evas_hide(_e_init_ecore_evas);
|
|
|
|
evas_object_del(_e_init_object);
|
|
|
|
e_canvas_del(_e_init_ecore_evas);
|
|
|
|
ecore_evas_free(_e_init_ecore_evas);
|
2005-09-26 09:14:31 -07:00
|
|
|
|
|
|
|
if (_e_init_pointer)
|
|
|
|
{
|
|
|
|
e_object_del(E_OBJECT(_e_init_pointer));
|
|
|
|
_e_init_pointer = NULL;
|
|
|
|
}
|
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
_e_init_ecore_evas = NULL;
|
|
|
|
_e_init_evas = NULL;
|
|
|
|
_e_init_win = 0;
|
|
|
|
_e_init_object = NULL;
|
2005-04-14 03:03:59 -07:00
|
|
|
e_canvas_cache_flush();
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_title_set(const char *str)
|
|
|
|
{
|
|
|
|
if (!_e_init_object) return;
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.title", str);
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_version_set(const char *str)
|
|
|
|
{
|
|
|
|
if (!_e_init_object) return;
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.version", str);
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_status_set(const char *str)
|
|
|
|
{
|
|
|
|
if (!_e_init_object) return;
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_part_text_set(_e_init_object, "e.text.status", str);
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI Ecore_X_Window
|
2004-11-24 19:37:45 -08:00
|
|
|
e_init_window_get(void)
|
|
|
|
{
|
|
|
|
return _e_init_win;
|
|
|
|
}
|
2005-02-07 07:09:37 -08:00
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2005-06-22 07:09:17 -07:00
|
|
|
e_init_done(void)
|
|
|
|
{
|
|
|
|
if (!_e_init_object) return;
|
2006-11-11 18:16:16 -08:00
|
|
|
edje_object_signal_emit(_e_init_object, "e,state,done", "e");
|
|
|
|
_e_init_timeout_timer = ecore_timer_add(30.0, _e_init_cb_timeout, NULL);
|
2005-06-22 07:09:17 -07:00
|
|
|
}
|
2005-02-07 07:09:37 -08:00
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2007-03-24 15:53:16 -07:00
|
|
|
e_init_icons_desktop_add(Efreet_Desktop *desktop)
|
2005-02-07 07:09:37 -08:00
|
|
|
{
|
|
|
|
Evas_Object *o;
|
2007-03-24 15:53:16 -07:00
|
|
|
char buf[128];
|
2005-02-27 21:35:02 -08:00
|
|
|
|
|
|
|
if (!_e_init_evas) return;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-02-27 21:35:02 -08:00
|
|
|
if (!_e_init_icon_box)
|
|
|
|
{
|
|
|
|
Evas_Coord w, h;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2005-02-27 21:35:02 -08:00
|
|
|
o = e_box_add(_e_init_evas);
|
|
|
|
_e_init_icon_box = o;
|
|
|
|
e_box_homogenous_set(o, 1);
|
|
|
|
e_box_align_set(o, 0.5, 0.5);
|
2006-08-26 04:14:16 -07:00
|
|
|
edje_object_part_swallow(_e_init_object, "e.swallow.icons", o);
|
2005-02-27 21:35:02 -08:00
|
|
|
evas_object_geometry_get(o, NULL, NULL, &w, &h);
|
|
|
|
if (w > h)
|
|
|
|
{
|
|
|
|
_e_init_icon_size = h;
|
|
|
|
e_box_orientation_set(o, 1);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_e_init_icon_size = w;
|
|
|
|
e_box_orientation_set(o, 0);
|
|
|
|
}
|
|
|
|
evas_object_show(o);
|
|
|
|
}
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2007-03-24 15:53:16 -07:00
|
|
|
snprintf(buf, sizeof(buf), "%dx%d", _e_init_icon_size, _e_init_icon_size);
|
|
|
|
o = e_util_desktop_icon_add(desktop, buf, _e_init_evas);
|
|
|
|
if (o)
|
|
|
|
{
|
|
|
|
evas_object_resize(o, _e_init_icon_size, _e_init_icon_size);
|
|
|
|
e_box_pack_end(_e_init_icon_box, o);
|
2007-10-30 19:41:52 -07:00
|
|
|
e_box_pack_options_set(o,
|
|
|
|
0, 0,
|
|
|
|
0, 0,
|
2007-03-24 15:53:16 -07:00
|
|
|
0.5, 0.5,
|
|
|
|
_e_init_icon_size, _e_init_icon_size,
|
|
|
|
_e_init_icon_size, _e_init_icon_size);
|
|
|
|
evas_object_show(o);
|
|
|
|
_e_init_icon_list = evas_list_append(_e_init_icon_list, o);
|
|
|
|
}
|
2005-02-07 07:09:37 -08:00
|
|
|
}
|
|
|
|
|
2005-03-07 23:24:39 -08:00
|
|
|
static void
|
2005-02-07 07:09:37 -08:00
|
|
|
_e_init_icons_del(void)
|
|
|
|
{
|
|
|
|
Evas_Object *next;
|
|
|
|
|
2005-02-27 21:35:02 -08:00
|
|
|
while (_e_init_icon_list)
|
2005-02-07 07:09:37 -08:00
|
|
|
{
|
|
|
|
next = _e_init_icon_list->data;
|
|
|
|
evas_object_del(next);
|
|
|
|
_e_init_icon_list = evas_list_remove(_e_init_icon_list, next);
|
|
|
|
}
|
2005-02-27 21:35:02 -08:00
|
|
|
if (_e_init_icon_box)
|
|
|
|
evas_object_del(_e_init_icon_box);
|
|
|
|
_e_init_icon_box = NULL;
|
2005-02-07 07:09:37 -08:00
|
|
|
}
|
2005-05-27 03:04:53 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_init_cb_signal_disable(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
2006-08-26 04:14:16 -07:00
|
|
|
e_config->show_splash = 0;
|
|
|
|
e_config_save_queue();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_init_cb_signal_enable(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
e_config->show_splash = 1;
|
2005-05-27 03:04:53 -07:00
|
|
|
e_config_save_queue();
|
|
|
|
}
|
2005-06-22 07:09:17 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_init_cb_signal_done_ok(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
e_init_hide();
|
2006-11-11 18:16:16 -08:00
|
|
|
if (_e_init_timeout_timer)
|
|
|
|
{
|
|
|
|
ecore_timer_del(_e_init_timeout_timer);
|
|
|
|
_e_init_timeout_timer = NULL;
|
|
|
|
}
|
2005-06-22 07:09:17 -07:00
|
|
|
}
|
2006-10-30 03:13:34 -08:00
|
|
|
|
|
|
|
static int
|
|
|
|
_e_init_cb_window_configure(void *data, int ev_type, void *ev)
|
|
|
|
{
|
|
|
|
Ecore_X_Event_Window_Configure *e;
|
2007-10-30 19:41:52 -07:00
|
|
|
|
2006-10-30 03:13:34 -08:00
|
|
|
e = ev;
|
|
|
|
/* really simple - don't handle xinerama - because this event will only
|
|
|
|
* happen in single head */
|
|
|
|
if (e->win != _e_init_root_win) return 1;
|
|
|
|
ecore_evas_resize(_e_init_ecore_evas, e->w, e->h);
|
|
|
|
evas_object_resize(_e_init_object, e->w, e->h);
|
|
|
|
return 1;
|
|
|
|
}
|
2006-11-11 18:16:16 -08:00
|
|
|
|
|
|
|
static int
|
|
|
|
_e_init_cb_timeout(void *data)
|
|
|
|
{
|
|
|
|
e_init_hide();
|
|
|
|
_e_init_timeout_timer = NULL;
|
|
|
|
e_util_dialog_internal(_("Theme Bug Detected"),
|
|
|
|
_("The theme you are using for your init splash<br>"
|
|
|
|
"has a bug. It does not respond to signals when<br>"
|
|
|
|
"startup is complete. You should use an init<br>"
|
|
|
|
"splash theme that is correctly made or fix the<br>"
|
|
|
|
"one you use."));
|
|
|
|
return 0;
|
|
|
|
}
|
2007-09-23 18:16:47 -07:00
|
|
|
#endif
|