Allow setting png/jpeg as background from e_fm context menu.

SVN revision: 32151
This commit is contained in:
Christopher Michael 2007-10-24 08:37:48 +00:00
parent ad36f2ea04
commit 1230661800
4 changed files with 68 additions and 25 deletions

View File

@ -146,6 +146,31 @@ e_int_config_wallpaper_gradient_done(E_Config_Dialog *dia)
cfdata->dia_gradient = NULL;
}
EAPI void
e_int_config_wallpaper_handler_set(Evas_Object *obj, const char *path, void *data)
{
const char *dev, *fpath;
if (!path) return;
e_fm2_path_get(obj, &dev, &fpath);
if (e_config->wallpaper_import_last_dev)
evas_stringshare_del(e_config->wallpaper_import_last_dev);
e_config->wallpaper_import_last_dev = evas_stringshare_add(dev);
if (e_config->wallpaper_import_last_path)
evas_stringshare_del(e_config->wallpaper_import_last_path);
e_config->wallpaper_import_last_path = evas_stringshare_add(fpath);
e_config_save_queue();
e_int_config_wallpaper_import(NULL);
}
EAPI int
e_int_config_wallpaper_handler_test(Evas_Object *obj, const char *path, void *data)
{
if (!path) return 0;
return 1;
}
static void
_cb_button_up(void *data1, void *data2)
{

View File

@ -10,9 +10,12 @@ typedef struct _E_Config_Wallpaper E_Config_Wallpaper;
EAPI E_Config_Dialog *e_int_config_wallpaper(E_Container *con, const char *params __UNUSED__);
EAPI E_Config_Dialog *e_int_config_wallpaper_desk(E_Container *con, const char *params);
EAPI void e_int_config_wallpaper_update(E_Config_Dialog *dia, char *file);
EAPI void e_int_config_wallpaper_import_done(E_Config_Dialog *dia);
EAPI void e_int_config_wallpaper_gradient_done(E_Config_Dialog *dia);
EAPI void e_int_config_wallpaper_update(E_Config_Dialog *dia, char *file);
EAPI void e_int_config_wallpaper_import_done(E_Config_Dialog *dia);
EAPI void e_int_config_wallpaper_gradient_done(E_Config_Dialog *dia);
EAPI void e_int_config_wallpaper_handler_set(Evas_Object *obj, const char *path, void *data);
EAPI int e_int_config_wallpaper_handler_test(Evas_Object *obj, const char *path, void *data);
#endif
#endif

View File

@ -80,8 +80,12 @@ e_int_config_wallpaper_import(E_Config_Dialog *parent)
import = E_NEW(Import, 1);
if (!import) return NULL;
win = e_win_new(parent->con);
if (parent)
win = e_win_new(parent->con);
else
win = e_win_new(e_container_current_get(e_manager_current_get()));
if (!win)
{
free(import);
@ -96,8 +100,9 @@ e_int_config_wallpaper_import(E_Config_Dialog *parent)
import->win = win;
evas = e_win_evas_get(win);
import->parent = parent;
if (parent)
import->parent = parent;
e_win_title_set(win, _("Select a Picture..."));
e_win_delete_callback_set(win, _import_cb_delete);
@ -141,8 +146,7 @@ e_int_config_wallpaper_import(E_Config_Dialog *parent)
}
ofm = e_widget_fsel_add(evas, fdev, fpath, NULL, NULL,
_import_cb_sel_selected, import,
_import_cb_sel_change, import, 1
);
_import_cb_sel_change, import, 1);
e_widget_fsel_window_object_set(ofm, E_OBJECT(win));
import->fsel_obj = ofm;
e_widget_list_object_append(o, ofm, 1, 1, 0.5);
@ -230,7 +234,8 @@ e_int_config_wallpaper_del(E_Win *win)
E_FREE(import->fdest);
import->exe = NULL;
e_object_del(E_OBJECT(import->win));
e_int_config_wallpaper_import_done(import->parent);
if (import->parent)
e_int_config_wallpaper_import_done(import->parent);
E_FREE(import->cfdata->file);
E_FREE(import->cfdata);
if (import) free(import);
@ -475,8 +480,9 @@ _import_cb_edje_cc_exit(void *data, int type, void *event)
_("Enlightenment was unable to import the picture<br>"
"due to conversion errors."));
}
e_int_config_wallpaper_update(import->parent, import->fdest);
if (import->parent)
e_int_config_wallpaper_update(import->parent, import->fdest);
e_int_config_wallpaper_del(import->win);
return 0;
@ -554,7 +560,8 @@ _import_cb_ok(void *data, void *data2)
}
else
{
e_int_config_wallpaper_update(import->parent, buf);
if (import->parent)
e_int_config_wallpaper_update(import->parent, buf);
e_int_config_wallpaper_del(win);
return;
}

View File

@ -13,18 +13,8 @@ static void _e_mod_menu_add(void *data, E_Menu *m);
static E_Module *conf_module = NULL;
static E_Int_Menu_Augmentation *maug = NULL;
static E_Fm2_Mime_Handler *import_hdl = NULL;
/**/
/***************************************************************************/
/***************************************************************************/
/**/
/**/
/***************************************************************************/
/***************************************************************************/
/**/
/* module setup */
EAPI E_Module_Api e_modapi =
{
@ -41,6 +31,15 @@ e_modapi_init(E_Module *m)
e_configure_registry_item_add("internal/wallpaper_desk", -1, _("Wallpaper"), NULL, "enlightenment/windows", e_int_config_wallpaper_desk);
maug = e_int_menus_menu_augmentation_add("config/1", _e_mod_menu_add, NULL, NULL, NULL);
import_hdl = e_fm2_mime_handler_new(_("Set As Background"), "enlightenment/background",
e_int_config_wallpaper_handler_set, NULL,
e_int_config_wallpaper_handler_test, NULL);
if (import_hdl)
{
e_fm2_mime_handler_mime_add(import_hdl, "image/png");
e_fm2_mime_handler_mime_add(import_hdl, "image/jpeg");
}
conf_module = m;
e_module_delayed_set(m, 1);
return m;
@ -56,11 +55,20 @@ e_modapi_shutdown(E_Module *m)
e_int_menus_menu_augmentation_del("config/1", maug);
maug = NULL;
}
while ((cfd = e_config_dialog_get("E", "_config_wallpaper_dialog"))) e_object_del(E_OBJECT(cfd));
while ((cfd = e_config_dialog_get("E", "_config_wallpaper_dialog")))
e_object_del(E_OBJECT(cfd));
e_configure_registry_item_del("internal/wallpaper_desk");
e_configure_registry_category_del("internal");
e_configure_registry_item_del("appearance/wallpaper");
e_configure_registry_category_del("appearance");
if (import_hdl)
{
e_fm2_mime_handler_mime_del(import_hdl, "image/png");
e_fm2_mime_handler_mime_del(import_hdl, "image/jpeg");
e_fm2_mime_handler_free(import_hdl);
}
conf_module = NULL;
return 1;
}