Enlightenment CVS committal
Author : codewarrior
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_fileman.c e_fileman.h e_fileman_smart.c e_ipc_handlers.h
e_ipc_handlers_list.h
Log Message:
- add more signals to icons / bg (need to properly rename them to make more
sense)
- add dynamic glob matches to typebuffer (can get slow with 10,000 files, as
expected, should be faster when we optimize e_icon_layout)
- add ability to start efm from e_remote (thanks ngc)
- add some edje effects.
- add a test idea for dynamic selection: when you bring up the typebuffer,
everything goes into "dark mode", and your searches light up dynamically as
they are found while you type.
- question: should A be equal to *A* in the typebuffer? ngc and rephorm
suggested this could be an option and if we do add a * manually then this
case will be invalidated.
- note: when browsing 10,000+ files, the slowness of the dir loading occurs
due to the fact that ecore_file's monitor will loop thru all the files and do
an insertion sort. raster said we can fix this with some work on the monitor
code.
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_fileman.c 6 Nov 2005 14:40:58 -0000 1.25
+++ e_fileman.c 9 Nov 2005 02:00:33 -0000 1.26
@@ -28,10 +28,20 @@
static void _e_fileman_scroll_child_size_get(Evas_Object *obj, Evas_Coord *x,
Evas_Coord *y);
static int _e_fileman_reconfigure_cb(void *data, int type, void *event);
-
E_Fileman *
e_fileman_new(E_Container *con)
{
+ char dir[PATH_MAX];
+
+ if (!getcwd(dir, sizeof(dir)))
+ return NULL;
+
+ return e_fileman_new_to_dir(con, dir);
+}
+
+E_Fileman *
+e_fileman_new_to_dir(E_Container *con, char *path)
+{
E_Fileman *fileman;
E_Manager *man;
char dir[PATH_MAX];
@@ -44,8 +54,12 @@
if (!con) con = e_container_number_get(man, 0);
if (!con) return NULL;
}
- if (!getcwd(dir, sizeof(dir)))
- return NULL;
+
+ snprintf(dir, PATH_MAX, "%s", path);
+
+ if(!ecore_file_is_dir(dir))
+ if (!getcwd(dir, sizeof(dir)))
+ return NULL;
fileman = E_OBJECT_ALLOC(E_Fileman, E_FILEMAN_TYPE, _e_fileman_free);
if (!fileman) return NULL;
@@ -72,8 +86,9 @@
e_win_title_set(fileman->win, dir);
evas_event_freeze(fileman->evas);
- fileman->smart = e_fm_add(fileman->evas);
+ fileman->smart = e_fm_add(fileman->evas);
e_fm_e_win_set(fileman->smart, fileman->win);
+ e_fm_dir_set(fileman->smart, dir);
fileman->main = e_scrollframe_add(fileman->evas);
e_scrollframe_custom_theme_set(fileman->main, "base/themes/fileman",
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_fileman.h 26 Oct 2005 00:19:51 -0000 1.5
+++ e_fileman.h 9 Nov 2005 02:00:33 -0000 1.6
@@ -38,6 +38,7 @@
};
EAPI E_Fileman *e_fileman_new(E_Container *con);
+EAPI E_Fileman *e_fileman_new_to_dir(E_Container *con, char *path);
EAPI void e_fileman_show(E_Fileman *fileman);
EAPI void e_fileman_hide(E_Fileman *fileman);
EAPI void e_fileman_selector_enable(E_Fileman *fileman, void
(*func)(E_Fileman *fileman, char *file, void *data), void *data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.c,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -3 -r1.103 -r1.104
--- e_fileman_smart.c 8 Nov 2005 22:59:01 -0000 1.103
+++ e_fileman_smart.c 9 Nov 2005 02:00:33 -0000 1.104
@@ -237,6 +237,7 @@
static void _e_fm_string_replace(const char *src, const char
*key, const char *replacement, char *result, size_t resultsize);
+static void _e_fm_autocomplete(E_Fm_Smart_Data *sd);
static void _e_fm_icon_select_glob(E_Fm_Smart_Data *sd, char
*glb);
static void _e_fm_icon_select_up(E_Fm_Smart_Data *sd);
static void _e_fm_icon_select_down(E_Fm_Smart_Data *sd);
@@ -2154,7 +2155,7 @@
ev = event_info;
icon = data;
- e_fm_icon_signal_emit(icon->icon_object, "hilight", "");
+ e_fm_icon_signal_emit(icon->icon_object, "mousein", "");
}
static void
@@ -2166,7 +2167,7 @@
ev = event_info;
icon = data;
- e_fm_icon_signal_emit(icon->icon_object, "default", "");
+ e_fm_icon_signal_emit(icon->icon_object, "mouseout", "");
}
static void
@@ -2304,6 +2305,12 @@
}
static void
+_e_fm_autocomplete(E_Fm_Smart_Data *sd)
+{
+ /* TODO */
+}
+
+static void
_e_fm_icon_select_glob(E_Fm_Smart_Data *sd, char *glb)
{
E_Fm_Icon *icon, *anchor;
@@ -2318,10 +2325,21 @@
ev = NULL;
glbpath = E_NEW(char, strlen(sd->dir) + strlen(glb) + 2);
snprintf(glbpath, strlen(sd->dir) + strlen(glb) + 2, "%s/%s", sd->dir, glb);
- if(glob(glbpath, 0, NULL, &globbuf))
- return;
_e_fm_selections_clear(sd);
+
+ edje_object_signal_emit(sd->edje_obj, "selecting", "");
+
+ if(glob(glbpath, 0, NULL, &globbuf))
+ {
+ for (l = sd->files; l; l = l->next)
+ {
+ icon = l->data;
+ e_fm_icon_signal_emit(icon->icon_object, "disable", "");
+ }
+ return;
+ }
+
for (l = sd->files; l; l = l->next)
{
icon = l->data;
@@ -2333,6 +2351,7 @@
if(!strcmp(icon->file->name, file))
{
_e_fm_selections_add(l->data, l);
+ e_fm_icon_signal_emit(icon->icon_object, "default", "");
if(!anchor)
{
evas_object_geometry_get(icon->icon_object, &x, &y, &w,
&h);
@@ -2727,16 +2746,32 @@
{
Evas_Event_Key_Down *ev;
E_Fm_Smart_Data *sd;
+ Evas_List *l;
+ E_Fm_Icon *icon;
ev = event_info;
sd = data;
+ if (!strcmp(ev->keyname, "Tab"))
+ {
+ if(strcmp(edje_object_part_state_get(sd->edje_obj, "typebuffer", NULL),
"shown"))
+ {
+
+ _e_fm_autocomplete(sd);
+ }
+ }
if (!strcmp(ev->keyname, "Up"))
{
if(!strcmp(edje_object_part_state_get(sd->edje_obj, "typebuffer",
NULL), "shown"))
- {
+ {
edje_object_signal_emit(sd->edje_obj, "typebuf_hide", "");
- edje_object_part_text_set(sd->edje_obj, "text", "");
+ edje_object_part_text_set(sd->edje_obj, "text", "");
+ for (l = sd->files; l; l = l->next)
+ {
+ icon = l->data;
+ e_fm_icon_signal_emit(icon->icon_object, "default", "");
+ }
+ edje_object_signal_emit(sd->edje_obj, "default", "");
}
else
_e_fm_icon_select_up(sd);
@@ -2746,7 +2781,13 @@
if(!strcmp(edje_object_part_state_get(sd->edje_obj, "typebuffer",
NULL), "shown"))
{
edje_object_signal_emit(sd->edje_obj, "typebuf_hide", "");
- edje_object_part_text_set(sd->edje_obj, "text", "");
+ edje_object_part_text_set(sd->edje_obj, "text", "");
+ for (l = sd->files; l; l = l->next)
+ {
+ icon = l->data;
+ e_fm_icon_signal_emit(icon->icon_object, "default", "");
+ }
+ edje_object_signal_emit(sd->edje_obj, "default", "");
}
else
_e_fm_icon_select_down(sd);
@@ -2771,19 +2812,26 @@
{
edje_object_signal_emit(sd->edje_obj, "typebuf_hide", "");
edje_object_part_text_set(sd->edje_obj, "text", "");
+ for (l = sd->files; l; l = l->next)
+ {
+ icon = l->data;
+ e_fm_icon_signal_emit(icon->icon_object, "default", "");
+ }
+ edje_object_signal_emit(sd->edje_obj, "default", "");
}
}
else if (!strcmp(ev->keyname, "Return"))
{
if(!strcmp(edje_object_part_state_get(sd->edje_obj, "typebuffer",
NULL), "shown"))
{
- char *buf;
-
edje_object_signal_emit(sd->edje_obj, "typebuf_hide", "");
- buf = strdup(edje_object_part_text_get(sd->edje_obj, "text"));
edje_object_part_text_set(sd->edje_obj, "text", "");
- if(strcmp(buf, ""))
- _e_fm_icon_select_glob(sd, buf);
+ for (l = sd->files; l; l = l->next)
+ {
+ icon = l->data;
+ e_fm_icon_signal_emit(icon->icon_object, "default", "");
+ }
+ edje_object_signal_emit(sd->edje_obj, "default", "");
}
else
_e_fm_icon_run(sd);
@@ -2803,6 +2851,8 @@
buf = calloc(size , sizeof(char));
snprintf(buf, size, "%s", str);
edje_object_part_text_set(sd->edje_obj, "text", buf);
+ _e_fm_icon_select_glob(sd, buf);
+ E_FREE(buf);
}
}
else
@@ -2832,10 +2882,13 @@
buf = calloc(size, sizeof(char));
snprintf(buf, size, "%s%s", str, ev->string);
edje_object_part_text_set(sd->edje_obj, "text", buf);
+ _e_fm_icon_select_glob(sd, buf);
+ E_FREE(buf);
}
else
{
edje_object_part_text_set(sd->edje_obj, "text", ev->string);
+ _e_fm_icon_select_glob(sd, ev->string);
}
if(strcmp(edje_object_part_state_get(sd->edje_obj, "typebuffer", NULL),
"shown"))
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -3 -r1.105 -r1.106
--- e_ipc_handlers.h 4 Nov 2005 23:30:18 -0000 1.105
+++ e_ipc_handlers.h 9 Nov 2005 02:00:33 -0000 1.106
@@ -840,7 +840,21 @@
* E_LIB_IN
* ...
*/
-
+/****************************************************************************/
+#define HDL E_IPC_EFM_START
+#if (TYPE == E_REMOTE_OPTIONS)
+ OP("-start-efm", 1, "Starts the E File Manager in Directory 'OPT1'", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+ REQ_STRING(params[0], HDL);
+#elif (TYPE == E_WM_IN)
+ STRING(s, HDL);
+ E_Fileman *fileman;
+ fileman =
e_fileman_new_to_dir(e_container_current_get(e_manager_current_get()), s);
+ e_fileman_show (fileman);
+ END_STRING(s);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_MODULE_LOAD
#if (TYPE == E_REMOTE_OPTIONS)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers_list.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- e_ipc_handlers_list.h 4 Nov 2005 23:30:18 -0000 1.37
+++ e_ipc_handlers_list.h 9 Nov 2005 02:00:33 -0000 1.38
@@ -338,3 +338,5 @@
#define E_IPC_OP_FULLSCREEN_POLICY_SET 320
#define E_IPC_OP_FULLSCREEN_POLICY_GET 321
#define E_IPC_OP_FULLSCREEN_POLICY_GET_REPLY 322
+
+#define E_IPC_EFM_START 323
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs