Add some e_utils integration, more to come - should help folk use the handy apps
SVN revision: 15139
This commit is contained in:
parent
bcdb7bcf9a
commit
1c7951c07c
|
@ -4277,43 +4277,46 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
|
|||
"widgets/border/default/sendto"),
|
||||
"widgets/border/default/sendto");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
a = e_app_window_name_class_find(bd->client.icccm.name,
|
||||
bd->client.icccm.class);
|
||||
|
||||
if (a)
|
||||
if (e_util_app_installed("emblem"))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Edit Icon"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, a->path);
|
||||
e_menu_item_icon_edje_set(mi, a->path, "icon");
|
||||
}
|
||||
else if (bd->client.icccm.class) /* icons with no class useless to borders */
|
||||
{
|
||||
static char buf[PATH_MAX + 50];
|
||||
char *name, *homedir;
|
||||
int i, l;
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
buf[0] = '\0';
|
||||
/* generate a reasonable file name from the window class */
|
||||
/* FIXME - I think there could be duplicates - how better to do this? */
|
||||
name = strdup(bd->client.icccm.class);
|
||||
l = strlen(name);
|
||||
for (i = 0; i < l; i++)
|
||||
a = e_app_window_name_class_find(bd->client.icccm.name,
|
||||
bd->client.icccm.class);
|
||||
|
||||
if (a)
|
||||
{
|
||||
if (name[i] == ' ') name[i] = '_';
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Edit Icon"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, a->path);
|
||||
e_menu_item_icon_edje_set(mi, a->path, "icon");
|
||||
}
|
||||
/* previously this could be null, but it will exist now */
|
||||
homedir = e_user_homedir_get();
|
||||
else if (bd->client.icccm.class) /* icons with no class useless to borders */
|
||||
{
|
||||
static char buf[PATH_MAX + 50];
|
||||
char *name, *homedir;
|
||||
int i, l;
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"--win-class \"%s\" %s/.e/e/applications/all/%s.eapp",
|
||||
bd->client.icccm.class, homedir, name);
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Create Icon"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, buf);
|
||||
buf[0] = '\0';
|
||||
/* generate a reasonable file name from the window class */
|
||||
/* FIXME - I think there could be duplicates - how better to do this? */
|
||||
name = strdup(bd->client.icccm.class);
|
||||
l = strlen(name);
|
||||
for (i = 0; i < l; i++)
|
||||
{
|
||||
if (name[i] == ' ') name[i] = '_';
|
||||
}
|
||||
/* previously this could be null, but it will exist now */
|
||||
homedir = e_user_homedir_get();
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"--win-class \"%s\" %s/.e/e/applications/all/%s.eapp",
|
||||
bd->client.icccm.class, homedir, name);
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Create Icon"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, buf);
|
||||
}
|
||||
}
|
||||
|
||||
if (key)
|
||||
|
|
|
@ -19,6 +19,7 @@ struct _Main_Data
|
|||
/* local subsystem functions */
|
||||
static void _e_int_menus_main_del_hook (void *obj);
|
||||
static void _e_int_menus_main_about (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi);
|
||||
static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_apps_scan (E_Menu *m);
|
||||
|
@ -122,6 +123,13 @@ e_int_menus_main_new(void)
|
|||
e_menu_item_icon_edje_set(mi, s, "e");
|
||||
IF_FREE(s);
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_about, NULL);
|
||||
|
||||
if (e_util_app_installed("exige"))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Run Command"));
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_run, NULL);
|
||||
}
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
@ -249,6 +257,15 @@ _e_int_menus_main_about(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_main_run(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Ecore_Exe *exe;
|
||||
|
||||
exe = ecore_exe_run("exige", NULL);
|
||||
if (exe) ecore_exe_free(exe);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
|
|
|
@ -113,3 +113,29 @@ _e_util_wakeup_cb(void *data)
|
|||
_e_util_dummy_timer = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
e_util_utils_installed(void)
|
||||
{
|
||||
return e_util_app_installed("emblem");
|
||||
}
|
||||
|
||||
int
|
||||
e_util_app_installed(char *app)
|
||||
{
|
||||
char *cmd, *tmp;
|
||||
int ret, len;
|
||||
|
||||
if (!app)
|
||||
return 0;
|
||||
|
||||
cmd = "which %s > /dev/null 2>&1";
|
||||
len = strlen(cmd) + strlen(app) - 1; // -1 is -2 for "%s" and +1 for "\0"
|
||||
tmp = malloc(len);
|
||||
snprintf(tmp, len, cmd, app);
|
||||
|
||||
ret = system(tmp);
|
||||
free(tmp);
|
||||
return (ret == 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ EAPI void e_util_container_fake_mouse_up_all_later(E_Container *con);
|
|||
EAPI void e_util_wakeup(void);
|
||||
EAPI void e_util_env_set(const char *var, const char *val);
|
||||
EAPI E_Zone *e_util_zone_current_get(E_Manager *man);
|
||||
EAPI int e_util_utils_installed(void);
|
||||
EAPI int e_util_app_installed(char *app);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue