forked from enlightenment/enlightenment
add a preview widget (includes a livethumb for live downscaling - notice
previews of animated bgs's... animate now). fixed problems with image widget withleaks and other stuff... also desklok tries to abord if grabs fail and agressively tries to disable existing grabs SVN revision: 20987
This commit is contained in:
parent
aa78af7f12
commit
b089c7d1e3
|
@ -62,5 +62,6 @@ collections {
|
|||
#include "default_desklock.edc"
|
||||
#include "default_textblock.edc"
|
||||
#include "default_shelf.edc"
|
||||
#include "default_preview.edc"
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
images {
|
||||
image: "e17_ibar_bg_v.png" COMP;
|
||||
image: "e17_ibar_over_v.png" COMP;
|
||||
}
|
||||
|
||||
group {
|
||||
name: "widgets/preview";
|
||||
parts {
|
||||
part {
|
||||
name: "bg";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "item";
|
||||
offset: -3 -3;
|
||||
}
|
||||
rel2 {
|
||||
to: "item";
|
||||
offset: 2 2;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_bg_v.png";
|
||||
border: 7 7 7 7;
|
||||
}
|
||||
fill {
|
||||
smooth : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "clipper";
|
||||
type: RECT;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "item";
|
||||
}
|
||||
rel2 {
|
||||
to: "item";
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "item";
|
||||
clip_to: "clipper";
|
||||
type: SWALLOW;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 0;
|
||||
rel1 {
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
offset: -3 -3;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "conf_over";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "bg";
|
||||
}
|
||||
rel2 {
|
||||
to: "bg";
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_over_v.png";
|
||||
border: 13 13 13 13;
|
||||
}
|
||||
fill {
|
||||
smooth : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -146,7 +146,8 @@ e_widget_textblock.h \
|
|||
e_apps_error.h \
|
||||
e_stolen.h \
|
||||
e_gadcon.h \
|
||||
e_shelf.h
|
||||
e_shelf.h \
|
||||
e_widget_preview.h
|
||||
|
||||
enlightenment_src = \
|
||||
e_user.c \
|
||||
|
@ -275,6 +276,7 @@ e_apps_error.c \
|
|||
e_stolen.c \
|
||||
e_gadcon.c \
|
||||
e_shelf.c \
|
||||
e_widget_preview.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
|
|
|
@ -19,6 +19,7 @@ struct _E_Desklock_Data
|
|||
Evas_List *elock_wnd_list;
|
||||
Ecore_X_Window elock_wnd;
|
||||
Evas_List *handlers;
|
||||
Ecore_X_Window elock_grab_break_wnd;
|
||||
char passwd[PASSWD_LEN];
|
||||
};
|
||||
|
||||
|
@ -65,22 +66,63 @@ e_desklock_show(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!edd)
|
||||
edd = E_NEW(E_Desklock_Data, 1);
|
||||
if (!edd) return 0;
|
||||
edd->elock_wnd = ecore_x_window_input_new(e_manager_current_get()->root,
|
||||
0, 0, 1, 1);
|
||||
ecore_x_window_show(edd->elock_wnd);
|
||||
managers = e_manager_list();
|
||||
if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd))
|
||||
{
|
||||
edd = E_NEW(E_Desklock_Data, 1);
|
||||
if (!edd) return 0;
|
||||
edd->elock_wnd_list = NULL;
|
||||
edd->elock_wnd = 0;
|
||||
edd->handlers = NULL;
|
||||
edd->passwd[0] = 0;
|
||||
for (l = managers; l; l = l->next)
|
||||
{
|
||||
E_Manager *man;
|
||||
Ecore_X_Window *windows;
|
||||
int wnum;
|
||||
|
||||
man = l->data;
|
||||
windows = ecore_x_window_children_get(man->root, &wnum);
|
||||
if (windows)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < wnum; i++)
|
||||
{
|
||||
Ecore_X_Window_Attributes att;
|
||||
|
||||
ecore_x_window_attributes_get(windows[i], &att);
|
||||
if (att.visible)
|
||||
{
|
||||
ecore_x_window_hide(windows[i]);
|
||||
if (e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd))
|
||||
{
|
||||
edd->elock_grab_break_wnd = windows[i];
|
||||
free(windows);
|
||||
goto works;
|
||||
}
|
||||
ecore_x_window_show(windows[i]);
|
||||
}
|
||||
}
|
||||
free(windows);
|
||||
}
|
||||
}
|
||||
/* everything failed - cant lock */
|
||||
e_util_dialog_show(_("Lock Failed"),
|
||||
_("Locking the desktop failed because some application<br>"
|
||||
"has grabbed either they keyboard or the mouse or both<br>"
|
||||
"and their grab is unable to be broken."));
|
||||
ecore_x_window_del(edd->elock_wnd);
|
||||
free(edd);
|
||||
edd = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
works:
|
||||
|
||||
last_active_zone = current_zone =
|
||||
e_zone_current_get(e_container_current_get(e_manager_current_get()));
|
||||
|
||||
zone_counter = 0;
|
||||
total_zone_num = _e_desklock_zone_num_get();
|
||||
managers = e_manager_list();
|
||||
for (l = managers; l; l = l->next)
|
||||
{
|
||||
E_Manager *man;
|
||||
|
@ -94,16 +136,8 @@ e_desklock_show(void)
|
|||
for (l3 = con->zones; l3; l3 = l3->next)
|
||||
{
|
||||
E_Zone *zone;
|
||||
|
||||
|
||||
zone = l3->data;
|
||||
if (!edd->elock_wnd)
|
||||
{
|
||||
edd->elock_wnd = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
|
||||
ecore_x_window_show(edd->elock_wnd);
|
||||
e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd);
|
||||
}
|
||||
|
||||
edp = E_NEW(E_Desklock_Popup_Data, 1);
|
||||
if (edp)
|
||||
{
|
||||
|
@ -112,6 +146,7 @@ e_desklock_show(void)
|
|||
ecore_x_current_time_get(), NULL);
|
||||
|
||||
e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER);
|
||||
ecore_evas_raise(edp->popup_wnd->ecore_evas);
|
||||
|
||||
evas_event_freeze(edp->popup_wnd->evas);
|
||||
edp->bg_object = edje_object_add(edp->popup_wnd->evas);
|
||||
|
@ -222,7 +257,9 @@ e_desklock_hide(void)
|
|||
E_Desklock_Popup_Data *edp;
|
||||
|
||||
if (!edd) return;
|
||||
|
||||
|
||||
if (edd->elock_grab_break_wnd)
|
||||
ecore_x_window_show(edd->elock_grab_break_wnd);
|
||||
while (edd->elock_wnd_list)
|
||||
{
|
||||
edp = edd->elock_wnd_list->data;
|
||||
|
|
|
@ -26,7 +26,7 @@ e_grabinput_shutdown(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
EAPI int
|
||||
e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win)
|
||||
{
|
||||
if (grab_mouse_win)
|
||||
|
@ -42,15 +42,29 @@ e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_
|
|||
}
|
||||
if (mouse_win)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (confine_mouse)
|
||||
ecore_x_pointer_confine_grab(mouse_win);
|
||||
ret = ecore_x_pointer_confine_grab(mouse_win);
|
||||
else
|
||||
ecore_x_pointer_grab(mouse_win);
|
||||
ret = ecore_x_pointer_grab(mouse_win);
|
||||
if (!ret) return 0;
|
||||
grab_mouse_win = mouse_win;
|
||||
}
|
||||
if (key_win)
|
||||
{
|
||||
ecore_x_keyboard_grab(key_win);
|
||||
int ret = 0;
|
||||
|
||||
ret = ecore_x_keyboard_grab(key_win);
|
||||
if (!ret)
|
||||
{
|
||||
if (grab_mouse_win)
|
||||
{
|
||||
ecore_x_pointer_ungrab();
|
||||
grab_mouse_win = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
grab_key_win = key_win;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ typedef enum _E_Focus_Method
|
|||
|
||||
EAPI int e_grabinput_init(void);
|
||||
EAPI int e_grabinput_shutdown(void);
|
||||
EAPI void e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win);
|
||||
EAPI int e_grabinput_get(Ecore_X_Window mouse_win, int confine_mouse, Ecore_X_Window key_win);
|
||||
EAPI void e_grabinput_release(Ecore_X_Window mouse_win, Ecore_X_Window key_win);
|
||||
EAPI void e_grabinput_focus(Ecore_X_Window win, E_Focus_Method method);
|
||||
EAPI double e_grabinput_last_focus_time_get(void);
|
||||
|
|
|
@ -127,3 +127,4 @@
|
|||
#include "e_gadcon.h"
|
||||
#include "e_shelf.h"
|
||||
#include "e_tlist.h"
|
||||
#include "e_widget_preview.h"
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
*/
|
||||
|
||||
#include "e.h"
|
||||
//#include <Ecore_X.h>
|
||||
|
||||
#define BG_SET_DEFAULT_DESK 0
|
||||
#define BG_SET_THIS_DESK 1
|
||||
|
@ -117,10 +116,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
o = e_widget_button_add(evas, _("Select Another Image..."), NULL, _bg_config_dialog_cb_import, cfd, NULL);
|
||||
e_widget_table_object_append(ot, o, 0, 2, 1, 1, 1, 0, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Background Preview"), 0);
|
||||
e_widget_min_size_set(of, 320, 240);
|
||||
e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
e_widget_framelist_object_append(of, im);
|
||||
e_widget_table_object_append(ot, im, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
|
||||
if (_bg_file_monitor)
|
||||
{
|
||||
|
@ -183,10 +179,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
o = e_widget_button_add(evas, _("Select Another Image"), NULL, _bg_config_dialog_cb_import, cfd, NULL);
|
||||
e_widget_table_object_append(ot, o, 0, 3, 1, 1, 1, 0, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Background Preview"), 0);
|
||||
e_widget_min_size_set(of, 320, 240);
|
||||
e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
e_widget_framelist_object_append(of, im);
|
||||
e_widget_table_object_append(ot, im, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
|
||||
rg = e_widget_radio_group_new(&(cfdata->bg_method));
|
||||
of = e_widget_framelist_add(evas, _("Set Background For"), 0);
|
||||
|
@ -300,20 +293,23 @@ _load_bgs(E_Config_Dialog *cfd, Evas_Object *il)
|
|||
c = strdup(f);
|
||||
if (edje_object_file_set(o, f, "desktop/background"))
|
||||
{
|
||||
Evas_Object *o = NULL;
|
||||
Evas_Object *ic = NULL;
|
||||
|
||||
if (!e_thumb_exists(c))
|
||||
o = e_thumb_generate_begin(c, 48, 48, cfd->dia->win->evas, &o, NULL, NULL);
|
||||
ic = e_thumb_generate_begin(c, 48, 48, cfd->dia->win->evas, &ic, NULL, NULL);
|
||||
else
|
||||
o = e_thumb_evas_object_get(c, cfd->dia->win->evas, 48, 48, 1);
|
||||
ic = e_thumb_evas_object_get(c, cfd->dia->win->evas, 48, 48, 1);
|
||||
|
||||
e_widget_ilist_append(il, o, "Theme Background", _ilist_cb_bg_selected, cfd, "");
|
||||
e_widget_ilist_append(il, ic, "Theme Background", _ilist_cb_bg_selected, cfd, "");
|
||||
}
|
||||
if (!e_config->desktop_default_background)
|
||||
e_widget_ilist_selected_set(il, 0);
|
||||
|
||||
im = e_widget_image_add_from_object(cfd->dia->win->evas, bg_obj, 320, 240);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfd->dia->win->evas, 320, 240, 1));
|
||||
im = e_widget_preview_add(cfd->dia->win->evas, 320, 240);
|
||||
e_widget_preview_edje_set(im, f, "desktop/background");
|
||||
evas_object_del(bg_obj);
|
||||
// im = e_widget_preview_add_from_object(cfd->dia->win->evas, bg_obj, 320, 240);
|
||||
// e_widget_preview_object_set(im, e_thumb_evas_object_get(c, cfd->dia->win->evas, 320, 240, 1));
|
||||
|
||||
evas_object_del(o);
|
||||
ecore_evas_free(eebuf);
|
||||
|
@ -350,13 +346,12 @@ _load_bgs(E_Config_Dialog *cfd, Evas_Object *il)
|
|||
if ((e_config->desktop_default_background) &&
|
||||
(!strcmp(e_config->desktop_default_background, full_path)))
|
||||
{
|
||||
Evas_Object *o = NULL;
|
||||
|
||||
e_widget_ilist_selected_set(il, i);
|
||||
o = edje_object_add(cfd->dia->win->evas);
|
||||
edje_object_file_set(o, e_config->desktop_default_background, "desktop/background");
|
||||
im = e_widget_image_add_from_object(cfd->dia->win->evas, o, 320, 240);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfd->dia->win->evas, 320, 240, 1));
|
||||
|
||||
im = e_widget_preview_add(cfd->dia->win->evas, 320, 240);
|
||||
e_widget_preview_edje_set(im, e_config->desktop_default_background, "desktop/background");
|
||||
// im = e_widget_preview_add_from_object(cfd->dia->win->evas, o, 320, 240);
|
||||
// e_widget_preview_object_set(im, e_thumb_evas_object_get(full_path, cfd->dia->win->evas, 320, 240, 1));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
@ -385,12 +380,15 @@ _ilist_cb_bg_selected(void *data)
|
|||
if (!(cfdata->bg[0]))
|
||||
{
|
||||
const char *theme;
|
||||
|
||||
theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background");
|
||||
e_widget_image_object_set(cfd->data, e_thumb_evas_object_get(strdup(theme), evas, 320, 240, 1));
|
||||
e_widget_preview_edje_set(cfd->data, theme, "desktop/background");
|
||||
// e_widget_preview_object_set(cfd->data, e_thumb_evas_object_get(strdup(theme), evas, 320, 240, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_image_object_set(cfd->data, e_thumb_evas_object_get(cfdata->bg, evas, 320, 240, 1));
|
||||
e_widget_preview_edje_set(cfd->data, cfdata->bg, "desktop/background");
|
||||
// e_widget_preview_object_set(cfd->data, e_thumb_evas_object_get(cfdata->bg, evas, 320, 240, 1));
|
||||
}
|
||||
|
||||
if (cfdata->current_bg)
|
||||
|
|
|
@ -341,11 +341,8 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
/* end: bkg list */
|
||||
|
||||
/* start: Desk Lock Window Preview */
|
||||
ot1 = e_widget_frametable_add(evas, _("Desk Lock Window Preview"), 0);
|
||||
{
|
||||
e_widget_frametable_object_append(ot1, cfdata->preview_image, 0, 1, 1, 1, 1, 1, 1, 1);
|
||||
}
|
||||
e_widget_table_object_append(ot, ot1, 1, 0, 1, 1, 1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ot, cfdata->preview_image, 1, 0, 1, 1, 1, 1, 1, 1);
|
||||
/* end: Desk Lock Window Preview */
|
||||
|
||||
/* start: login box options */
|
||||
|
@ -506,7 +503,7 @@ _e_desklock_zone_num_get()
|
|||
static void
|
||||
_load_bgs(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *bg_obj, *o, *ic, *im;
|
||||
Evas_Object *o, *ic, *im;
|
||||
Ecore_Evas *eebuf;
|
||||
Evas *evasbuf;
|
||||
Evas_List *bg_dirs, *bg;
|
||||
|
@ -516,9 +513,6 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
|
|||
if (!cfdata || !cfdata->gui.bg_list)
|
||||
return;
|
||||
|
||||
bg_obj = edje_object_add(cfdata->evas);
|
||||
|
||||
|
||||
eebuf = ecore_evas_buffer_new(1, 1);
|
||||
evasbuf = ecore_evas_get(eebuf);
|
||||
|
||||
|
@ -529,25 +523,25 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
|
|||
|
||||
if (edje_object_file_set(o, f1, "desklock/background"))
|
||||
{
|
||||
Evas_Object *o = NULL;
|
||||
|
||||
if (!e_thumb_exists(c))
|
||||
o = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H,
|
||||
cfdata->evas, &o, NULL, NULL);
|
||||
ic = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H,
|
||||
cfdata->evas, &ic, NULL, NULL);
|
||||
else
|
||||
o = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1);
|
||||
ic = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1);
|
||||
|
||||
e_widget_ilist_append(cfdata->gui.bg_list, o, "Theme DeskLock Background",
|
||||
e_widget_ilist_append(cfdata->gui.bg_list, ic, "Theme DeskLock Background",
|
||||
_ibg_list_cb_bg_selected, cfdata, DEF_DESKLOCK_BACKGROUND);
|
||||
}
|
||||
|
||||
if (!e_config->desklock_background ||
|
||||
!strcmp(e_config->desklock_background, DEF_DESKLOCK_BACKGROUND))
|
||||
if ((!e_config->desklock_background) ||
|
||||
(!strcmp(e_config->desklock_background, DEF_DESKLOCK_BACKGROUND)))
|
||||
e_widget_ilist_selected_set(cfdata->gui.bg_list, 0);
|
||||
|
||||
im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W,
|
||||
BG_PREVIEW_H, 1));
|
||||
im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_preview_edje_set(im, c, "desktop/background");
|
||||
// im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
// e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W,
|
||||
// BG_PREVIEW_H, 1));
|
||||
|
||||
evas_object_del(o);
|
||||
ecore_evas_free(eebuf);
|
||||
|
@ -565,26 +559,25 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
|
|||
c = strdup(f);
|
||||
if (edje_object_file_set(o, f, "desktop/background"))
|
||||
{
|
||||
Evas_Object *o = NULL;
|
||||
|
||||
if (!e_thumb_exists(c))
|
||||
o = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H,
|
||||
cfdata->evas, &o, NULL, NULL);
|
||||
ic = e_thumb_generate_begin(c, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H,
|
||||
cfdata->evas, &ic, NULL, NULL);
|
||||
else
|
||||
o = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1);
|
||||
ic = e_thumb_evas_object_get(c, cfdata->evas, BG_LIST_ICON_SIZE_W, BG_LIST_ICON_SIZE_H, 1);
|
||||
|
||||
e_widget_ilist_append(cfdata->gui.bg_list, o, "Theme Background", _ibg_list_cb_bg_selected,
|
||||
e_widget_ilist_append(cfdata->gui.bg_list, ic, "Theme Background", _ibg_list_cb_bg_selected,
|
||||
cfdata, DEF_THEME_BACKGROUND);
|
||||
}
|
||||
|
||||
if (e_config->desklock_background &&
|
||||
strcmp(e_config->desklock_background, DEF_THEME_BACKGROUND) == 0)
|
||||
if ((e_config->desklock_background) &&
|
||||
(!strcmp(e_config->desklock_background, DEF_THEME_BACKGROUND)))
|
||||
{
|
||||
e_widget_ilist_selected_set(cfdata->gui.bg_list, 1);
|
||||
|
||||
im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W,
|
||||
BG_PREVIEW_H, 1));
|
||||
e_widget_ilist_selected_set(cfdata->gui.bg_list, 1);
|
||||
im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_preview_edje_set(im, c, "desktop/background");
|
||||
// im = e_widget_image_add_from_object(cfdata->evas, bg_obj, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
// e_widget_image_object_set(im, e_thumb_evas_object_get(c, cfdata->evas, BG_PREVIEW_W,
|
||||
// BG_PREVIEW_H, 1));
|
||||
}
|
||||
|
||||
evas_object_del(o);
|
||||
|
@ -626,17 +619,13 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
|
|||
if ((e_config->desklock_background) &&
|
||||
(!strcmp(e_config->desklock_background, full_path)))
|
||||
{
|
||||
Evas_Object *o = NULL;
|
||||
|
||||
e_widget_ilist_selected_set(cfdata->gui.bg_list, i);
|
||||
o = edje_object_add(cfdata->evas);
|
||||
edje_object_file_set(o, e_config->desktop_default_background,
|
||||
"desktop/background");
|
||||
|
||||
im = e_widget_image_add_from_object(cfdata->evas, o, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfdata->evas,
|
||||
BG_PREVIEW_W, BG_PREVIEW_H,
|
||||
1));
|
||||
e_widget_ilist_selected_set(cfdata->gui.bg_list, i);
|
||||
im = e_widget_preview_add(cfdata->evas, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
e_widget_preview_edje_set(im, full_path, "desktop/background");
|
||||
// im = e_widget_image_add_from_object(cfdata->evas, o, BG_PREVIEW_W, BG_PREVIEW_H);
|
||||
// e_widget_image_object_set(im, e_thumb_evas_object_get(full_path, cfdata->evas,
|
||||
// BG_PREVIEW_W, BG_PREVIEW_H,
|
||||
// 1));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
@ -654,43 +643,50 @@ _load_bgs(E_Config_Dialog_Data *cfdata)
|
|||
static void
|
||||
_ibg_list_cb_bg_selected(void *data)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
|
||||
if (cfdata->cur_bg[0])
|
||||
{
|
||||
if (strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND) == 0)
|
||||
{
|
||||
const char *theme;
|
||||
theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background");
|
||||
e_widget_image_object_set(cfdata->preview_image,
|
||||
e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
else if (strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND) == 0)
|
||||
{
|
||||
const char *theme;
|
||||
theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background");
|
||||
e_widget_image_object_set(cfdata->preview_image,
|
||||
e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_image_object_set(cfdata->preview_image,
|
||||
e_thumb_evas_object_get(cfdata->cur_bg, cfdata->evas,
|
||||
BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *theme;
|
||||
theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background");
|
||||
e_widget_image_object_set(cfdata->preview_image,
|
||||
e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
|
||||
if (cfdata->cur_bg[0])
|
||||
{
|
||||
if (strcmp(cfdata->cur_bg, DEF_DESKLOCK_BACKGROUND) == 0)
|
||||
{
|
||||
const char *theme;
|
||||
|
||||
theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background");
|
||||
e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background");
|
||||
// e_widget_image_object_set(cfdata->preview_image,
|
||||
// e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
// BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
else if (strcmp(cfdata->cur_bg, DEF_THEME_BACKGROUND) == 0)
|
||||
{
|
||||
const char *theme;
|
||||
|
||||
theme = e_theme_edje_file_get("base/theme/backgrounds", "desktop/background");
|
||||
e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background");
|
||||
// e_widget_image_object_set(cfdata->preview_image,
|
||||
// e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
// BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_preview_edje_set(cfdata->preview_image, cfdata->cur_bg, "desktop/background");
|
||||
// e_widget_image_object_set(cfdata->preview_image,
|
||||
// e_thumb_evas_object_get(cfdata->cur_bg, cfdata->evas,
|
||||
// BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *theme;
|
||||
|
||||
theme = e_theme_edje_file_get("base/theme/desklock", "desklock/background");
|
||||
e_widget_preview_edje_set(cfdata->preview_image, theme, "desktop/background");
|
||||
// e_widget_image_object_set(cfdata->preview_image,
|
||||
// e_thumb_evas_object_get(strdup(theme), cfdata->evas,
|
||||
// BG_PREVIEW_W, BG_PREVIEW_H, 1));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -103,7 +103,8 @@ _e_config_theme_cb_standard(void *data)
|
|||
const char *tmp;
|
||||
|
||||
d = data;
|
||||
e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 160, 120, 1));
|
||||
e_widget_preview_edje_set(d->cfd->data, d->file, "desktop/background");
|
||||
// e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 160, 120, 1));
|
||||
|
||||
cfdata = d->cfd->cfdata;
|
||||
if (cfdata->current_theme)
|
||||
|
@ -197,8 +198,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
if (!(strcmp(themefile, cfdata->current_theme)))
|
||||
{
|
||||
e_widget_ilist_selected_set(il, i);
|
||||
im = e_widget_image_add_from_object(evas, theme, 320, 240);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1));
|
||||
im = e_widget_preview_add(evas, 320, 240);
|
||||
e_widget_preview_edje_set(im, fulltheme, "desktop/background");
|
||||
// im = e_widget_image_add_from_object(evas, theme, 320, 240);
|
||||
// e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1));
|
||||
}
|
||||
free(noext);
|
||||
i++;
|
||||
|
@ -214,18 +217,18 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_ilist_go(il);
|
||||
e_widget_min_size_set(il, 180, 40);
|
||||
e_widget_table_object_append(o, il, 0, 0, 1, 2, 1, 1, 1, 1);
|
||||
fr = e_widget_framelist_add(evas, _("Preview"), 0);
|
||||
if (im == NULL)
|
||||
{
|
||||
snprintf(fulltheme, sizeof(fulltheme), PACKAGE_DATA_DIR"/data/themes/default.edj");
|
||||
theme = e_thumb_generate_begin(fulltheme, 320, 240, evas, &theme, NULL, NULL);
|
||||
im = e_widget_image_add_from_object(evas, theme, 320, 240);
|
||||
e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1));
|
||||
im = e_widget_preview_add(evas, 320, 240);
|
||||
e_widget_preview_edje_set(im, fulltheme, "desktop/background");
|
||||
// theme = e_thumb_generate_begin(fulltheme, 320, 240, evas, &theme, NULL, NULL);
|
||||
// im = e_widget_image_add_from_object(evas, theme, 320, 240);
|
||||
// e_widget_image_object_set(im, e_thumb_evas_object_get(fulltheme, evas, 320, 240, 1));
|
||||
}
|
||||
cfd->data = im;
|
||||
e_widget_min_size_set(fr, 320, 240);
|
||||
e_widget_table_object_append(o, fr, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
e_widget_framelist_object_append(fr, im);
|
||||
|
||||
e_widget_table_object_append(o, im, 1, 0, 1, 2, 1, 1, 1, 1);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ struct _E_Widget_Data
|
|||
Evas_Object *img;
|
||||
};
|
||||
|
||||
static void _e_wid_del_hook(Evas_Object *obj);
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
/* externally accessible functions */
|
||||
|
@ -19,6 +21,7 @@ e_widget_image_add_from_object(Evas *evas, Evas_Object *object, int minw, int mi
|
|||
E_Widget_Data *wd;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
wd = calloc(1, sizeof(E_Widget_Data));
|
||||
|
||||
evas_object_show(object);
|
||||
|
@ -52,6 +55,7 @@ e_widget_image_add_from_file(Evas *evas, char *file, int minw, int minh)
|
|||
|
||||
wd->img = o;
|
||||
evas_object_show(o);
|
||||
e_widget_data_set(obj, wd);
|
||||
e_widget_can_focus_set(obj, 0);
|
||||
e_widget_min_size_set(obj, minw, minh);
|
||||
e_widget_sub_object_add(obj, o);
|
||||
|
@ -99,3 +103,13 @@ e_widget_image_object_set(Evas_Object *obj, Evas_Object *o)
|
|||
e_icon_object_set(wd->img, o);
|
||||
evas_object_show(wd->img);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_e_wid_del_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
free(wd);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
typedef struct _E_Widget_Data E_Widget_Data;
|
||||
struct _E_Widget_Data
|
||||
{
|
||||
Evas_Object *o_frame, *img, *o_thumb;
|
||||
};
|
||||
|
||||
static void _e_wid_del_hook(Evas_Object *obj);
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
/* externally accessible functions */
|
||||
EAPI Evas_Object *
|
||||
e_widget_preview_add(Evas *evas, int minw, int minh)
|
||||
{
|
||||
Evas_Object *obj, *o;
|
||||
E_Widget_Data *wd;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
wd = calloc(1, sizeof(E_Widget_Data));
|
||||
|
||||
o = edje_object_add(evas);
|
||||
wd->o_frame = o;
|
||||
e_theme_edje_object_set(o, "base/theme/widgets",
|
||||
"widgets/preview");
|
||||
evas_object_show(o);
|
||||
e_widget_sub_object_add(obj, o);
|
||||
e_widget_resize_object_set(obj, o);
|
||||
|
||||
o = e_livethumb_add(evas);
|
||||
wd->img = o;
|
||||
e_livethumb_vsize_set(o, minw * 2, minh * 2);
|
||||
edje_extern_object_min_size_set(o, minw, minh);
|
||||
edje_extern_object_max_size_set(o, minw, minh);
|
||||
evas_object_show(o);
|
||||
edje_object_part_swallow(wd->o_frame, "item", o);
|
||||
|
||||
e_widget_data_set(obj, wd);
|
||||
e_widget_can_focus_set(obj, 0);
|
||||
edje_object_size_min_calc(wd->o_frame, &mw, &mh);
|
||||
e_widget_min_size_set(obj, mw, mh);
|
||||
e_widget_sub_object_add(obj, o);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_widget_preview_file_set(Evas_Object *obj, char *file, char *key)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
if (wd->o_thumb) evas_object_del(wd->o_thumb);
|
||||
wd->o_thumb = e_icon_add(e_livethumb_evas_get(wd->img));
|
||||
e_icon_file_key_set(wd->o_thumb, file, key);
|
||||
evas_object_show(wd->o_thumb);
|
||||
e_livethumb_thumb_set(wd->img, wd->o_thumb);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_widget_preview_edje_set(Evas_Object *obj, char *file, char *group)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
int ret;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
if (wd->o_thumb) evas_object_del(wd->o_thumb);
|
||||
wd->o_thumb = edje_object_add(e_livethumb_evas_get(wd->img));
|
||||
ret = edje_object_file_set(wd->o_thumb, file, group);
|
||||
evas_object_show(wd->o_thumb);
|
||||
e_livethumb_thumb_set(wd->img, wd->o_thumb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_e_wid_del_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
free(wd);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_WIDGET_PREVIEW_H
|
||||
#define E_WIDGET_PREVIEW_H
|
||||
|
||||
EAPI Evas_Object *e_widget_preview_add(Evas *evas, int minw, int minh);
|
||||
EAPI int e_widget_preview_file_set(Evas_Object *obj, char *file, char *key);
|
||||
EAPI int e_widget_preview_edje_set(Evas_Object *obj, char *file, char *group);
|
||||
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in New Issue