4 _fsel_path_save(E_Import_Dialog *id)
6 const char *fdev = NULL, *fpath = NULL;
8 e_widget_fsel_path_get(id->fsel_obj, &fdev, &fpath);
11 eina_stringshare_replace(&e_config->wallpaper_import_last_dev, fdev);
12 eina_stringshare_replace(&e_config->wallpaper_import_last_path, fpath);
13 e_config_save_queue();
18 _fsel_cb_close(void *data, E_Dialog *dia __UNUSED__)
20 E_Import_Dialog *id = data;
23 if (id->cancel) id->cancel(id);
29 _import_ok(void *data, void *data2)
33 id = e_object_data_get(data2);
34 e_object_ref(E_OBJECT(id));
35 if (id->ok) id->ok(data, id);
36 e_object_del(E_OBJECT(id));
37 e_object_unref(E_OBJECT(id));
41 _fsel_cb_ok(void *data, E_Dialog *dia __UNUSED__)
45 int is_bg, is_theme, r;
50 path = e_widget_fsel_selection_path_get(id->fsel_obj);
53 p = strrchr(path, '.');
54 if ((p) && (strcasecmp(p, ".edj")))
56 E_Import_Config_Dialog *import;
57 import = e_import_config_dialog_show(id->dia->win->container, path, _import_ok, NULL);
58 e_dialog_parent_set(import->dia, id->dia->win);
59 e_object_data_set(E_OBJECT(import), id);
63 file = ecore_file_file_get(path);
64 e_user_dir_snprintf(buf, sizeof(buf), "backgrounds/%s", file);
66 is_bg = edje_file_group_exists(path, "e/desktop/background");
68 edje_file_group_exists(path, "e/widgets/border/default/border");
70 if ((is_bg) && (!is_theme))
72 if (!ecore_file_cp(path, buf))
74 e_util_dialog_show(_("Import Error"),
75 _("Enlightenment was unable to "
76 "import the image<br>due to a "
84 e_util_dialog_show(_("Import Error"),
85 _("Enlightenment was unable to "
86 "import the image.<br><br>"
87 "Are you sure this is a valid "
93 e_object_ref(E_OBJECT(id));
94 if (id->ok) id->ok(buf, id);
95 e_object_del(E_OBJECT(id));
96 e_object_unref(E_OBJECT(id));
99 _fsel_cb_close(id, NULL);
104 _e_import_dia_del(void *data)
106 E_Dialog *dia = data;
108 e_object_del(dia->data);
112 _e_import_dialog_del(void *data)
114 E_Import_Dialog *id = data;
117 e_object_del(E_OBJECT(id->dia));
122 _e_import_dialog_win_del(E_Win *win)
129 e_object_del(E_OBJECT(id));
132 //////////////////////////////////////////////////////////////////////////////////
134 EAPI E_Import_Dialog *
135 e_import_dialog_show(E_Container *con, const char *dev, const char *path, Ecore_End_Cb ok, Ecore_Cb cancel)
141 const char *fdev, *fpath;
145 id = E_OBJECT_ALLOC(E_Import_Dialog, E_IMPORT_DIALOG_TYPE, _e_import_dialog_del);
146 if (!id) return NULL;
148 dia = e_dialog_new(con, "E", "_import_fsel_dialog");
151 id->ok = ok, id->cancel = cancel;
152 e_object_del_attach_func_set(E_OBJECT(dia), _e_import_dia_del);
153 e_win_delete_callback_set(dia->win, _e_import_dialog_win_del);
155 evas = e_win_evas_get(dia->win);
156 e_dialog_title_set(dia, _("Select a Picture..."));
158 fdev = dev ?: e_config->wallpaper_import_last_dev;
159 fpath = path ?: e_config->wallpaper_import_last_path;
161 snprintf(buf, sizeof(buf), "%s/%s",
164 snprintf(buf, sizeof(buf), "%s", path);
166 if (!ecore_file_exists(ecore_file_realpath(buf)))
169 fpath = path ?: e_config->wallpaper_import_last_path;
171 if ((!fdev) && (!fpath))
177 //printf("LAST: [%s] '%s' '%s'\n", buf, fdev, fpath);
178 /* if we ever use the second param in _fsel_cb_ok() then we will have to create a second function
179 * for this callback, but as of now it's okay
181 ofm = e_widget_fsel_add(evas, fdev, fpath, NULL, NULL, (void*)_fsel_cb_ok, id,
183 e_widget_fsel_window_object_set(ofm, E_OBJECT(dia->win));
185 e_widget_size_min_get(ofm, &w, &h);
186 e_dialog_content_set(dia, ofm, w, h);
188 e_dialog_button_add(dia, _("Use"), NULL, _fsel_cb_ok, id);
189 e_dialog_button_add(dia, _("Cancel"), NULL, _fsel_cb_close, id);
190 e_dialog_border_icon_set(dia, "enlightenment/background");
192 e_win_centered_set(dia->win, 1);
193 e_widget_focus_set(ofm, 1);