From f1589cd36050175610936d77d30a6c29088b233f Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 3 Sep 2006 12:43:08 +0000 Subject: [PATCH] Save new apps as .desktops, and also save new images. SVN revision: 25405 --- src/bin/e_apps.c | 14 +++++++++++--- src/bin/e_eap_editor.c | 9 +++++---- src/bin/e_int_border_menu.c | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/bin/e_apps.c b/src/bin/e_apps.c index 72e1640cf..4c9b1cc4f 100644 --- a/src/bin/e_apps.c +++ b/src/bin/e_apps.c @@ -322,7 +322,7 @@ e_app_empty_new(const char *path) { char buf[4096]; - snprintf(buf, sizeof(buf), "%s/_new_app_%1.1f.eap", + snprintf(buf, sizeof(buf), "%s/_new_app_%1.1f.desktop", _e_apps_all->path, ecore_time_get()); a->path = evas_stringshare_add(buf); } @@ -1261,9 +1261,16 @@ EAPI void e_app_fields_save(E_App *a) { char buf[PATH_MAX]; - const char *lang, *ext; + const char *lang, *ext = NULL; - /* FIXME: if there is no path, put it in applications/all/a->name.desktop. */ + /* Check if it's a new one that has not been saved yet. */ + if (a->path) + ext = ecore_file_get_file(a->path); + if ( (!a->path) || ((strncmp(ext, "_new_app_", 9) == 0) && (!ecore_file_exists(a->path))) ) + { + snprintf(buf, sizeof(buf), "%s/%s.desktop", _e_apps_all->path, a->name); + a->path = evas_stringshare_add(buf); + } ext = strrchr(a->path, '.'); if ((ext) && (strcmp(ext, ".desktop") == 0)) @@ -1275,6 +1282,7 @@ e_app_fields_save(E_App *a) if (!desktop) { desktop = E_NEW(Ecore_Desktop, 1); + desktop->original_path = strdup(a->path); created = 1; } if (desktop) diff --git a/src/bin/e_eap_editor.c b/src/bin/e_eap_editor.c index 041baf48d..aad248b73 100644 --- a/src/bin/e_eap_editor.c +++ b/src/bin/e_eap_editor.c @@ -254,6 +254,7 @@ _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data if (data->wtitle) eap->win_title = evas_stringshare_add(data->wtitle); if (data->wrole) eap->win_role = evas_stringshare_add(data->wrole); if (data->iclass) eap->icon_class = evas_stringshare_add(data->iclass); + if (data->eap.icon_path) eap->icon_path = evas_stringshare_add(data->eap.icon_path); if (data->image) { @@ -528,16 +529,16 @@ _e_eap_edit_cb_icon_select_ok(void *data, E_Dialog *dia) cfdata->editor->img_set = 1; if (cfdata->editor->img) evas_object_del(cfdata->editor->img); - if (cfdata->eap.path) - free((char *) cfdata->eap.path); +// if (cfdata->eap.path) +// free((char *) cfdata->eap.path); if (cfdata->eap.icon_class) free((char *) cfdata->eap.icon_class); if (cfdata->eap.icon_path) free((char *) cfdata->eap.icon_path); cfdata->eap.icon_path = strdup(cfdata->image); - cfdata->eap.path = strdup(""); - cfdata->eap.icon_class = strdup(""); +// cfdata->eap.path = strdup(""); + cfdata->eap.icon_class = NULL; cfdata->editor->img = e_app_icon_add(cfdata->editor->evas, &(cfdata->eap)); #if 0 cfdata->editor->img = e_icon_add(cfdata->editor->evas); diff --git a/src/bin/e_int_border_menu.c b/src/bin/e_int_border_menu.c index ab66c61f9..5503a745e 100644 --- a/src/bin/e_int_border_menu.c +++ b/src/bin/e_int_border_menu.c @@ -556,7 +556,7 @@ _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi) { if (bname) { - snprintf(path, sizeof(path), "%s/.e/e/applications/all/%s.eap", getenv("HOME"), bname); + snprintf(path, sizeof(path), "%s/.e/e/applications/all/%s.desktop", getenv("HOME"), bname); a = e_app_empty_new(path); } else