parent
51a5b1eb69
commit
debf05b883
|
@ -14,6 +14,7 @@ static void _e_error_message_show_x(char *txt);
|
|||
|
||||
static void _e_error_cb_ok_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _e_error_cb_ok_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _e_error_edje_cb_ok_up(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_error_cb_job_ecore_evas_free(void *data);
|
||||
|
||||
/* local subsystem globals */
|
||||
|
@ -52,11 +53,12 @@ e_error_gui_set(int on)
|
|||
void
|
||||
e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
Evas *e;
|
||||
int error_w, error_h;
|
||||
Evas_List *l, *shapelist = NULL;
|
||||
Evas_Coord maxw, maxh;
|
||||
Ecore_Evas *ee;
|
||||
Evas *e;
|
||||
Evas_Object *o;
|
||||
int error_w, error_h;
|
||||
Evas_List *l, *shapelist = NULL;
|
||||
Evas_Coord maxw, maxh;
|
||||
|
||||
error_w = 400;
|
||||
error_h = 200;
|
||||
|
@ -72,11 +74,19 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
e_path_evas_append(path_fonts, e);
|
||||
e_pointer_ecore_evas_set(ee);
|
||||
|
||||
o = edje_object_add(e);
|
||||
if (!edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"error/main"))
|
||||
|
||||
{
|
||||
Evas_Object *o;
|
||||
Evas_Coord tw, th;
|
||||
char *newstr;
|
||||
|
||||
if (o)
|
||||
evas_object_del(o);
|
||||
|
||||
maxw = 0;
|
||||
maxh = 0;
|
||||
|
||||
|
@ -118,12 +128,12 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
{
|
||||
char *p;
|
||||
Evas_Coord y;
|
||||
|
||||
|
||||
y = 16 + 64 + 16;
|
||||
for (p = newstr; p;)
|
||||
{
|
||||
char *pp;
|
||||
|
||||
|
||||
pp = strchr(p, '\n');
|
||||
if (pp) *pp = 0;
|
||||
o = evas_object_text_add(e);
|
||||
|
@ -134,7 +144,7 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
evas_object_move(o, 16 + 1, y + 1);
|
||||
evas_object_pass_events_set(o, 1);
|
||||
evas_object_show(o);
|
||||
|
||||
|
||||
o = evas_object_text_add(e);
|
||||
evas_object_color_set(o, 0, 0, 0, 255);
|
||||
evas_object_text_font_set(o, "Vera", 10);
|
||||
|
@ -143,7 +153,7 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
evas_object_move(o, 16, y);
|
||||
evas_object_pass_events_set(o, 1);
|
||||
evas_object_show(o);
|
||||
|
||||
|
||||
if ((16 + tw + 16) > maxw) maxw = 16 + tw + 16;
|
||||
y += th;
|
||||
if (pp) p = pp + 1;
|
||||
|
@ -152,11 +162,11 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
free(newstr);
|
||||
maxh = y;
|
||||
}
|
||||
|
||||
|
||||
maxh += 16 + 32 + 16;
|
||||
error_w = maxw;
|
||||
error_h = maxh;
|
||||
|
||||
|
||||
if (error_w > man->w) error_w = man->w;
|
||||
if (error_h > man->h) error_h = man->h;
|
||||
|
||||
|
@ -215,6 +225,77 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
}
|
||||
ecore_evas_data_set(ee, "shapes", shapelist);
|
||||
|
||||
o = evas_object_rectangle_add(e);
|
||||
evas_object_name_set(o, "allocated");
|
||||
}
|
||||
else
|
||||
{
|
||||
char format[1024];
|
||||
Evas_Object *text;
|
||||
int x, y, w, h, nw, nh;
|
||||
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, error_w, error_h);
|
||||
edje_object_signal_callback_add(o, "close", "",
|
||||
_e_error_edje_cb_ok_up, ee);
|
||||
evas_object_show(o);
|
||||
|
||||
edje_object_part_text_set(o, "title", title);
|
||||
|
||||
snprintf(format, sizeof(format), "source='%s' font='%s' size=%d wrap=word",
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"fonts/Edje Vera", 10);
|
||||
text = evas_object_textblock_add(e);
|
||||
evas_object_color_set(text, 0, 0, 0, 255);
|
||||
evas_object_textblock_format_insert(text, format);
|
||||
{
|
||||
char *pp, *newstr, *p;
|
||||
newstr = strdup(txt);
|
||||
p = newstr;
|
||||
while (p)
|
||||
{
|
||||
pp = strchr(p, '\n');
|
||||
if (pp) *pp = 0;
|
||||
evas_object_textblock_text_insert(text, p);
|
||||
if (pp)
|
||||
{
|
||||
p = pp + 1;
|
||||
evas_object_textblock_format_insert(text, "\n");
|
||||
}
|
||||
else
|
||||
p = NULL;
|
||||
}
|
||||
free(newstr);
|
||||
}
|
||||
edje_object_part_swallow(o, "text", text);
|
||||
evas_object_show(text);
|
||||
|
||||
edje_object_part_geometry_get(o, "text", &x, &y, &w, &h);
|
||||
evas_object_textblock_format_size_get(text, &nw, &nh);
|
||||
/* FIXME: How to handle the width of the text? */
|
||||
error_h += (nh - h);
|
||||
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, error_w, error_h);
|
||||
evas_object_show(o);
|
||||
|
||||
ecore_evas_move(ee, (man->w - error_w) / 2, (man->h - error_h) / 2);
|
||||
ecore_evas_resize(ee, error_w, error_h);
|
||||
|
||||
for (l = man->containers; l; l = l->next)
|
||||
{
|
||||
E_Container *con;
|
||||
E_Container_Shape *es;
|
||||
|
||||
con = l->data;
|
||||
es = e_container_shape_add(con);
|
||||
e_container_shape_move(es, (man->w - error_w) / 2, (man->h - error_h) / 2);
|
||||
e_container_shape_resize(es, error_w, error_h);
|
||||
e_container_shape_show(es);
|
||||
shapelist = evas_list_append(shapelist, es);
|
||||
}
|
||||
ecore_evas_data_set(ee, "shapes", shapelist);
|
||||
|
||||
o = evas_object_rectangle_add(e);
|
||||
evas_object_name_set(o, "allocated");
|
||||
}
|
||||
|
@ -259,6 +340,21 @@ _e_error_cb_ok_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_error_edje_cb_ok_up(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
Evas_Object *o;
|
||||
|
||||
ee = data;
|
||||
o = evas_object_name_find(ecore_evas_get(ee), "allocated");
|
||||
if (o)
|
||||
{
|
||||
evas_object_del(o);
|
||||
ecore_job_add(_e_error_cb_job_ecore_evas_free, ee);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_error_cb_job_ecore_evas_free(void *data)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue