Enlightenment CVS committal Author : codewarrior Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/bin Modified Files: etk_canvas_test.c Log Message: [Etk_Canvas] Initial code to support random widget placement within the canvas. Not done. Needs formatting. API functions missing. Works. (= =================================================================== RCS file: /cvs/e/e17/libs/etk/src/bin/etk_canvas_test.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- etk_canvas_test.c 28 Sep 2007 19:52:48 -0000 1.15 +++ etk_canvas_test.c 11 Apr 2008 03:25:19 -0000 1.16 @@ -3,15 +3,84 @@ #include <stdlib.h> #include "config.h" +#include "Ecore.h" + +static Etk_Widget *win = NULL; +Etk_Widget *canvas; + static void _etk_test_canvas_object_add(void *data); +static Ecore_Timer *_etk_test_canvas_timer = NULL; +static Ecore_Timer *_etk_test_canvas_timer2 = NULL; + +static int _etk_test_canvas_update(void *data); +static int _etk_test_canvas_update2(void *data); + +/* Creates the vbox for the progress bars */ +static void etk_test_canvas_progress_bars_create(int x, int y) +{ + Etk_Widget *vbox; + Etk_Widget *pbar; + Etk_Widget *pbar2; + + vbox = etk_vbox_new(ETK_TRUE, 5); + + pbar = etk_progress_bar_new_with_text("0% done"); + etk_box_append(ETK_BOX(vbox), pbar, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); + + pbar2 = etk_progress_bar_new_with_text("Loading..."); + etk_progress_bar_pulse_step_set(ETK_PROGRESS_BAR(pbar2), 0.015); + etk_box_append(ETK_BOX(vbox), pbar2, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); + + _etk_test_canvas_timer = ecore_timer_add(0.05, _etk_test_canvas_update, pbar); + _etk_test_canvas_timer2 = ecore_timer_add(0.025, _etk_test_canvas_update2, pbar2); + + etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar), ETK_CALLBACK(ecore_timer_del), _etk_test_canvas_timer); + etk_signal_connect_swapped_by_code(ETK_OBJECT_DESTROYED_SIGNAL, ETK_OBJECT(pbar2), ETK_CALLBACK(ecore_timer_del), _etk_test_canvas_timer2); + + etk_canvas_widget_add(ETK_CANVAS(canvas), vbox); + etk_canvas_widget_move(ETK_CANVAS(canvas), vbox, x, y); +} + +/* Updates the first progress bar */ +static int _etk_test_canvas_update(void *data) +{ + Etk_Widget *pbar; + double fraction; + char text[32]; + + pbar = data; + + fraction = etk_progress_bar_fraction_get(ETK_PROGRESS_BAR(pbar)); + fraction += 0.01; + + if (fraction > 1.0) + fraction = 0.0; + + snprintf(text, sizeof(text), "%d%% done", (int)(fraction * 100.0)); + etk_progress_bar_text_set(ETK_PROGRESS_BAR(pbar), text); + etk_progress_bar_fraction_set(ETK_PROGRESS_BAR(pbar), fraction); + + return 1; +} + +/* Updates the second progress bar */ +static int _etk_test_canvas_update2(void *data) +{ + Etk_Widget *pbar; + + pbar = data; + etk_progress_bar_pulse(ETK_PROGRESS_BAR(pbar)); + + return 1; +} + /* Creates the window for the canvas test */ void etk_test_canvas_window_create(void *data) { - static Etk_Widget *win = NULL; - Etk_Widget *canvas; Etk_Widget *vbox; Etk_Widget *button; + int i; if (win) { @@ -28,13 +97,19 @@ etk_container_add(ETK_CONTAINER(win), vbox); canvas = etk_canvas_new(); - etk_widget_size_request_set(canvas, 300, 200); + etk_widget_size_request_set(canvas, 500, 350); etk_box_append(ETK_BOX(vbox), canvas, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); button = etk_button_new_from_stock(ETK_STOCK_LIST_ADD); etk_button_label_set(ETK_BUTTON(button), "Add object"); etk_signal_connect_swapped_by_code(ETK_BUTTON_CLICKED_SIGNAL, ETK_OBJECT(button), ETK_CALLBACK(_etk_test_canvas_object_add), canvas); etk_box_append(ETK_BOX(vbox), button, ETK_BOX_START, ETK_BOX_NONE, 0); + + /* add some progess bars to the canvas */ + for (i = 0; i < 3; i++) + { + etk_test_canvas_progress_bars_create(50 + 50 * i, 50 + 50 * i); + } etk_widget_show_all(win); } ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs