diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-22 17:03:45 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-22 17:03:45 -0500 |
commit | 27d505fb595e63615b0f6e83759848268abcbf59 (patch) | |
tree | a80611ea0183925b87232d125d4f3ff82974da35 | |
parent | 6f9b14b8ee43a92338dbfcc536e044d35766975e (diff) | |
download | enlightenment-27d505fb595e63615b0f6e83759848268abcbf59.tar.gz |
require [X-Gadget-Bugreport] entry for sandbox gadgets, integrate bug reporting
-rw-r--r-- | src/bin/e_gadget_runner.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c index aaaef650e9..d6a56011aa 100644 --- a/src/bin/e_gadget_runner.c +++ b/src/bin/e_gadget_runner.c @@ -764,6 +764,14 @@ runner_hints(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info } static void +runner_menu_bugreport(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED) +{ + char *url = data; + e_util_open(url, NULL); + free(url); +} + +static void runner_menu(void *data, Evas_Object *obj, void *event_info) { E_Menu *m = event_info; @@ -771,8 +779,31 @@ runner_menu(void *data, Evas_Object *obj, void *event_info) if (inst->ci->sandbox) { + E_Menu_Item *mi; + E_Menu *subm; Efreet_Desktop *ed = eina_hash_find(sandbox_gadgets, e_gadget_type_get(obj)); + char buf[1024]; + e_menu_title_set(m, ed->name); + + subm = e_menu_new(); + snprintf(buf, sizeof(buf), _("Version: %s"), (char*)eina_hash_find(ed->x, "X-Gadget-Version")); + e_menu_title_set(subm, buf); + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Details")); + e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); + + mi = e_menu_item_new(subm); + snprintf(buf, sizeof(buf), "PID: %u", ecore_exe_pid_get(inst->exe)); + e_menu_item_label_set(mi, buf); + e_menu_item_disabled_set(mi, 1); + + mi = e_menu_item_new(subm); + e_menu_item_label_set(mi, _("Report bug")); + e_util_menu_item_theme_icon_set(mi, "dialog-error"); + e_menu_item_callback_set(mi, runner_menu_bugreport, eina_strdup(eina_hash_find(ed->x, "X-Gadget-Bugreport"))); } else { @@ -1003,6 +1034,17 @@ gadget_dir_add(const char *filename) efreet_desktop_free(ed); return; } + if (!eina_hash_find(ed->x, "X-Gadget-Bugreport")) + { + char str[4096]; + snprintf(str, sizeof(str), _("A gadget .desktop file was found,</ps>" + "but [X-Gadget-Bugreport] is missing!</ps>" + "%s"), buf); + /* FIXME: maybe don't use notification here? T6630 */ + e_notification_util_send(_("Gadget Error"), str); + efreet_desktop_free(ed); + return; + } eina_hash_add(sandbox_gadgets, filename, ed); e_gadget_external_type_add("runner_sandbox", filename, sandbox_create, NULL); e_gadget_external_type_name_cb_set("runner_sandbox", filename, sandbox_name); |