Show errors on popup

Instead of only printing errors to console
This commit is contained in:
Bruno Dilly 2016-10-20 12:12:38 -02:00
parent 37839e70cf
commit 7175c00bc2
2 changed files with 47 additions and 0 deletions

View File

@ -1 +1,2 @@
Gustavo Sverzut Barbieri <barbieri@gmail.com>
Bruno Dilly <bdilly@profusion.mobi>

View File

@ -31,6 +31,7 @@ struct _Zone {
Evas_Object *display_pos;
Evas_Object *cmdbox;
Evas_Object *help_popup;
Evas_Object *error_popup;
Ecore_Idler *del_help_popup_idler;
struct {
Evas_Object *frame;
@ -1434,6 +1435,47 @@ zone_zoom_pre_setup(Zone *zone)
zone->zoom.ready = EINA_FALSE;
}
static void
_error_popup_hide_cb(void *data, Evas_Object *o EINA_UNUSED, void *event EINA_UNUSED)
{
Zone *zone = data;
evas_object_del(zone->error_popup);
zone->error_popup = NULL;
}
static void
show_error_popup(Zone *zone, const char *str)
{
Evas_Object *popup, *msg;
if (zone->error_popup) return;
popup = elm_popup_add(zone->win);
elm_popup_content_text_wrap_type_set(popup, ELM_WRAP_MIXED);
elm_object_part_text_set(popup, "title,text", "ERuler");
msg = elm_entry_add(popup);
elm_entry_editable_set(msg, EINA_FALSE);
#if (ELM_VERSION_MAJOR >= 1) && (ELM_VERSION_MINOR >= 8)
elm_scroller_policy_set(msg, ELM_SCROLLER_POLICY_OFF,
ELM_SCROLLER_POLICY_AUTO);
#else
elm_entry_scrollbar_policy_set(msg, ELM_SCROLLER_POLICY_OFF,
ELM_SCROLLER_POLICY_AUTO);
#endif
elm_object_text_set(msg, str);
elm_object_content_set(popup, msg);
elm_popup_timeout_set(popup, 3);
evas_object_smart_callback_add(popup, "timeout", _error_popup_hide_cb, zone);
evas_object_show(popup);
zone->error_popup = popup;
}
static void
_popup_dismiss_cb(void *data, Evas_Object *o EINA_UNUSED, void *event EINA_UNUSED)
{
@ -1560,11 +1602,15 @@ _create_ruler_cmdbox_activated(void *data, Evas_Object *o, void *event_info EINA
if (sscanf(str, "%d %d %d %d", &x, &y, &w, &h) != 4)
{
show_error_popup(zone,
"Error: Invalid creation format. Expected 'x y w h'");
ERR("Invalid creation format. Expected 'x y w h', got '%s'", str);
goto end;
}
if (w < 1 || h < 1)
{
show_error_popup(zone,
"Error: Invalid size. w and h must be positive.");
ERR("Invalid size: %dx%d", w, h);
goto end;
}