- remove image thats not used

- code in config subsystem which allows us to save window stat and anything
else if needed.
- add mime type system. for now you cant edit them and the only mime is
hardcoded for testing. will add mime editor later on.


SVN revision: 17465
This commit is contained in:
codewarrior 2005-10-12 17:01:27 +00:00 committed by codewarrior
parent 03651d0fcb
commit 603797ce95
2 changed files with 126 additions and 12 deletions

View File

@ -113,14 +113,12 @@ images
image: "e17_button_detail_view_details.png" COMP; image: "e17_button_detail_view_details.png" COMP;
image: "e17_button_detail_view_name.png" COMP; image: "e17_button_detail_view_name.png" COMP;
image: "e17_button_detail_view.png" COMP; image: "e17_button_detail_view.png" COMP;
image: "e17_fileman_rubberband.png" COMP; image: "e17_fileman_rubberband.png" COMP;
image: "e17_menu_bg_border.png" COMP; image: "e17_menu_bg_border.png" COMP;
image: "e17_button2.png" COMP; image: "e17_button2.png" COMP;
image: "e17_button.png" COMP; image: "e17_button.png" COMP;
image: "e17_dialog_watermark.png" COMP; image: "e17_dialog_watermark.png" COMP;
image: "e17_ibar_bg_v.png" COMP; image: "e17_ibar_bg_v.png" COMP;
image: "e17_about_over_v.png" COMP;
image: "e17_logo.png" COMP; image: "e17_logo.png" COMP;
image: "e17_menu_bg.png" COMP; image: "e17_menu_bg.png" COMP;
image: "e17_ibar_over_v.png" COMP; image: "e17_ibar_over_v.png" COMP;

View File

@ -54,8 +54,10 @@
typedef struct _E_Fileman_Smart_Data E_Fileman_Smart_Data; typedef struct _E_Fileman_Smart_Data E_Fileman_Smart_Data;
typedef struct _E_Fileman_File_Attributes E_Fileman_File_Attributes; typedef struct _E_Fileman_File_Attributes E_Fileman_File_Attributes;
typedef struct _E_Fileman_File E_Fileman_File; typedef struct _E_Fileman_File E_Fileman_File;
typedef struct _E_Fm_Config E_Fm_Config;
typedef struct _E_Fileman_Thumb_Pending E_Fileman_Thumb_Pending; typedef struct _E_Fileman_Thumb_Pending E_Fileman_Thumb_Pending;
typedef struct _E_Fileman_Fake_Mouse_Up_Info E_Fileman_Fake_Mouse_Up_Info; typedef struct _E_Fileman_Fake_Mouse_Up_Info E_Fileman_Fake_Mouse_Up_Info;
typedef struct _E_Fileman_Assoc_App E_Fileman_Assoc_App;
typedef enum _E_Fileman_File_Type E_Fileman_File_Type; typedef enum _E_Fileman_File_Type E_Fileman_File_Type;
typedef enum _E_Fileman_Arrange E_Fileman_Arrange; typedef enum _E_Fileman_Arrange E_Fileman_Arrange;
@ -106,6 +108,13 @@ struct _E_Fileman_File
void *data; void *data;
}; };
struct _E_Fm_Config
{
int width;
int height;
Evas_List *apps;
};
struct _E_Fileman_Thumb_Pending struct _E_Fileman_Thumb_Pending
{ {
E_Fileman_File *file; E_Fileman_File *file;
@ -135,6 +144,12 @@ struct _E_Fileman_Fake_Mouse_Up_Info
int button; int button;
}; };
struct _E_Fileman_Assoc_App
{
char *mime;
char *app;
};
struct _E_Fileman_Smart_Data struct _E_Fileman_Smart_Data
{ {
Evas_Object *bg; Evas_Object *bg;
@ -199,6 +214,12 @@ struct _E_Fileman_Smart_Data
} band; } band;
} selection; } selection;
struct {
E_Config_DD *main_edd;
E_Config_DD *assoc_app_edd;
E_Fm_Config *main;
} conf;
}; };
static void _e_fm_smart_add(Evas_Object *object); static void _e_fm_smart_add(Evas_Object *object);
@ -215,6 +236,7 @@ static void _e_fm_smart_hide(Evas_Object *object);
static void _e_fm_redraw_new(E_Fileman_Smart_Data *sd); static void _e_fm_redraw_new(E_Fileman_Smart_Data *sd);
static void _e_fm_redraw_update(E_Fileman_Smart_Data *sd); static void _e_fm_redraw_update(E_Fileman_Smart_Data *sd);
static void _e_fm_size_calc(E_Fileman_Smart_Data *sd); static void _e_fm_size_calc(E_Fileman_Smart_Data *sd);
static void _e_fm_stat_to_attr(struct stat st, E_Fileman_File_Attributes *attr, char *name);
static void _e_fm_selections_clear(E_Fileman_Smart_Data *sd); static void _e_fm_selections_clear(E_Fileman_Smart_Data *sd);
static void _e_fm_selections_add(E_Fileman_File *file); static void _e_fm_selections_add(E_Fileman_File *file);
static void _e_fm_selections_del(E_Fileman_File *file); static void _e_fm_selections_del(E_Fileman_File *file);
@ -224,6 +246,7 @@ static Evas_Bool _e_fm_file_can_preview(E_Fileman_File *file);
static void _e_fm_file_delete(E_Fileman_File *file); static void _e_fm_file_delete(E_Fileman_File *file);
static void _e_fm_file_exec(E_Fileman_File *file); static void _e_fm_file_exec(E_Fileman_File *file);
static E_Fileman_File_Type _e_fm_file_type(E_Fileman_File *file); static E_Fileman_File_Type _e_fm_file_type(E_Fileman_File *file);
static Evas_Bool _e_fm_file_open_assoc(E_Fileman_File *file);
static char *_e_fm_file_fullname(E_Fileman_File *file); static char *_e_fm_file_fullname(E_Fileman_File *file);
static Evas_Object *_e_fm_file_icon_mime_get(E_Fileman_File *file); static Evas_Object *_e_fm_file_icon_mime_get(E_Fileman_File *file);
static Evas_Object *_e_fm_file_icon_get(E_Fileman_File *file); static Evas_Object *_e_fm_file_icon_get(E_Fileman_File *file);
@ -637,6 +660,49 @@ _e_fm_smart_add(Evas_Object *object)
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE,
_e_fm_win_mouse_move_cb, _e_fm_win_mouse_move_cb,
sd)); sd));
sd->conf.main_edd = E_CONFIG_DD_NEW("E_Fm_Config", E_Fm_Config);
sd->conf.assoc_app_edd = E_CONFIG_DD_NEW("E_Fileman_Assoc_App",E_Fileman_Assoc_App);
#undef T
#undef DD
#define T E_Fileman_Assoc_App
#define DD sd->conf.assoc_app_edd
E_CONFIG_VAL(DD, T, mime, STR);
E_CONFIG_VAL(DD, T, app, STR);
#undef T
#undef DD
#define T E_Fm_Config
#define DD sd->conf.main_edd
E_CONFIG_VAL(DD, T, width, INT);
E_CONFIG_VAL(DD, T, height, INT);
E_CONFIG_LIST(DD, T, apps, sd->conf.assoc_app_edd);
sd->conf.main = e_config_domain_load("efm", sd->conf.main_edd);
if(!sd->conf.main)
{
/* no saved config */
sd->conf.main = E_NEW(E_Fm_Config, 1);
sd->conf.main->width = 640;
sd->conf.main->height = 480;
sd->conf.main->apps = NULL;
/* some test values not meant for everyone */
/*
{
E_Fileman_Assoc_App *assoc;
assoc = E_NEW(E_Fileman_Assoc_App, 1);
assoc->mime = E_NEW(char *, 5);
snprintf(assoc->mime, 5, "%s", ".jpg");
assoc->app = E_NEW(char *, 7);
snprintf(assoc->app, 7, "gqview");
sd->conf.main->apps = evas_list_append(sd->conf.main->apps, assoc);
}
*/
}
evas_object_smart_data_set(object, sd); evas_object_smart_data_set(object, sd);
if (getcwd(dir, sizeof(dir))) if (getcwd(dir, sizeof(dir)))
@ -651,7 +717,9 @@ _e_fm_smart_del(Evas_Object *object)
if ((!object) || !(sd = evas_object_smart_data_get(object))) if ((!object) || !(sd = evas_object_smart_data_get(object)))
return; return;
e_config_domain_save("efm", sd->conf.main_edd, sd->conf.main);
_e_fm_files_free(sd); _e_fm_files_free(sd);
for (l = sd->event_handlers; l; l = l->next) for (l = sd->event_handlers; l; l = l->next)
@ -772,6 +840,8 @@ _e_fm_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h)
evas_object_resize(sd->bg, w, h); evas_object_resize(sd->bg, w, h);
evas_object_resize(sd->clip, w, h); evas_object_resize(sd->clip, w, h);
sd->conf.main->width = w;
sd->conf.main->height = h;
// optimize // optimize
_e_fm_redraw_new(sd); // no new _e_fm_redraw_new(sd); // no new
} }
@ -1148,7 +1218,7 @@ _e_fm_dir_monitor_cb(void *data, Ecore_File_Monitor *ecore_file_monitor,
} }
static void static void
_e_fileman_stat_to_attr(struct stat st, E_Fileman_File_Attributes *attr, char *name) _e_fm_stat_to_attr(struct stat st, E_Fileman_File_Attributes *attr, char *name)
{ {
if(!attr) return; if(!attr) return;
@ -1199,7 +1269,7 @@ _e_fm_dir_files_get(char *dirname, E_Fileman_File_Type type)
attr = E_NEW(E_Fileman_File_Attributes, 1); attr = E_NEW(E_Fileman_File_Attributes, 1);
_e_fileman_stat_to_attr(st, attr, dir_entry->d_name); _e_fm_stat_to_attr(st, attr, dir_entry->d_name);
files = evas_list_append(files, attr); files = evas_list_append(files, attr);
} }
@ -1459,7 +1529,13 @@ _e_fm_file_menu_open(void *data, E_Menu *m, E_Menu_Item *mi)
_e_fm_dir_set(file->sd, fullname); _e_fm_dir_set(file->sd, fullname);
free(fullname); free(fullname);
break; break;
case E_FILEMAN_FILETYPE_FILE: case E_FILEMAN_FILETYPE_FILE:
fullname = _e_fm_file_fullname(file);
if(!_e_fm_file_open_assoc(file))
if (ecore_file_can_exec(fullname))
_e_fm_file_exec(file);
free(fullname);
break;
case E_FILEMAN_FILETYPE_ALL: case E_FILEMAN_FILETYPE_ALL:
case E_FILEMAN_FILETYPE_NORMAL: case E_FILEMAN_FILETYPE_NORMAL:
case E_FILEMAN_FILETYPE_HIDDEN: case E_FILEMAN_FILETYPE_HIDDEN:
@ -2178,8 +2254,9 @@ _e_fm_file_icon_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event
file->sd->drag.start = 0; file->sd->drag.start = 0;
fullname = _e_fm_file_fullname(file); fullname = _e_fm_file_fullname(file);
if (ecore_file_can_exec(fullname)) if(!_e_fm_file_open_assoc(file))
_e_fm_file_exec(file); if (ecore_file_can_exec(fullname))
_e_fm_file_exec(file);
free(fullname); free(fullname);
} }
else else
@ -2222,10 +2299,9 @@ _e_fm_file_icon_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event
_e_fm_selections_add(file); _e_fm_selections_add(file);
mn = e_menu_new(); mn = e_menu_new();
mi = e_menu_item_new(mn); mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, "Open"); e_menu_item_label_set(mi, "Open");
e_menu_item_callback_set(mi, _e_fm_file_menu_open, file); e_menu_item_callback_set(mi, _e_fm_file_menu_open, file);
e_menu_item_icon_edje_set(mi, e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/fileman", (char *)e_theme_edje_file_get("base/theme/fileman",
"fileman/button/open"), "fileman/button/open"),
@ -2639,7 +2715,7 @@ _e_fm_file_thumb_get(E_Fileman_File *file)
void *data; void *data;
unsigned int w, h; unsigned int w, h;
int a, c, q, l; int a, c, q, l;
fullname = _e_fm_file_fullname(file); fullname = _e_fm_file_fullname(file);
if (!_e_fm_file_thumb_exists(fullname)) if (!_e_fm_file_thumb_exists(fullname))
@ -2687,6 +2763,46 @@ _e_fm_file_type(E_Fileman_File *file)
return E_FILEMAN_FILETYPE_UNKNOWN; return E_FILEMAN_FILETYPE_UNKNOWN;
} }
static Evas_Bool
_e_fm_file_open_assoc(E_Fileman_File *file)
{
char fullname[PATH_MAX * 2];
Evas_List *l;
E_Fileman_Assoc_App *assoc;
Ecore_Exe *exe;
for (l = file->sd->conf.main->apps; l; l = l->next)
{
char *ext;
assoc = l->data;
ext = strrchr(file->attr->name, '.');
if(!strcmp(ext, assoc->mime))
break;
assoc = NULL;
}
if(!assoc) return FALSE;
snprintf(fullname, PATH_MAX * 2, "%s %s", assoc->app, _e_fm_file_fullname(file));
printf("running: %s\n", fullname);
exe = ecore_exe_run(fullname, NULL);
if (!exe)
{
e_error_dialog_show(_("Run Error"),
_("Enlightenment was unable fork a child process:\n"
"\n"
"%s\n"
"\n"),
fullname);
return TRUE;
}
ecore_exe_tag_set(exe, "E/app");
return TRUE;
}
static void static void
_e_fm_file_exec(E_Fileman_File *file) _e_fm_file_exec(E_Fileman_File *file)
{ {