tasn pushed a commit to branch master.

http://git.enlightenment.org/bindings/cxx/eflxx.git/commit/?id=2e91be1d77de502675e5a8742cc4483f089d211c

commit 2e91be1d77de502675e5a8742cc4483f089d211c
Author: Andreas Volz <[email protected]>
Date:   Tue Nov 30 23:04:07 2010 +0000

    some more C++ wrappers for external access
    
    SVN revision: 55099
---
 edjexx/include/edjexx/Part.h                      |  8 +++++
 edjexx/src/Part.cpp                               | 21 +++++++++---
 eflxx_examples/src/elementaryxx/external/main.cpp | 40 +++++++++++++----------
 3 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/edjexx/include/edjexx/Part.h b/edjexx/include/edjexx/Part.h
index a5f7714..4b45b46 100644
--- a/edjexx/include/edjexx/Part.h
+++ b/edjexx/include/edjexx/Part.h
@@ -10,6 +10,9 @@
 
 #include <evasxx/Object.h>
 
+/* EFL */
+#include <Edje.h>
+
 using std::string;
 
 namespace Edjexx {
@@ -36,6 +39,11 @@ public:
 
   Eflxx::CountedPtr <Evasxx::Object> getSwallow ();
 
+  Eflxx::CountedPtr <Evasxx::Object> getExternalObject ();
+
+  // TODO: wrap Param?
+  bool setParam (const Edje_External_Param *param);
+
   //const Evasxx::Object* getObject ( const char* name );
 
 private:
diff --git a/edjexx/src/Part.cpp b/edjexx/src/Part.cpp
index 21dcf72..2e83346 100644
--- a/edjexx/src/Part.cpp
+++ b/edjexx/src/Part.cpp
@@ -5,9 +5,6 @@
 #include "../include/edjexx/Part.h"
 #include "../include/edjexx/Object.h"
 
-/* EFL */
-#include <Edje.h>
-
 /* STD */
 #include <map>
 
@@ -48,7 +45,7 @@ const std::string Part::getText() const
 
 void Part::swallow( Evasxx::Object* object )
 {
-  edje_object_part_swallow( _parent->obj(), _partname.c_str (), object->obj() 
);
+  edje_object_part_swallow (_parent->obj(), _partname.c_str (), object->obj());
 }
 
 void Part::unswallow( Evasxx::Object* object )
@@ -58,13 +55,27 @@ void Part::unswallow( Evasxx::Object* object )
 
 Eflxx::CountedPtr <Evasxx::Object> Part::getSwallow()
 {
-  Evas_Object *eo = edje_object_part_swallow_get( _parent->obj(), 
_partname.c_str () );
+  Evas_Object *eo = edje_object_part_swallow_get (_parent->obj(), 
_partname.c_str ());
+
+  Evasxx::Object *ret_o = Evasxx::Object::wrap (eo);
+
+  return Eflxx::CountedPtr <Evasxx::Object> (ret_o);
+}
 
+Eflxx::CountedPtr <Evasxx::Object> Part::getExternalObject ()
+{
+  Evas_Object *eo = edje_object_part_external_object_get (_parent->obj(), 
_partname.c_str ());
+ 
   Evasxx::Object *ret_o = Evasxx::Object::wrap (eo);
 
   return Eflxx::CountedPtr <Evasxx::Object> (ret_o);
 }
 
+bool Part::setParam (const Edje_External_Param *param)
+{
+  return edje_object_part_external_param_set (_parent->obj (), _partname.c_str 
(), param);
+}
+
 /*const Evasxx::Object* Part::getObject ( const char* name )
 {
   return Evasxx::Object::objectLink( edje_object_part_object_get( static_cast 
<const Evas_Object*> (_parent->obj()), name ) );
diff --git a/eflxx_examples/src/elementaryxx/external/main.cpp 
b/eflxx_examples/src/elementaryxx/external/main.cpp
index 321a80a..609bf23 100644
--- a/eflxx_examples/src/elementaryxx/external/main.cpp
+++ b/eflxx_examples/src/elementaryxx/external/main.cpp
@@ -47,34 +47,38 @@ int main (int argc, char **argv)
   edje->setLayer (0);
   edje->show ();
 
-  Evas_Object *eo = edje->obj ();
-
-  // TODO: C++ wrapper
-  Evas_Object *ext_eo = edje_object_part_external_object_get (eo, "Button01");
-  elm_button_label_set (ext_eo, "This is a changed button");  
-
-  ext_eo = edje_object_part_external_object_get (eo, "List01");
-  assert (elm_list_item_append (ext_eo, "1. Line", NULL, NULL, NULL, NULL));
-  assert (elm_list_item_append (ext_eo, "2. Line", NULL, NULL, NULL, NULL));
-  assert (elm_list_item_append (ext_eo, "3. Line", NULL, NULL, NULL, NULL));
-  assert (elm_list_item_append (ext_eo, "4. Line", NULL, NULL, NULL, NULL));
-  elm_list_go (ext_eo);
-  
-  ext_eo = edje_object_part_external_object_get (eo, "Progressbar01");
-  elm_progressbar_label_set (ext_eo, "This is the status");
-  elm_progressbar_value_set (ext_eo, 0.5);
+  Eflxx::CountedPtr <Evasxx::Object> ext_eo (edje->getPart 
("Button01")->getExternalObject ());
+  Elmxx::Button *button = static_cast <Elmxx::Button*> (&(*ext_eo));
+  button->setLabel ("This is a changed button");
+
+  Eflxx::CountedPtr <Evasxx::Object> ext_eo2 (edje->getPart 
("List01")->getExternalObject ());
+  Elmxx::List *list = static_cast <Elmxx::List*> (&(*ext_eo2));
+  assert (list->append ("1. Line", NULL, NULL));
+  assert (list->append ("2. Line", NULL, NULL));
+  assert (list->append ("3. Line", NULL, NULL));
+  assert (list->append ("4. Line", NULL, NULL));
+  list->go ();
+
+  Eflxx::CountedPtr <Evasxx::Object> ext_eo3 (edje->getPart 
("Progressbar01")->getExternalObject ());
+  Elmxx::Progressbar *progressbar = static_cast <Elmxx::Progressbar*> 
(&(*ext_eo3));
+  progressbar->setLabel ("This is the status");
+  progressbar->setValue (0.5);
+
+  Eflxx::CountedPtr <Edjexx::Part> part (edje->getPart ("Slider01"));
 
   Edje_External_Param param;
   param.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
   param.name = "value";
   param.d = 5;
-  edje_object_part_external_param_set (eo, "Slider01", &param);
 
   Edje_External_Param param2;
   param2.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
   param2.name = "label";
   param2.s = "Changed Slider Value";
-  edje_object_part_external_param_set (eo, "Slider01", &param2);
+
+  part->setParam (&param);
+  part->setParam (&param2);
+
   
   bg->setWeightHintSize (1.0, 1.0);
   elmWin->addObjectResize (*bg);

-- 


Reply via email to