ZGold's patch for adding 'Add Keyboard Shortcut' to border menu.
SVN revision: 32195
This commit is contained in:
parent
32cbb1b860
commit
c7811fef97
|
@ -33,6 +33,7 @@ static void _e_border_menu_cb_lower(void *data, E_Menu *m, E_Menu_Item *mi);
|
|||
static void _e_border_menu_cb_state_pre(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_skip(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_fav_add(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_kbdshrtct_add(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_ibar_add_pre(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_ibar_add(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_border_pre(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -96,56 +97,56 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
|
|||
/* Only allow to change layer for windows in "normal" layers */
|
||||
if ((!bd->lock_user_maximize) && (!bd->shaded) &&
|
||||
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
||||
{
|
||||
m = e_menu_new();
|
||||
e_menu_category_set(m,"border/maximize");
|
||||
e_menu_category_data_set("border/maximize",bd);
|
||||
bd->border_maximize_menu = m;
|
||||
{
|
||||
m = e_menu_new();
|
||||
e_menu_category_set(m,"border/maximize");
|
||||
e_menu_category_data_set("border/maximize",bd);
|
||||
bd->border_maximize_menu = m;
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize vertically"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_vertically, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize horizontally"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_horizontally, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Unmaximize"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_NONE);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_unmaximize, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize vertically"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_vertically, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximize horizontally"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_horizontally, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Unmaximize"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 3);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_NONE);
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_unmaximize, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
}
|
||||
|
||||
m = e_menu_new();
|
||||
e_menu_category_set(m,"border");
|
||||
|
@ -274,7 +275,14 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
|
|||
e_menu_item_label_set(mi, _("Add To Favorites Menu"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_fav_add, bd);
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/favorites");
|
||||
|
||||
|
||||
if (e_configure_registry_exists("keyboard_and_mouse/key_bindings"))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Add Keyboard Shortcut"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_kbdshrtct_add, bd);
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/keys");
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Add To Launcher"));
|
||||
e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_ibar_add_pre, bd);
|
||||
|
@ -363,7 +371,6 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (key)
|
||||
e_menu_activate_key(m, bd->zone, x, y, 1, 1, E_MENU_POP_DIRECTION_DOWN);
|
||||
else
|
||||
|
@ -428,6 +435,7 @@ static void
|
|||
_e_border_menu_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
if (bd->border_remember_dialog) return;
|
||||
e_int_border_remember(bd);
|
||||
|
@ -533,7 +541,6 @@ _e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
static void
|
||||
_e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
|
@ -790,8 +797,8 @@ _e_border_menu_cb_netwm_icon(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
{
|
||||
o = e_icon_add(m->evas);
|
||||
e_icon_data_set(o, bd->client.netwm.icons[0].data,
|
||||
bd->client.netwm.icons[0].width,
|
||||
bd->client.netwm.icons[0].height);
|
||||
bd->client.netwm.icons[0].width,
|
||||
bd->client.netwm.icons[0].height);
|
||||
e_icon_alpha_set(o, 1);
|
||||
mi->icon_object = o;
|
||||
}
|
||||
|
@ -818,9 +825,9 @@ _e_border_menu_cb_border_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_menu_item_label_set(submi, _("Select Border Style"));
|
||||
e_menu_item_callback_set(submi, _e_border_menu_cb_border, bd);
|
||||
e_menu_item_icon_edje_set(submi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/borderless"),
|
||||
"e/widgets/border/default/borderless");
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/borderless"),
|
||||
"e/widgets/border/default/borderless");
|
||||
|
||||
submi = e_menu_item_new(subm);
|
||||
e_menu_item_separator_set(submi, 1);
|
||||
|
@ -958,7 +965,6 @@ _e_border_menu_cb_skip(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_object_data_set(E_OBJECT(subm), bd);
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
||||
submi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(submi, _("Window List"));
|
||||
e_menu_item_check_set(submi, 1);
|
||||
|
@ -997,6 +1003,20 @@ _e_border_menu_cb_fav_add(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
efreet_menu_save(menu, buf);
|
||||
efreet_menu_free(menu);
|
||||
}
|
||||
static void
|
||||
_e_border_menu_cb_kbdshrtct_add(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Border *bd;
|
||||
E_Zone *zone;
|
||||
char buf[4096];
|
||||
|
||||
bd = data;
|
||||
if (!bd) return;
|
||||
zone = e_util_zone_current_get(e_manager_current_get());
|
||||
if(!zone) return;
|
||||
e_configure_registry_call("keyboard_and_mouse/key_bindings",
|
||||
zone->container, bd->desktop->exec);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_border_menu_cb_ibar_add_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
|
@ -1005,11 +1025,12 @@ _e_border_menu_cb_ibar_add_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
E_Border *bd;
|
||||
Ecore_List *dirs;
|
||||
char buf[4096], *file;
|
||||
|
||||
const char *homedir;
|
||||
|
||||
bd = data;
|
||||
if (!bd) return;
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar",
|
||||
e_user_homedir_get());
|
||||
homedir = e_user_homedir_get();
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar", homedir);
|
||||
dirs = ecore_file_ls(buf);
|
||||
if (!dirs) return;
|
||||
|
||||
|
@ -1019,8 +1040,7 @@ _e_border_menu_cb_ibar_add_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
E_Menu_Item *smi;
|
||||
|
||||
if (file[0] == '.') continue;
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s",
|
||||
e_user_homedir_get(), file);
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", homedir, file);
|
||||
if (ecore_file_is_dir(buf))
|
||||
{
|
||||
smi = e_menu_item_new(sm);
|
||||
|
|
|
@ -52,19 +52,13 @@ struct _E_Config_Dialog_Data
|
|||
} binding;
|
||||
struct
|
||||
{
|
||||
char *binding;
|
||||
char *action;
|
||||
char *params;
|
||||
|
||||
char *cur;
|
||||
int cur_act;
|
||||
int add;
|
||||
char *binding, *action, *params, *cur;
|
||||
int cur_act, add;
|
||||
|
||||
E_Dialog *dia;
|
||||
Ecore_X_Window bind_win;
|
||||
Evas_List *handlers;
|
||||
} locals;
|
||||
|
||||
struct
|
||||
{
|
||||
Evas_Object *o_add, *o_mod, *o_del, *o_del_all;
|
||||
|
@ -72,11 +66,12 @@ struct _E_Config_Dialog_Data
|
|||
Evas_Object *o_params;
|
||||
} gui;
|
||||
|
||||
char *params;
|
||||
E_Config_Dialog *cfd;
|
||||
};
|
||||
|
||||
EAPI E_Config_Dialog *
|
||||
e_int_config_keybindings(E_Container *con, const char *params __UNUSED__)
|
||||
e_int_config_keybindings(E_Container *con, const char *params)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -93,13 +88,19 @@ e_int_config_keybindings(E_Container *con, const char *params __UNUSED__)
|
|||
cfd = e_config_dialog_new(con, _("Key Binding Settings"), "E",
|
||||
"_config_keybindings_dialog",
|
||||
"enlightenment/keys", 0, v, NULL);
|
||||
if (strlen(params) > 0)
|
||||
{
|
||||
cfd->cfdata->params = params;
|
||||
_add_key_binding_cb(cfd->cfdata, NULL);
|
||||
}
|
||||
|
||||
return cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_List *l;
|
||||
Evas_List *l = NULL;
|
||||
E_Config_Binding_Key *bi, *bi2;
|
||||
|
||||
cfdata->locals.binding = strdup("");
|
||||
|
@ -159,14 +160,14 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
if (cfdata->locals.binding) free(cfdata->locals.binding);
|
||||
if (cfdata->locals.action) free(cfdata->locals.action);
|
||||
if (cfdata->locals.params) free(cfdata->locals.params);
|
||||
|
||||
if (cfdata->params) free(cfdata->params);
|
||||
E_FREE(cfdata);
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_List *l;
|
||||
Evas_List *l = NULL;
|
||||
E_Config_Binding_Key *bi, *bi2;
|
||||
|
||||
_auto_apply_changes(cfdata);
|
||||
|
@ -392,10 +393,11 @@ _delete_all_key_binding_cb(void *data, void *data2)
|
|||
|
||||
_update_buttons(cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_delete_key_binding_cb(void *data, void *data2)
|
||||
{
|
||||
Evas_List *l;
|
||||
Evas_List *l = NULL;
|
||||
char *n;
|
||||
int sel;
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
@ -621,6 +623,7 @@ _restore_key_binding_defaults_cb(void *data, void *data2)
|
|||
e_widget_entry_clear(cfdata->gui.o_params);
|
||||
e_widget_disabled_set(cfdata->gui.o_params, 1);
|
||||
}
|
||||
|
||||
/**************** Updates ***********/
|
||||
static void
|
||||
_update_action_list(E_Config_Dialog_Data *cfdata)
|
||||
|
@ -712,6 +715,7 @@ _update_action_list(E_Config_Dialog_Data *cfdata)
|
|||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
static void
|
||||
_update_action_params(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
|
@ -785,22 +789,17 @@ _update_action_params(E_Config_Dialog_Data *cfdata)
|
|||
if (!strcmp(action, actd->act_cmd))
|
||||
{
|
||||
if ((!params) || (!params[0]))
|
||||
{
|
||||
KB_EXAMPLE_PARAMS;
|
||||
}
|
||||
KB_EXAMPLE_PARAMS;
|
||||
else
|
||||
e_widget_entry_text_set(cfdata->gui.o_params, params);
|
||||
}
|
||||
else
|
||||
{
|
||||
KB_EXAMPLE_PARAMS;
|
||||
}
|
||||
KB_EXAMPLE_PARAMS;
|
||||
}
|
||||
else
|
||||
{
|
||||
KB_EXAMPLE_PARAMS;
|
||||
}
|
||||
KB_EXAMPLE_PARAMS;
|
||||
}
|
||||
|
||||
static void
|
||||
_update_key_binding_list(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
|
@ -892,7 +891,6 @@ _key_binding_sort_cb(void *d1, void *d2)
|
|||
|
||||
if (i < j) return -1;
|
||||
else if (i > j) return 1;
|
||||
|
||||
|
||||
if (bi->modifiers < bi2->modifiers) return -1;
|
||||
else if (bi->modifiers > bi2->modifiers) return 1;
|
||||
|
@ -902,7 +900,6 @@ _key_binding_sort_cb(void *d1, void *d2)
|
|||
|
||||
if (i < j) return -1;
|
||||
else if (i > j) return 1;
|
||||
|
||||
|
||||
i = strcmp(bi->key, bi2->key);
|
||||
if (i < 0) return -1;
|
||||
|
@ -1091,8 +1088,23 @@ _grab_key_down_cb(void *data, int type, void *event)
|
|||
e_widget_ilist_unselect(cfdata->gui.o_action_list);
|
||||
if (cfdata->locals.action) free(cfdata->locals.action);
|
||||
cfdata->locals.action = strdup("");
|
||||
e_widget_entry_clear(cfdata->gui.o_params);
|
||||
e_widget_disabled_set(cfdata->gui.o_params, 1);
|
||||
if(strlen(cfdata->params) > 0)
|
||||
{
|
||||
int j,g = -1;
|
||||
_find_key_binding_action("exec",NULL,&g,NULL,&j);
|
||||
if(j >=0 )
|
||||
{
|
||||
e_widget_ilist_unselect(cfdata->gui.o_action_list);
|
||||
e_widget_ilist_selected_set(cfdata->gui.o_action_list, (j+g+1));
|
||||
e_widget_entry_clear(cfdata->gui.o_params);
|
||||
e_widget_entry_text_set(cfdata->gui.o_params,cfdata->params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_entry_clear(cfdata->gui.o_params);
|
||||
e_widget_disabled_set(cfdata->gui.o_params, 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1192,6 +1204,7 @@ _auto_apply_changes(E_Config_Dialog_Data *cfdata)
|
|||
bi->params = evas_stringshare_add(cfdata->locals.params);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_find_key_binding_action(const char *action, const char *params, int *g, int *a, int *n)
|
||||
{
|
||||
|
@ -1259,6 +1272,7 @@ _find_key_binding_action(const char *action, const char *params, int *g, int *a,
|
|||
if (n) *n = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
_key_binding_text_get(E_Config_Binding_Key *bi)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue