discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=27d505fb595e63615b0f6e83759848268abcbf59

commit 27d505fb595e63615b0f6e83759848268abcbf59
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jan 22 17:03:45 2018 -0500

    require [X-Gadget-Bugreport] entry for sandbox gadgets, integrate bug 
reporting
---
 src/bin/e_gadget_runner.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/src/bin/e_gadget_runner.c b/src/bin/e_gadget_runner.c
index aaaef650e..d6a56011a 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);

-- 


Reply via email to