diff options
Diffstat (limited to 'egraph/examples/demoapp.c')
-rw-r--r-- | egraph/examples/demoapp.c | 371 |
1 files changed, 0 insertions, 371 deletions
diff --git a/egraph/examples/demoapp.c b/egraph/examples/demoapp.c deleted file mode 100644 index 4e64363..0000000 --- a/egraph/examples/demoapp.c +++ /dev/null @@ -1,371 +0,0 @@ -#include <err.h> - -#include <Elementary.h> -#include <Egraph.h> - -Evas_Object *_mainwin; -Evas_Object *_egraph; -Eina_List *_vertice_list = NULL; -Eina_List *_group_list = NULL; - -static void -_cb_add_edge(void *data, Evas_Object *obj, void *event_info) -{ - Egraph_Vertice *a, *b; - int ran, count; - char buf[64]; - - if (!_egraph) - return; - - count = eina_list_count(_vertice_list); - if (count == 0) { - a = egraph_vertice_add(_egraph, "first", NULL); - _vertice_list = eina_list_append(_vertice_list, a); - } else { - ran = random() % count; - a = eina_list_nth(_vertice_list, ran); - } - b = egraph_vertice_add(_egraph, NULL, NULL); - snprintf(buf, sizeof(buf), "%d", b->id); - egraph_vertice_rename(_egraph, b, buf); - _vertice_list = eina_list_append(_vertice_list, b); - - egraph_edge_add(_egraph, a, b, NULL); -} - -static void -_cb_add_50edges(void *data, Evas_Object *obj, void *event_info) -{ - int i; - - if (!_egraph) - return; - - for (i=0; i<50; i++) - _cb_add_edge(data, obj, event_info); -} - -static void -_cb_add_500edges(void *data, Evas_Object *obj, void *event_info) -{ - int i; - - if (!_egraph) - return; - - for (i=0; i<500; i++) - _cb_add_edge(data, obj, event_info); -} - -static void -_cb_del_edges(void *data, Evas_Object *obj, void *event_info) -{ - Eina_List *l; - Egraph_Vertice *v; - - if (!_egraph) - return; - - egraph_clear(_egraph); - _vertice_list = eina_list_free(_vertice_list); - _group_list = eina_list_free(_group_list); -} - -static void -_cb_add_node(void *data, Evas_Object *obj, void *event_info) -{ - Egraph_Vertice *v; - char buf[64]; - - if (!_egraph) - return; - - v = egraph_vertice_add(_egraph, NULL, NULL); - snprintf(buf, sizeof(buf), "%d", v->id); - egraph_vertice_rename(_egraph, v, buf); - _vertice_list = eina_list_append(_vertice_list, v); -} - -static void -_cb_send_100blobs(void *data, Evas_Object *obj, void *event_info) -{ - Egraph_Vertice *a, *b; - int count, ran, i; - - count = eina_list_count(_vertice_list); - if (!count) - return; - - for (i=0; i<100; i++) { - ran = random() % count; - a = eina_list_nth(_vertice_list, ran); - ran = random() % count; - b = eina_list_nth(_vertice_list, ran); - egraph_vertice_send_blob(_egraph, a, b, 5, 0xFF000000); - } -} - -static void -_cb_add_10n_group(void *data, Evas_Object *obj, void *event_info) -{ - Egraph_Vertice *group, *v; - char buf[64]; - int i; - - if (!_egraph) - return; - - group = egraph_group_add(_egraph, NULL, NULL); - snprintf(buf, sizeof(buf), "%d-group", group->id); - egraph_vertice_rename(_egraph, group, buf); - _group_list = eina_list_append(_group_list, group); - for (i=0; i<10; i++) { - v = egraph_vertice_add(_egraph, NULL, NULL); - snprintf(buf, sizeof(buf), "%d-child(%d)", v->id, group->id); - egraph_vertice_rename(_egraph, v, buf); - egraph_group_vertice_attach(_egraph, group, v); - _vertice_list = eina_list_append(_vertice_list, v); - } -} - - -static void -_cb_show_nodes(void *data, Evas_Object *obj, void *event_info) -{ - egraph_display_vertices_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_show_labels(void *data, Evas_Object *obj, void *event_info) -{ - if (!_egraph) - return; - - egraph_display_names_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_show_edges(void *data, Evas_Object *obj, void *event_info) -{ - if (!_egraph) - return; - - egraph_display_edges_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_use_animations(void *data, Evas_Object *obj, void *event_info) -{ - if (!_egraph) - return; - - egraph_use_animations_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_do_improvements(void *data, Evas_Object *obj, void *event_info) -{ - if (!_egraph) - return; - - egraph_do_improvements_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_use_theme_e(void *data, Evas_Object *obj, void *event_info) -{ - if (!_egraph) - return; - - egraph_theme_edges_set(_egraph, elm_check_state_get(obj)); -} - -static void -_cb_layout_changed(void *data, Evas_Object *obj, void *event_info) -{ - Elm_Object_Item *it; - char *selected; - int layout; - - if (!_egraph) - return; - - it = event_info; - selected = elm_object_item_text_get(it); - layout = EGRAPH_LAYOUT_DEFAULT; - if (!strcmp(selected, "Kamada K.")) - layout = EGRAPH_LAYOUT_KAMADAKAWAI; - else if (!strcmp(selected, "GraphOpt")) - layout = EGRAPH_LAYOUT_GRAPHOPT; - else if (!strcmp(selected, "Fruchterman R.")) - layout = EGRAPH_LAYOUT_FRUCHTERMANREINGOLD; - - egraph_layout_set(_egraph, layout); -} - -static void -_cb_on_done(void *data, Evas_Object *obj, void *event_info) -{ - elm_exit(); -} - -EAPI_MAIN int -elm_main(int argc, char **argv) -{ - Evas_Object *win, *bg, *egraph, *panes; - Evas_Object *bx, *tb, *tb_it, *ck, *sc, *seg_it, *lb; - Evas *evas; - int retval = -1; - - win = elm_win_add(NULL, "panes", ELM_WIN_BASIC); - evas = evas_object_evas_get(win); - elm_win_title_set(win, "Egraph demo app"); - evas_object_smart_callback_add(win, "delete,request", _cb_on_done, NULL); - - bg = elm_bg_add(win); - elm_win_resize_object_add(win, bg); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_color_set(bg, 0, 0, 0, 255); - evas_object_show(bg); - - bx = elm_box_add(win); - elm_box_horizontal_set(bx, EINA_TRUE); - evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, bx); - evas_object_show(bx); - - tb = elm_toolbar_add(win); - elm_toolbar_homogeneous_set(tb, EINA_FALSE); - elm_toolbar_horizontal_set(tb, EINA_FALSE); - elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS); - elm_toolbar_transverse_expanded_set(tb, EINA_TRUE); - elm_object_style_set(tb, "item_centered"); - evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(bx, tb); - evas_object_show(tb); - elm_toolbar_item_append(tb, "object-rotate-right", "Add 1 edge", - _cb_add_edge, NULL); - elm_toolbar_item_append(tb, "object-rotate-right", "Add 50 edges", - _cb_add_50edges, NULL); - elm_toolbar_item_append(tb, "object-rotate-right", "Add 500 edges", - _cb_add_500edges, NULL); - elm_toolbar_item_append(tb, "object-rotate-right", "Add 1 node alone", - _cb_add_node, NULL); - elm_toolbar_item_append(tb, "edit-delete", "Delete all", - _cb_del_edges, NULL); - elm_toolbar_item_append(tb, "object-rotate-right", "Send 100 blobs", - _cb_send_100blobs, NULL); - elm_toolbar_item_append(tb, "object-rotate-right", "Add a 10n group", - _cb_add_10n_group, NULL); - elm_toolbar_item_separator_set(elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL), EINA_FALSE); - lb = elm_label_add(win); - elm_object_text_set(lb, "<b>Layout</b>"); - evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", lb); - sc = elm_segment_control_add(win); - //evas_object_size_hint_weight_set(sc, em->weight.w, em->weight.h); - //evas_object_size_hint_align_set(sc, em->align.x, em->align.y); - seg_it = elm_segment_control_item_add(sc, NULL, "GraphOpt"); - elm_segment_control_item_selected_set(seg_it, EINA_TRUE); - seg_it = elm_segment_control_item_add(sc, NULL, "Kamada K."); - elm_segment_control_item_selected_set(seg_it, EINA_FALSE); - seg_it = elm_segment_control_item_add(sc, NULL, "Fruchterman R."); - elm_segment_control_item_selected_set(seg_it, EINA_FALSE); - evas_object_smart_callback_add(sc, "changed", _cb_layout_changed, NULL); - evas_object_show(sc); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", sc); - //elm_toolbar_item_separator_set(elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL), EINA_FALSE); - ck = elm_check_add(win); - elm_object_text_set(ck, "Show Node"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_show_nodes, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - ck = elm_check_add(win); - elm_object_text_set(ck, "Show Label"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_show_labels, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - ck = elm_check_add(win); - elm_object_text_set(ck, "Show Edges"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_show_edges, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - ck = elm_check_add(win); - elm_object_text_set(ck, "Use animations"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_use_animations, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - ck = elm_check_add(win); - elm_object_text_set(ck, "Do improvements"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_do_improvements, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - ck = elm_check_add(win); - elm_object_text_set(ck, "Use theme for edges"); - elm_check_state_set(ck, EINA_TRUE); - evas_object_show(ck); - evas_object_smart_callback_add(ck, "changed", _cb_use_theme_e, NULL); - tb_it = elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(tb_it, "object", ck); - //elm_toolbar_item_separator_set(elm_toolbar_item_append(tb, NULL, NULL, NULL, NULL), EINA_FALSE); - elm_toolbar_item_append(tb, "exit", "Quit", - _cb_on_done, NULL); - - panes = elm_panes_add(win); - evas_object_size_hint_weight_set(panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(panes, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_panes_content_right_size_set(panes, 0.0); - elm_box_pack_end(bx, panes); - evas_object_show(panes); - - egraph = egraph_new(evas, 1); - if (!egraph) - goto quit; - evas_object_size_hint_weight_set(egraph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(egraph, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(egraph); - elm_object_part_content_set(panes, "left", egraph); - - lb = elm_label_add(win); - elm_object_style_set(lb, "marker"); - evas_object_color_set(lb, 255, 255, 255, 255); - elm_object_text_set(lb, - "Demo application for Egraph<br/>" - "<br/>" - "Enjoy !<br/>"); - evas_object_show(lb); - elm_object_part_content_set(panes, "right", lb); - - evas_object_resize(win, 150, 150); // XXX workaround elm sizing issue - evas_object_show(win); - evas_object_resize(win, 950, 715); - evas_object_show(win); - _egraph = egraph; - _mainwin = win; - - _cb_add_50edges(NULL, NULL, NULL); - - elm_run(); - retval = 0; - -quit: - elm_shutdown(); - return retval; -} -ELM_MAIN() |