Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_error.c 


Log Message:
Edjeify errordialog.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_error.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_error.c   16 Feb 2005 11:25:30 -0000      1.5
+++ e_error.c   7 Mar 2005 12:23:26 -0000       1.6
@@ -14,6 +14,7 @@
 
 static void _e_error_cb_ok_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _e_error_cb_ok_up(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+static void _e_error_edje_cb_ok_up(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_error_cb_job_ecore_evas_free(void *data);
     
 /* local subsystem globals */
@@ -52,11 +53,12 @@
 void
 e_error_message_manager_show(E_Manager *man, char *title, char *txt)
 {
-   Ecore_Evas *ee;
-   Evas *e;
-   int error_w, error_h;
-   Evas_List *l, *shapelist = NULL;
-   Evas_Coord maxw, maxh;
+   Ecore_Evas  *ee;
+   Evas        *e;
+   Evas_Object *o;
+   int          error_w, error_h;
+   Evas_List   *l, *shapelist = NULL;
+   Evas_Coord   maxw, maxh;
    
    error_w = 400;
    error_h = 200;
@@ -72,11 +74,19 @@
    e_path_evas_append(path_fonts, e);
    e_pointer_ecore_evas_set(ee);
    
+   o = edje_object_add(e);
+   if (!edje_object_file_set(o,
+                            /* FIXME: "default.eet" needs to come from conf */
+                            e_path_find(path_themes, "default.eet"),
+                            "error/main"))
+
      {
-       Evas_Object *o;
        Evas_Coord tw, th;
        char *newstr;
        
+       if (o)
+         evas_object_del(o);
+
        maxw = 0;
        maxh = 0;
        
@@ -118,12 +128,12 @@
          {
             char *p;
             Evas_Coord y;
-            
+
             y = 16 + 64 + 16;
             for (p = newstr; p;)
               {
                  char *pp;
-                 
+
                  pp = strchr(p, '\n');
                  if (pp) *pp = 0;
                  o = evas_object_text_add(e);
@@ -134,7 +144,7 @@
                  evas_object_move(o, 16 + 1, y + 1);
                  evas_object_pass_events_set(o, 1);
                  evas_object_show(o);
-                 
+
                  o = evas_object_text_add(e);
                  evas_object_color_set(o, 0, 0, 0, 255);
                  evas_object_text_font_set(o, "Vera", 10);
@@ -143,7 +153,7 @@
                  evas_object_move(o, 16, y);
                  evas_object_pass_events_set(o, 1);
                  evas_object_show(o);
-                 
+
                  if ((16 + tw + 16) > maxw) maxw = 16 + tw + 16;
                  y += th;
                  if (pp) p = pp + 1;
@@ -152,11 +162,11 @@
             free(newstr);
             maxh = y;
          }
-       
+
        maxh += 16 + 32 + 16;
        error_w = maxw;
        error_h = maxh;
-       
+
        if (error_w > man->w) error_w = man->w;
        if (error_h > man->h) error_h = man->h;
        
@@ -218,6 +228,77 @@
        o = evas_object_rectangle_add(e);
        evas_object_name_set(o, "allocated");
      }
+   else
+     {
+       char format[1024];
+       Evas_Object *text;
+       int x, y, w, h, nw, nh;
+
+       evas_object_move(o, 0, 0);
+       evas_object_resize(o, error_w, error_h);
+       edje_object_signal_callback_add(o, "close", "",
+                                       _e_error_edje_cb_ok_up, ee);
+       evas_object_show(o);
+
+       edje_object_part_text_set(o, "title", title);
+
+       snprintf(format, sizeof(format), "source='%s' font='%s' size=%d 
wrap=word",
+                                        e_path_find(path_themes, 
"default.eet"),
+                                        "fonts/Edje Vera", 10);
+       text = evas_object_textblock_add(e);
+       evas_object_color_set(text, 0, 0, 0, 255);
+       evas_object_textblock_format_insert(text, format);
+         {
+            char *pp, *newstr, *p;
+            newstr = strdup(txt);
+            p = newstr;
+            while (p)
+              {
+                 pp = strchr(p, '\n');
+                 if (pp) *pp = 0;
+                 evas_object_textblock_text_insert(text, p);
+                 if (pp)
+                   {
+                      p = pp + 1;
+                      evas_object_textblock_format_insert(text, "\n");
+                   }
+                 else
+                   p = NULL;
+              }
+            free(newstr);
+         }
+       edje_object_part_swallow(o, "text", text);
+       evas_object_show(text);
+
+       edje_object_part_geometry_get(o, "text", &x, &y, &w, &h);
+       evas_object_textblock_format_size_get(text, &nw, &nh);
+       /* FIXME: How to handle the width of the text? */
+       error_h += (nh - h);
+
+       evas_object_move(o, 0, 0);
+       evas_object_resize(o, error_w, error_h);
+       evas_object_show(o);
+
+       ecore_evas_move(ee, (man->w - error_w) / 2, (man->h - error_h) / 2);
+       ecore_evas_resize(ee, error_w, error_h);
+       
+       for (l = man->containers; l; l = l->next)
+         {
+            E_Container *con;
+            E_Container_Shape *es;
+            
+            con = l->data;
+            es = e_container_shape_add(con);
+            e_container_shape_move(es, (man->w - error_w) / 2, (man->h - 
error_h) / 2);
+            e_container_shape_resize(es, error_w, error_h);
+            e_container_shape_show(es);
+            shapelist = evas_list_append(shapelist, es);
+         }
+       ecore_evas_data_set(ee, "shapes", shapelist);
+       
+       o = evas_object_rectangle_add(e);
+       evas_object_name_set(o, "allocated");
+     }
    ecore_evas_show(ee);
 }
 
@@ -260,6 +341,21 @@
 }
 
 static void
+_e_error_edje_cb_ok_up(void *data, Evas_Object *obj, const char *emission, 
const char *source)
+{
+   Ecore_Evas *ee;
+   Evas_Object *o;
+   
+   ee = data;
+   o = evas_object_name_find(ecore_evas_get(ee), "allocated");
+   if (o)
+     {
+       evas_object_del(o);
+       ecore_job_add(_e_error_cb_job_ecore_evas_free, ee);
+     }
+}
+
+static void
 _e_error_cb_job_ecore_evas_free(void *data)
 {
    Ecore_Evas *ee;




-------------------------------------------------------
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