tasn pushed a commit to branch master.

http://git.enlightenment.org/bindings/cxx/eflxx.git/commit/?id=64ad1411f2ac23338a3f8ab86eaecd058bb42985

commit 64ad1411f2ac23338a3f8ab86eaecd058bb42985
Author: Andreas Volz <[email protected]>
Date:   Wed Nov 17 22:14:33 2010 +0000

    added external example (currently using the C API as long as it's not 
complete wrapped in C++)
    
    SVN revision: 54660
---
 eflxx_examples/src/elementaryxx/Makefile.am        |  3 +-
 .../src/elementaryxx/external/Makefile.am          | 23 +++++
 eflxx_examples/src/elementaryxx/external/main.cpp  | 99 ++++++++++++++++++++++
 3 files changed, 124 insertions(+), 1 deletion(-)

diff --git a/eflxx_examples/src/elementaryxx/Makefile.am 
b/eflxx_examples/src/elementaryxx/Makefile.am
index 9ce2806..3969926 100644
--- a/eflxx_examples/src/elementaryxx/Makefile.am
+++ b/eflxx_examples/src/elementaryxx/Makefile.am
@@ -1,6 +1,7 @@
 
 SUBDIRS = \
        simple\
-       full
+       full \
+       external
 
 ## File created by the gnome-build tools
diff --git a/eflxx_examples/src/elementaryxx/external/Makefile.am 
b/eflxx_examples/src/elementaryxx/external/Makefile.am
new file mode 100644
index 0000000..3c5cb40
--- /dev/null
+++ b/eflxx_examples/src/elementaryxx/external/Makefile.am
@@ -0,0 +1,23 @@
+
+bin_PROGRAMS = \
+       elementaryxx_example_external
+
+elementaryxx_example_external_SOURCES = \
+       main.cpp
+
+elementaryxx_example_external_LDADD = \
+       $(ELEMENTARYXX_LIBS) \
+       $(ECOREXX_LIBS) \
+       $(EDJEXX_LIBS) \
+       $(PACKAGE_SOURCE_DIR)/src/common/libeflxx_example_common.la
+
+elementaryxx_example_external_DEPENDENCIES = \
+       $(PACKAGE_SOURCE_DIR)/src/common/libeflxx_example_common.la
+
+AM_CPPFLAGS = \
+       $(ELEMENTARYXX_CFLAGS) \
+       $(ECOREXX_CFLAGS) \
+       $(EDJEXX_CFLAGS)
+
+## File created by the gnome-build tools
+
diff --git a/eflxx_examples/src/elementaryxx/external/main.cpp 
b/eflxx_examples/src/elementaryxx/external/main.cpp
new file mode 100644
index 0000000..321a80a
--- /dev/null
+++ b/eflxx_examples/src/elementaryxx/external/main.cpp
@@ -0,0 +1,99 @@
+#ifdef HAVE_CONFIG_H
+  #include <config.h>
+#endif
+
+#include <evasxx/Evasxx.h>
+#include <elementaryxx/Elementaryxx.h>
+#include <edjexx/Edjexx.h>
+#include "../../common/searchFile.h"
+
+#include <memory>
+#include <cassert>
+
+using namespace std;
+using namespace Eflxx;
+using namespace Elmxx;
+
+static void
+my_win_del(Evasxx::Object &obj, void *event_info)
+{
+  /* called when my_win_main is requested to be deleted */
+  Application::exit(); /* exit the program's main loop that runs in elm_run() 
*/
+}
+
+static void testFunc (Evasxx::Object &obj, void *event_info)
+{
+  cout << "sub-object-del" << endl;
+}
+
+int main (int argc, char **argv)
+{
+  Application elmApp (argc, argv);
+
+  Window *elmWin = Window::factory ("window1", ELM_WIN_BASIC);
+  elmWin->getEventSignal ("delete-request")->connect (sigc::ptr_fun 
(&my_win_del));
+  
+  Background *bg = Background::factory (*elmWin);
+
+  Evas *e = evas_object_evas_get(bg->obj ());
+
+  // TODO: CountedPtr
+  Evasxx::Canvas *ec = Evasxx::Canvas::wrap (e);
+
+  // TODO: CountedPtr
+  Edjexx::Object *edje = new Edjexx::Object (*ec, searchEdjeFile 
("elementaryxx-test_external.edj"), "main");
+
+  elmWin->resize (Eflxx::Size (620, 500));
+  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);
+
+  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);
+  
+  bg->setWeightHintSize (1.0, 1.0);
+  elmWin->addObjectResize (*bg);
+
+  /* set size hints. a minimum size for the bg. this should propagate back
+   * to the window thus limiting its size based off the bg as the bg is one
+   * of the window's resize objects. */
+  bg->setMinHintSize (Size (160, 160));
+  /* and set a maximum size. not needed very often. normally used together
+   * with evas_object_size_hint_min_set() at the same size to make a
+   * window not resizable */
+  bg->setMaxHintSize (Size (640, 640));
+    
+  elmWin->setTitle ("Elementaryxx Simple Example");
+  
+  elmWin->setAutoDel (true);
+
+  elmWin->show ();
+  bg->show ();
+
+  elmApp.run ();
+}

-- 


Reply via email to