forked from enlightenment/enlightenment
breking out fm2 into a window and scrollframe in fwin - start of a generic
filemanager window. this is more for me to test dnd code and get that all going right etc. etc. so BEWARE. yes it doesnt do a lot of things right - i know. am working on it. :) SVN revision: 26210
This commit is contained in:
parent
a86439c7a6
commit
61bf1c59c6
|
@ -171,7 +171,8 @@ e_color_dialog.h \
|
|||
e_fdo_menu_to_order.h \
|
||||
e_sys.h \
|
||||
e_obj_dialog.h \
|
||||
e_int_config_transitions.h
|
||||
e_int_config_transitions.h \
|
||||
e_fwin.h
|
||||
|
||||
enlightenment_src = \
|
||||
e_user.c \
|
||||
|
@ -318,6 +319,7 @@ e_fdo_menu_to_order.c \
|
|||
e_sys.c \
|
||||
e_int_config_transitions.c \
|
||||
e_obj_dialog.c \
|
||||
e_fwin.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
|
|
|
@ -66,8 +66,8 @@ e_dialog_new(E_Container *con, const char *name, const char *class)
|
|||
evas_object_key_grab(o, "Return", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
evas_object_key_grab(o, "KP_Enter", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
evas_object_key_grab(o, "space", mask, ~mask, 0);
|
||||
// mask = 0;
|
||||
// evas_object_key_grab(o, "space", mask, ~mask, 0);
|
||||
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _e_dialog_cb_key_down, dia);
|
||||
|
||||
|
|
|
@ -2564,7 +2564,7 @@ _e_fm2_cb_dnd_move(void *data, const char *type, void *event)
|
|||
for (l = sd->icons; l; l = l->next)
|
||||
{
|
||||
ic = l->data;
|
||||
if (E_INSIDE(ev->x, ev->y, ic->x, ic->y, ic->w, ic->h))
|
||||
if (E_INSIDE(ev->x, ev->y, ic->x - ic->sd->pos.x, ic->y - ic->sd->pos.y, ic->w, ic->h))
|
||||
{
|
||||
printf("OVER %s\n", ic->info.file);
|
||||
if (ic->drag.dnd) return;
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
/* FIXME: fwin - he fm2 filemanager wrapped with a window and scrollframe.
|
||||
* primitive BUT enough to test generic dnd and fm stuff more easily. don't
|
||||
* play with this unless u want to help with it. NOT COMPLETE! BEWARE!
|
||||
*/
|
||||
|
||||
/* local subsystem functions */
|
||||
static void _e_fwin_free(E_Fwin *fwin);
|
||||
static void _e_fwin_cb_delete(E_Win *win);
|
||||
static void _e_fwin_cb_resize(E_Win *win);
|
||||
static void _e_fwin_changed(void *data, Evas_Object *obj, void *event_info);
|
||||
static void _e_fwin_selected(void *data, Evas_Object *obj, void *event_info);
|
||||
|
||||
/* local subsystem globals */
|
||||
static Evas_List *fwins = NULL;
|
||||
|
||||
/* externally accessible functions */
|
||||
EAPI int
|
||||
e_fwin_init(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_fwin_shutdown(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI E_Fwin *
|
||||
e_fwin_new(E_Container *con, const char *dev, const char *path)
|
||||
{
|
||||
E_Fwin *fwin;
|
||||
char buf[4096];
|
||||
Evas_Object *o;
|
||||
E_Fm2_Config fmc;
|
||||
|
||||
fwin = E_OBJECT_ALLOC(E_Fwin, E_FWIN_TYPE, _e_fwin_free);
|
||||
if (!fwin) return NULL;
|
||||
fwin->win = e_win_new(con);
|
||||
if (!fwin->win)
|
||||
{
|
||||
free(fwin);
|
||||
return NULL;
|
||||
}
|
||||
fwins = evas_list_append(fwins, fwin);
|
||||
e_win_delete_callback_set(fwin->win, _e_fwin_cb_delete);
|
||||
e_win_resize_callback_set(fwin->win, _e_fwin_cb_resize);
|
||||
fwin->win->data = fwin;
|
||||
|
||||
/* fm issues: */
|
||||
/* FIXME: need a way of going to parent dir */
|
||||
/* FIXME: need to handle change-in-place and new window per dir */
|
||||
/* FIXME: drop on file on another dir doesnt do drop all */
|
||||
/* FIXME: on shift-click then drag - don't deselect */
|
||||
/* FIXME: drag multiple files doesnt work */
|
||||
|
||||
/* FIXME: temporary - a white bg until we have a proper fm specific
|
||||
* scrollframe etc.
|
||||
*/
|
||||
o = evas_object_rectangle_add(e_win_evas_get(fwin->win));
|
||||
evas_object_color_set(o, 255, 255, 255, 255);
|
||||
evas_object_show(o);
|
||||
fwin->bg_obj = o;
|
||||
|
||||
o = e_fm2_add(e_win_evas_get(fwin->win));
|
||||
fwin->fm_obj = o;
|
||||
memset(&fmc, 0, sizeof(E_Fm2_Config));
|
||||
fmc.view.mode = E_FM2_VIEW_MODE_LIST;
|
||||
fmc.view.open_dirs_in_place = 1;
|
||||
fmc.view.selector = 0;
|
||||
fmc.view.single_click = 0;
|
||||
fmc.view.no_subdir_jump = 0;
|
||||
fmc.icon.list.w = 24;
|
||||
fmc.icon.list.h = 24;
|
||||
fmc.icon.fixed.w = 1;
|
||||
fmc.icon.fixed.h = 1;
|
||||
fmc.icon.extension.show = 1;
|
||||
fmc.list.sort.no_case = 1;
|
||||
fmc.list.sort.dirs.first = 1;
|
||||
fmc.list.sort.dirs.last = 0;
|
||||
fmc.selection.single = 0;
|
||||
fmc.selection.windows_modifiers = 0;
|
||||
e_fm2_config_set(o, &fmc);
|
||||
evas_object_smart_callback_add(o, "dir_changed",
|
||||
_e_fwin_changed, fwin);
|
||||
evas_object_smart_callback_add(o, "selected",
|
||||
_e_fwin_selected, fwin);
|
||||
e_fm2_path_set(o, dev, path);
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_show(o);
|
||||
|
||||
o = e_widget_scrollframe_pan_add(e_win_evas_get(fwin->win), fwin->fm_obj,
|
||||
e_fm2_pan_set,
|
||||
e_fm2_pan_get,
|
||||
e_fm2_pan_max_get,
|
||||
e_fm2_pan_child_size_get);
|
||||
evas_object_propagate_events_set(fwin->fm_obj, 0);
|
||||
e_widget_scrollframe_focus_object_set(o, fwin->fm_obj);
|
||||
fwin->scrollframe_obj = o;
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_show(o);
|
||||
|
||||
e_fm2_window_object_set(fwin->fm_obj, E_OBJECT(fwin->win));
|
||||
|
||||
e_widget_focus_set(fwin->scrollframe_obj, 1);
|
||||
|
||||
if (dev)
|
||||
snprintf(buf, sizeof(buf), "_fwin::/%s/::/%s", dev, path);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "_fwin:/%s", path);
|
||||
e_win_name_class_set(fwin->win, "E", buf);
|
||||
/* FIXME: better title */
|
||||
e_win_title_set(fwin->win, path);
|
||||
e_win_size_min_set(fwin->win, 24, 24);
|
||||
e_win_resize(fwin->win, 280, 200);
|
||||
e_win_show(fwin->win);
|
||||
|
||||
return fwin;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_e_fwin_free(E_Fwin *fwin)
|
||||
{
|
||||
e_object_del(E_OBJECT(fwin->win));
|
||||
fwins = evas_list_remove(fwins, fwin);
|
||||
free(fwin);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fwin_cb_delete(E_Win *win)
|
||||
{
|
||||
E_Fwin *fwin;
|
||||
|
||||
fwin = win->data;
|
||||
e_object_del(E_OBJECT(fwin));
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fwin_cb_resize(E_Win *win)
|
||||
{
|
||||
E_Fwin *fwin;
|
||||
|
||||
fwin = win->data;
|
||||
evas_object_resize(fwin->bg_obj, fwin->win->w, fwin->win->h);
|
||||
evas_object_resize(fwin->scrollframe_obj, fwin->win->w, fwin->win->h);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fwin_changed(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
E_Fwin *fwin;
|
||||
|
||||
fwin = data;
|
||||
if (fwin->scrollframe_obj)
|
||||
e_widget_scrollframe_child_pos_set(fwin->scrollframe_obj, 0, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fwin_selected(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
E_Fwin *fwin;
|
||||
|
||||
fwin = data;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef struct _E_Fwin E_Fwin;
|
||||
|
||||
#else
|
||||
#ifndef E_FWIN_H
|
||||
#define E_FWIN_H
|
||||
|
||||
#define E_FWIN_TYPE 0xE0b0101f
|
||||
|
||||
struct _E_Fwin
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
E_Win *win;
|
||||
Evas_Object *scrollframe_obj;
|
||||
Evas_Object *fm_obj;
|
||||
Evas_Object *bg_obj;
|
||||
};
|
||||
|
||||
EAPI int e_fwin_init (void);
|
||||
EAPI int e_fwin_shutdown (void);
|
||||
EAPI E_Fwin *e_fwin_new (E_Container *con, const char *dev, const char *path);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -147,3 +147,4 @@
|
|||
#include "e_sys.h"
|
||||
#include "e_int_config_transitions.h"
|
||||
#include "e_obj_dialog.h"
|
||||
#include "e_fwin.h"
|
||||
|
|
|
@ -90,8 +90,8 @@ e_int_config_theme_import(E_Config_Dialog *parent)
|
|||
mask = 0;
|
||||
evas_object_key_grab(o, "KP_Enter", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
evas_object_key_grab(o, "Space", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
// evas_object_key_grab(o, "space", mask, ~mask, 0);
|
||||
// mask = 0;
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN,
|
||||
_theme_import_cb_key_down, import);
|
||||
|
||||
|
|
|
@ -120,8 +120,8 @@ e_int_config_wallpaper_import(E_Config_Dialog *parent)
|
|||
mask = 0;
|
||||
evas_object_key_grab(o, "KP_Enter", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
evas_object_key_grab(o, "Space", mask, ~mask, 0);
|
||||
mask = 0;
|
||||
// evas_object_key_grab(o, "space", mask, ~mask, 0);
|
||||
// mask = 0;
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _import_cb_key_down, import);
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
|
|
|
@ -654,6 +654,12 @@ _e_int_menus_applications_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_int_config_apps(m->zone->container);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_fileman_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
e_fwin_new(m->zone->container, "~/", "/");
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_config_pre_cb(void *data, E_Menu *m)
|
||||
{
|
||||
|
@ -690,6 +696,14 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m)
|
|||
e_util_menu_item_edje_icon_set(mi, "enlightenment/applications");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_applications_item_cb, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Filemanager"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/fileman");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_fileman_item_cb, NULL);
|
||||
|
||||
l = evas_hash_find(_e_int_menus_augmentation, "config");
|
||||
if (l)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue