Enlightenment CVS committal Author : devilhorns Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_int_config_mime.c e_int_config_mime_edit.c Log Message: Add/Del/Configure should work now. Still have to handle the case of edj and desktop. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_mime.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_int_config_mime.c 3 Nov 2006 16:50:31 -0000 1.5 +++ e_int_config_mime.c 3 Nov 2006 18:52:39 -0000 1.6 @@ -11,7 +11,7 @@ static void _cb_confirm_yes (void *data); static void _cb_confirm_destroy (void *data); - +static void _cb_entry_ok (char *text, void *data); struct _E_Config_Dialog_Data { @@ -46,6 +46,21 @@ _fill_data(E_Config_Dialog_Data *cfdata) { Evas_List *l; + + while (cfdata->mimes) + { + E_Config_Mime_Icon *mi; + + mi = cfdata->mimes->data; + if (!mi) continue; + if (mi->mime) + evas_stringshare_del(mi->mime); + if (mi->icon) + evas_stringshare_del(mi->icon); + E_FREE(mi); + + cfdata->mimes = evas_list_remove_list(cfdata->mimes, cfdata->mimes); + } for (l = e_config->mime_icons; l; l = l->next) { @@ -139,13 +154,16 @@ mi = l->data; if (!mi) continue; + if (mi->icon) + if (!strcmp(mi->icon, "DESKTOP")) continue; + tmp = e_fm_mime_icon_get(mi->mime); if (!tmp) snprintf(buf, sizeof(buf), "e/icons/fileman/file"); else if (!strcmp(tmp, "THUMB")) snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", mi->mime); else if (!strncmp(tmp, "e/icons/fileman/mime/", 21)) - snprintf(buf, sizeof(buf), "%s", tmp); + snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", mi->mime); else { char *p; @@ -167,7 +185,14 @@ static void _cb_add(void *data, void *data2) { + E_Config_Dialog_Data *cfdata; + cfdata = data; + if (!cfdata) return; + + e_entry_dialog_show(_("Create new mime type"), "enlightenment/e", + _("Enter a name for this new mime type"), "", + NULL, NULL, _cb_entry_ok, NULL, cfdata); } static void @@ -242,9 +267,14 @@ mi = l->data; if (!mi) continue; if (strcmp(mi->mime, cfdata->sel_mt)) continue; - cfdata->mimes = evas_list_remove(cfdata->mimes, mi); + if (mi->mime) + evas_stringshare_del(mi->mime); + if (mi->icon) + evas_stringshare_del(mi->icon); e_config->mime_icons = evas_list_remove(e_config->mime_icons, mi); } + _fill_data(cfdata); + _fill_list(cfdata); } static void @@ -254,5 +284,30 @@ cfdata = data; if (!cfdata) return; + _fill_list(cfdata); +} + +static void +_cb_entry_ok(char *text, void *data) +{ + E_Config_Dialog_Data *cfdata; + E_Config_Mime_Icon *mime; + char buf[4096]; + + cfdata = data; + if (!cfdata) return; + if (!text) return; + if (!strstr(text, "/")) return; + + snprintf(buf, sizeof(buf), "%s", text); + mime = E_NEW(E_Config_Mime_Icon, 1); + mime->mime = evas_stringshare_add(buf); +// snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", text); + mime->icon = evas_stringshare_add("THUMB"); + + e_config->mime_icons = evas_list_append(e_config->mime_icons, mime); + e_config_save_queue(); + + _fill_data(cfdata); _fill_list(cfdata); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_mime_edit.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_int_config_mime_edit.c 3 Nov 2006 16:50:31 -0000 1.3 +++ e_int_config_mime_edit.c 3 Nov 2006 18:52:39 -0000 1.4 @@ -17,8 +17,8 @@ enum _Icon_Type { THUMB, - EDJ, - IMAGE + THEME, + EDJ }; struct _E_Config_Dialog_Data @@ -97,7 +97,7 @@ if ((p) && (!strcmp(p, ".edj"))) cfdata->type = EDJ; else - cfdata->type = IMAGE; + cfdata->type = THEME; } } @@ -124,6 +124,7 @@ ob = e_widget_label_add(evas, _("Mime:")); e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1); ob = e_widget_entry_add(evas, &(cfdata->mime)); + e_widget_entry_readonly_set(ob, 1); e_widget_min_size_set(ob, 100, 1); e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1); e_widget_list_object_append(o, of, 1, 1, 0.5); @@ -133,12 +134,13 @@ ob = e_widget_radio_add(evas, _("Use Generated Thumbnail"), THUMB, rg); evas_object_smart_callback_add(ob, "changed", _cb_type, cfdata); e_widget_frametable_object_append(of, ob, 0, 0, 3, 1, 1, 1, 1, 1); - ob = e_widget_radio_add(evas, _("Use Edje File"), EDJ, rg); + ob = e_widget_radio_add(evas, _("Use Theme Icon"), THEME, rg); evas_object_smart_callback_add(ob, "changed", _cb_type, cfdata); e_widget_frametable_object_append(of, ob, 0, 1, 3, 1, 1, 1, 1, 1); - ob = e_widget_radio_add(evas, _("Use Image"), IMAGE, rg); + ob = e_widget_radio_add(evas, _("Use Edje File"), EDJ, rg); evas_object_smart_callback_add(ob, "changed", _cb_type, cfdata); e_widget_frametable_object_append(of, ob, 0, 2, 3, 1, 1, 1, 1, 1); + e_widget_disabled_set(ob, 1); oi = e_widget_button_add(evas, "", NULL, _cb_icon_sel, cfdata, cfd); cfdata->gui.icon = oi; @@ -159,6 +161,31 @@ static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + E_Config_Mime_Icon *mime; + char buf[4096]; + + mime = cfd->data; + if (!mime) return 0; + + if (mime->mime) + evas_stringshare_del(mime->mime); + mime->mime = evas_stringshare_add(cfdata->mime); + + if (mime->icon) + evas_stringshare_del(mime->icon); + + switch (cfdata->type) + { + case THUMB: + mime->icon = evas_stringshare_add("THUMB"); + break; + case THEME: + case EDJ: + snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", cfdata->mime); + mime->icon = evas_stringshare_add(buf); + break; + } + e_config_save_queue(); return 1; } @@ -170,7 +197,6 @@ E_Dialog *dia; Evas_Object *o; Evas_Coord w, h; - char *dir = NULL; cfdata = data; if (!cfdata) return; @@ -183,17 +209,8 @@ if (!dia) return; e_dialog_title_set(dia, _("Select an Icon")); dia->data = cfdata; - if (cfdata->icon) - dir = (char *)e_fm_mime_icon_get(cfdata->icon); - if ((dir) && (cfdata->type != THUMB)) - { - o = e_widget_fsel_add(dia->win->evas, dir, "/", NULL, NULL, - _cb_fsel_sel, cfdata, NULL, cfdata, 1); - free(dir); - } - else - o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL, - _cb_fsel_sel, cfdata, NULL, cfdata, 1); + 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); @@ -227,6 +244,10 @@ switch (cfdata->type) { case THUMB: + icon = edje_object_add(evas_object_evas_get(cfdata->gui.icon)); + e_theme_edje_object_set(icon, "base/theme/fileman", "e/icons/fileman/file"); + break; + case THEME: snprintf(buf, sizeof(buf), "e/icons/fileman/mime/%s", cfdata->mime); icon = edje_object_add(evas_object_evas_get(cfdata->gui.icon)); if (!e_theme_edje_object_set(icon, "base/theme/fileman", buf)) @@ -234,15 +255,10 @@ break; case EDJ: icon = edje_object_add(evas_object_evas_get(cfdata->gui.icon)); - if (!e_theme_edje_object_set(icon, "base/theme/fileman", cfdata->icon)) + if (!e_theme_edje_object_set(icon, "base/theme/fileman", tmp)) e_theme_edje_object_set(icon, "base/theme/fileman", "e/icons/fileman/file"); e_widget_disabled_set(cfdata->gui.icon, 0); break; - case IMAGE: - icon = e_icon_add(evas_object_evas_get(cfdata->gui.icon)); - e_icon_file_set(icon, cfdata->icon); - e_widget_disabled_set(cfdata->gui.icon, 0); - break; default: break; } @@ -262,10 +278,10 @@ case THUMB: e_widget_disabled_set(cfdata->gui.icon, 1); break; - case EDJ: - e_widget_disabled_set(cfdata->gui.icon, 0); + case THEME: + e_widget_disabled_set(cfdata->gui.icon, 1); break; - case IMAGE: + case EDJ: e_widget_disabled_set(cfdata->gui.icon, 0); break; default: @@ -321,9 +337,6 @@ case EDJ: if (!strstr(cfdata->file, ".edj")) return; // if (!edje_file_group_exists(cfdata->file, "")) return; - break; - case IMAGE: - break; default: return; break; ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs