forked from enlightenment/efl
ephysics: changed sandbox layout to toolbar and
naviframe Patch by: Ricardo de Almeida Gonzaga <ricardo@profusion.mobi> SVN revision: 78077
This commit is contained in:
parent
23d89c2e5a
commit
c39bc45d85
|
@ -15,7 +15,7 @@
|
||||||
#define INITIAL_IMPULSE (9500)
|
#define INITIAL_IMPULSE (9500)
|
||||||
|
|
||||||
typedef struct _Sandie_Data {
|
typedef struct _Sandie_Data {
|
||||||
Evas_Object *win;
|
Evas_Object *win, *tb, *nf;
|
||||||
EPhysics_World *world;
|
EPhysics_World *world;
|
||||||
EPhysics_Body *body1, *body2;
|
EPhysics_Body *body1, *body2;
|
||||||
} Sandie_Data;
|
} Sandie_Data;
|
||||||
|
@ -758,6 +758,12 @@ _body2_hardness_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||||
_body_hardness_set(obj, sandie->body2);
|
_body_hardness_set(obj, sandie->body2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_promote(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
elm_naviframe_item_promote(data);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_sandie_label_add(Evas_Object *win, Evas_Object *bxparent,
|
_sandie_label_add(Evas_Object *win, Evas_Object *bxparent,
|
||||||
const char *subcategory)
|
const char *subcategory)
|
||||||
|
@ -886,21 +892,61 @@ _category_add(Evas_Object *win, Evas_Object *bxparent, const char *label)
|
||||||
elm_box_horizontal_set(cbx, EINA_FALSE);
|
elm_box_horizontal_set(cbx, EINA_FALSE);
|
||||||
evas_object_size_hint_weight_set(cbx, EVAS_HINT_EXPAND, 0.0);
|
evas_object_size_hint_weight_set(cbx, EVAS_HINT_EXPAND, 0.0);
|
||||||
evas_object_size_hint_align_set(cbx, EVAS_HINT_FILL, 0.0);
|
evas_object_size_hint_align_set(cbx, EVAS_HINT_FILL, 0.0);
|
||||||
elm_box_align_set(cbx, 0.0, 0.5);
|
|
||||||
elm_object_content_set(cfr, cbx);
|
elm_object_content_set(cfr, cbx);
|
||||||
evas_object_show(cbx);
|
evas_object_show(cbx);
|
||||||
|
|
||||||
return cbx;
|
return cbx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_scroller_box_add(Evas_Object *parent, Evas_Object *scbx)
|
||||||
|
{
|
||||||
|
Evas_Object *sc = NULL, *bx = NULL;
|
||||||
|
|
||||||
|
sc = elm_scroller_add(parent);
|
||||||
|
elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
|
||||||
|
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
|
||||||
|
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_box_pack_end(scbx, sc);
|
||||||
|
evas_object_show(sc);
|
||||||
|
|
||||||
|
bx = elm_box_add(parent);
|
||||||
|
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_show(bx);
|
||||||
|
|
||||||
|
elm_object_content_set(sc, bx);
|
||||||
|
|
||||||
|
return bx;
|
||||||
|
}
|
||||||
static void
|
static void
|
||||||
_menu_body_items_create(void *data, Evas_Object *bxparent)
|
_menu_body_items_create(void *data)
|
||||||
{
|
{
|
||||||
Sandie_Data *sandie = data;
|
Sandie_Data *sandie = data;
|
||||||
Evas_Object *bx, *dbx, *widget, *aux_widget, *material_widget, *type_widget;
|
Evas_Object *bx, *dbx, *bxbody1, *bxbody2, *scbxbody1, *scbxbody2;
|
||||||
|
Evas_Object *widget, *aux_widget, *material_widget, *type_widget;
|
||||||
|
Elm_Object_Item *it;
|
||||||
|
|
||||||
|
scbxbody1 = elm_box_add(sandie->win);
|
||||||
|
evas_object_size_hint_weight_set(scbxbody1, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(scbxbody1, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_show(scbxbody1);
|
||||||
|
|
||||||
|
bxbody1 = _scroller_box_add(sandie->win, scbxbody1);
|
||||||
|
|
||||||
|
scbxbody2 = elm_box_add(sandie->win);
|
||||||
|
evas_object_size_hint_weight_set(scbxbody2, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(scbxbody2, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_show(scbxbody2);
|
||||||
|
|
||||||
|
bxbody2 = _scroller_box_add(sandie->win, scbxbody2);
|
||||||
|
|
||||||
|
|
||||||
//Body 1
|
//Body 1
|
||||||
bx = _category_add(sandie->win, bxparent, "EPhysics Body 1");
|
bx = _category_add(sandie->win, bxbody1, "EPhysics Body 1");
|
||||||
type_widget = _sandie_toggle_add(sandie->win, bx, "Body Type", "Solid",
|
type_widget = _sandie_toggle_add(sandie->win, bx, "Body Type", "Solid",
|
||||||
"Soft");
|
"Soft");
|
||||||
material_widget = _sandie_enum_add(sandie->win, bx, "Body Material");
|
material_widget = _sandie_enum_add(sandie->win, bx, "Body Material");
|
||||||
|
@ -1037,8 +1083,16 @@ _menu_body_items_create(void *data, Evas_Object *bxparent)
|
||||||
//evas_object_smart_callback_add(type_widget, "changed", _body1_type_cb,
|
//evas_object_smart_callback_add(type_widget, "changed", _body1_type_cb,
|
||||||
// sandie);
|
// sandie);
|
||||||
|
|
||||||
|
it = elm_naviframe_item_insert_before(sandie->nf,
|
||||||
|
evas_object_data_get(sandie->nf,
|
||||||
|
"world"),
|
||||||
|
NULL, NULL, NULL, scbxbody1, NULL);
|
||||||
|
evas_object_data_set(sandie->nf, "body1", it);
|
||||||
|
elm_naviframe_item_title_visible_set(it, EINA_FALSE);
|
||||||
|
it = elm_toolbar_item_append(sandie->tb, NULL, "Body 1", _promote, it);
|
||||||
|
|
||||||
//Body 2
|
//Body 2
|
||||||
bx = _category_add(sandie->win, bxparent, "EPhysics Body 2");
|
bx = _category_add(sandie->win, bxbody2, "EPhysics Body 2");
|
||||||
type_widget = _sandie_toggle_add(sandie->win, bx, "Body Type", "Solid",
|
type_widget = _sandie_toggle_add(sandie->win, bx, "Body Type", "Solid",
|
||||||
"Soft");
|
"Soft");
|
||||||
material_widget = _sandie_enum_add(sandie->win, bx, "Body Material");
|
material_widget = _sandie_enum_add(sandie->win, bx, "Body Material");
|
||||||
|
@ -1173,7 +1227,15 @@ _menu_body_items_create(void *data, Evas_Object *bxparent)
|
||||||
sandie);
|
sandie);
|
||||||
evas_object_data_set(type_widget, "hardness", widget);
|
evas_object_data_set(type_widget, "hardness", widget);
|
||||||
//evas_object_smart_callback_add(type_widget, "changed", _body2_type_cb,
|
//evas_object_smart_callback_add(type_widget, "changed", _body2_type_cb,
|
||||||
// sandie);
|
// sandie);*/
|
||||||
|
|
||||||
|
it = elm_naviframe_item_insert_before(sandie->nf,
|
||||||
|
evas_object_data_get(sandie->nf,
|
||||||
|
"body1"),
|
||||||
|
NULL, NULL, NULL, scbxbody2, NULL);
|
||||||
|
evas_object_data_set(sandie->nf, "body2", it);
|
||||||
|
elm_naviframe_item_title_visible_set(it, EINA_FALSE);
|
||||||
|
it = elm_toolbar_item_append(sandie->tb, NULL, "Body 2", _promote, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
static EPhysics_Body *
|
static EPhysics_Body *
|
||||||
|
@ -1197,13 +1259,14 @@ _sandie_body_add(Evas_Object *win, EPhysics_World *world, int x, int y)
|
||||||
|
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_menu_items_create(Evas_Object *win, Evas_Object *bxparent,
|
_menu_items_create(Evas_Object *win, Evas_Object *bxparent,
|
||||||
EPhysics_World *world)
|
EPhysics_World *world)
|
||||||
{
|
{
|
||||||
Evas_Object *bx, *dbx, *widget;
|
Evas_Object *bx, *dbx, *widget;
|
||||||
|
|
||||||
bx = _category_add(win, bxparent, "EPhysics World");
|
bx = _category_add(win, bxparent, "World");
|
||||||
dbx = _sandie_double_spinner_box_add(win, bx, "Gravity");
|
dbx = _sandie_double_spinner_box_add(win, bx, "Gravity");
|
||||||
widget = _sandie_spinner_add(win, dbx, "X:", "%1.2f px/s²",
|
widget = _sandie_spinner_add(win, dbx, "X:", "%1.2f px/s²",
|
||||||
-1000, 1000, 0, 2);
|
-1000, 1000, 0, 2);
|
||||||
|
@ -1222,7 +1285,7 @@ _menu_items_create(Evas_Object *win, Evas_Object *bxparent,
|
||||||
evas_object_smart_callback_add(widget, "delay,changed",
|
evas_object_smart_callback_add(widget, "delay,changed",
|
||||||
_world_max_sleeping_time_cb, world);
|
_world_max_sleeping_time_cb, world);
|
||||||
|
|
||||||
bx = _category_add(win, bxparent, "EPhysics Boundaries");
|
bx = _category_add(win, bxparent, "Boundaries");
|
||||||
widget = _sandie_spinner_add(win, bx, "Friction", "%1.3f",
|
widget = _sandie_spinner_add(win, bx, "Friction", "%1.3f",
|
||||||
0, 1, 0.5, 0.05);
|
0, 1, 0.5, 0.05);
|
||||||
evas_object_data_set(widget, "win", win);
|
evas_object_data_set(widget, "win", win);
|
||||||
|
@ -1235,7 +1298,7 @@ _menu_items_create(Evas_Object *win, Evas_Object *bxparent,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_world_populate(Sandie_Data *sandie, Evas_Object *bxparent)
|
_world_populate(Sandie_Data *sandie)
|
||||||
{
|
{
|
||||||
sandie->body1 = _sandie_body_add(sandie->win, sandie->world, (int) WIDTH / 5,
|
sandie->body1 = _sandie_body_add(sandie->win, sandie->world, (int) WIDTH / 5,
|
||||||
(int) HEIGHT / 5);
|
(int) HEIGHT / 5);
|
||||||
|
@ -1245,7 +1308,7 @@ _world_populate(Sandie_Data *sandie, Evas_Object *bxparent)
|
||||||
ephysics_body_central_impulse_apply(sandie->body1, INITIAL_IMPULSE, 0, 0);
|
ephysics_body_central_impulse_apply(sandie->body1, INITIAL_IMPULSE, 0, 0);
|
||||||
ephysics_body_central_impulse_apply(sandie->body2, -INITIAL_IMPULSE, 0, 0);
|
ephysics_body_central_impulse_apply(sandie->body2, -INITIAL_IMPULSE, 0, 0);
|
||||||
|
|
||||||
_menu_body_items_create(sandie, bxparent);
|
_menu_body_items_create(sandie);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1270,53 +1333,54 @@ _restart(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
-INITIAL_IMPULSE);
|
-INITIAL_IMPULSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static void
|
||||||
_menu_create(Sandie_Data *sandie)
|
_menu_create(Sandie_Data *sandie)
|
||||||
{
|
{
|
||||||
Evas_Object *bx, *widget, *label;
|
Evas_Object *mainbx, *scbx, *bx, *btn;
|
||||||
|
Elm_Object_Item *it;
|
||||||
|
|
||||||
bx = elm_box_add(sandie->win);
|
mainbx = elm_box_add(sandie->win);
|
||||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_fill_set(mainbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
elm_object_part_content_set(evas_object_data_get(sandie->win, "layout"),
|
elm_object_part_content_set(evas_object_data_get(sandie->win, "layout"),
|
||||||
"swallow", bx);
|
"swallow", mainbx);
|
||||||
evas_object_show(bx);
|
evas_object_show(mainbx);
|
||||||
|
|
||||||
widget = elm_frame_add(sandie->win);
|
btn = elm_button_add(sandie->win);
|
||||||
elm_frame_autocollapse_set(widget, EINA_TRUE);
|
elm_object_text_set(btn, "Restart");
|
||||||
elm_object_text_set(widget, "EPhysics Sandbox");
|
elm_box_pack_end(mainbx, btn);
|
||||||
elm_box_pack_end(bx, widget);
|
evas_object_size_hint_min_set(btn, 100, 30);
|
||||||
evas_object_show(widget);
|
evas_object_show(btn);
|
||||||
|
evas_object_smart_callback_add(btn, "clicked", _restart, sandie);
|
||||||
|
|
||||||
label = elm_label_add(sandie->win);
|
_sandie_label_add(sandie->win, mainbx, "EPhysics Sandbox");
|
||||||
elm_object_text_set(label, "Please modify physical parameters below");
|
|
||||||
elm_object_content_set(widget, label);
|
|
||||||
evas_object_show(label);
|
|
||||||
|
|
||||||
widget = elm_button_add(sandie->win);
|
sandie->tb = elm_toolbar_add(sandie->win);
|
||||||
elm_object_text_set(widget, "Restart");
|
evas_object_size_hint_weight_set(sandie->tb, EVAS_HINT_EXPAND, 0);
|
||||||
elm_box_pack_end(bx, widget);
|
evas_object_size_hint_fill_set(sandie->tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_min_set(widget, 100, 30);
|
elm_toolbar_select_mode_set(sandie->tb, ELM_OBJECT_SELECT_MODE_ALWAYS);
|
||||||
evas_object_show(widget);
|
elm_box_pack_end(mainbx, sandie->tb);
|
||||||
evas_object_smart_callback_add(widget, "clicked", _restart, sandie);
|
evas_object_show(sandie->tb);
|
||||||
|
|
||||||
widget = elm_scroller_add(sandie->win);
|
sandie->nf = elm_naviframe_add(sandie->win);
|
||||||
elm_scroller_bounce_set(widget, EINA_FALSE, EINA_TRUE);
|
evas_object_size_hint_weight_set(sandie->nf, EVAS_HINT_EXPAND,
|
||||||
elm_scroller_policy_set(widget, ELM_SCROLLER_POLICY_OFF,
|
EVAS_HINT_EXPAND);
|
||||||
ELM_SCROLLER_POLICY_ON);
|
evas_object_size_hint_fill_set(sandie->nf, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
elm_box_pack_end(mainbx, sandie->nf);
|
||||||
evas_object_size_hint_fill_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_show(sandie->nf);
|
||||||
elm_box_pack_end(bx, widget);
|
|
||||||
evas_object_show(widget);
|
|
||||||
|
|
||||||
bx = elm_box_add(sandie->win);
|
scbx = elm_box_add(sandie->win);
|
||||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
|
evas_object_size_hint_weight_set(scbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
|
evas_object_size_hint_align_set(scbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
elm_object_content_set(widget, bx);
|
evas_object_show(scbx);
|
||||||
evas_object_show(bx);
|
|
||||||
|
bx = _scroller_box_add(sandie->win, scbx);
|
||||||
|
|
||||||
_menu_items_create(sandie->win, bx, sandie->world);
|
_menu_items_create(sandie->win, bx, sandie->world);
|
||||||
|
|
||||||
return bx;
|
it = elm_naviframe_item_push(sandie->nf, NULL, NULL, NULL, scbx, NULL);
|
||||||
|
evas_object_data_set(sandie->nf, "world", it);
|
||||||
|
elm_naviframe_item_title_visible_set(it, EINA_FALSE);
|
||||||
|
it = elm_toolbar_item_append(sandie->tb, NULL, "World", _promote, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
static EPhysics_World *
|
static EPhysics_World *
|
||||||
|
@ -1341,7 +1405,7 @@ EAPI int
|
||||||
elm_main()
|
elm_main()
|
||||||
{
|
{
|
||||||
Sandie_Data *sandie;
|
Sandie_Data *sandie;
|
||||||
Evas_Object *layout, *bxparent;
|
Evas_Object *layout;
|
||||||
short int r = 0;
|
short int r = 0;
|
||||||
|
|
||||||
if (!ephysics_init())
|
if (!ephysics_init())
|
||||||
|
@ -1381,9 +1445,9 @@ elm_main()
|
||||||
|
|
||||||
sandie->world = _sandie_world_add(sandie->win);
|
sandie->world = _sandie_world_add(sandie->win);
|
||||||
|
|
||||||
bxparent = _menu_create(sandie);
|
_menu_create(sandie);
|
||||||
|
|
||||||
_world_populate(sandie, bxparent);
|
_world_populate(sandie);
|
||||||
|
|
||||||
elm_run();
|
elm_run();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue