From a04f586b15b27968edf2838b39556aff28486178 Mon Sep 17 00:00:00 2001 From: Andreas Volz Date: Mon, 6 Dec 2010 22:01:36 +0000 Subject: [PATCH] implemented external part param wrapper for C++ SVN revision: 55334 --- edjexx/include/edjexx/Edjexx.h | 1 + edjexx/include/edjexx/ExternalParam.h | 37 +++++++++++ edjexx/include/edjexx/Makefile.am | 3 +- edjexx/include/edjexx/Part.h | 5 +- edjexx/src/ExternalParam.cpp | 64 +++++++++++++++++++ edjexx/src/Makefile.am | 3 +- edjexx/src/Part.cpp | 5 +- .../src/elementaryxx/external/main.cpp | 12 +--- 8 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 edjexx/include/edjexx/ExternalParam.h create mode 100644 edjexx/src/ExternalParam.cpp diff --git a/edjexx/include/edjexx/Edjexx.h b/edjexx/include/edjexx/Edjexx.h index 1e9a3b3..9995a7c 100644 --- a/edjexx/include/edjexx/Edjexx.h +++ b/edjexx/include/edjexx/Edjexx.h @@ -17,6 +17,7 @@ #include "ImageStateEdit.h" #include "TextStateEdit.h" #include "GradientStateEdit.h" +#include "ExternalParam.h" #endif // EDJEXX_H diff --git a/edjexx/include/edjexx/ExternalParam.h b/edjexx/include/edjexx/ExternalParam.h new file mode 100644 index 0000000..f6fd61f --- /dev/null +++ b/edjexx/include/edjexx/ExternalParam.h @@ -0,0 +1,37 @@ +#ifndef EDJEXX_EXTERNAL_PARAM_H +#define EDJEXX_EXTERNAL_PARAM_H + +/* STD */ +#include + +/* EFL */ +#include + +/* local */ +#include "Part.h" + +namespace Edjexx { + +class ExternalParam +{ + friend class Part; + +public: + ExternalParam (const std::string &name, int i); + ExternalParam (const std::string &name, bool b); + ExternalParam (const std::string &name, double d); + ExternalParam (const std::string &name, const char *c); + ExternalParam (const std::string &name, const std::string &s); + +protected: + Edje_External_Param *getRaw (); + +private: + Edje_External_Param mParam; + std::string mName; + std::string mStr; +}; + +} // end namespace Edjexx + +#endif // EDJEXX_EXTERNAL_PARAM_H diff --git a/edjexx/include/edjexx/Makefile.am b/edjexx/include/edjexx/Makefile.am index ad8e443..adb5981 100644 --- a/edjexx/include/edjexx/Makefile.am +++ b/edjexx/include/edjexx/Makefile.am @@ -10,7 +10,8 @@ libedjexx_HEADERS = \ StateEdit.h \ ImageStateEdit.h \ TextStateEdit.h \ - GradientStateEdit.h + GradientStateEdit.h \ + ExternalParam.h libedjexxdir = \ $(pkgincludedir) diff --git a/edjexx/include/edjexx/Part.h b/edjexx/include/edjexx/Part.h index 4b45b46..1f690e0 100644 --- a/edjexx/include/edjexx/Part.h +++ b/edjexx/include/edjexx/Part.h @@ -7,7 +7,6 @@ /* EFL++ */ #include #include - #include /* EFL */ @@ -17,6 +16,8 @@ using std::string; namespace Edjexx { +// forward declarations +class ExternalParam; class Object; class Part @@ -42,7 +43,7 @@ public: Eflxx::CountedPtr getExternalObject (); // TODO: wrap Param? - bool setParam (const Edje_External_Param *param); + bool setParam (Edjexx::ExternalParam *param); //const Evasxx::Object* getObject ( const char* name ); diff --git a/edjexx/src/ExternalParam.cpp b/edjexx/src/ExternalParam.cpp new file mode 100644 index 0000000..8d5b1df --- /dev/null +++ b/edjexx/src/ExternalParam.cpp @@ -0,0 +1,64 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "../include/edjexx/ExternalParam.h" + +namespace Edjexx { + +ExternalParam::ExternalParam (const std::string &name, int i) : + mName (name) +{ + mParam.name = mName.c_str (); + mParam.d = 0.0; + mParam.s = NULL; + mParam.i = i; + mParam.type = EDJE_EXTERNAL_PARAM_TYPE_INT; +} + +ExternalParam::ExternalParam (const std::string &name, bool b) : + mName (name) +{ + mParam.name = mName.c_str (); + mParam.d = 0.0; + mParam.s = NULL; + mParam.i = b; + mParam.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL; +} + +ExternalParam::ExternalParam (const std::string &name, double d) : + mName (name) +{ + mParam.name = mName.c_str (); + mParam.d = d; + mParam.s = NULL; + mParam.i = 0; + mParam.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; +} + +ExternalParam::ExternalParam (const std::string &name, const char *c) : + mName (name), mStr (c) +{ + mParam.name = mName.c_str (); + mParam.d = 0.0; + mParam.s = mStr.c_str (); + mParam.i = 0; + mParam.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; +} + +ExternalParam::ExternalParam (const std::string &name, const std::string &s) : + mName (name), mStr (s) +{ + mParam.name = mName.c_str (); + mParam.d = 0.0; + mParam.s = mStr.c_str (); + mParam.i = 0; + mParam.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; +} + +Edje_External_Param *ExternalParam::getRaw () +{ + return &mParam; +} + +} // end namespace Edjexx diff --git a/edjexx/src/Makefile.am b/edjexx/src/Makefile.am index 80d1949..62be1fe 100644 --- a/edjexx/src/Makefile.am +++ b/edjexx/src/Makefile.am @@ -25,7 +25,8 @@ libedjexx_la_SOURCES = \ StateEdit.cpp \ ImageStateEdit.cpp \ TextStateEdit.cpp \ - GradientStateEdit.cpp + GradientStateEdit.cpp \ + ExternalParam.cpp libedjexx_la_LIBADD = \ $(EFL_LIBS) diff --git a/edjexx/src/Part.cpp b/edjexx/src/Part.cpp index 2e83346..ca394de 100644 --- a/edjexx/src/Part.cpp +++ b/edjexx/src/Part.cpp @@ -4,6 +4,7 @@ #include "../include/edjexx/Part.h" #include "../include/edjexx/Object.h" +#include "../include/edjexx/ExternalParam.h" /* STD */ #include @@ -71,9 +72,9 @@ Eflxx::CountedPtr Part::getExternalObject () return Eflxx::CountedPtr (ret_o); } -bool Part::setParam (const Edje_External_Param *param) +bool Part::setParam (Edjexx::ExternalParam *param) { - return edje_object_part_external_param_set (_parent->obj (), _partname.c_str (), param); + return edje_object_part_external_param_set (_parent->obj (), _partname.c_str (), param->getRaw ()); } /*const Evasxx::Object* Part::getObject ( const char* name ) diff --git a/eflxx_examples/src/elementaryxx/external/main.cpp b/eflxx_examples/src/elementaryxx/external/main.cpp index 609bf23..3834f91 100644 --- a/eflxx_examples/src/elementaryxx/external/main.cpp +++ b/eflxx_examples/src/elementaryxx/external/main.cpp @@ -66,19 +66,11 @@ int main (int argc, char **argv) Eflxx::CountedPtr part (edje->getPart ("Slider01")); - Edje_External_Param param; - param.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; - param.name = "value"; - param.d = 5; - - Edje_External_Param param2; - param2.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; - param2.name = "label"; - param2.s = "Changed Slider Value"; + Edjexx::ExternalParam param ("value", 5.0f); + Edjexx::ExternalParam param2 ("label", "Changed Slider Value"); part->setParam (¶m); part->setParam (¶m2); - bg->setWeightHintSize (1.0, 1.0); elmWin->addObjectResize (*bg);