Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fm.c e_fm_main.c e_fm_prop.c e_fwin.c e_int_config_mime_edit.c e_widget_fsel.c Log Message: icon selector from fm prop works now. only on "all types of this file" - per file stuff is unimplemented still. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v retrieving revision 1.151 retrieving revision 1.152 diff -u -3 -r1.151 -r1.152 --- e_fm.c 3 May 2007 12:44:10 -0000 1.151 +++ e_fm.c 3 May 2007 17:24:13 -0000 1.152 @@ -5092,8 +5092,7 @@ { snprintf(oldpath, sizeof(oldpath), "%s/%s", ic->sd->realpath, ic->info.file); snprintf(newpath, sizeof(newpath), "%s/%s", ic->sd->realpath, text); -// if (e_filereg_file_protected(oldpath)) return; - + if (e_filereg_file_protected(oldpath)) return; _e_fm2_client_file_move(ic->sd->id, oldpath, newpath, "", 0, -9999, -9999); } } @@ -5211,7 +5210,7 @@ { ici = l->data; snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, ici->file); -// if (e_filereg_file_protected(buf)) continue; + if (e_filereg_file_protected(buf)) continue; printf("rm -rf %s\n", buf); _e_fm2_client_file_del(ic->sd->id, buf); } @@ -5220,7 +5219,7 @@ else { snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, ic->info.file); -// if (e_filereg_file_protected(buf)) return; + if (e_filereg_file_protected(buf)) return; printf("rm -rf %s\n", buf); _e_fm2_client_file_del(ic->sd->id, buf); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm_main.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_fm_main.c 22 Apr 2007 23:32:24 -0000 1.11 +++ e_fm_main.c 3 May 2007 17:24:13 -0000 1.12 @@ -662,13 +662,14 @@ * stat_info[stat size] + broken_link[1] + path[n]\0 + lnk[n]\0 + rlnk[n]\0 */ [sizeof(struct stat) + 1 + 4096 + 4096 + 4096]; - lnk = ecore_file_readlink(buf); + lnk = ecore_file_readlink(path); if (stat(path, &st) == -1) { if ((path[0] == 0) || (lnk)) broken_lnk = 1; else return; } if ((lnk) && (lnk[0] != '/')) rlnk = ecore_file_realpath(path); + else if (lnk) rlnk = strdup(lnk); if (!lnk) lnk = strdup(""); if (!rlnk) rlnk = strdup(""); @@ -693,6 +694,7 @@ p += strlen(rlnk) + 1; bsz = p - buf; + printf("SEND +++ %s | %s | %s\n", path , lnk , rlnk); ecore_ipc_server_send(_e_ipc_server, 6/*E_IPC_DOMAIN_FM*/, op, 0, id, listing, buf, bsz); if (lnk) free(lnk); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm_prop.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- e_fm_prop.c 3 May 2007 12:44:10 -0000 1.13 +++ e_fm_prop.c 3 May 2007 17:24:13 -0000 1.14 @@ -48,6 +48,10 @@ static void _cb_icon_sel(void *data, void *data2); static void _cb_type(void *data, Evas_Object *obj, void *event_info); static void _cb_preview_update(void *data, Evas_Object *obj, void *event_info); +static void _cb_fsel_sel(void *data, Evas_Object *obj); +static void _cb_fsel_ok(void *data, E_Dialog *dia); +static void _cb_fsel_cancel(void *data, E_Dialog *dia); +static void _cb_file_change(void *data); /* Actual config data we will be playing with whil the dialog is active */ struct _E_Config_Dialog_Data @@ -58,6 +62,8 @@ Evas_Object *icon_wid; Evas_Object *preview; Evas_Object *preview_table; + Evas_Object *fsel_wid; + E_Dialog *fsel; } gui; /*- BASIC -*/ char *file; @@ -141,7 +147,8 @@ static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - /* Free the cfdata */ + if (cfdata->gui.fsel) + e_object_del(E_OBJECT(cfdata->gui.fsel)); E_FREE(cfdata->file); E_FREE(cfdata->size); E_FREE(cfdata->mod_date); @@ -197,29 +204,77 @@ { if (cfdata->icon_mime) /* modify mimetype */ { + Evas_List *l; + E_Config_Mime_Icon *mi = NULL; + int found = 0; + if (!cfdata->picon_mime) /* remove previous custom icon info */ e_fm2_custom_file_del(buf); + for (l = e_config->mime_icons; l; l = l->next) + { + mi = l->data; + if (!mi) continue; + if (strcmp(mi->mime, cfdata->mime)) continue; + if (mi->icon) + { + evas_stringshare_del(mi->icon); + mi->icon = NULL; + } + found = 1; + break; + } + if ((!found) && (cfdata->icon_type != 0)) + { + mi = E_NEW(E_Config_Mime_Icon, 1); + mi->mime = evas_stringshare_add(cfdata->mime); + e_config->mime_icons = evas_list_append(e_config->mime_icons, mi); + } /* FIXME: modify mime info */ + if (cfdata->icon_type == 0) + { + if (found) + { + e_config->mime_icons = evas_list_remove(e_config->mime_icons, mi); + if (mi->mime) evas_stringshare_del(mi->mime); + if (mi->icon) evas_stringshare_del(mi->icon); + free(mi); + } + } + else if (cfdata->icon_type == 1) + { + mi->icon = evas_stringshare_add("THUMB"); + } + else if (cfdata->icon_type == 2) + { + mi->icon = evas_stringshare_add(cfdata->icon); + } + e_config_save_queue(); + e_fm_mime_icon_cache_flush(); } else /* custom for this file */ { + /* FIXME: custom icons don't work yet */ E_Fm2_Custom_File *cf, cf0; cf = e_fm2_custom_file_get(buf); if (!cf) { - memset(cf, 0, sizeof(E_Fm2_Custom_File)); + memset(&cf0, 0, sizeof(E_Fm2_Custom_File)); cf = &cf0; } cf->icon.type = cfdata->icon_type; if (cf->icon.icon) evas_stringshare_del(cf->icon.icon); cf->icon.icon = NULL; - if (cfdata->icon) - cf->icon.icon = evas_stringshare_add(cfdata->icon); +// don't leak for now +// if (cfdata->icon) +// cf->icon.icon = evas_stringshare_add(cfdata->icon); cf->icon.valid = 1; e_fm2_custom_file_set(buf, cf); } + cfdata->picon_type = cfdata->icon_type; + cfdata->picon_mime = cfdata->icon_mime; + e_fm2_all_icons_update(); } @@ -388,9 +443,42 @@ _cb_icon_sel(void *data, void *data2) { E_Config_Dialog_Data *cfdata; - + E_Config_Dialog *cfd; + E_Dialog *dia; + Evas_Object *o; + Evas_Coord w, h; + cfdata = data; - /* FIXME: select an icon */ + if (!cfdata) return; + if (cfdata->gui.fsel) return; + + cfd = data2; + if (!cfd) return; + + dia = e_dialog_new(cfd->con, "E", "_fm2_file_properties_icon_select_dialog"); + if (!dia) return; +// if (cfdata->type == EDJ) +// e_dialog_title_set(dia, _("Select an Edj File")); +// else if (cfdata->type == IMG) + e_dialog_title_set(dia, _("Select an Image")); + + dia->data = cfdata; + o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL, + _cb_fsel_sel, cfdata, NULL, cfdata, 1); + + cfdata->gui.fsel_wid = o; + evas_object_show(o); + e_widget_min_size_get(o, &w, &h); + e_dialog_content_set(dia, o, w, h); + + e_dialog_button_add(dia, _("OK"), NULL, _cb_fsel_ok, cfdata); + e_dialog_button_add(dia, _("Cancel"), NULL, _cb_fsel_cancel, cfdata); + e_dialog_resizable_set(dia, 1); + e_win_centered_set(dia->win, 1); + e_dialog_show(dia); + e_win_resize(dia->win, 475, 341); + + cfdata->gui.fsel = dia; } static void @@ -414,4 +502,57 @@ e_widget_table_object_repack(cfdata->gui.preview_table, cfdata->gui.preview, 0, 0, 1, 1, 0, 0, 1, 1); +} + +static void +_cb_fsel_sel(void *data, Evas_Object *obj) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + if (!cfdata) return; +} + +static void +_cb_fsel_ok(void *data, E_Dialog *dia) +{ + E_Config_Dialog_Data *cfdata; + const char *file, *ext; + Evas_Object *icon = NULL; + + cfdata = data; + if (!cfdata) return; + + file = e_widget_fsel_selection_path_get(cfdata->gui.fsel_wid); + E_FREE(cfdata->icon); + if (file) cfdata->icon = strdup(file); + _cb_fsel_cancel(data, dia); + ext = strrchr(cfdata->icon, '.'); + if (ext) + { + if (!strcasecmp(ext, ".edj")) + { + icon = edje_object_add( evas_object_evas_get(cfdata->gui.icon_wid)); + edje_object_file_set(icon, cfdata->file, "icon"); + } + else + { + icon = e_widget_image_add_from_file(evas_object_evas_get(cfdata->gui.icon_wid), cfdata->icon, 48, 48); + } + } + else + { + icon = e_widget_image_add_from_file(evas_object_evas_get(cfdata->gui.icon_wid), cfdata->icon, 48, 48); + } + if (icon) e_widget_button_icon_set(cfdata->gui.icon_wid, icon); +} + +static void +_cb_fsel_cancel(void *data, E_Dialog *dia) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + e_object_del(E_OBJECT(dia)); + cfdata->gui.fsel = NULL; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fwin.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- e_fwin.c 22 Apr 2007 15:30:02 -0000 1.38 +++ e_fwin.c 3 May 2007 17:24:13 -0000 1.39 @@ -712,10 +712,10 @@ e_fwin_new(fwin->win->container, ici->link, "/"); else if ((ici->link) && (ici->removable)) e_fwin_new(fwin->win->container, ici->link, "/"); - else if (ici->link) + else if (ici->real_link) { if (S_ISDIR(ici->statinfo.st_mode)) - e_fwin_new(fwin->win->container, NULL, ici->link); + e_fwin_new(fwin->win->container, NULL, ici->real_link); else need_dia = 1; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_mime_edit.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- e_int_config_mime_edit.c 14 Dec 2006 15:39:00 -0000 1.14 +++ e_int_config_mime_edit.c 3 May 2007 17:24:13 -0000 1.15 @@ -229,7 +229,12 @@ break; case DEFAULT: if (found) - e_config->mime_icons = evas_list_remove(e_config->mime_icons, mi); + { + e_config->mime_icons = evas_list_remove(e_config->mime_icons, mi); + if (mi->mime) evas_stringshare_del(mi->mime); + if (mi->icon) evas_stringshare_del(mi->icon); + free(mi); + } break; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_fsel.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -3 -r1.51 -r1.52 --- e_widget_fsel.c 2 Mar 2007 17:00:20 -0000 1.51 +++ e_widget_fsel.c 3 May 2007 17:24:13 -0000 1.52 @@ -164,10 +164,11 @@ selected = e_fm2_selected_list_get(wd->o_favorites_fm); if (!selected) return; ici = selected->data; + printf("SEL %s | %s | %s\n", ici->file, ici->real_link, ici->link); if ((ici->link) && (ici->mount)) e_fm2_path_set(wd->o_files_fm, ici->link, "/"); - else if (ici->link) - e_fm2_path_set(wd->o_files_fm, NULL, ici->link); + else if (ici->real_link) + e_fm2_path_set(wd->o_files_fm, NULL, ici->real_link); evas_list_free(selected); e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); e_widget_entry_text_set(wd->o_entry, ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs