- 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_name.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_button2.png" COMP;
image: "e17_button.png" COMP;
image: "e17_dialog_watermark.png" COMP;
image: "e17_ibar_bg_v.png" COMP;
image: "e17_about_over_v.png" COMP;
image: "e17_logo.png" COMP;
image: "e17_menu_bg.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_File_Attributes E_Fileman_File_Attributes;
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_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_Arrange E_Fileman_Arrange;
@ -106,6 +108,13 @@ struct _E_Fileman_File
void *data;
};
struct _E_Fm_Config
{
int width;
int height;
Evas_List *apps;
};
struct _E_Fileman_Thumb_Pending
{
E_Fileman_File *file;
@ -135,6 +144,12 @@ struct _E_Fileman_Fake_Mouse_Up_Info
int button;
};
struct _E_Fileman_Assoc_App
{
char *mime;
char *app;
};
struct _E_Fileman_Smart_Data
{
Evas_Object *bg;
@ -199,6 +214,12 @@ struct _E_Fileman_Smart_Data
} band;
} 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);
@ -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_update(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_add(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_exec(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 Evas_Object *_e_fm_file_icon_mime_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,
_e_fm_win_mouse_move_cb,
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);
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)))
return;
e_config_domain_save("efm", sd->conf.main_edd, sd->conf.main);
_e_fm_files_free(sd);
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->clip, w, h);
sd->conf.main->width = w;
sd->conf.main->height = h;
// optimize
_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
_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;
@ -1199,7 +1269,7 @@ _e_fm_dir_files_get(char *dirname, E_Fileman_File_Type type)
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);
}
@ -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);
free(fullname);
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_NORMAL:
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;
fullname = _e_fm_file_fullname(file);
if (ecore_file_can_exec(fullname))
_e_fm_file_exec(file);
if(!_e_fm_file_open_assoc(file))
if (ecore_file_can_exec(fullname))
_e_fm_file_exec(file);
free(fullname);
}
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);
mn = e_menu_new();
mi = e_menu_item_new(mn);
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,
(char *)e_theme_edje_file_get("base/theme/fileman",
"fileman/button/open"),
@ -2639,7 +2715,7 @@ _e_fm_file_thumb_get(E_Fileman_File *file)
void *data;
unsigned int w, h;
int a, c, q, l;
fullname = _e_fm_file_fullname(file);
if (!_e_fm_file_thumb_exists(fullname))
@ -2687,6 +2763,46 @@ _e_fm_file_type(E_Fileman_File *file)
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
_e_fm_file_exec(E_Fileman_File *file)
{