From f93abeb98d74b5dea266347e668aa6f88e96d83b Mon Sep 17 00:00:00 2001
From: David Walter Seikel
Date: Sun, 4 May 2014 22:35:22 +1000
Subject: Combine eo_add() and eo_do(), plus related cleanups.

---
 src/extantz/Evas_3D_demo.c | 237 +++++++++++++++++++++------------------------
 src/extantz/chat.c         |   8 +-
 src/extantz/extantz.c      |  11 +--
 src/extantz/files.c        |  45 ++++-----
 src/extantz/woMan.c        |   5 +-
 5 files changed, 137 insertions(+), 169 deletions(-)

diff --git a/src/extantz/Evas_3D_demo.c b/src/extantz/Evas_3D_demo.c
index 95b2f2f..f9a5c27 100644
--- a/src/extantz/Evas_3D_demo.c
+++ b/src/extantz/Evas_3D_demo.c
@@ -333,27 +333,24 @@ Eina_Bool _animate_scene(globals *ourGlobals)
 static void
 _camera_setup(globals *ourGlobals, Scene_Data *scene)
 {
-  scene->camera = eo_add(EVAS_3D_CAMERA_CLASS, ourGlobals->evas);
-  eo_do(scene->camera,
+  scene->camera = eo_add(EVAS_3D_CAMERA_CLASS, ourGlobals->evas,
     evas_3d_camera_projection_perspective_set(60.0, 1.0, 1.0, 500.0)
     );
 
   scene->camera_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_CAMERA);
   eo_do(scene->camera_node,
-    evas_3d_node_camera_set(scene->camera)
-    );
-  eo_do(scene->root_node, evas_3d_node_member_add(scene->camera_node));
-  eo_do(scene->camera_node,
+    evas_3d_node_camera_set(scene->camera),
     evas_3d_node_position_set(50.0, 0.0, 20.0),
     evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 20.0, EVAS_3D_SPACE_PARENT, 0.0, 0.0, 1.0)
     );
+
+  eo_do(scene->root_node, evas_3d_node_member_add(scene->camera_node));
 }
 
 static void
 _light_setup(globals *ourGlobals, Scene_Data *scene)
 {
-  scene->light = eo_add(EVAS_3D_LIGHT_CLASS, ourGlobals->evas);
-  eo_do(scene->light,
+  scene->light = eo_add(EVAS_3D_LIGHT_CLASS, ourGlobals->evas,
     evas_3d_light_ambient_set(1.0, 1.0, 1.0, 1.0),
     evas_3d_light_diffuse_set(1.0, 1.0, 1.0, 1.0),
     evas_3d_light_specular_set(1.0, 1.0, 1.0, 1.0),
@@ -362,15 +359,13 @@ _light_setup(globals *ourGlobals, Scene_Data *scene)
 
   scene->light_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_LIGHT);
   eo_do(scene->light_node,
-    evas_3d_node_light_set(scene->light)
-    );
-  eo_do(scene->root_node,
-    evas_3d_node_member_add(scene->light_node)
-    );
-  eo_do(scene->light_node,
+    evas_3d_node_light_set(scene->light),
     evas_3d_node_position_set(1000.0, 0.0, 1000.0),
     evas_3d_node_look_at_set(EVAS_3D_SPACE_PARENT, 0.0, 0.0, 0.0, EVAS_3D_SPACE_PARENT, 0.0, 1.0, 0.0)
     );
+
+  eo_do(scene->root_node, evas_3d_node_member_add(scene->light_node));
+
 }
 
 static void _cube_setup(globals *ourGlobals, Scene_Data *scene)
@@ -378,10 +373,20 @@ static void _cube_setup(globals *ourGlobals, Scene_Data *scene)
   char buf[PATH_MAX];
 
   // Setup cube materials.
-  scene->material0 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas);
-  scene->material1 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas);
+  scene->texture0 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas,
+    evas_3d_texture_data_set(EVAS_3D_COLOR_FORMAT_RGBA, EVAS_3D_PIXEL_FORMAT_8888, 4, 4, &pixels0[0])
+    );
+
+  scene->texture1 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas,
+    evas_3d_texture_data_set(EVAS_3D_COLOR_FORMAT_RGBA, EVAS_3D_PIXEL_FORMAT_8888, 4, 4, &pixels1[0])
+    );
+
+  snprintf(buf, sizeof(buf), "%s/normal_lego.png", elm_app_data_dir_get());
+  scene->texture_normal = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas,
+    evas_3d_texture_file_set(buf, NULL)
+    );
 
-  eo_do(scene->material0,
+  scene->material0 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas,
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
@@ -390,10 +395,11 @@ static void _cube_setup(globals *ourGlobals, Scene_Data *scene)
     evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
     evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
     evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
-    evas_3d_material_shininess_set(100.0)
-    );
+    evas_3d_material_shininess_set(100.0),
+    evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture0)
+  );
 
-  eo_do(scene->material1,
+  scene->material1 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas,
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
@@ -402,29 +408,14 @@ static void _cube_setup(globals *ourGlobals, Scene_Data *scene)
     evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.2, 0.2, 0.2, 1.0),
     evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 0.8, 0.8, 0.8, 1.0),
     evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
-    evas_3d_material_shininess_set(100.0)
-    );
+    evas_3d_material_shininess_set(100.0),
 
-  scene->texture0 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas);
-  scene->texture1 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas);
-  scene->texture_normal = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas);
-
-  eo_do(scene->texture0,
-    evas_3d_texture_data_set(EVAS_3D_COLOR_FORMAT_RGBA, EVAS_3D_PIXEL_FORMAT_8888, 4, 4, &pixels0[0])
+    evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture1),
+    evas_3d_material_texture_set(EVAS_3D_MATERIAL_NORMAL, scene->texture_normal)
     );
-  eo_do(scene->texture1,
-    evas_3d_texture_data_set(EVAS_3D_COLOR_FORMAT_RGBA, EVAS_3D_PIXEL_FORMAT_8888, 4, 4, &pixels1[0])
-    );
-  snprintf(buf, sizeof(buf), "%s/normal_lego.png", elm_app_data_dir_get());
-  eo_do(scene->texture_normal, evas_3d_texture_file_set(buf, NULL));
-
-  eo_do(scene->material0, evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture0));
-  eo_do(scene->material1, evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture1));
-  eo_do(scene->material1, evas_3d_material_texture_set(EVAS_3D_MATERIAL_NORMAL, scene->texture_normal));
 
   // Setup CUBE mesh.
-  scene->mesh = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas);
-  eo_do(scene->mesh,
+  scene->mesh = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas,
     evas_3d_mesh_vertex_count_set(24),
     evas_3d_mesh_frame_add(0),
 
@@ -443,13 +434,15 @@ static void _cube_setup(globals *ourGlobals, Scene_Data *scene)
     evas_3d_mesh_frame_add(20),
     evas_3d_mesh_frame_material_set(20, scene->material1)
     );
+
   scene->mesh_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_MESH);
-  eo_do(scene->root_node, evas_3d_node_member_add(scene->mesh_node));
   eo_do(scene->mesh_node,
     eo_key_data_set("Name", "cube", NULL),
     evas_3d_node_position_set(40.0, 3.5, 23.0),
     evas_3d_node_mesh_add(scene->mesh)
     );
+
+  eo_do(scene->root_node, evas_3d_node_member_add(scene->mesh_node));
 }
 
 static void _sonic_setup(globals *ourGlobals, Scene_Data *scene)
@@ -457,26 +450,14 @@ static void _sonic_setup(globals *ourGlobals, Scene_Data *scene)
   char buf[PATH_MAX];
 
   // Setup an MD2 mesh.
-  scene->mesh2 = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas);
-  snprintf(buf, sizeof(buf), "%s/sonic.md2", elm_app_data_dir_get());
-  eo_do(scene->mesh2,
-    evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, buf, NULL)
-    );
-
-  scene->material2 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas);
-  eo_do(scene->mesh2,
-    evas_3d_mesh_frame_material_set(0, scene->material2)
-    );
-
-  scene->texture2 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas);
   snprintf(buf, sizeof(buf), "%s/sonic.png", elm_app_data_dir_get());
-  eo_do(scene->texture2,
+  scene->texture2 = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas,
     evas_3d_texture_file_set(buf, NULL),
     evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_NEAREST, EVAS_3D_TEXTURE_FILTER_NEAREST),
     evas_3d_texture_wrap_set(EVAS_3D_WRAP_MODE_REPEAT, EVAS_3D_WRAP_MODE_REPEAT)
     );
 
-  eo_do(scene->material2,
+  scene->material2 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas,
     evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture2),
 
     evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
@@ -490,18 +471,20 @@ static void _sonic_setup(globals *ourGlobals, Scene_Data *scene)
     evas_3d_material_shininess_set(50.0)
   );
 
-  scene->mesh2_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_MESH);
-  eo_do(scene->root_node,
-    evas_3d_node_member_add(scene->mesh2_node)
+  snprintf(buf, sizeof(buf), "%s/sonic.md2", elm_app_data_dir_get());
+  scene->mesh2 = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas,
+    evas_3d_mesh_file_set(EVAS_3D_MESH_FILE_TYPE_MD2, buf, NULL),
+    evas_3d_mesh_frame_material_set(0, scene->material2),
+    evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)
     );
+
+  scene->mesh2_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_MESH);
   eo_do(scene->mesh2_node,
     eo_key_data_set("Name", "sonic", NULL),
     evas_3d_node_mesh_add(scene->mesh2)
     );
 
-  eo_do(scene->mesh2,
-    evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_PHONG)
-    );
+  eo_do(scene->root_node, evas_3d_node_member_add(scene->mesh2_node));
 }
 
 static void _earth_setup(globals *ourGlobals, Scene_Data *scene)
@@ -509,81 +492,76 @@ static void _earth_setup(globals *ourGlobals, Scene_Data *scene)
   char buf[PATH_MAX];
 
   // Setup earth material.
-   scene->material3 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas);
-
-   scene->texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas);
   snprintf(buf, sizeof(buf), "%s/EarthDiffuse.png", elm_app_data_dir_get());
-   eo_do(scene->texture_diffuse,
-         evas_3d_texture_file_set(buf, NULL),
-         evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR, EVAS_3D_TEXTURE_FILTER_LINEAR));
-   eo_do(scene->material3,
-         evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture_diffuse),
+  scene->texture_diffuse = eo_add(EVAS_3D_TEXTURE_CLASS, ourGlobals->evas,
+    evas_3d_texture_file_set(buf, NULL),
+    evas_3d_texture_filter_set(EVAS_3D_TEXTURE_FILTER_LINEAR, EVAS_3D_TEXTURE_FILTER_LINEAR)
+  );
 
-         evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
-         evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
-         evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
+  scene->material3 = eo_add(EVAS_3D_MATERIAL_CLASS, ourGlobals->evas,
+    evas_3d_material_texture_set(EVAS_3D_MATERIAL_DIFFUSE, scene->texture_diffuse),
 
-         evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.01, 0.01, 0.01, 1.0),
-         evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
-         evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
-         evas_3d_material_shininess_set(50.0));
+    evas_3d_material_enable_set(EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE),
+    evas_3d_material_enable_set(EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE),
+    evas_3d_material_enable_set(EVAS_3D_MATERIAL_SPECULAR, EINA_TRUE),
+
+    evas_3d_material_color_set(EVAS_3D_MATERIAL_AMBIENT, 0.01, 0.01, 0.01, 1.0),
+    evas_3d_material_color_set(EVAS_3D_MATERIAL_DIFFUSE, 1.0, 1.0, 1.0, 1.0),
+    evas_3d_material_color_set(EVAS_3D_MATERIAL_SPECULAR, 1.0, 1.0, 1.0, 1.0),
+    evas_3d_material_shininess_set(50.0)
+  );
 
   // Setup earth mesh.
    _sphere_init(100);
 
-   scene->mesh3 = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas);
-   eo_do(scene->mesh3,
-         evas_3d_mesh_vertex_count_set(vertex_count),
-         evas_3d_mesh_frame_add(0),
-         evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION, sizeof(vertex), &sphere_vertices[0].position),
-         evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,   sizeof(vertex), &sphere_vertices[0].normal),
-         evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TANGENT,  sizeof(vertex), &sphere_vertices[0].tangent),
-         evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,    sizeof(vertex), &sphere_vertices[0].color),
-         evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD, sizeof(vertex), &sphere_vertices[0].texcoord),
-
-         evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &sphere_indices[0]),
-         evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
-         evas_3d_mesh_frame_material_set(0, scene->material3)
-         );
+  scene->mesh3 = eo_add(EVAS_3D_MESH_CLASS, ourGlobals->evas,
+    evas_3d_mesh_vertex_count_set(vertex_count),
+    evas_3d_mesh_frame_add(0),
+    evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_POSITION, sizeof(vertex), &sphere_vertices[0].position),
+    evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_NORMAL,   sizeof(vertex), &sphere_vertices[0].normal),
+    evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TANGENT,  sizeof(vertex), &sphere_vertices[0].tangent),
+    evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_COLOR,    sizeof(vertex), &sphere_vertices[0].color),
+    evas_3d_mesh_frame_vertex_data_set(0, EVAS_3D_VERTEX_TEXCOORD, sizeof(vertex), &sphere_vertices[0].texcoord),
+
+    evas_3d_mesh_index_data_set(EVAS_3D_INDEX_FORMAT_UNSIGNED_SHORT, index_count, &sphere_indices[0]),
+    evas_3d_mesh_vertex_assembly_set(EVAS_3D_VERTEX_ASSEMBLY_TRIANGLES),
+    evas_3d_mesh_frame_material_set(0, scene->material3),
+
+    evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_DIFFUSE)
+  );
 
   scene->mesh3_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_MESH);
-  eo_do(scene->root_node,
-    evas_3d_node_member_add(scene->mesh3_node)
-    );
   eo_do(scene->mesh3_node,
     eo_key_data_set("Name", "earth", NULL),
     evas_3d_node_position_set(40.0, -3.5, 23.0),
     evas_3d_node_mesh_add(scene->mesh3)
-    );
+  );
 
-  eo_do(scene->mesh3,
-    evas_3d_mesh_shade_mode_set(EVAS_3D_SHADE_MODE_DIFFUSE)
-    );
+  eo_do(scene->root_node, evas_3d_node_member_add(scene->mesh3_node));
 }
 
 
 static void
 _scene_setup(globals *ourGlobals, Scene_Data *scene)
 {
-  scene->scene = eo_add(EVAS_3D_SCENE_CLASS, ourGlobals->evas);
-  eo_do(scene->scene,
-    evas_3d_scene_size_set(512, 512),
-    evas_3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0)
-    );
-
   // TODO - I have no idea how this should work.
   // It seems the people that wrote the examples don't know either.  lol
 //  scene->root_node = eo_add(EVAS_3D_NODE_CLASS, ourGlobals->evas, EVAS_3D_NODE_TYPE_NODE);
   scene->root_node = evas_3d_node_add(ourGlobals->evas, EVAS_3D_NODE_TYPE_NODE);
 
+  scene->scene = eo_add(EVAS_3D_SCENE_CLASS, ourGlobals->evas,
+    evas_3d_scene_root_node_set(scene->root_node),
+    evas_3d_scene_size_set(512, 512),
+    evas_3d_scene_background_color_set(0.0, 0.0, 0.0, 0.0)
+  );
+
   _camera_setup(ourGlobals, scene);
-  _light_setup(ourGlobals, scene);
-  _cube_setup(ourGlobals, scene);
-  _sonic_setup(ourGlobals, scene);
-  _earth_setup(ourGlobals, scene);
+  _light_setup(ourGlobals,  scene);
+  _cube_setup(ourGlobals,   scene);
+  _sonic_setup(ourGlobals,  scene);
+  _earth_setup(ourGlobals,  scene);
 
   eo_do(scene->scene,
-    evas_3d_scene_root_node_set(scene->root_node),
     evas_3d_scene_camera_node_set(scene->camera_node)
     );
 }
@@ -685,28 +663,29 @@ void Evas_3D_Demo_add(globals *ourGlobals)
   ourGlobals->scene = &ourScene;
   _scene_setup(ourGlobals, &ourScene);
 
-    // Add an image object for 3D scene rendering.
-    obj = eo_add(ELM_OBJ_IMAGE_CLASS, ourGlobals->win);
-    ourScene.image = obj;
-    eo_do(obj,
-	evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
-	elm_obj_image_fill_outside_set(EINA_TRUE),
-	evas_obj_visibility_set(EINA_TRUE),
-	temp = elm_obj_image_object_get()
-	);
-    eo_do(temp,
-	evas_obj_image_scene_set(ourScene.scene)
-	);
-    elm_object_tooltip_text_set(obj, "");
-    elm_object_tooltip_hide(obj);
-    // Elm can't seem to be able to tell us WHERE an image was clicked, so use raw Evas calbacks instead.
-    evas_object_event_callback_add(temp, EVAS_CALLBACK_MOUSE_MOVE, _on_mouse_move, &ourScene);
-    evas_object_event_callback_add(temp, EVAS_CALLBACK_MOUSE_DOWN, _on_mouse_down, &ourScene);
-    cameraAdd(ourGlobals, obj);
-    elm_win_resize_object_add(ourGlobals->win, obj);
-//    elm_box_pack_end(ourGlobals->gld.bx, obj);
-
-    ourGlobals->gld.move = calloc(1, sizeof(cameraMove));
+  // Add an image object for 3D scene rendering.
+  obj = eo_add(ELM_OBJ_IMAGE_CLASS, ourGlobals->win,
+    evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
+    elm_obj_image_fill_outside_set(EINA_TRUE),
+    evas_obj_visibility_set(EINA_TRUE),
+    temp = elm_obj_image_object_get()
+  );
+  ourScene.image = obj;
+
+  eo_do(temp,
+    evas_obj_image_scene_set(ourScene.scene)
+  );
+  elm_object_tooltip_text_set(obj, "");
+  elm_object_tooltip_hide(obj);
+  // Elm can't seem to be able to tell us WHERE an image was clicked, so use raw Evas calbacks instead.
+  evas_object_event_callback_add(temp, EVAS_CALLBACK_MOUSE_MOVE, _on_mouse_move, &ourScene);
+  evas_object_event_callback_add(temp, EVAS_CALLBACK_MOUSE_DOWN, _on_mouse_down, &ourScene);
+
+  cameraAdd(ourGlobals, obj);
+  elm_win_resize_object_add(ourGlobals->win, obj);
+//  elm_box_pack_end(ourGlobals->gld.bx, obj);
+
+  ourGlobals->gld.move = calloc(1, sizeof(cameraMove));
 }
 
 void Evas_3D_Demo_fini(globals *ourGlobals)
diff --git a/src/extantz/chat.c b/src/extantz/chat.c
index d71e8bb..d5e492e 100644
--- a/src/extantz/chat.c
+++ b/src/extantz/chat.c
@@ -18,22 +18,20 @@ fangWin *chat_add(globals *ourGlobals)
 
   me = fang_win_add(ourGlobals);
 
-  bx = eo_add(ELM_OBJ_BOX_CLASS, me->win);
-    eo_do(bx,
+  bx = eo_add(ELM_OBJ_BOX_CLASS, me->win,
     evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
     evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL)
        );
   elm_win_resize_object_add(me->win, bx);
 
-  en = eo_add(ELM_OBJ_ENTRY_CLASS, me->win);
-  elm_object_text_set(en, "History is shown here");
-  eo_do(en,
+  en = eo_add(ELM_OBJ_ENTRY_CLASS, me->win,
     elm_obj_entry_scrollable_set(EINA_TRUE),
     elm_obj_entry_editable_set(EINA_FALSE),
     evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
     evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL),
     evas_obj_visibility_set(EINA_TRUE)
        );
+  elm_object_text_set(en, "History is shown here");
   elm_box_pack_end(bx, en);
   eo_unref(en);
 
diff --git a/src/extantz/extantz.c b/src/extantz/extantz.c
index 4ef9ecc..ef493b8 100644
--- a/src/extantz/extantz.c
+++ b/src/extantz/extantz.c
@@ -279,9 +279,7 @@ static void makeMainMenu(globals *ourGlobals)
     Elm_Object_Item *tb_it;
 
     // A toolbar thingy.
-    tb = eo_add(ELM_OBJ_TOOLBAR_CLASS, ourGlobals->win);
-    ourGlobals->tb = tb;
-    eo_do(tb,
+    tb = eo_add(ELM_OBJ_TOOLBAR_CLASS, ourGlobals->win,
 	evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, 0.0),
 	evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL),
 	elm_obj_toolbar_shrink_mode_set(ELM_TOOLBAR_SHRINK_MENU),
@@ -289,6 +287,7 @@ static void makeMainMenu(globals *ourGlobals)
 	evas_obj_position_set(0, 0),
 	elm_obj_toolbar_align_set(0.0)
 	);
+    ourGlobals->tb = tb;
 
     // Menus.
     menu = _toolbar_menu_add(ourGlobals->win, tb, "file");
@@ -398,9 +397,8 @@ EAPI_MAIN int elm_main(int argc, char **argv)
     ourGlobals.win_h = ourGlobals.scr_h - 30;
 
     // Add a background image object.
-    obj = eo_add(ELM_OBJ_IMAGE_CLASS, ourGlobals.win);
     snprintf(buf, sizeof(buf), "%s/sky_03.jpg", elm_app_data_dir_get());
-    eo_do(obj,
+    obj = eo_add(ELM_OBJ_IMAGE_CLASS, ourGlobals.win,
 	evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
 	elm_obj_image_fill_outside_set(EINA_TRUE),
 	elm_obj_image_file_set(buf, NULL),
@@ -409,8 +407,7 @@ EAPI_MAIN int elm_main(int argc, char **argv)
     elm_win_resize_object_add(ourGlobals.win, obj);
     eo_unref(obj);
 
-    ourGlobals.bx = eo_add(ELM_OBJ_BOX_CLASS, ourGlobals.win);
-    eo_do(ourGlobals.bx,
+    ourGlobals.bx = eo_add(ELM_OBJ_BOX_CLASS, ourGlobals.win,
 	evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
 	evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL),
 	evas_obj_visibility_set(EINA_TRUE)
diff --git a/src/extantz/files.c b/src/extantz/files.c
index 024e2df..06cd257 100644
--- a/src/extantz/files.c
+++ b/src/extantz/files.c
@@ -148,8 +148,7 @@ fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool sa
 
   me = fang_win_add(ourGlobals);
 
-  bx = eo_add(ELM_OBJ_BOX_CLASS, me->win);
-  eo_do(bx,
+  bx = eo_add(ELM_OBJ_BOX_CLASS, me->win,
     elm_obj_box_homogeneous_set(EINA_FALSE),
     evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
     evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL)
@@ -189,16 +188,13 @@ fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool sa
   // Call back for double click or Enter pressed on file.
   evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me);
 
-  vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win);
-  eo_do(vbox,
+  vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win,
     elm_obj_box_homogeneous_set(EINA_FALSE),
     elm_obj_box_horizontal_set(EINA_TRUE),
     evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL)
   );
 
-  hoversel = eo_add(ELM_OBJ_HOVERSEL_CLASS, vbox);
-  elm_object_text_set(hoversel, "sorting");
-  eo_do(hoversel, 
+  hoversel = eo_add(ELM_OBJ_HOVERSEL_CLASS, vbox,
     elm_obj_hoversel_hover_parent_set(me->win),
     eo_key_data_set("fileselector", fs, NULL),
     elm_obj_hoversel_item_add("name(asc)",  NULL, ELM_ICON_NONE, _sort_selected_cb, (const void *) ELM_FILESELECTOR_SORT_BY_FILENAME_ASC),
@@ -211,12 +207,11 @@ fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool sa
     elm_obj_hoversel_item_add("time(desc)", NULL, ELM_ICON_NONE, _sort_selected_cb, (const void *) ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC),
     evas_obj_visibility_set(EINA_TRUE)
     );
+  elm_object_text_set(hoversel, "sorting");
   elm_box_pack_end(vbox, hoversel);
   eo_unref(hoversel);
 
-  hoversel = eo_add(ELM_OBJ_HOVERSEL_CLASS, vbox);
-  elm_object_text_set(hoversel, "size");
-  eo_do(hoversel, 
+  hoversel = eo_add(ELM_OBJ_HOVERSEL_CLASS, vbox,
     elm_obj_hoversel_hover_parent_set(me->win),
     eo_key_data_set("fileselector", fs, NULL),
     elm_obj_hoversel_item_add("tiny",   NULL, ELM_ICON_NONE, _tiny_icon_clicked,   fs),
@@ -225,57 +220,57 @@ fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool sa
     elm_obj_hoversel_item_add("big",    NULL, ELM_ICON_NONE, _big_icon_clicked,    fs),
     evas_obj_visibility_set(EINA_TRUE)
     );
+  elm_object_text_set(hoversel, "size");
   elm_box_pack_end(vbox, hoversel);
   // Make sure it starts off as small, works around "hitting grid mode before hitting size not showing anything" bug.
   _small_icon_clicked(fs, hoversel, NULL);
   eo_unref(hoversel);
 
 
-  bt = eo_add(ELM_OBJ_CHECK_CLASS, vbox);
-  elm_object_text_set(bt, "hidden");
-  eo_do(bt,
-   elm_obj_check_state_set(elm_fileselector_hidden_visible_get(fs)),
+  bt = eo_add(ELM_OBJ_CHECK_CLASS, vbox,
+    elm_obj_check_state_set(elm_fileselector_hidden_visible_get(fs)),
     evas_obj_visibility_set(EINA_TRUE)
     );
+  elm_object_text_set(bt, "hidden");
   evas_object_smart_callback_add(bt, "changed", _hidden_clicked, fs);
   elm_box_pack_end(vbox, bt);
   eo_unref(bt);
 
-  rdg = rd = eo_add(ELM_OBJ_RADIO_CLASS, vbox);
-  elm_object_text_set(rd, "grid");
-  eo_do(rd,
+  rdg = rd = eo_add(ELM_OBJ_RADIO_CLASS, vbox,
     elm_obj_radio_state_value_set(ELM_FILESELECTOR_GRID),
     evas_obj_visibility_set(EINA_TRUE)
     );
+  elm_object_text_set(rd, "grid");
   elm_box_pack_end(vbox, rd);
   evas_object_smart_callback_add(rd, "changed", _mode_changed_cb, fs);
   // Make it start in grid mode.  It defaults to list mode, so this swaps it over.
   _mode_changed_cb(fs, rd, NULL);
   eo_unref(rd);
 
-  rd = eo_add(ELM_OBJ_RADIO_CLASS, vbox);
-  elm_radio_group_add(rd, rdg);
-  elm_object_text_set(rd, "list");
-  eo_do(rd,
+  rd = eo_add(ELM_OBJ_RADIO_CLASS, vbox,
     elm_obj_radio_state_value_set(ELM_FILESELECTOR_LIST),
     evas_obj_visibility_set(EINA_TRUE)
     );
+  elm_radio_group_add(rd, rdg);
+  elm_object_text_set(rd, "list");
   elm_box_pack_end(vbox, rd);
   evas_object_smart_callback_add(rd, "changed", _mode_changed_cb, fs);
   eo_unref(rd);
   // No need to unref this, it's taken care of already.
   //eo_unref(rdg);
 
-  bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win);
+  bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win,
+    evas_obj_visibility_set(EINA_TRUE)
+  );
   elm_object_text_set(bt, "OK");
-  eo_do(bt, evas_obj_visibility_set(EINA_TRUE));
   evas_object_smart_callback_add(bt, "clicked", _OK_clicked, me);
   elm_box_pack_end(vbox, bt);
   eo_unref(bt);
 
-  bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win);
+  bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win,
+    evas_obj_visibility_set(EINA_TRUE)
+  );
   elm_object_text_set(bt, "CANCEL");
-  eo_do(bt, evas_obj_visibility_set(EINA_TRUE));
   evas_object_smart_callback_add(bt, "clicked", _CANCEL_clicked, me);
   elm_box_pack_end(vbox, bt);
   eo_unref(bt);
diff --git a/src/extantz/woMan.c b/src/extantz/woMan.c
index ffb063c..0a3456b 100644
--- a/src/extantz/woMan.c
+++ b/src/extantz/woMan.c
@@ -274,14 +274,13 @@ fangWin *woMan_add(globals *ourGlobals)
     tab = gridList;				tab_it = elm_naviframe_item_push(nf, NULL, NULL, NULL, tab, NULL);	elm_naviframe_item_title_enabled_set(tab_it, EINA_FALSE, EINA_TRUE);	elm_toolbar_item_append(tb, NULL, "Grids", _promote, tab_it);
     elm_box_pack_end(bx, nf);
 
-    bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win);
-    elm_object_text_set(bt, "Login");		// No eo interface for this that I can find.
-    eo_do(bt, 
+    bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win,
 //		evas_obj_text_set("Login"),
 		evas_obj_size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL),
 		evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, 0.0),
 		evas_obj_visibility_set(EINA_TRUE)
 	);
+    elm_object_text_set(bt, "Login");		// No eo interface for this that I can find.
 //    evas_object_smart_callback_add(bt, "clicked", NULL, NULL);
     elm_box_pack_end(bx, bt);
     eo_unref(bt);
-- 
cgit v1.1