Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e_utils

Dir     : e17/apps/e_utils/src/bin/emblem


Modified Files:
        emblem_ui.c 


Log Message:
- this works, but there is a stange ghosting on resize of the main preview
  window.

- we dont' change the menu list when setting the preview anymore.
- cut out a lot of code now that we're using the buffer stuff, so we don't
  need the event tracking rects.
- don't change the actual current object on menu selection also kills a lot
  of code.

mmmm, simplification, mmm


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/emblem/emblem_ui.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- emblem_ui.c 9 Feb 2005 17:03:25 -0000       1.4
+++ emblem_ui.c 10 Feb 2005 06:52:39 -0000      1.5
@@ -31,7 +31,10 @@
 #define SCREEN_H 1200
 
 static int emblem_load_bgs(Emblem *em);
-static Evas_Object *emblem_evas_object_get(Emblem *em, const char *fname);
+static Evas_Object *emblem_evas_object_get(Emblem *em, const char *fname,
+                                                Evas_Coord w, Evas_Coord h);
+static int emblem_ui_e_bg_get(void *data, int type, void *ev);
+static void emblem_current_bg_set(Emblem *em, char *file);
 
 static void emblem_ui_init_job_cb(void *data);
 static void emblem_ui_resize_cb(Ecore_Evas *ee);
@@ -69,10 +72,10 @@
 emblem_ui_init(Emblem *em)
 {
     Ecore_Evas *ee;
-    Evas *evas;
     Evas_Object *o;
+    Evas_Coord w, h;
+    Evas *evas;
     double l;
-    Evas_Coord w;
 
     ee = ecore_evas_software_x11_new(em->display, 0, 0, 0, WIDTH, HEIGHT);
     ecore_evas_title_set(ee, PACKAGE);
@@ -105,6 +108,11 @@
     edje_object_part_swallow(em->gui.edje, "menu_bar", o);
     evas_object_show(o);
     em->gui.menu = o;
+    em->gui.current = NULL;
+
+    ecore_event_handler_add(E_RESPONSE_BACKGROUND_GET, 
+                                emblem_ui_e_bg_get, em);
+    e_background_get();
 
     ecore_job_add(emblem_ui_init_job_cb, em);
 
@@ -121,18 +129,27 @@
 {
     Emblem *em;
     Evas_Coord w, h;
+    Evas_Object *o;
     double l;
     const char *state;
+    char *file;
 
     em = ecore_evas_data_get(ee, "emblem");
 
     ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
     evas_object_resize(em->gui.edje, w, h);
 
-    edje_object_part_geometry_get(em->gui.edje, "current", NULL, NULL, &w, &h);
-    evas_object_resize(em->gui.current, w, h);
+    edje_object_part_geometry_get(em->gui.edje, "current", 
+                                            NULL, NULL, &w, &h);
+
+    evas_object_image_size_set(em->gui.current, w, h);
     evas_object_image_fill_set(em->gui.current, 0, 0, w, h);
 
+    o = evas_object_data_get(em->gui.current, "screen_buffer");
+    evas_object_resize(o, w, h);
+    evas_object_image_fill_set(o, 0, 0, w, h);
+    evas_object_resize(em->gui.current, w, h);
+
     edje_object_part_geometry_get(em->gui.edje, "menu_bar", NULL, NULL, &w, 
NULL);
     l = esmart_container_elements_length_get(em->gui.menu);
     state = edje_object_part_state_get(em->gui.edje, "left_arrow", NULL);
@@ -210,10 +227,6 @@
     dir = opendir(path);
     if (!dir) return 0;
 
-    /* get these from the system */
-    w = SCREEN_W;
-    h = SCREEN_H;
-
     while ((entry = readdir(dir)))
     {
         Evas_Object *o;
@@ -225,53 +238,39 @@
         snprintf(path, PATH_MAX, "%s/.e/e/backgrounds/%s", 
                                 getenv("HOME"), entry->d_name);
 
-        o = emblem_evas_object_get(em, path);
-        if (em->gui.current == NULL)
-        {
-            em->gui.current = o;
-
-            edje_object_part_geometry_get(em->gui.edje, "current", NULL, NULL, 
&w, &h);
-
-            edje_object_part_swallow(em->gui.edje, "current", o);
-
-            ev = evas_object_data_get(o, "ev");
-            evas_object_event_callback_add(ev, EVAS_CALLBACK_MOUSE_DOWN,
-                                                emblem_current_sel_cb, em);
-            continue;
-        }
+        o = emblem_evas_object_get(em, path, THUMB_W, THUMB_H);
         edje_object_part_geometry_get(em->gui.edje, "menu_bar", NULL, NULL, 
NULL, &h);
         evas_object_resize(o, 64, 48);
+        
+        evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
+                                        emblem_menu_sel_cb, em);
 
-        ev = evas_object_data_get(o, "ev");
-        evas_object_event_callback_add(ev, EVAS_CALLBACK_MOUSE_DOWN,
-                                            emblem_menu_sel_cb, em);
         esmart_container_element_append(em->gui.menu, o);
     }
     return 1;
 }
 
 static Evas_Object *
-emblem_evas_object_get(Emblem *em, const char *fname)
-
+emblem_evas_object_get(Emblem *em, const char *fname,
+                            Evas_Coord w, Evas_Coord h)
 {
     Evas_Object *o, *o2, *ob, *ev;
     Ecore_Evas *ee2;
     Evas *evas2;
 
-    ob = o2 = ecore_evas_object_image_new(em->gui.ee);
-    ee2 = evas_object_data_get(o2, "Ecore_Evas");
-    evas2 = ecore_evas_get(ee2);
-    evas_object_image_size_set(o2, THUMB_W, THUMB_H); /* thumb res */
-    evas_object_image_fill_set(o2, 0, 0, THUMB_W, THUMB_H);
-    evas_object_show(o2);
+    ob = ecore_evas_object_image_new(em->gui.ee);
+    ee2 = evas_object_data_get(ob, "Ecore_Evas");
+    evas_object_image_size_set(ob, w, h);
+    evas_object_image_fill_set(ob, 0, 0, w, h);
+    evas_object_show(ob);
 
     o2 = ecore_evas_object_image_new(ee2);
     ee2 = evas_object_data_get(o2, "Ecore_Evas");
     evas2 = ecore_evas_get(ee2);
-    evas_object_image_size_set(o2, SCREEN_W, SCREEN_H); /* screen res */
+    evas_object_image_size_set(o2, SCREEN_W, SCREEN_H);
     evas_object_move(o2, 0, 0);
-    evas_object_resize(o2, THUMB_W, THUMB_H);
-    evas_object_image_fill_set(o2, 0, 0, THUMB_W, THUMB_H);
+    evas_object_resize(o2, w, h);
+    evas_object_image_fill_set(o2, 0, 0, w, h);
     evas_object_show(o2);
 
     o = edje_object_add(evas2);
@@ -286,56 +285,58 @@
     }
     evas_object_show(o);
 
-    ev = evas_object_rectangle_add(em->gui.evas);
-    evas_object_color_set(ev, 0, 0, 0, 0);
-    evas_object_show(ev);
-
-    evas_object_data_set(ob, "ev", ev);
+    evas_object_data_set(ob, "screen_buffer", o2);
     evas_object_data_set(ob, "file", strdup(fname));
-    evas_object_data_set(ev, "edje", ob);
-
-    evas_object_intercept_move_callback_add(ob, 
-                                emblem_intercept_move_cb, NULL);
-    evas_object_intercept_resize_callback_add(ob, 
-                                emblem_intercept_resize_cb, NULL);
-    evas_object_intercept_raise_callback_add(ob, 
-                                emblem_intercept_raise_cb, NULL);
-    evas_object_intercept_lower_callback_add(ob, 
-                                emblem_intercept_lower_cb, NULL);
-    evas_object_intercept_layer_set_callback_add(ob, 
-                                emblem_intercept_layer_set_cb, NULL);
-    evas_object_intercept_stack_above_callback_add(ob, 
-                                emblem_intercept_stack_above_cb, NULL);
-    evas_object_intercept_stack_below_callback_add(ob, 
-                                emblem_intercept_stack_below_cb, NULL);
-    evas_object_intercept_show_callback_add(ob, emblem_intercept_show_cb, 
NULL);
-    evas_object_intercept_hide_callback_add(ob, emblem_intercept_hide_cb, 
NULL);
 
     return ob;
 }
 
 static void
-emblem_current_sel_cb(void *data, Evas *evas, Evas_Object *obj, void *ev)
+emblem_current_bg_set(Emblem *em, char *file) 
+{
+    Evas_Coord w, h;
+
+    if (em->gui.current)
+    {
+        edje_object_part_unswallow(em->gui.edje, em->gui.current);
+        evas_object_hide(em->gui.current);
+        evas_object_del(em->gui.current);
+    }
+
+    edje_object_part_geometry_get(em->gui.edje, "current", 
+                                            NULL, NULL, &w, &h);
+
+    em->gui.current = emblem_evas_object_get(em, file, w, h);
+    evas_object_resize(em->gui.current, w, h);
+    edje_object_part_swallow(em->gui.edje, "current", em->gui.current);
+
+    evas_object_event_callback_add(em->gui.current, EVAS_CALLBACK_MOUSE_DOWN,
+                                                emblem_current_sel_cb, NULL);
+
+    evas_object_data_set(em->gui.current, "file", file);
+}
+
+static int
+emblem_ui_e_bg_get(void *data, int type, void *ev)
 {
     Emblem *em;
-    char *name; 
-    Evas_Event_Mouse_Down *e;
-    Evas_Coord x, y, w, h;
-    Evas_Object *o;
+    E_Response_Background_Get *e;
 
     e = ev;
     em = data;
+    emblem_current_bg_set(em, e->data);
 
-    /* make sure the click was actually inside the current. When we change
-     * the callbacks in the menu_sel_cb this cb will be called. so we need
-     * to verify they actually selected the item to be set as the bg)
-     */
-    edje_object_part_geometry_get(em->gui.edje, "current", &x, &y, &w, &h);
-    if ((e->canvas.x < x) || (e->canvas.y < y) 
-            || (e->canvas.x > (x + w)) || (e->canvas.y > (y + h)))
-        return;
+    return 1;
+    data = NULL;
+    type = 0;
+}
 
-    name = evas_object_data_get(em->gui.current, "file");
+static void
+emblem_current_sel_cb(void *data, Evas *evas, Evas_Object *obj, void *ev)
+{
+    char *name; 
+
+    name = evas_object_data_get(obj, "file");
     e_background_set(name);
 
     return;
@@ -347,40 +348,11 @@
 emblem_menu_sel_cb(void *data, Evas *evas, Evas_Object *obj, void *ev)
 {
     Emblem *em;
-    char *name, *cur_name;
-    Evas_Coord w, h;
-    Evas_Object *o, *cur_ev, *sel_obj;
+    char *name;
 
     em = data;
-
-    cur_ev = evas_object_data_get(em->gui.current, "ev");
-    sel_obj = evas_object_data_get(obj, "edje");
-
-    evas_object_event_callback_del(cur_ev, EVAS_CALLBACK_MOUSE_DOWN,
-                                            emblem_current_sel_cb);
-    evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_DOWN,
-                                            emblem_menu_sel_cb);
-
-    edje_object_part_unswallow(em->gui.edje, em->gui.current);
-    esmart_container_element_remove(em->gui.menu, sel_obj);
-
-    o = em->gui.current;
-    em->gui.current = sel_obj;
-
-    edje_object_part_geometry_get(em->gui.edje, "current", NULL, NULL, &w, &h);
-    evas_object_resize(em->gui.current, w, h);
-    evas_object_image_fill_set(em->gui.current, 0, 0, w, h);
-
-    evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
-                                            emblem_current_sel_cb, em);
-    edje_object_part_swallow(em->gui.edje, "current", em->gui.current);
-
-    edje_object_part_geometry_get(em->gui.edje, "menu_bar", NULL, NULL, NULL, 
&h);
-    evas_object_resize(o, 64, 48);
-    evas_object_event_callback_add(cur_ev, EVAS_CALLBACK_MOUSE_DOWN,
-                                            emblem_menu_sel_cb, em);
-
-    esmart_container_element_append(em->gui.menu, o);
+    name = evas_object_data_get(obj, "file");
+    emblem_current_bg_set(em, name);
 
     return;
     data = NULL;
@@ -451,102 +423,4 @@
     src = NULL;
 }
 
-static void
-emblem_intercept_show_cb(void *data, Evas_Object *obj)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_show(ev);
-    evas_object_show(obj);
-}
-
-static void
-emblem_intercept_hide_cb(void *data, Evas_Object *obj)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_hide(ev);
-    evas_object_hide(obj);
-}
-
-static void
-emblem_intercept_move_cb(void *data, Evas_Object *obj,
-        Evas_Coord x, Evas_Coord y)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_move(ev, x, y);
-    evas_object_move(obj, x, y);
-}
-
-static void
-emblem_intercept_resize_cb(void *data, Evas_Object *obj,
-        Evas_Coord w, Evas_Coord h)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_resize(ev, w, h);
-    evas_object_resize(obj, w, h);
-    evas_object_image_fill_set(obj, 0, 0, w, h);
-}
-
-static void
-emblem_intercept_raise_cb(void *data, Evas_Object *obj)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_raise(obj);
-    evas_object_raise(ev);
-}
-
-static void
-emblem_intercept_lower_cb(void *data, Evas_Object *obj)
-{
-    Evas_Object *ev;
-
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_lower(obj);
-    evas_object_lower(ev);
-}
-
-static void
-emblem_intercept_stack_above_cb(void *data, Evas_Object *obj,
-        Evas_Object *above)
-{
-    Evas_Object *ev;
-
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_stack_above(obj, above);
-    evas_object_stack_above(ev, obj);
-}
-
-static void
-emblem_intercept_stack_below_cb(void *data, Evas_Object *obj,
-        Evas_Object *below)
-{
-    Evas_Object *ev;
-
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_stack_below(obj, below);
-    evas_object_stack_below(ev, below);
-}
-
-static void
-emblem_intercept_layer_set_cb(void *data, Evas_Object *obj, int l)
-{
-    Evas_Object *ev;
-
-    ev = evas_object_data_get(obj, "ev");
-    evas_object_layer_set(obj, l);
-    evas_object_layer_set(ev, l);
-}
-
 




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to