tasn pushed a commit to branch master. http://git.enlightenment.org/bindings/cxx/eflxx.git/commit/?id=fc3106464a2ed8eda09bc57f009b54e86fdcebcb
commit fc3106464a2ed8eda09bc57f009b54e86fdcebcb Author: Andreas Volz <li...@brachttal.net> Date: Mon May 31 21:35:16 2010 +0000 use C++ version of signal prototype SVN revision: 49362 --- eflxx_examples/src/elementaryxx/full/main.cpp | 4 +- .../src/elementaryxx/full/test_entry.cpp | 8 +-- .../src/elementaryxx/full/test_genlist.cpp | 70 ++++++++++++++-------- .../src/elementaryxx/full/test_hover.cpp | 2 +- eflxx_examples/src/elementaryxx/full/test_icon.cpp | 2 +- .../src/elementaryxx/full/test_notepad.cpp | 6 +- .../src/elementaryxx/full/test_progressbar.cpp | 15 +++-- eflxx_examples/src/elementaryxx/simple/main.cpp | 4 +- 8 files changed, 69 insertions(+), 42 deletions(-) diff --git a/eflxx_examples/src/elementaryxx/full/main.cpp b/eflxx_examples/src/elementaryxx/full/main.cpp index 18a2214..1472377 100644 --- a/eflxx_examples/src/elementaryxx/full/main.cpp +++ b/eflxx_examples/src/elementaryxx/full/main.cpp @@ -7,7 +7,7 @@ #ifndef ELM_LIB_QUICKLAUNCH -static void my_win_del(Evas_Object *obj, void *event_info); +static void my_win_del(Evasxx::Object &obj, void *event_info); static void my_win_main(void); // @@ -71,7 +71,7 @@ Application *elmApp; static void -my_win_del(Evas_Object *obj, void *event_info) +my_win_del (Evasxx::Object &obj, void *event_info) { // TODO /* called when my_win_main is requested to be deleted */ diff --git a/eflxx_examples/src/elementaryxx/full/test_entry.cpp b/eflxx_examples/src/elementaryxx/full/test_entry.cpp index b6f2e6b..4f94f72 100644 --- a/eflxx_examples/src/elementaryxx/full/test_entry.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_entry.cpp @@ -1,23 +1,23 @@ #include "test.h" -static void my_entry_bt_1 (Evas_Object *obj, void *event_info, Entry *en) +static void my_entry_bt_1 (Evasxx::Object &obj, void *event_info, Entry *en) { en->setText (""); } -static void my_entry_bt_2 (Evas_Object *obj, void *event_info, Entry *en) +static void my_entry_bt_2 (Evasxx::Object &obj, void *event_info, Entry *en) { const string s = en->getText (); cout << "ENTRY: " << s << endl; } -static void my_entry_bt_3 (Evas_Object *obj, void *event_info, Entry *en) +static void my_entry_bt_3 (Evasxx::Object &obj, void *event_info, Entry *en) { const string s = en->getSelection (); cout << "SELECTION: " << s << endl; } -static void my_entry_bt_4 (Evas_Object *obj, void *event_info, Entry *en) +static void my_entry_bt_4 (Evasxx::Object &obj, void *event_info, Entry *en) { en->insertText ("Insert some <b>BOLD</> text"); } diff --git a/eflxx_examples/src/elementaryxx/full/test_genlist.cpp b/eflxx_examples/src/elementaryxx/full/test_genlist.cpp index 830bfc0..c4359a5 100644 --- a/eflxx_examples/src/elementaryxx/full/test_genlist.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_genlist.cpp @@ -15,7 +15,7 @@ public: {} void setItemNum (int num) {mItemNum = num;} - int getItemNum () {return mItemNum;} + int getItemNum () const {return mItemNum;} private: int mItemNum; @@ -60,6 +60,16 @@ public: } }; +class GenListColumnSelector1 : public GenListColumnSelector +{ +public: + void setItemNum (int num) {mItemNum = num;} + int getItemNum () const {return mItemNum;} + +private: + int mItemNum; +}; + static GenListDataModel1 model ("default"); static GenListDataModel1 model2 ("default"); static GenListDataModel1 model3 ("default"); @@ -70,9 +80,17 @@ static GenListDataModel1 model3 ("default"); */ std::vector <GenListColumnConstructor1*> constructList1; -void glSelected (const Evasxx::Object &obj, void *event_info) +/* + * Hint: 'selectList1' isn't cleaned up at exit. Normal applications should do this. + * This could be done at the GenList or Window destructor. For this example it's ok... + */ +std::vector <GenListColumnSelector1*> selectList1; + +void glSelected (GenListColumnSelector &selection, const Evasxx::Object &obj, void *event_info) { - cout << "glSelected" << endl; + GenListColumnSelector1 *selection1 = static_cast <GenListColumnSelector1*> (&selection); + + cout << "glSelected: " << selection1->getItemNum () << endl; } void _move (const Evasxx::MouseMoveEvent &ev, GenList *gl) @@ -94,39 +112,33 @@ _move(void *data, Evas *evas, Evas_Object *obj, void *event_info) else printf("over none, where %i\n", where); } - -static void -_bt50_cb(void *data, Evas_Object *obj, void *event_info) +#endif // 0 +static void _bt50_cb (Evasxx::Object &obj, void *event_info) { - elm_genlist_item_bring_in(data); + //elm_genlist_item_bring_in(data); } -static void -_bt1500_cb(void *data, Evas_Object *obj, void *event_info) +static void _bt1500_cb (Evasxx::Object &obj, void *event_info) { - elm_genlist_item_middle_bring_in(data); + //elm_genlist_item_middle_bring_in(data); } -#endif // 0 -static void -_gl_selected (Evas_Object *obj, void *event_info) + +static void _gl_selected (Evasxx::Object &obj, void *event_info) { printf("selected: %p\n", event_info); } -static void -_gl_clicked (Evas_Object *obj, void *event_info) +static void _gl_clicked (Evasxx::Object &obj, void *event_info) { printf("clicked: %p\n", event_info); } -static void -_gl_longpress (Evas_Object *obj, void *event_info) +static void _gl_longpress (Evasxx::Object &obj, void *event_info) { printf("longpress %p\n", event_info); } -void -test_genlist (void *data, Evas_Object *obj, void *event_info) +void test_genlist (void *data, Evas_Object *obj, void *event_info) { Window *win = Window::factory ("genlist", ELM_WIN_BASIC); win->setTitle ("GenList"); @@ -182,10 +194,14 @@ test_genlist (void *data, Evas_Object *obj, void *event_info) { GenListColumnConstructor1 *construct1 = new GenListColumnConstructor1 (); construct1->setItemNum (i); + + GenListColumnSelector1 *select1 = new GenListColumnSelector1 (); + select1->setItemNum (i * 10); - gl->append (construct1, NULL, ELM_GENLIST_ITEM_NONE, NULL); + gl->append (construct1, NULL, ELM_GENLIST_ITEM_NONE, select1); constructList1.push_back (construct1); + selectList1.push_back (select1); #if 0 gli = elm_genlist_item_append(gl, &itc1, (void *)i/* item data */, @@ -193,11 +209,17 @@ test_genlist (void *data, Evas_Object *obj, void *event_info) ELM_GENLIST_ITEM_NONE, gl_sel/* func */, (void *)(i * 10)/* func data */); - if (i == 50) - evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli); - else if (i == 1500) - evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli); #endif + if (i == 50) + { + //evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli); + bt_50->getEventSignal ("clicked")->connect (sigc::ptr_fun (&_bt50_cb)); + } + else if (i == 1500) + { + //evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli); + bt_1500->getEventSignal ("clicked")->connect (sigc::ptr_fun (&_bt1500_cb)); + } } win->resize (Size (480, 800)); diff --git a/eflxx_examples/src/elementaryxx/full/test_hover.cpp b/eflxx_examples/src/elementaryxx/full/test_hover.cpp index f34dea0..07fd404 100644 --- a/eflxx_examples/src/elementaryxx/full/test_hover.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_hover.cpp @@ -2,7 +2,7 @@ -static void my_hover_bt (Evas_Object *obj, void *event_info, Hover *hv) +static void my_hover_bt (Evasxx::Object &obj, void *event_info, Hover *hv) { hv->show (); } diff --git a/eflxx_examples/src/elementaryxx/full/test_icon.cpp b/eflxx_examples/src/elementaryxx/full/test_icon.cpp index bae3a15..1b1c3e1 100644 --- a/eflxx_examples/src/elementaryxx/full/test_icon.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_icon.cpp @@ -2,7 +2,7 @@ -static void icon_clicked (Evas_Object *obj, void *event_info) +static void icon_clicked (Evasxx::Object &obj, void *event_info) { cout << "clicked!" << endl; } diff --git a/eflxx_examples/src/elementaryxx/full/test_notepad.cpp b/eflxx_examples/src/elementaryxx/full/test_notepad.cpp index e5ba664..6742301 100644 --- a/eflxx_examples/src/elementaryxx/full/test_notepad.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_notepad.cpp @@ -2,17 +2,17 @@ -static void my_notepad_bt_1 (Evas_Object *obj, void *event_info, Notepad *np) +static void my_notepad_bt_1 (Evasxx::Object &obj, void *event_info, Notepad *np) { // TODO } -static void my_notepad_bt_2 (Evas_Object *obj, void *event_info, Notepad *np) +static void my_notepad_bt_2 (Evasxx::Object &obj, void *event_info, Notepad *np) { // TODO } -static void my_notepad_bt_3 (Evas_Object *obj, void *event_info, Notepad *np) +static void my_notepad_bt_3 (Evasxx::Object &obj, void *event_info, Notepad *np) { // TODO } diff --git a/eflxx_examples/src/elementaryxx/full/test_progressbar.cpp b/eflxx_examples/src/elementaryxx/full/test_progressbar.cpp index 33a1540..729b2ab 100644 --- a/eflxx_examples/src/elementaryxx/full/test_progressbar.cpp +++ b/eflxx_examples/src/elementaryxx/full/test_progressbar.cpp @@ -44,7 +44,7 @@ static void _my_progressbar_value_set (Ecorexx::Timer *timer) } } -static void my_progressbar_test_start (Evas_Object *obj, void *event_info) +static void my_progressbar_test_start (Evasxx::Object &obj, void *event_info) { _test_progressbar.pb2->pulse (true); _test_progressbar.pb5->pulse (true); @@ -58,7 +58,7 @@ static void my_progressbar_test_start (Evas_Object *obj, void *event_info) } } -static void my_progressbar_test_stop (Evas_Object *obj, void *event_info) +static void _test_stop () { _test_progressbar.pb2->pulse (false); _test_progressbar.pb5->pulse (false); @@ -71,10 +71,15 @@ static void my_progressbar_test_stop (Evas_Object *obj, void *event_info) } } -static void my_progressbar_destroy (Evas_Object *obj, void *event_info) +static void my_progressbar_test_stop (Evasxx::Object &obj, void *event_info) { - my_progressbar_test_stop (NULL, NULL); - evas_object_del (obj); + _test_stop (); +} + +static void my_progressbar_destroy (Evasxx::Object &obj, void *event_info) +{ + _test_stop (); + delete &obj; } void test_progressbar(void *data, Evas_Object *obj, void *event_info) diff --git a/eflxx_examples/src/elementaryxx/simple/main.cpp b/eflxx_examples/src/elementaryxx/simple/main.cpp index 8c2b378..e311892 100644 --- a/eflxx_examples/src/elementaryxx/simple/main.cpp +++ b/eflxx_examples/src/elementaryxx/simple/main.cpp @@ -11,14 +11,14 @@ using namespace Eflxx; using namespace Elmxx; static void -my_win_del(Evas_Object *obj, void *event_info) +my_win_del(Evasxx::Object &obj, void *event_info) { // TODO /* 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 (Evas_Object *obj, void *event_info) +static void testFunc (Evasxx::Object &obj, void *event_info) { cout << "sub-object-del" << endl; } --