Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/bin Modified Files: ewl_embed_test.c Log Message: - a much nicer ewl_embed_test by pfritz. =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/bin/ewl_embed_test.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ewl_embed_test.c 10 Oct 2005 15:40:38 -0000 1.7 +++ ewl_embed_test.c 27 May 2006 16:56:11 -0000 1.8 @@ -1,8 +1,9 @@ -#include <Ewl.h> +#include <Evas.h> #include <Ecore_Evas.h> - -#include <stdlib.h> +#include <Ewl.h> +#include <Edje.h> #include <stdio.h> +#include <ewl-config.h> #if HAVE_CONFIG_H #include "ewl-config.h" @@ -14,93 +15,175 @@ #define __UNUSED__ #endif -static Ewl_Widget *text = NULL; +Evas *evas; +Ecore_Evas *ee; +Evas_Object *edje; +Ewl_Widget *text, *entry; -static void -print_cb(Ewl_Widget *w __UNUSED__, void *ev_data __UNUSED__, - void *user_data) +void _open(Ewl_Widget *w __UNUSED__, void *e __UNUSED__, void *d __UNUSED__) { - Ewl_Widget *entry; - char *txt; - - entry = user_data; - txt = ewl_text_text_get(EWL_TEXT(entry)); - printf("%s\n", txt); - - ewl_text_text_set(EWL_TEXT(entry), "do it"); - ewl_text_text_set(EWL_TEXT(text), txt); - free(txt); + edje_object_signal_emit(edje, "open", "open"); } -static void -move_embed_contents_cb(Ewl_Widget *w, void *ev_data __UNUSED__, - void *user_data) +void _close(Ewl_Widget *w __UNUSED__, void *e __UNUSED__, void *d __UNUSED__) { - ewl_object_geometry_request(EWL_OBJECT(user_data), CURRENT_X(w), - CURRENT_Y(w), CURRENT_W(w), CURRENT_H(w)); + edje_object_signal_emit(edje, "close", "close"); } -int -main(int argc, char **argv) +void _destroy_main_window(Ecore_Evas *ee __UNUSED__) { - Ecore_Evas *ee; - Evas_Object *embobj; - Evas_Object *bg; - Ewl_Widget *embed; - Ewl_Widget *entry; - Ewl_Widget *box; - Ewl_Widget *button; + ewl_main_quit(); + return; +} - ewl_init(&argc, argv); - ecore_evas_init(); +void _resize_window(Ecore_Evas *ee) +{ + Evas_Coord w, h; - if (!(ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 320, 240))) { - printf("Failed to open display, exiting\n"); - exit(1); - } - ecore_evas_title_set(ee, "EWL Embed Test App"); - ecore_evas_name_class_set(ee, "EWL TEST APP", "EWL TEST APP"); - ecore_evas_show(ee); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(edje, w, h); +} - bg = evas_object_rectangle_add(ecore_evas_get(ee)); - evas_object_move(bg, 0, 0); - evas_object_resize(bg, 320, 240); - evas_object_layer_set(bg, 0); - evas_object_color_set(bg, 255, 255, 255, 255); - evas_object_show(bg); - - embed = ewl_embed_new(); - embobj = ewl_embed_evas_set(EWL_EMBED(embed), ecore_evas_get(ee), - EWL_EMBED_EVAS_WINDOW(ecore_evas_software_x11_window_get(ee))); - ewl_embed_focus_set(EWL_EMBED(embed), TRUE); - evas_object_layer_set(embobj, 1); - evas_object_show(embobj); - ewl_widget_show(embed); - - box = ewl_hbox_new(); - ewl_container_child_append(EWL_CONTAINER(embed), box); - ewl_widget_show(box); +void _insert(Ewl_Widget *w __UNUSED__, void *e __UNUSED__, void *d __UNUSED__) +{ + const char * t; - entry = ewl_entry_new(); - ewl_text_text_set(EWL_TEXT(entry), "Type stuff here"); - ewl_container_child_append(EWL_CONTAINER(box), entry); - ewl_widget_show(entry); + t = ewl_text_text_get(EWL_TEXT(entry)); + + if (t) { + ewl_text_text_append(EWL_TEXT(text), "\n"); + ewl_text_text_append(EWL_TEXT(text), t); + ewl_text_clear(EWL_TEXT(entry)); + } +} - button = ewl_button_new(); - ewl_button_label_set(EWL_BUTTON(button), "Print"); - ewl_container_child_append(EWL_CONTAINER(box), button); - ewl_callback_append(button, EWL_CALLBACK_CLICKED, print_cb, entry); - ewl_widget_show(button); - ewl_callback_append(embed, EWL_CALLBACK_CONFIGURE, - move_embed_contents_cb, box); +int main(int argc, char **argv) +{ + Ewl_Widget *wg, *c, *vbox; + Ewl_Widget *emb; + Evas_Object *eo; + Evas_Coord x, y, w, h; + + /* + * initialize + */ + evas_init(); + ecore_evas_init(); + ewl_init(&argc, argv); + + /* + * setup ecore evas + */ + ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 300, 300); + ecore_evas_title_set(ee, "Ewl_Embed Test"); + ecore_evas_name_class_set(ee, "Ewl_Embed_Test", "Ewl"); + ecore_evas_callback_delete_request_set(ee, _destroy_main_window); + ecore_evas_callback_resize_set(ee, _resize_window); + ecore_evas_size_min_set(ee, 210, 230); + ecore_evas_show(ee); + /* + * get evas and setup the edje + */ + evas = ecore_evas_get(ee); + edje = edje_object_add(evas); + + if (!edje_object_file_set(edje, PACKAGE_DATA_DIR"/themes/ewl_embed_test.edj", "main")) { + fprintf(stderr, "Error in: %s\n", PACKAGE_DATA_DIR"/themes/ewl_embed_test.edj"); + return 1; + } + evas_object_move(edje, 0, 0); + evas_object_resize(edje, 300, 300); + evas_object_show(edje); + + /* + * Setup the ewl embed + */ + emb = ewl_embed_new(); + ewl_object_fill_policy_set(EWL_OBJECT(emb), EWL_FLAG_FILL_ALL); + eo = ewl_embed_evas_set(EWL_EMBED(emb), evas, + (void *) ecore_evas_software_x11_window_get(ee)); + ewl_embed_focus_set(EWL_EMBED(emb), TRUE); + + /* + * swallow it into the edje + */ + edje_object_part_geometry_get(edje, "swallow", &x, &y, &w, &h); + evas_object_move(eo, x, y); + evas_object_resize(eo, w, h); + edje_object_part_swallow(edje, "swallow", eo); + evas_object_show(eo); + + /* + * fill it with content + */ + vbox = ewl_vbox_new(); + ewl_container_child_append(EWL_CONTAINER(emb), vbox); + ewl_widget_show(vbox); + + wg = ewl_scrollpane_new(); + ewl_container_child_append(EWL_CONTAINER(vbox), wg); + ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL); + ewl_widget_show(wg); + text = ewl_text_new(); - ewl_text_text_set(EWL_TEXT(text), NULL); - ewl_container_child_append(EWL_CONTAINER(box), text); + ewl_container_child_append(EWL_CONTAINER(wg), text); + ewl_text_text_append(EWL_TEXT(text), + "You can use EWL in side a evas/edje only app.\n" + "It can actually behave like a normal evas object\n" + "So forget to figure out how to write an entry object,\n" + "simply use the ewl widget! :)\n\n"); + ewl_object_fill_policy_set(EWL_OBJECT(text), EWL_FLAG_FILL_HFILL | + EWL_FLAG_FILL_VFILL); ewl_widget_show(text); - ecore_main_loop_begin(); + c = ewl_hbox_new(); + ewl_object_fill_policy_set(EWL_OBJECT(c), EWL_FLAG_FILL_NONE | + EWL_FLAG_FILL_HFILL); + ewl_container_child_append(EWL_CONTAINER(vbox), c); + ewl_widget_show(c); + + entry = ewl_entry_new(); + ewl_container_child_append(EWL_CONTAINER(c), entry); + ewl_entry_editable_set(EWL_ENTRY(entry), TRUE); + ewl_entry_multiline_set(EWL_ENTRY(entry), FALSE); + ewl_callback_append(entry, EWL_CALLBACK_VALUE_CHANGED, _insert, NULL); + ewl_widget_show(entry); + + wg = ewl_button_new(); + //ewl_button_stock_type_set(EWL_BUTTON(wg), EWL_STOCK_OK); + ewl_button_label_set(EWL_BUTTON(wg), "append"); + ewl_object_fill_policy_set(EWL_OBJECT(wg), EWL_FLAG_FILL_SHRINK); + ewl_container_child_append(EWL_CONTAINER(c), wg); + ewl_callback_append(wg, EWL_CALLBACK_CLICKED, _insert, NULL); + ewl_widget_show(wg); + + wg = ewl_separator_new(); + ewl_container_child_append(EWL_CONTAINER(vbox), wg); + ewl_widget_show(wg); + + c = ewl_hbox_new(); + ewl_object_fill_policy_set(EWL_OBJECT(c), EWL_FLAG_FILL_NONE | + EWL_FLAG_FILL_HFILL); + ewl_container_child_append(EWL_CONTAINER(vbox), c); + ewl_widget_show(c); + + wg = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(wg), "open"); + ewl_widget_show(wg); + ewl_container_child_append(EWL_CONTAINER(c), wg); + ewl_callback_append(wg, EWL_CALLBACK_CLICKED, _open, NULL); + + wg = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(wg), "close"); + ewl_widget_show(wg); + ewl_container_child_append(EWL_CONTAINER(c), wg); + ewl_callback_append(wg, EWL_CALLBACK_CLICKED, _close, NULL); + ewl_widget_show(emb); + + edje_object_signal_emit(edje, "open", "open"); + ewl_main(); return 0; } ------------------------------------------------------- All the advantages of Linux Managed Hosting--Without the Cost and Risk! Fully trained technicians. The highest number of Red Hat certifications in the hosting industry. Fanatical Support. Click to learn more http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs