menus for fm2 can be replaced by callbacks - and selected entries turned off.

fix default wheel bindinmgs too


SVN revision: 26881
This commit is contained in:
Carsten Haitzler 2006-10-31 14:37:31 +00:00
parent bc7dde9700
commit 622f36da0a
5 changed files with 233 additions and 209 deletions

2
TODO
View File

@ -27,8 +27,6 @@ Some of the things (in very short form) that need to be done to E17...
* fm2 needs a way to use custom icons per dir/file
* fm2 needs a way to bypass thumb gen anim on just a unrealize/realize as well
as change state instantly if it already was selected
* fm2 needs way to replace or modify the default right click menu contents
(disable/enable rename/delete/refresh etc.)
* fm2 needs a mime filter
* dnd needs to do xdnd properly.
* fwin: multi-mime open is too simplisitc. fix in fwin.c line 590 or so.

View File

@ -1073,30 +1073,6 @@ e_config_init(void)
//forget to reflect those changes in e_int_config_mousebinding.c in
//_restore_defaults_cb function
CFG_WHEELBIND(E_BINDING_CONTEXT_CONTAINER, 0, -1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND(E_BINDING_CONTEXT_CONTAINER, 1, -1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND(E_BINDING_CONTEXT_CONTAINER, 0, 1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND(E_BINDING_CONTEXT_CONTAINER, 1, 1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND(E_BINDING_CONTEXT_POPUP, 0, -1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND(E_BINDING_CONTEXT_POPUP, 1, -1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND(E_BINDING_CONTEXT_POPUP, 0, 1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND(E_BINDING_CONTEXT_POPUP, 1, 1,
E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND(E_BINDING_CONTEXT_CONTAINER, 0, -1,
E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_by", "-1");

View File

@ -53,7 +53,8 @@ struct _E_Fm2_Smart_Data
struct {
void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info);
void *data;
} start, end;
} start, end, replace;
E_Fm2_Menu_Flags flags;
} icon_menu;
Evas_List *icons;
@ -576,6 +577,19 @@ e_fm2_file_show(Evas_Object *obj, const char *file)
}
}
EAPI void
e_fm2_icon_menu_replace_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data)
{
E_Fm2_Smart_Data *sd;
sd = evas_object_smart_data_get(obj);
if (!sd) return; // safety
if (!evas_object_type_get(obj)) return; // safety
if (strcmp(evas_object_type_get(obj), "e_fm")) return; // safety
sd->icon_menu.replace.func = func;
sd->icon_menu.replace.data = data;
}
EAPI void
e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data)
{
@ -4131,6 +4145,12 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
mn = e_menu_new();
e_menu_category_set(mn, "e/fileman/action");
if (sd->icon_menu.replace.func)
{
sd->icon_menu.replace.func(sd->icon_menu.replace.data, sd->obj, mn, NULL);
}
else
{
if (sd->icon_menu.start.func)
{
sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn, NULL);
@ -4138,6 +4158,8 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
e_menu_item_separator_set(mi, 1);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_REFRESH)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Refresh View"));
e_menu_item_icon_edje_set(mi,
@ -4145,7 +4167,10 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
"e/fileman/button/refresh"),
"e/fileman/button/refresh");
e_menu_item_callback_set(mi, _e_fm2_refresh, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_SHOW_HIDDEN)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Show Hidden Files"));
e_menu_item_icon_edje_set(mi,
@ -4155,7 +4180,10 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, sd->show_hidden_files);
e_menu_item_callback_set(mi, _e_fm2_toggle_hidden_files, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_REMEMBER_ORDERING)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Remember Ordering"));
e_menu_item_icon_edje_set(mi,
@ -4165,7 +4193,10 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, sd->order_file);
e_menu_item_callback_set(mi, _e_fm2_toggle_ordering, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_NEW_DIRECTORY)
{
if (ecore_file_can_write(sd->realpath))
{
mi = e_menu_item_new(mn);
@ -4179,6 +4210,7 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
"e/fileman/button/new_dir");
e_menu_item_callback_set(mi, _e_fm2_new_directory, sd);
}
}
if (sd->icon_menu.end.func)
{
@ -4186,6 +4218,7 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
e_menu_item_separator_set(mi, 1);
sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, NULL);
}
}
man = e_manager_current_get();
if (!man)
@ -4240,21 +4273,32 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
mn = e_menu_new();
e_menu_category_set(mn, "e/fileman/action");
if (sd->icon_menu.replace.func)
{
sd->icon_menu.replace.func(sd->icon_menu.replace.data, sd->obj, mn, NULL);
}
else
{
if (sd->icon_menu.start.func)
{
sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn, &(ic->info));
sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn, NULL);
mi = e_menu_item_new(mn);
e_menu_item_separator_set(mi, 1);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_REFRESH)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Refresh View"));
e_menu_item_icon_edje_set(mi,
e_theme_edje_file_get("base/theme/fileman",
"e/fileman/button/refresh"),
"e/fileman/button/refresh");
e_menu_item_callback_set(mi, _e_fm2_refresh, ic->sd);
e_menu_item_callback_set(mi, _e_fm2_refresh, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_SHOW_HIDDEN)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Show Hidden Files"));
e_menu_item_icon_edje_set(mi,
@ -4264,7 +4308,10 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, sd->show_hidden_files);
e_menu_item_callback_set(mi, _e_fm2_toggle_hidden_files, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_REMEMBER_ORDERING)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Remember Ordering"));
e_menu_item_icon_edje_set(mi,
@ -4274,7 +4321,10 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, sd->order_file);
e_menu_item_callback_set(mi, _e_fm2_toggle_ordering, sd);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_NEW_DIRECTORY)
{
if (ecore_file_can_write(sd->realpath))
{
mi = e_menu_item_new(mn);
@ -4286,8 +4336,8 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
e_theme_edje_file_get("base/theme/fileman",
"e/fileman/button/new_dir"),
"e/fileman/button/new_dir");
e_menu_item_callback_set(mi, _e_fm2_new_directory, ic->sd);
e_menu_item_callback_set(mi, _e_fm2_new_directory, sd);
}
}
can_w = 0;
@ -4342,6 +4392,8 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
mi = e_menu_item_new(mn);
e_menu_item_separator_set(mi, 1);
if (!sd->icon_menu.flags & E_FM2_MENU_NO_DELETE)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Delete"));
e_menu_item_icon_edje_set(mi,
@ -4349,7 +4401,10 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
"e/fileman/button/delete"),
"e/fileman/button/delete");
e_menu_item_callback_set(mi, _e_fm2_file_delete, ic);
}
if (!sd->icon_menu.flags & E_FM2_MENU_NO_RENAME)
{
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Rename"));
e_menu_item_icon_edje_set(mi,
@ -4358,6 +4413,7 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
"e/fileman/button/rename");
e_menu_item_callback_set(mi, _e_fm2_file_rename, ic);
}
}
if (sd->icon_menu.end.func)
{
@ -4365,6 +4421,7 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
e_menu_item_separator_set(mi, 1);
sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info));
}
}
man = e_manager_current_get();
if (!man)

View File

@ -14,7 +14,15 @@ typedef enum _E_Fm2_View_Mode
E_FM2_VIEW_MODE_CUSTOM_SMART_GRID_ICONS, /* icons go anywhere u drop them but try align to icons nearby */
E_FM2_VIEW_MODE_LIST /* vertical fileselector list */
} E_Fm2_View_Mode;
typedef enum _E_Fm2_Menu_Flags
{
E_FM2_MENU_NO_REFRESH = (1 << 0),
E_FM2_MENU_NO_SHOW_HIDDEN = (1 << 1),
E_FM2_MENU_NO_REMEMBER_ORDERING = (1 << 2),
E_FM2_MENU_NO_NEW_DIRECTORY = (1 << 3),
E_FM2_MENU_NO_DELETE = (1 << 4),
E_FM2_MENU_NO_RENAME = (1 << 5)
} E_Fm2_Menu_Flags;
typedef struct _E_Fm2_Config E_Fm2_Config;
typedef struct _E_Fm2_Icon_Info E_Fm2_Icon_Info;
@ -118,6 +126,7 @@ EAPI Evas_List *e_fm2_selected_list_get(Evas_Object *obj);
EAPI Evas_List *e_fm2_all_list_get(Evas_Object *obj);
EAPI void e_fm2_select_set(Evas_Object *obj, const char *file, int select);
EAPI void e_fm2_file_show(Evas_Object *obj, const char *file);
EAPI void e_fm2_icon_menu_replace_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data);
EAPI void e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data);
EAPI void e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data);
EAPI void e_fm2_window_object_set(Evas_Object *obj, E_Object *eobj);

View File

@ -665,22 +665,6 @@ _restore_mouse_binding_defaults_cb(void *data, void *data2)
bw->params = _params == NULL ? NULL : evas_stringshare_add(_params); \
cfdata->binding.wheel = evas_list_append(cfdata->binding.wheel, bw)
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 0, -1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 1, -1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 0, 1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 1, 1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_POPUP, 0, -1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_POPUP, 1, -1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_POPUP, 0, 1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_POPUP, 1, 1, E_BINDING_MODIFIER_NONE, 1,
"desk_linear_flip_by", "1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 0, -1, E_BINDING_MODIFIER_ALT, 0,
"desk_linear_flip_by", "-1");
CFG_WHEELBIND_DFLT(E_BINDING_CONTEXT_CONTAINER, 1, -1, E_BINDING_MODIFIER_ALT, 0,