From 0d1a2db61756cdf361d63869ab1309b7bb91f289 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Thu, 2 Nov 2017 12:13:53 +0900 Subject: [PATCH] cxx: Completely rewrite box example This was showing off box transitions, which don't exist in EO API. --- src/examples/elementary/box_cxx_example_02.cc | 142 ++---------------- 1 file changed, 14 insertions(+), 128 deletions(-) diff --git a/src/examples/elementary/box_cxx_example_02.cc b/src/examples/elementary/box_cxx_example_02.cc index bc81fcf2f0..99b257591a 100644 --- a/src/examples/elementary/box_cxx_example_02.cc +++ b/src/examples/elementary/box_cxx_example_02.cc @@ -1,142 +1,28 @@ -//Compile with: -//gcc -g box_example_02.c -o box_example_02 `pkg-config --cflags --libs elementary` +// g++ -g `pkg-config --cflags --libs elementary-cxx efl-cxx eina-cxx eo-cxx ecore-cxx evas-cxx edje-cxx` box_cxx_example_02.cc -o box_cxx_example_02 #include -#include -#include -#include - -struct Transitions_Data -{ - efl::eo::wref box; - std::deque transitions; - Evas_Object_Box_Layout last_layout; -}; +using efl::eo::instantiate; static void -_test_box_transition_change(void *data) -{ - Transitions_Data *tdata = static_cast(data); - Elm_Box_Transition *layout_data; - Evas_Object_Box_Layout next_layout; - - assert (!!data); - assert (!tdata->transitions.empty()); - - if(efl::eina::optional box = tdata->box.lock()) - { - next_layout = tdata->transitions.front(); - layout_data = elm_box_transition_new(2.0, tdata->transitions.back(), - nullptr, nullptr, next_layout, nullptr, nullptr, - _test_box_transition_change, tdata); - box->layout_set(elm_box_layout_transition, layout_data, - elm_box_transition_free); - tdata->last_layout = next_layout; - - tdata->transitions.push_back(tdata->transitions[0]); - tdata->transitions.pop_front(); - } -} - -EAPI_MAIN int -elm_main(int argc, char *argv[]) +efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) { elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN); - Transitions_Data tdata; - - ::elm::win::Standard win; - win.title_set("Box Transition"); + auto win = efl::ui::Win(instantiate); + win.text_set("Simple Box Example"); win.autohide_set(true); - elm::Ui::Box bigbox ( efl::eo::parent = win ); - bigbox.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - //win.resize_object_add(bigbox); - bigbox.visible_set(true); + auto box = efl::ui::Box(instantiate, win); + win.content_set(box); - elm::ui::Box buttons ( efl::eo::parent = win ); - //buttons.horizontal_set(true); - bigbox.pack_end(buttons); - buttons.visible_set(true); - - elm::Button add ( efl::eo::parent = win ); - add.text_set("elm.text", "Add"); - buttons.pack_end(add); - add.visible_set(true); - add.callback_clicked_add - (std::bind([&tdata] - { - if(efl::eina::optional box = tdata.box.lock()) - { - elm::button btn ( efl::eo::parent = *box ); - btn.text_set(nullptr, "I do nothing"); - box->pack_end(btn); - btn.visible_set(true); - } - })); - - elm::Button clear ( efl::eo::parent = win ); - clear.text_set("elm.text", "Clear"); - buttons.pack_end(clear); - clear.visible_set(true); - clear.callback_clicked_add(std::bind([&tdata] { tdata.box.lock()->clear(); })); - - elm::Box dynamic ( efl::eo::parent = win ); - dynamic.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - dynamic.size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL); - bigbox.pack_end(dynamic); - dynamic.visible_set(true); - - auto unpack = std::bind([&tdata] (evas::clickable_interface obj) + for (int i = 0; i < 5; i++) { - elm::Button btn = efl::eo::downcast(obj); - tdata.box.lock()->unpack(btn); - btn.position_set(0, 50); - btn.object_smart::color_set(128, 64, 0, 128); - }, std::placeholders::_1) - ; + auto bt = efl::ui::Button(instantiate, win); + bt.text_set("Button " + std::to_string(i)); + box.pack_end(bt); + } - elm::Button bt1 ( efl::eo::parent = win ); - bt1.text_set("elm.text", "Button 1"); - bt1.callback_clicked_add(unpack); - bt1.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - bt1.size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL); - dynamic.pack_end(bt1); - bt1.visible_set(true); - - elm::Button bt2 ( efl::eo::parent = win ); - bt2.text_set("elm.text", "Button 2"); - bt2.size_hint_weight_set(EVAS_HINT_EXPAND, 0.0); - bt2.size_hint_align_set(1.0, 0.5); - bt2.callback_clicked_add(unpack); - dynamic.pack_end(bt2); - bt2.visible_set(true); - - elm::Button bt3 ( efl::eo::parent = win ); - bt3.text_set("elm.text", "Button 3"); - bt3.callback_clicked_add(unpack); - dynamic.pack_end(bt3); - bt3.visible_set(true); - - tdata.box = dynamic; - tdata.last_layout = evas_object_box_layout_horizontal; - tdata.transitions.push_back(evas_object_box_layout_vertical); - tdata.transitions.push_back(evas_object_box_layout_horizontal); - tdata.transitions.push_back(evas_object_box_layout_stack); - tdata.transitions.push_back(evas_object_box_layout_homogeneous_vertical); - tdata.transitions.push_back(evas_object_box_layout_homogeneous_horizontal); - tdata.transitions.push_back(evas_object_box_layout_flow_vertical); - tdata.transitions.push_back(evas_object_box_layout_flow_horizontal); - tdata.transitions.push_back(evas_object_box_layout_stack); - - dynamic.layout_set(evas_object_box_layout_horizontal, nullptr, nullptr); - _test_box_transition_change(&tdata); - - win.size_set(300, 320); - win.visible_set(true); - - elm_run(); - return 0; + win.size_set({320,320}); } -ELM_MAIN() +EFL_MAIN()