From 4c6a9cdda8dc597a71c7de0094987acf40b82a2f Mon Sep 17 00:00:00 2001 From: raster Date: Wed, 10 Aug 2011 06:00:04 +0000 Subject: [PATCH] and beef up getting started with a longer example git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62287 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 97 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 84 insertions(+), 13 deletions(-) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 55d46d8..b2f9870 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -50,18 +50,18 @@ organisations behind this, as listed in the @ref authors page. * * To write an Elementary app, you can get started with the following: * - * @code - * #include - * EAPI int - * elm_main(int argc, char **argv) - * { - * // create window(s) here and do any application init - * elm_run(); // run main loop - * elm_shutdown(); // after mainloop finishes running, shutdown - * return 0; // exit 0 for exit code - * } - * ELM_MAIN() - * @endcode +@code +#include +EAPI int +elm_main(int argc, char **argv) +{ + // create window(s) here and do any application init + elm_run(); // run main loop + elm_shutdown(); // after mainloop finishes running, shutdown + return 0; // exit 0 for exit code +} +ELM_MAIN() +@endcode * * To use autotools (which helps in many ways in the long run, like being able * to immediately create releases of your software directly from your tree @@ -176,7 +176,78 @@ make maintainer-clean * There is a more advanced way of making use of the quicklaunch infrastructure * in Elementary (which will not be covered here due to its more advanced * nature). - */ + * + * Now let's actually create an interactive "Hello World" gui that you can + * click the ok button to exit. It's more code because this now does something + * much more significant, but it's still very simple: + * +@code +#include + +static void +on_done(void *data, Evas_Object *obj, void *event_info) +{ + // quit the mainloop (elm_run function will return) + elm_exit(); +} + +EAPI int +elm_main(int argc, char **argv) +{ + Evas_Object *win, *bg, *box, *lab, *btn; + + // new window - do the usual and give it a name, title and delete handler + win = elm_win_add(NULL, "hello", ELM_WIN_BASIC); + elm_win_title_set(win, "Hello"); + // when the user clicks "close" on a window there is a request to delete + evas_object_smart_callback_add(win, "delete,request", on_done, NULL); + + // add a standard bg + bg = elm_bg_add(win); + // add object as a resize object for the window (controls window minimum + // size as well as gets resized if window is resized) + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + + // add a box object - default is vertical. a box holds children in a row, + // either horizontally or vertically. nothing more. + box = elm_box_add(win); + // make the box hotizontal + elm_box_horizontal_set(box, EINA_TRUE); + // add object as a resize object for the window (controls window minimum + // size as well as gets resized if window is resized) + elm_win_resize_object_add(win, box); + evas_object_show(box); + + // add a label widget, set the text and put it in the pad frame + lab = elm_label_add(win); + // set default text of the label + elm_object_text_set(lab, "Hello out there world!"); + // pack the label at the end of the box + elm_box_pack_end(box, lab); + evas_object_show(lab); + + // add an ok button + btn = elm_button_add(win); + // set default text of button to "OK" + elm_object_text_set(btn, "OK"); + // pack the button at the end of the box + elm_box_pack_end(box, btn); + evas_object_show(btn); + // call on_done when button is clicked + evas_object_smart_callback_add(btn, "clicked", on_done, NULL); + + // now we are done, show the window + evas_object_show(win); + + // run the mainloop and process events and callbacks + elm_run(); + return 0; +} +ELM_MAIN() +@endcode + * + */ /** @page authors Authors -- 2.7.4