Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_desklock.c e_grabinput.c e_grabinput.h 
        e_includes.h e_int_config_background.c e_int_config_desklock.c 
        e_int_config_theme.c e_widget_image.c 
Added Files:
        e_widget_preview.c e_widget_preview.h 


Log Message:


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
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -3 -r1.112 -r1.113
--- Makefile.am 27 Feb 2006 15:18:10 -0000      1.112
+++ Makefile.am 4 Mar 2006 04:11:51 -0000       1.113
@@ -146,7 +146,8 @@
 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_stolen.c \
 e_gadcon.c \
 e_shelf.c \
+e_widget_preview.c \
 $(ENLIGHTENMENTHEADERS)
 
 enlightenment_SOURCES = \
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desklock.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_desklock.c        3 Mar 2006 06:00:17 -0000       1.7
+++ e_desklock.c        4 Mar 2006 04:11:51 -0000       1.8
@@ -19,6 +19,7 @@
    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 @@
        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 @@
             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 @@
                                                  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_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;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_grabinput.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_grabinput.c       7 Jan 2006 10:39:45 -0000       1.4
+++ e_grabinput.c       4 Mar 2006 04:11:51 -0000       1.5
@@ -26,7 +26,7 @@
    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 @@
      }
    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;
      }
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_grabinput.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_grabinput.h       24 Sep 2005 09:04:39 -0000      1.3
+++ e_grabinput.h       4 Mar 2006 04:11:51 -0000       1.4
@@ -17,7 +17,7 @@
 
 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);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -3 -r1.94 -r1.95
--- e_includes.h        2 Mar 2006 12:03:48 -0000       1.94
+++ e_includes.h        4 Mar 2006 04:11:51 -0000       1.95
@@ -127,3 +127,4 @@
 #include "e_gadcon.h"
 #include "e_shelf.h"
 #include "e_tlist.h"
+#include "e_widget_preview.h"
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_background.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -3 -r1.39 -r1.40
--- e_int_config_background.c   15 Feb 2006 20:30:59 -0000      1.39
+++ e_int_config_background.c   4 Mar 2006 04:11:51 -0000       1.40
@@ -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 @@
    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 @@
    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 @@
    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 @@
                  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 @@
    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)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_desklock.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_int_config_desklock.c     3 Mar 2006 06:36:11 -0000       1.6
+++ e_int_config_desklock.c     4 Mar 2006 04:11:51 -0000       1.7
@@ -341,11 +341,8 @@
     /* 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 @@
 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 @@
   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 @@
 
   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 @@
   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 @@
              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 @@
 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
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_theme.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- e_int_config_theme.c        15 Feb 2006 20:30:59 -0000      1.16
+++ e_int_config_theme.c        4 Mar 2006 04:11:51 -0000       1.17
@@ -103,7 +103,8 @@
    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 @@
                       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 @@
    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;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_image.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_widget_image.c    13 Jan 2006 02:11:11 -0000      1.7
+++ e_widget_image.c    4 Mar 2006 04:11:51 -0000       1.8
@@ -9,6 +9,8 @@
    Evas_Object *img;
 };
 
+static void _e_wid_del_hook(Evas_Object *obj);
+
 /* local subsystem functions */
 
 /* externally accessible functions */
@@ -19,6 +21,7 @@
    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 @@
    
    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_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);
+}




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to