From: <enl...@li...> - 2001-04-14 01:23:46
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl Log Message: Little o E W L: The object hierachy is kinda decent. Need some more work, And for the widget's existing * H and V Box's - I need to rework the configure callback, atm it doesnt act as i want really.. * Window widget - fairly clean, need lots of more functions to manipulate window's, but first i need to clean up the callback name's the current callback names arent gonna stay for long.. * Text widget - This is very unclean, I just made a bad hack to support line break's, the ewl_set_text is _very_ unclean I think I'm gonna use some string utilites I'll put in ewd * Button widget - probably the most complete widget, needs some more work but with time it will get clean enough.. * Entry widget - Kinda decent, but i need to add text selection support.. I think I'll put that with the ewl_text widget.. EWL is very very unclean, this is what ive put together in a week... as it looks now i will only add a menu widget... then i will probably fix mem leaks and finish the current widget's, i figure this will take probably about one week. Im also planning on using pthreads for ewl, but that might take a while, and with any luck, be optional. Thats it for now.... you will need latest EWD, RbdPngn will make a commit any minute.. Status: Vendor Tag: smugg Release Tags: start N e17/libs/ewl/Makefile.am N e17/libs/ewl/README N e17/libs/ewl/AUTHORS N e17/libs/ewl/COPYING N e17/libs/ewl/autogen.sh N e17/libs/ewl/ewl.spec N e17/libs/ewl/ewl.m4 N e17/libs/ewl/aclocal.m4 N e17/libs/ewl/configure.in N e17/libs/ewl/ChangeLog N e17/libs/ewl/ltconfig N e17/libs/ewl/ltmain.sh N e17/libs/ewl/INSTALL N e17/libs/ewl/stamp-h.in N e17/libs/ewl/acsite.m4 N e17/libs/ewl/config.h.in N e17/libs/ewl/acconfig.h N e17/libs/ewl/ewl-config.in N e17/libs/ewl/NEWS N e17/libs/ewl/src/Ewl.h N e17/libs/ewl/src/ewl_window.h N e17/libs/ewl/src/ewl_widget.h N e17/libs/ewl/src/ewl_object.h N e17/libs/ewl/src/ewl_button.h N e17/libs/ewl/src/ewl_widget.c N e17/libs/ewl/src/Makefile.am N e17/libs/ewl/src/ewl_button.c N e17/libs/ewl/src/ewl_object.c N e17/libs/ewl/src/ewl_window.c N e17/libs/ewl/src/ewl_container.h N e17/libs/ewl/src/ewl_callback.c N e17/libs/ewl/src/ewl_theme.c N e17/libs/ewl/src/ewl_container.c N e17/libs/ewl/src/ewl_theme.h N e17/libs/ewl/src/ewl_box.c N e17/libs/ewl/src/ewl_callback.h N e17/libs/ewl/src/ewl_misc.h N e17/libs/ewl/src/ewl_events.c N e17/libs/ewl/src/ewl_misc.c N e17/libs/ewl/src/ewl_entry.c N e17/libs/ewl/src/ewl_prefs.h N e17/libs/ewl/src/ewl_prefs.c N e17/libs/ewl/src/ewl_entry.h N e17/libs/ewl/src/ewl_events.h N e17/libs/ewl/src/ewl_text.c N e17/libs/ewl/src/ewl_text.h N e17/libs/ewl/src/ewl_box.h N e17/libs/ewl/src/ewl_macros.h N e17/libs/ewl/test/Makefile.am N e17/libs/ewl/test/ewl_test.c N e17/libs/ewl/data/config/system.db N e17/libs/ewl/data/orig/tile.png N e17/libs/ewl/data/orig/m.xcf N e17/libs/ewl/data/orig/mb1.png N e17/libs/ewl/data/orig/mb2.png N e17/libs/ewl/data/orig/mb3.png N e17/libs/ewl/data/orig/mb4.png N e17/libs/ewl/data/orig/mb5.png N e17/libs/ewl/data/orig/mb6.png N e17/libs/ewl/data/orig/mb7.png N e17/libs/ewl/data/orig/mb8.png N e17/libs/ewl/data/orig/mbb.png N e17/libs/ewl/data/orig/tile_semi_alpha.png N e17/libs/ewl/data/orig/tile_hi.png N e17/libs/ewl/data/themes/default/appearance/menu/base.bits.db N e17/libs/ewl/data/themes/default/appearance/menu/selected-0.submenu-0.bits.db N e17/libs/ewl/data/themes/default/appearance/menu/selected-0.submenu-1.bits.db N e17/libs/ewl/data/themes/default/appearance/menu/selected-1.submenu-0.bits.db N e17/libs/ewl/data/themes/default/appearance/menu/selected-1.submenu-1.bits.db N e17/libs/ewl/data/themes/default/appearance/menu/separator.bits.db N e17/libs/ewl/data/themes/default/appearance/box/horisontal/base.bits.db N e17/libs/ewl/data/themes/default/appearance/box/vertical/base.bits.db N e17/libs/ewl/data/themes/default/appearance/button/default/base.bits.db N e17/libs/ewl/data/themes/default/appearance/button/default/hilited.bits.db N e17/libs/ewl/data/themes/default/appearance/button/default/clicked.bits.db N e17/libs/ewl/data/themes/default/appearance/button/check/check-0.bits.db N e17/libs/ewl/data/themes/default/appearance/button/check/check-1.bits.db N e17/libs/ewl/data/themes/default/appearance/button/radio/radio-0.bits.db N e17/libs/ewl/data/themes/default/appearance/button/radio/radio-1.bits.db N e17/libs/ewl/data/themes/default/appearance/entry/default/base.bits.db N e17/libs/ewl/data/themes/default/appearance/entry/cursor/base.bits.db N e17/libs/ewl/data/themes/default/appearance/entry/selection/base.bits.db N e17/libs/ewl/data/themes/default/appearance/fonts/borzoib.ttf N e17/libs/ewl/data/themes/default/appearance/fonts/andover.ttf N e17/libs/ewl/data/themes/default/appearance/text/default/borzoib.ttf N e17/libs/ewl/data/themes/default/appearance/window/default/base.bits.db No conflicts created by this import |
From: <enl...@li...> - 2001-04-14 19:42:54
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/menu/default Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/menu/default added to the repository |
From: <enl...@li...> - 2001-04-14 19:59:31
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/menu Removed Files: base.bits.db selected-0.submenu-0.bits.db selected-0.submenu-1.bits.db selected-1.submenu-0.bits.db selected-1.submenu-1.bits.db separator.bits.db Log Message: Fixed most of the clipping stuff. Now only widget's with child's get clipped. |
From: <enl...@li...> - 2001-04-14 19:59:31
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/menu/default Added Files: base.bits.db selected-0.submenu-0.bits.db selected-0.submenu-1.bits.db selected-1.submenu-0.bits.db selected-1.submenu-1.bits.db separator.bits.db Log Message: Fixed most of the clipping stuff. Now only widget's with child's get clipped. |
From: <enl...@li...> - 2001-04-14 19:59:31
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/test Modified Files: Makefile.am ewl_test.c Log Message: Fixed most of the clipping stuff. Now only widget's with child's get clipped. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/Makefile.am,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- Makefile.am 2001/04/14 01:16:40 1.1.1.1 +++ Makefile.am 2001/04/14 19:59:30 1.2 @@ -7,6 +7,5 @@ bin_PROGRAMS = ewl_test ewl_test_DEPENDENCIES = $(top_builddir)/src/libewl.la ewl_test_SOURCES = ewl_test.c -# To debug.. uncomment this... -#ewl_test_LDFLAGS = -static +ewl_test_LDFLAGS = -static ewl_test_LDADD = $(top_builddir)/src/libewl.la =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/ewl_test.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_test.c 2001/04/14 01:16:40 1.1.1.1 +++ ewl_test.c 2001/04/14 19:59:31 1.2 @@ -18,33 +18,32 @@ ewl_init(argc, argv); window = ewl_window_new(); + ewl_window_set_title(window, "EWL Demonstation Application"); ewl_widget_show(window); ewl_window_resize(window, 299, 500); -/* ewl_window_set_min_size(window, 299, 267); - ewl_window_set_max_size(window, 640, 480); -*/ + vbox[0] = ewl_box_new(Ewl_Box_Type_Vertical); ewl_container_append_child(window, vbox[0]); ewl_widget_show(vbox[0]); vbox[2] = ewl_box_new(Ewl_Box_Type_Vertical); - ewl_container_prepend_child(vbox[0], vbox[2]); + ewl_container_append_child(vbox[0], vbox[2]); ewl_widget_show(vbox[2]); text[0] = ewl_text_new(); - ewl_container_append_child(vbox[2], text[0]); + ewl_container_prepend_child(vbox[0], text[0]); ewl_widget_show(text[0]); - ewl_text_set_text(text[0], "Guess what button will change my font."); + ewl_text_set_text(text[0], "Blehe blaha bleho\nBlah blah blah\nBleh bleh blaha!"); text[1] = ewl_text_new(); ewl_container_append_child(vbox[2], text[1]); ewl_widget_show(text[1]); - ewl_text_set_text(text[1], "Bleh blah bloh\nBlahblah!!!\n"); + ewl_text_set_text(text[1], "Bleh blah bloh\nBlahblah!!!"); entry[0] = ewl_entry_new(); ewl_container_append_child(vbox[2], entry[0]); ewl_widget_show(entry[0]); - ewl_entry_set_text(entry[0], "Want to play with me ?"); + ewl_entry_set_text(entry[0], "Play with me!"); vbox[1] = ewl_box_new(Ewl_Box_Type_Vertical); ewl_container_append_child(vbox[0], vbox[1]); @@ -105,7 +104,6 @@ Ewl_Widget * text; Ewl_Widget * vbox = NULL; char * str; - int i; CHECK_PARAM_POINTER("widget", widget); @@ -122,14 +120,15 @@ ewl_container_append_child(window2, vbox); ewl_widget_show(vbox); - str = strdup("EWL has a window, text,\n" - "h and v box's, and a entry widget.\n" - "Every widget get layered and clipped,\n" - "With evas and ebits, EWL is also\n" - "EWL is way far from complete, but one\n" - "day it will reach a point where i will\n" - "concider this done.\n" - " \n" + str = strdup("Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" + "Bleh bleh bleh blah blah blah bleh!\n" " // smugg"); text = ewl_text_new(); ewl_container_append_child(vbox, text); |
From: <enl...@li...> - 2001-04-14 20:00:01
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/src Modified Files: Ewl.h ewl_box.c ewl_button.c ewl_callback.c ewl_callback.h ewl_container.c ewl_container.h ewl_entry.c ewl_macros.h ewl_text.c ewl_text.h ewl_widget.c ewl_widget.h ewl_window.c Log Message: Fixed most of the clipping stuff. Now only widget's with child's get clipped. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Ewl.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- Ewl.h 2001/04/14 01:16:36 1.1.1.1 +++ Ewl.h 2001/04/14 19:59:30 1.2 @@ -44,7 +44,6 @@ typedef struct _ewl_container Ewl_Container; -/* Ewl Base Classes */ #include <ewl_object.h> #include <ewl_widget.h> #include <ewl_container.h> =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_box.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_box.c 2001/04/14 19:59:30 1.2 @@ -14,11 +14,8 @@ { Ewl_Box * box = NULL; - box = malloc(sizeof(Ewl_Box)); + box = NEW(Ewl_Box, 1); - if (!box) - return NULL; - ewl_box_init(EWL_WIDGET(box), type); return EWL_WIDGET(box); @@ -31,12 +28,6 @@ memset(EWL_BOX(widget), 0, sizeof(Ewl_Box)); - EWL_BOX(widget)->type = type; - - EWL_BOX(widget)->spacing = 5; - - widget->container.recursive = TRUE; - ewl_callback_append(widget, Ewl_Callback_Realize, ewl_box_realize, NULL); ewl_callback_append(widget, Ewl_Callback_Show, @@ -48,6 +39,11 @@ ewl_callback_append(widget, Ewl_Callback_Configure, ewl_box_configure, NULL); + widget->container.recursive = TRUE; + + EWL_BOX(widget)->type = type; + EWL_BOX(widget)->spacing = 5; + EWL_OBJECT(widget)->current.w = 10; EWL_OBJECT(widget)->current.h = 10; EWL_OBJECT(widget)->maximum.w = 2024; @@ -68,8 +64,7 @@ ewl_widget_set_ebit(widget, ewl_theme_ebit_get("box", "vertical", "base")); - return; - func_data = NULL; + ewl_container_new(widget); } static void @@ -78,6 +73,8 @@ CHECK_PARAM_POINTER("widget", widget); ebits_show(widget->ebits_object); + + ewl_container_set_clip(widget); } static void @@ -94,7 +91,9 @@ CHECK_PARAM_POINTER("widget", widget); ebits_hide(widget->ebits_object); - ebits_free(widget->ebits_object); + ebits_free(widget->ebits_object); + + FREE(EWL_BOX(widget)); } static void @@ -102,19 +101,19 @@ { CHECK_PARAM_POINTER("widget", widget); + EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; + EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; + EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; + EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->request.h; + if (EWL_OBJECT(widget)->realized) { ebits_move(widget->ebits_object, EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); - ewl_widget_clip_box_resize(widget); + ewl_container_clip_box_resize(widget); } - EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; - EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; - EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; - EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->request.h; - if (!widget->container.children || !widget->container.children->nodes) return; @@ -238,6 +237,7 @@ CHECK_PARAM_POINTER("widget", widget); EWL_BOX(widget)->type = type; + ewl_callback_call(widget, Ewl_Callback_Configure); } @@ -247,6 +247,7 @@ CHECK_PARAM_POINTER("widget", widget); EWL_BOX(widget)->spacing = spacing; + ewl_callback_call(widget, Ewl_Callback_Configure); } @@ -256,5 +257,6 @@ CHECK_PARAM_POINTER("widget", widget); EWL_BOX(widget)->homogeneous = homogeneous; + ewl_callback_call(widget, Ewl_Callback_Configure); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_button.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_button.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_button.c 2001/04/14 19:59:30 1.2 @@ -1,8 +1,7 @@ #include <Ewl.h> - -static void ewl_button_init(Ewl_Widget * widget, void * func_data); +static void ewl_button_init(Ewl_Widget * widget, Ewl_Button_Type type); static void ewl_button_realize(Ewl_Widget * widget, void * func_data); static void ewl_button_show(Ewl_Widget * widget, void * func_data); static void ewl_button_hide(Ewl_Widget * widget, void * func_data); @@ -23,28 +22,23 @@ ewl_button_new(Ewl_Button_Type type) { Ewl_Button * button = NULL; - - button = malloc(sizeof(Ewl_Button)); - if (!button) - return NULL; + button = NEW(Ewl_Button, 1); - ewl_button_init(EWL_WIDGET(button), (void *) type); + ewl_button_init(EWL_WIDGET(button), type); return EWL_WIDGET(button); } static void -ewl_button_init(Ewl_Widget * widget, void * func_data) +ewl_button_init(Ewl_Widget * widget, Ewl_Button_Type type) { CHECK_PARAM_POINTER("widget", widget); + /* Zero out bogus values before adding anything */ memset(EWL_BUTTON(widget), 0, sizeof(Ewl_Button)); - EWL_BUTTON(widget)->type = (Ewl_Button_Type) func_data; - - widget->container.recursive = FALSE; - + /* Add necessery callback's */ ewl_callback_append(widget, Ewl_Callback_Realize, ewl_button_realize, NULL); ewl_callback_append(widget, Ewl_Callback_Show, @@ -68,12 +62,17 @@ ewl_callback_append(widget, Ewl_Callback_Focus_Out, ewl_button_focus_out, NULL); + /* Do this so the button's child wont get any events */ + widget->container.recursive = FALSE; + + EWL_BUTTON(widget)->type = type; + EWL_OBJECT(widget)->current.w = 85; EWL_OBJECT(widget)->current.h = 35; EWL_OBJECT(widget)->minimum.w = 85; EWL_OBJECT(widget)->minimum.h = 35; - EWL_OBJECT(widget)->maximum.w = 2024; - EWL_OBJECT(widget)->maximum.h = 2024; + EWL_OBJECT(widget)->maximum.w = 256; + EWL_OBJECT(widget)->maximum.h = 256; EWL_OBJECT(widget)->request.w = 85; EWL_OBJECT(widget)->request.h = 35; } @@ -83,9 +82,12 @@ { CHECK_PARAM_POINTER("widget", widget); + /* Lets do only this for now */ EWL_BUTTON(widget)->state = Ewl_Button_State_Normal; ewl_widget_set_ebit(widget,ewl_theme_ebit_get("button", "default", "base")); + + ewl_container_new(widget); } static void @@ -93,7 +95,11 @@ { CHECK_PARAM_POINTER("widget", widget); + /* Prehaps show it's parent automatically ? + * But that sounds more like the ewl_widget_show's responsibility */ ebits_show(widget->ebits_object); + + ewl_container_set_clip(widget); } static void @@ -101,6 +107,7 @@ { CHECK_PARAM_POINTER("widget", widget); + /* Maybe hide children to ? */ ebits_hide(widget->ebits_object); } @@ -109,14 +116,15 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_hide(widget->ebits_object); ebits_free(widget->ebits_object); + + FREE(EWL_BUTTON(widget)); } static void ewl_button_configure(Ewl_Widget * widget, void * func_data) { - Ewl_Widget * child; + Ewl_Widget * child = NULL; CHECK_PARAM_POINTER("widget", widget); @@ -154,11 +162,8 @@ ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); - - if (!widget->container.clip_box) - ewl_widget_clip_box_create(widget); - ewl_widget_clip_box_resize(widget); + ewl_container_clip_box_resize(widget); EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->request.h; @@ -171,10 +176,9 @@ static void ewl_button_key_down(Ewl_Widget * widget, void * func_data) { - Ev_Key_Down * ev; + Ev_Key_Down * ev = NULL; CHECK_PARAM_POINTER("widget", widget); - CHECK_PARAM_POINTER("func_data", func_data); ev = func_data; @@ -190,10 +194,9 @@ static void ewl_button_key_up(Ewl_Widget * widget, void * func_data) { - Ev_Key_Up * ev; + Ev_Key_Up * ev = NULL; CHECK_PARAM_POINTER("widget", widget); - CHECK_PARAM_POINTER("func_data", func_data); ev = func_data; @@ -209,10 +212,9 @@ static void ewl_button_mouse_down(Ewl_Widget * widget, void * func_data) { - Ev_Mouse_Down * ev; + Ev_Mouse_Down * ev = NULL; CHECK_PARAM_POINTER("widget", widget); - CHECK_PARAM_POINTER("func_data", func_data); ev = func_data; @@ -226,10 +228,9 @@ static void ewl_button_mouse_up(Ewl_Widget * widget, void * func_data) { - Ev_Mouse_Up * ev; + Ev_Mouse_Up * ev = NULL; CHECK_PARAM_POINTER("widget", widget); - CHECK_PARAM_POINTER("func_data", func_data); ev = func_data; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_callback.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_callback.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_callback.c 2001/04/14 19:59:30 1.2 @@ -6,10 +6,11 @@ { Ewl_Callback * callback = NULL; - callback = malloc(sizeof(Ewl_Callback)); + callback = NEW(Ewl_Callback, 1); memset(callback, 0, sizeof(Ewl_Callback)); + callback->widget = widget; callback->func = func; callback->func_data = func_data; callback->type = type; @@ -28,9 +29,10 @@ { Ewl_Callback * callback = NULL; - callback = malloc(sizeof(Ewl_Callback)); + callback = NEW(Ewl_Callback, 1);; callback = memset(callback, 0, sizeof(Ewl_Callback)); + callback->widget = widget; callback->func = func; callback->func_data = func_data; callback->type = type; @@ -61,7 +63,7 @@ void ewl_callback_call(Ewl_Widget * widget, Ewl_Callback_Type type) { - Ewl_Callback * callback; + Ewl_Callback * callback = NULL; if (!widget->callbacks[type] || ewd_list_is_empty(widget->callbacks[type])) return; @@ -69,14 +71,14 @@ ewd_list_goto_first(widget->callbacks[type]); while ((callback = ewd_list_next(widget->callbacks[type])) != NULL) { - callback->func(EWL_WIDGET(widget), callback->func_data); + callback->func(callback->widget, callback->func_data); } } void ewl_callback_call_with_data(Ewl_Widget * widget, Ewl_Callback_Type type, void * func_data) { - Ewl_Callback * callback; + Ewl_Callback * callback = NULL; if (!widget->callbacks[type] || ewd_list_is_empty(widget->callbacks[type])) return; @@ -84,6 +86,6 @@ ewd_list_goto_first(widget->callbacks[type]); while ((callback = ewd_list_next(widget->callbacks[type])) != NULL) { - callback->func(EWL_WIDGET(widget), func_data); + callback->func(callback->widget, func_data); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_callback.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_callback.h 2001/04/14 01:16:37 1.1.1.1 +++ ewl_callback.h 2001/04/14 19:59:30 1.2 @@ -5,7 +5,9 @@ typedef struct _ewl_callback Ewl_Callback; struct _ewl_callback { - void (* func) (Ewl_Widget * widget, void * func_data); + Ewl_Widget * widget; + void (* func) (Ewl_Widget * widget, + void * func_data); void * func_data; Ewl_Callback_Type type; }; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_container.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_container.c 2001/04/14 19:59:30 1.2 @@ -1,17 +1,13 @@ #include <Ewl.h> -Ewl_Container * -ewl_container_new() +void +ewl_container_new(Ewl_Widget * widget) { - Ewl_Container * container = NULL; - - container = malloc(sizeof(Ewl_Container)); - memset(container, 0, sizeof(Ewl_Container)); - - container->children = ewd_list_new(); + CHECK_PARAM_POINTER("widget", widget); - return container; + widget->container.children = ewd_list_new(); + ewl_container_clip_box_create(widget); } void @@ -25,9 +21,10 @@ child->parent = parent; EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; + + if (ewd_list_is_empty(parent->container.children)) + ewl_container_show_clip(parent); - if (!parent->container.children) - parent->container.children = ewd_list_new(); if (parent->container.free_cb) ewd_list_set_free_cb(parent->container.children, parent->container.free_cb); @@ -45,11 +42,15 @@ child->evas_window = EWL_WIDGET(parent)->evas_window; child->parent = parent; - EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+5; + EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; - if (!parent->container.children) - parent->container.children = ewd_list_new(); + if (ewd_list_is_empty(parent->container.children)) + ewl_container_show_clip(parent); + if (parent->container.free_cb) + ewd_list_set_free_cb(parent->container.children, + parent->container.free_cb); + ewd_list_prepend(parent->container.children, child); } @@ -114,4 +115,76 @@ } return NULL; +} + +void +ewl_container_clip_box_create(Ewl_Widget * widget) +{ + if (!widget->container.clip_box) { + int l = 0, r = 0, t = 0, b = 0; + + if (widget->ebits_object) + ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + + widget->container.clip_box = evas_add_rectangle(widget->evas); + evas_set_color(widget->evas, widget->container.clip_box, + 255, 255, 255, 255); + evas_move(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.x +l, EWL_OBJECT(widget)->current.y +t); + evas_resize(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.w - (l+r), + EWL_OBJECT(widget)->current.h - (t+b)); + evas_set_layer(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->layer); + } +} + +void +ewl_container_clip_box_resize(Ewl_Widget * widget) +{ + if (widget->container.clip_box) { + int l = 0, r = 0, t = 0, b = 0; + + if (widget->ebits_object) + ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + + evas_move(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->request.x +l, EWL_OBJECT(widget)->request.y +t); + evas_resize(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->request.w - (l+r), + EWL_OBJECT(widget)->request.h - (t+b)); + } +} + +void +ewl_container_set_clip(Ewl_Widget * widget) +{ + CHECK_PARAM_POINTER("widget", widget); + + if (widget->parent && + widget->parent->container.clip_box && + widget->container.clip_box) + evas_set_clip(widget->evas, widget->container.clip_box, + widget->parent->container.clip_box); + + if (widget->ebits_object) + ebits_set_clip(widget->ebits_object,widget->parent->container.clip_box); +} + +void +ewl_container_show_clip(Ewl_Widget * widget) +{ + CHECK_PARAM_POINTER("widget", widget); + + if (widget->container.clip_box) + evas_show(widget->evas, widget->container.clip_box); +} + +void +ewl_container_hide_clip(Ewl_Widget * widget) +{ + CHECK_PARAM_POINTER("widget", widget); + + if (widget->container.clip_box) + evas_hide(widget->evas, widget->container.clip_box); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_container.h 2001/04/14 01:16:37 1.1.1.1 +++ ewl_container.h 2001/04/14 19:59:30 1.2 @@ -11,12 +11,17 @@ #define EWL_CONTAINER(widget) ((Ewl_Container *) widget) -Ewl_Container * ewl_container_new(); +void ewl_container_new(Ewl_Widget * widget); void ewl_container_append_child(Ewl_Widget * parent, Ewl_Widget * child); void ewl_container_prepend_child(Ewl_Widget * parent, Ewl_Widget * child); void ewl_container_insert_child(Ewl_Widget * parent, Ewl_Widget * child); Ewl_Widget * ewl_container_get_child_at(Ewl_Widget * widget, int x, int y); Ewl_Widget * ewl_container_get_child_at_recursive(Ewl_Widget * widget, int x, int y); +void ewl_container_clip_box_create(Ewl_Widget * widget); +void ewl_container_clip_box_resize(Ewl_Widget * widget); +void ewl_container_set_clip(Ewl_Widget * widget); +void ewl_container_show_clip(Ewl_Widget * widget); +void ewl_container_hide_clip(Ewl_Widget * widget); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_entry.c 2001/04/14 01:16:38 1.1.1.1 +++ ewl_entry.c 2001/04/14 19:59:30 1.2 @@ -2,7 +2,7 @@ #include <Ewl.h> -static void ewl_entry_init(Ewl_Widget * widget, void * func_data); +static void ewl_entry_init(Ewl_Widget * widget); static void ewl_entry_realize(Ewl_Widget * widget, void * func_data); static void ewl_entry_show(Ewl_Widget * widget, void * func_data); static void ewl_entry_hide(Ewl_Widget * widget, void * func_data); @@ -30,25 +30,20 @@ { Ewl_Entry * entry = NULL; - entry = malloc(sizeof(Ewl_Entry)); + entry = NEW(Ewl_Entry, 1); - if (!entry) - return NULL; + ewl_entry_init(EWL_WIDGET(entry)); - ewl_entry_init(EWL_WIDGET(entry), NULL); - return EWL_WIDGET(entry); } static void -ewl_entry_init(Ewl_Widget * widget, void * func_data) +ewl_entry_init(Ewl_Widget * widget) { CHECK_PARAM_POINTER("widget", widget); memset(EWL_ENTRY(widget), 0, sizeof(Ewl_Entry)); - widget->container.recursive = FALSE; - EWL_ENTRY(widget)->cursor = ewl_widget_new(); EWL_ENTRY(widget)->selection = ewl_widget_new(); EWL_ENTRY(widget)->text = ewl_text_new(); @@ -76,6 +71,12 @@ ewl_callback_append(widget, Ewl_Callback_Focus_Out, ewl_entry_focus_out, NULL); + widget->container.recursive = FALSE; + + EWL_ENTRY(widget)->cursor = ewl_widget_new(); + EWL_ENTRY(widget)->selection = ewl_widget_new(); + EWL_ENTRY(widget)->text = ewl_text_new(); + EWL_ENTRY(widget)->font = strdup("borzoib"); EWL_ENTRY(widget)->font_size = 8; @@ -98,21 +99,27 @@ CHECK_PARAM_POINTER("widget", widget); ewl_widget_set_ebit(widget, ewl_theme_ebit_get("entry", "default", "base")); + ewl_container_new(widget); + EWL_ENTRY(widget)->cursor->evas = widget->evas; EWL_ENTRY(widget)->cursor->parent = widget; - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->layer = EWL_OBJECT(widget)->layer +3; + EWL_OBJECT(EWL_ENTRY(widget)->cursor)->layer = EWL_OBJECT(widget)->layer +30; ewl_widget_set_ebit(EWL_ENTRY(widget)->cursor, ewl_theme_ebit_get("entry", "cursor", "base")); - ewl_widget_realize(EWL_ENTRY(widget)->cursor); + ewl_container_set_clip(EWL_ENTRY(widget)->cursor); + EWL_ENTRY(widget)->selection->evas = widget->evas; EWL_ENTRY(widget)->selection->parent = widget; EWL_OBJECT(EWL_ENTRY(widget)->selection)->layer = - EWL_OBJECT(widget)->layer +2; + EWL_OBJECT(widget)->layer +20; ewl_widget_set_ebit(EWL_ENTRY(widget)->selection, - ewl_theme_ebit_get("entry", "selection", "base")); + ewl_theme_ebit_get("entry", "selection", "base")); + EWL_WIDGET(EWL_ENTRY(widget)->text)->parent = widget; EWL_WIDGET(EWL_ENTRY(widget)->text)->evas = widget->evas; - EWL_OBJECT(EWL_ENTRY(widget)->text)->layer = EWL_OBJECT(widget)->layer +1; + EWL_OBJECT(EWL_ENTRY(widget)->text)->layer = EWL_OBJECT(widget)->layer +10; +/* EWL_WIDGET(EWL_ENTRY(widget)->text)->container.clip_box = + widget->container.clip_box;*/ ewl_text_set_font(EWL_WIDGET(EWL_ENTRY(widget)->text), EWL_ENTRY(widget)->font); ewl_text_set_font_size(EWL_WIDGET(EWL_ENTRY(widget)->text), @@ -128,6 +135,8 @@ ebits_show(widget->ebits_object); ewl_widget_show(EWL_WIDGET(EWL_ENTRY(widget)->text)); ebits_show(EWL_ENTRY(widget)->cursor->ebits_object); + evas_show(widget->evas, widget->container.clip_box); + ewl_container_set_clip(widget); } static void @@ -163,7 +172,7 @@ ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->current.w, EWL_OBJECT(widget)->current.h); - ewl_widget_clip_box_resize(widget); + ewl_container_clip_box_resize(widget); ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_macros.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_macros.h 2001/04/14 01:16:40 1.1.1.1 +++ ewl_macros.h 2001/04/14 19:59:30 1.2 @@ -15,4 +15,6 @@ fprintf(stderr, format, args); \ } +#define NEW(dat, num) malloc(sizeof(dat) * (num)) + #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_text.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_text.c 2001/04/14 01:16:40 1.1.1.1 +++ ewl_text.c 2001/04/14 19:59:30 1.2 @@ -5,6 +5,9 @@ Ewl_Widget widget; Evas_Object object; char * text; + struct { + int r, g, b, a; + } color; }; typedef struct _ewl_text_row Ewl_Text_Row; @@ -26,16 +29,15 @@ static void ewl_text_row_destroy(Ewl_Widget * widget, void * func_data); static void ewl_text_row_configure(Ewl_Widget * widget, void * func_data); static void ewl_text_row_free(void * func_data); +static void ewl_text_row_set_text(Ewl_Widget * widget, const char * text); + Ewl_Widget * ewl_text_new() { Ewl_Text * text = NULL; - - text = malloc(sizeof(Ewl_Text)); - if (!text) - return NULL; + text = NEW(Ewl_Text, 1); ewl_text_init(EWL_WIDGET(text)); @@ -53,9 +55,9 @@ static void ewl_text_init(Ewl_Widget * widget) { - memset(EWL_TEXT(widget), 0, sizeof(Ewl_Text)); + CHECK_PARAM_POINTER("widget", widget); - widget->container.recursive = FALSE; + memset(EWL_TEXT(widget), 0, sizeof(Ewl_Text)); ewl_callback_append(widget, Ewl_Callback_Realize, ewl_text_realize, NULL); @@ -68,6 +70,7 @@ ewl_callback_append(widget, Ewl_Callback_Configure, ewl_text_configure, NULL); + widget->container.recursive = FALSE; widget->container.free_cb = ewl_text_row_free; EWL_OBJECT(widget)->current.w = 10; @@ -85,20 +88,15 @@ { Ewl_Text_Row * row; - widget->container.clip_box = widget->parent->container.clip_box; + CHECK_PARAM_POINTER("widget", widget); - if (!widget->container.children || - ewd_list_is_empty(widget->container.children)) - return; + ewl_container_new(widget); ewd_list_goto_first(widget->container.children); while ((row = ewd_list_next(widget->container.children)) != NULL) { ewl_callback_call(EWL_WIDGET(row), Ewl_Callback_Realize); } - - return; - func_data = NULL; } static void @@ -106,6 +104,8 @@ { Ewl_Text_Row * row; + ewl_container_set_clip(widget); + if (!widget->container.children || ewd_list_is_empty(widget->container.children)) return; @@ -115,9 +115,6 @@ while ((row = ewd_list_next(widget->container.children)) != NULL) { ewl_callback_call(EWL_WIDGET(row), Ewl_Callback_Show); } - - return; - func_data = NULL; } static void @@ -125,6 +122,8 @@ { Ewl_Text_Row * row; + CHECK_PARAM_POINTER("widget", widget); + if (!widget->container.children || ewd_list_is_empty(widget->container.children)) return; @@ -142,7 +141,21 @@ static void ewl_text_destroy(Ewl_Widget * widget, void * func_data) { + Ewl_Text_Row * row = NULL; + + CHECK_PARAM_POINTER("widget", widget); + + if (widget->container.children || + !ewd_list_is_empty(widget->container.children)) { + + while ((row = ewd_list_next(widget->container.children)) != NULL) { + ewl_widget_destroy(EWL_WIDGET(row)); + } + } + IF_FREE(EWL_TEXT(widget)->text); + IF_FREE(EWL_TEXT(widget)->font); + FREE(EWL_TEXT(widget)); } static void @@ -151,6 +164,8 @@ Ewl_Text_Row * row; int y, h = 0, w = 0; + CHECK_PARAM_POINTER("widget", widget); + EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; @@ -181,6 +196,8 @@ EWL_OBJECT(widget)->maximum.w = w; EWL_OBJECT(widget)->maximum.h = h; + ewl_container_clip_box_resize(widget); + return; func_data = NULL; } @@ -190,7 +207,7 @@ { Ewl_Text_Row * row = NULL; - row = malloc(sizeof(Ewl_Text_Row)); + row = NEW(Ewl_Text_Row, 1); if (!row) return NULL; @@ -205,6 +222,8 @@ static void ewl_text_row_init(Ewl_Text_Row * row) { + CHECK_PARAM_POINTER("row", row); + memset(row, 0, sizeof(Ewl_Text_Row)); ewl_callback_append(EWL_WIDGET(row), Ewl_Callback_Realize, @@ -233,6 +252,8 @@ { Ewl_Text * text; + CHECK_PARAM_POINTER("widget", widget); + text = EWL_TEXT(widget->parent); EWL_TEXT_ROW(widget)->object = evas_add_text(widget->evas, @@ -249,9 +270,6 @@ evas_set_color(widget->evas, EWL_TEXT_ROW(widget)->object, text->color.r, text->color.g, text->color.b, text->color.a); - evas_set_clip(widget->evas, EWL_TEXT_ROW(widget)->object, - widget->parent->container.clip_box); - return; func_data = NULL; } @@ -259,35 +277,40 @@ static void ewl_text_row_show(Ewl_Widget * widget, void * func_data) { + CHECK_PARAM_POINTER("widget", widget); + evas_show(widget->evas, EWL_TEXT_ROW(widget)->object); + evas_set_clip(widget->evas, EWL_TEXT_ROW(widget)->object, + widget->parent->container.clip_box); + return; - func_data = NULL; } static void ewl_text_row_hide(Ewl_Widget * widget, void * func_data) { - evas_hide(widget->evas, EWL_TEXT_ROW(widget)->object); + CHECK_PARAM_POINTER("widget", widget); - return; - func_data = NULL; + evas_hide(widget->evas, EWL_TEXT_ROW(widget)->object); } static void ewl_text_row_destroy(Ewl_Widget * widget, void * func_data) { + CHECK_PARAM_POINTER("widget", widget); + evas_del_object(widget->evas, EWL_TEXT_ROW(widget)->object); IF_FREE(EWL_TEXT_ROW(widget)->text); - - return; - func_data = NULL; + FREE(widget); } static void ewl_text_row_configure(Ewl_Widget * widget, void * func_data) { + CHECK_PARAM_POINTER("widget", widget); + evas_move(widget->evas, EWL_TEXT_ROW(widget)->object, EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); @@ -297,9 +320,6 @@ EWL_TEXT_ROW(widget)->object); EWL_OBJECT(widget)->current.h = evas_get_text_height(widget->evas, EWL_TEXT_ROW(widget)->object); - - return; - func_data = NULL; } static void @@ -307,24 +327,42 @@ { Ewl_Text_Row * row = NULL; + CHECK_PARAM_POINTER("func_data", func_data); + row = func_data; IF_FREE(row->text); evas_del_object(EWL_WIDGET(row)->evas, row->object); } +static void +ewl_text_row_set_text(Ewl_Widget * widget, const char * text) +{ + CHECK_PARAM_POINTER("widget", widget); +} + void -ewl_text_set_text(Ewl_Widget * widget, char * text) +ewl_text_set_text(Ewl_Widget * widget, const char * text) { Ewl_Text_Row * row; char * string = NULL, * temp = NULL; - IF_FREE(EWL_TEXT(widget)->text); - - EWL_TEXT(widget)->text = strdup(text); + CHECK_PARAM_POINTER("widget", widget); if (widget->container.children) ewd_list_clear(widget->container.children); + + if (!strlen(EWL_TEXT(widget)->text)) + ewl_container_show_clip(widget); + + IF_FREE(EWL_TEXT(widget)->text); + EWL_TEXT(widget)->text = strdup(text); + + if (!strlen(text)) { + ewl_container_hide_clip(widget); + return; + } + /* This is bad bad!!!!!! REALLY BAD hack! FIXME FIXME */ string = strdup(text); temp = strchr(string, '\n'); @@ -366,12 +404,14 @@ ewl_container_append_child(widget, EWL_WIDGET(row)); - ewl_widget_configure(widget); + ewl_widget_configure(widget->parent); } char * ewl_text_get_text(Ewl_Widget * widget) { + CHECK_PARAM_POINTER_RETURN("widget", widget, NULL); + return strdup(EWL_TEXT(widget)->text); } @@ -383,6 +423,9 @@ CHECK_PARAM_POINTER("widget", widget); CHECK_PARAM_POINTER("font", font); + if (!strcmp(font, EWL_TEXT(widget)->font)) + return; + IF_FREE(EWL_TEXT(widget)->font); EWL_TEXT(widget)->font = strdup(font); @@ -400,6 +443,7 @@ EWL_TEXT(widget)->font, EWL_TEXT(widget)->font_size); } + ewl_widget_configure(widget); ewl_widget_configure(widget->parent); } @@ -416,6 +460,9 @@ CHECK_PARAM_POINTER("widget", widget); CHECK_PARAM_POINTER("size", size); + + if (EWL_TEXT(widget)->font_size == size) + return; EWL_TEXT(widget)->font_size = size; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_text.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_text.h 2001/04/14 01:16:40 1.1.1.1 +++ ewl_text.h 2001/04/14 19:59:30 1.2 @@ -18,7 +18,7 @@ Ewl_Widget * ewl_text_new(); -void ewl_text_set_text(Ewl_Widget * etext, char * text); +void ewl_text_set_text(Ewl_Widget * etext, const char * text); char * ewl_text_get_text(Ewl_Widget * text); void ewl_text_set_font(Ewl_Widget * text, char * font); char * ewl_text_get_font(Ewl_Widget * text); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_widget.c 2001/04/14 01:16:36 1.1.1.1 +++ ewl_widget.c 2001/04/14 19:59:30 1.2 @@ -6,11 +6,8 @@ { Ewl_Widget * widget = NULL; - widget = malloc(sizeof(Ewl_Widget)); + widget = NEW(Ewl_Widget, 1); - if (!widget) - return NULL; - ewl_widget_init(widget); return widget; @@ -48,12 +45,13 @@ ewl_widget_show(Ewl_Widget * widget) { CHECK_PARAM_POINTER("widget", widget); + + if (!EWL_OBJECT(widget)->realized) + ewl_widget_realize(widget); + + if (widget->parent) + ewl_widget_configure(widget->parent); - if (!EWL_OBJECT(widget)->realized) { - ewl_callback_call(widget, Ewl_Callback_Realize); - EWL_OBJECT(widget)->realized = TRUE; - } - ewl_callback_call(widget, Ewl_Callback_Show); EWL_OBJECT(widget)->visible = TRUE; } @@ -106,51 +104,8 @@ ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->current.w, EWL_OBJECT(widget)->current.h); - if (!widget->container.clip_box) - ewl_widget_clip_box_create(widget); - if (widget->parent) { evas_set_clip(widget->evas, widget->container.clip_box, widget->parent->container.clip_box); ebits_set_clip(widget->ebits_object, widget->parent->container.clip_box); - } -} - -void -ewl_widget_clip_box_create(Ewl_Widget * widget) -{ - if (!widget->container.clip_box) { - int l = 0, r = 0, t = 0, b = 0; - - if (widget->ebits_object) - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - - widget->container.clip_box = evas_add_rectangle(widget->evas); - evas_set_color(widget->evas, widget->container.clip_box, - 255, 255, 255, 255); - evas_move(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->current.x +l, EWL_OBJECT(widget)->current.y +t); - evas_resize(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->current.w - (l+r), - EWL_OBJECT(widget)->current.h - (t+b)); - evas_set_layer(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->layer); - evas_show(widget->evas, widget->container.clip_box); - } -} - -void -ewl_widget_clip_box_resize(Ewl_Widget * widget) -{ - if (widget->container.clip_box) { - int l = 0, r = 0, t = 0, b = 0; - - if (widget->ebits_object) - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - - evas_move(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->request.x +l, EWL_OBJECT(widget)->request.y +t); - evas_resize(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->request.w - (l+r), - EWL_OBJECT(widget)->request.h - (t+b)); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_widget.h 2001/04/14 01:16:36 1.1.1.1 +++ ewl_widget.h 2001/04/14 19:59:30 1.2 @@ -39,7 +39,5 @@ void ewl_widget_destroy(Ewl_Widget * widget); void ewl_widget_configure(Ewl_Widget * widget); void ewl_widget_set_ebit(Ewl_Widget * widget, char * ebit); -void ewl_widget_clip_box_create(Ewl_Widget * widget); -void ewl_widget_clip_box_resize(Ewl_Widget * widget); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_window.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_window.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_window.c 2001/04/14 19:59:30 1.2 @@ -15,11 +15,8 @@ { Ewl_Window * window = NULL; - window = malloc(sizeof(Ewl_Window)); + window = NEW(Ewl_Window, 1); - if (!window) - return NULL; - ewl_window_init(EWL_WIDGET(window)); return EWL_WIDGET(window); @@ -34,8 +31,6 @@ EWL_WINDOW(widget)->title = strdup("EWL!"); - widget->container.recursive = TRUE; - ewl_callback_append(widget, Ewl_Callback_Realize, ewl_window_realize, NULL); ewl_callback_append(widget, Ewl_Callback_Show, @@ -47,6 +42,8 @@ ewl_callback_append(widget, Ewl_Callback_Configure, ewl_window_configure, NULL); + widget->container.recursive = TRUE; + EWL_OBJECT(widget)->current.w = 256; EWL_OBJECT(widget)->current.h = 256; EWL_OBJECT(widget)->minimum.w = 1; @@ -67,7 +64,7 @@ static void ewl_window_realize(Ewl_Widget * widget, void * func_data) { - Ewl_Window * window; + Ewl_Window * window = NULL; CHECK_PARAM_POINTER("widget", widget); @@ -77,15 +74,15 @@ e_window_set_events(window->window, XEV_CONFIGURE); e_window_set_name_class(window->window, "EWL", "EWL!"); - ewl_window_set_title(widget, window->title); + e_window_set_title(window->window, window->title); EWL_WIDGET(window)->evas = evas_new_all(e_display_get(), window->window, 0, 0, 256, 256, ewl_prefs_render_method_get(), 216, - 1024 * 512 * 1, - 1024 * 512 * 3, + 1024 * 1024 * 1, + 1024 * 1024 * 16, ewl_theme_font_path()); widget->evas_window = evas_get_window(widget->evas); @@ -95,6 +92,8 @@ ewl_widget_set_ebit(widget,ewl_theme_ebit_get("window", "default", "base")); + ewl_container_new(widget); + return; func_data = NULL; } @@ -107,24 +106,21 @@ ebits_show(widget->ebits_object); return; - func_data = NULL; } static void ewl_window_hide(Ewl_Widget * widget, void * func_data) { return; - func_data = NULL; } static void ewl_window_destroy(Ewl_Widget * widget, void * func_data) { + IF_FREE(EWL_WINDOW(widget)->title); - FREE(widget); - return; - func_data = NULL; + FREE(widget); } static void @@ -141,7 +137,7 @@ EWL_OBJECT(widget)->request.x = 0; EWL_OBJECT(widget)->request.y = 0; - ewl_widget_clip_box_resize(widget); + ewl_container_clip_box_resize(widget); e_window_resize(widget->evas_window, EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); @@ -227,6 +223,9 @@ EWL_OBJECT(widget)->minimum.w = w; EWL_OBJECT(widget)->minimum.h = h; + if (!EWL_OBJECT(widget)->realized) + return; + e_window_set_min_size(EWL_WINDOW(widget)->window, w, h); } @@ -238,6 +237,9 @@ EWL_OBJECT(widget)->maximum.w = w; EWL_OBJECT(widget)->maximum.h = h; + if (!EWL_OBJECT(widget)->realized) + return; + e_window_set_max_size(EWL_WINDOW(widget)->window, w, h); } @@ -245,6 +247,14 @@ ewl_window_set_title(Ewl_Widget * widget, char * title) { CHECK_PARAM_POINTER("widget", widget); + + if (strcmp(EWL_WINDOW(widget)->title, title)) { + IF_FREE(EWL_WINDOW(widget)->title); + EWL_WINDOW(widget)->title = strdup(title); + } + + if (!EWL_OBJECT(widget)->realized) + return; e_window_set_title(EWL_WINDOW(widget)->window, title); } |
From: <enl...@li...> - 2001-04-16 02:06:53
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/table Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/table added to the repository |
From: <enl...@li...> - 2001-04-16 02:14:19
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/test Modified Files: Makefile.am ewl_test.c Added Files: ewl_box_test.c ewl_table_test.c Log Message: Started a table widget, wich is _really_ behaving like a child =) At least its the start ill clean it up tomorrow. The same goes for the box code... Also now user prefs can be read from ~/.e/ewl/config/system.db =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 2001/04/14 19:59:30 1.2 +++ Makefile.am 2001/04/16 02:14:19 1.3 @@ -4,8 +4,18 @@ CFLAGS = -g -W -Wall -Wno-implicit INCLUDES = -I$(top_srcdir)/src @ebits_cflags@ @ecore_cflags@ @evas_cflags@ @ewd_cflags@ -bin_PROGRAMS = ewl_test +bin_PROGRAMS = ewl_test ewl_box_test ewl_table_test ewl_test_DEPENDENCIES = $(top_builddir)/src/libewl.la ewl_test_SOURCES = ewl_test.c ewl_test_LDFLAGS = -static ewl_test_LDADD = $(top_builddir)/src/libewl.la + +ewl_box_test_DEPENDENCIES = $(top_builddir)/src/libewl.la +ewl_box_test_SOURCES = ewl_box_test.c +ewl_box_test_LDFLAGS = -static +ewl_box_test_LDADD = $(top_builddir)/src/libewl.la + +ewl_table_test_DEPENDENCIES = $(top_builddir)/src/libewl.la +ewl_table_test_SOURCES = ewl_table_test.c +ewl_table_test_LDFLAGS = -static +ewl_table_test_LDADD = $(top_builddir)/src/libewl.la =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/ewl_test.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_test.c 2001/04/14 19:59:31 1.2 +++ ewl_test.c 2001/04/16 02:14:19 1.3 @@ -31,7 +31,7 @@ ewl_widget_show(vbox[2]); text[0] = ewl_text_new(); - ewl_container_prepend_child(vbox[0], text[0]); + ewl_container_prepend_child(vbox[2], text[0]); ewl_widget_show(text[0]); ewl_text_set_text(text[0], "Blehe blaha bleho\nBlah blah blah\nBleh bleh blaha!"); @@ -95,7 +95,7 @@ ewl_main(); - exit(-1); + exit(0); } static void |
From: <enl...@li...> - 2001-04-16 02:14:20
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/src Modified Files: Ewl.h Makefile.am ewl_box.h ewl_button.c ewl_callback.c ewl_container.c ewl_entry.c ewl_entry.h ewl_events.c ewl_macros.h ewl_misc.c ewl_prefs.c ewl_widget.h Added Files: ewl_table.c ewl_table.h Log Message: Started a table widget, wich is _really_ behaving like a child =) At least its the start ill clean it up tomorrow. The same goes for the box code... Also now user prefs can be read from ~/.e/ewl/config/system.db =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Ewl.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Ewl.h 2001/04/14 19:59:30 1.2 +++ Ewl.h 2001/04/16 02:14:19 1.3 @@ -53,7 +53,9 @@ #include <ewl_macros.h> #include <ewl_misc.h> + #include <ewl_box.h> +#include <ewl_table.h> #include <ewl_prefs.h> #include <ewl_theme.h> =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Makefile.am,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- Makefile.am 2001/04/14 01:16:36 1.1.1.1 +++ Makefile.am 2001/04/16 02:14:19 1.2 @@ -18,6 +18,7 @@ ewl_object.h \ ewl_prefs.h \ ewl_text.h \ + ewl_table.h \ ewl_theme.h \ ewl_widget.h \ ewl_window.h @@ -32,6 +33,7 @@ ewl_misc.c \ ewl_object.c \ ewl_prefs.c \ + ewl_table.c \ ewl_text.c \ ewl_theme.c \ ewl_widget.c \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_box.h 2001/04/14 01:16:40 1.1.1.1 +++ ewl_box.h 2001/04/16 02:14:19 1.2 @@ -3,8 +3,8 @@ #define __EWL_BOX_H__ enum _ewl_box_type { - Ewl_Box_Type_Horisontal = (1 << 1), - Ewl_Box_Type_Vertical = (1 << 2) + Ewl_Box_Type_Horisontal, + Ewl_Box_Type_Vertical }; typedef enum _ewl_box_type Ewl_Box_Type; @@ -12,8 +12,8 @@ struct _ewl_box { Ewl_Widget widget; Ewl_Box_Type type; - unsigned int spacing; unsigned int homogeneous; + unsigned int spacing; }; typedef struct _ewl_box Ewl_Box; @@ -21,6 +21,9 @@ #define EWL_BOX(box) ((Ewl_Box *) box) Ewl_Widget * ewl_box_new(Ewl_Box_Type type); +Ewl_Widget * ewl_box_new_all(Ewl_Box_Type type, + unsigned int spacing, + unsigned int homogeneous); void ewl_box_set_type(Ewl_Widget * widget, Ewl_Box_Type type); void ewl_box_set_spacing(Ewl_Widget * widget, unsigned int spacing); void ewl_box_set_homogeneous(Ewl_Widget * widget, unsigned int homogeneous); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_button.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_button.c 2001/04/14 19:59:30 1.2 +++ ewl_button.c 2001/04/16 02:14:19 1.3 @@ -131,6 +131,9 @@ EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; +/* DPRINT(8, "Button X %i Y %i", EWL_OBJECT(widget)->request.x, + EWL_OBJECT(widget)->request.y); +*/ if (!widget->container.children || !widget->container.children->nodes) { EWL_OBJECT(widget)->request.w = 85; EWL_OBJECT(widget)->request.h = 35; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_callback.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_callback.c 2001/04/14 19:59:30 1.2 +++ ewl_callback.c 2001/04/16 02:14:19 1.3 @@ -71,7 +71,7 @@ ewd_list_goto_first(widget->callbacks[type]); while ((callback = ewd_list_next(widget->callbacks[type])) != NULL) { - callback->func(callback->widget, callback->func_data); + callback->func(widget, callback->func_data); } } @@ -86,6 +86,6 @@ ewd_list_goto_first(widget->callbacks[type]); while ((callback = ewd_list_next(widget->callbacks[type])) != NULL) { - callback->func(callback->widget, func_data); + callback->func(widget, func_data); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_container.c 2001/04/14 19:59:30 1.2 +++ ewl_container.c 2001/04/16 02:14:19 1.3 @@ -16,8 +16,8 @@ CHECK_PARAM_POINTER("parent", parent); CHECK_PARAM_POINTER("child", child); - child->evas = EWL_WIDGET(parent)->evas; - child->evas_window = EWL_WIDGET(parent)->evas_window; + child->evas = parent->evas; + child->evas_window = parent->evas_window; child->parent = parent; EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; @@ -38,8 +38,8 @@ CHECK_PARAM_POINTER("parent", parent); CHECK_PARAM_POINTER("child", child); - child->evas = EWL_WIDGET(parent)->evas; - child->evas_window = EWL_WIDGET(parent)->evas_window; + child->evas = parent->evas; + child->evas_window = parent->evas_window; child->parent = parent; EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; @@ -71,8 +71,6 @@ Ewl_Widget * ewl_container_get_child_at(Ewl_Widget * widget, int x, int y) { - Ewl_Widget * child = NULL; - CHECK_PARAM_POINTER_RETURN("widget", widget, NULL); if (!widget->container.children || @@ -81,14 +79,33 @@ ewd_list_goto_first(widget->container.children); - while ((child = ewd_list_next(widget->container.children)) != NULL) { - if (x >= EWL_OBJECT(child)->current.x && - y >= EWL_OBJECT(child)->current.y && + if (widget->type == Ewl_Widget_Table) + { + Ewl_Table_Child * child = NULL; + + while ((child = ewd_list_next(widget->container.children)) != NULL) + { + if (x >= EWL_OBJECT(child->child)->current.x && + y >= EWL_OBJECT(child->child)->current.y && + EWL_OBJECT(child->child)->current.x + + EWL_OBJECT(child->child)->current.w >= x && + EWL_OBJECT(child->child)->current.y + + EWL_OBJECT(child->child)->current.h >= y) + return child->child; + } + } + else + { + Ewl_Widget * child = NULL; + while ((child = ewd_list_next(widget->container.children)) != NULL) + { + if (x >= EWL_OBJECT(child)->current.x && + y >= EWL_OBJECT(child)->current.y && EWL_OBJECT(child)->current.x + EWL_OBJECT(child)->current.w >= x && EWL_OBJECT(child)->current.y + EWL_OBJECT(child)->current.h >= y) return child; + } } - return NULL; } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_entry.c 2001/04/14 19:59:30 1.2 +++ ewl_entry.c 2001/04/16 02:14:19 1.3 @@ -12,8 +12,8 @@ static void ewl_entry_key_up(Ewl_Widget * widget, void * func_data); static void ewl_entry_mouse_down(Ewl_Widget * widget, void * func_data); static void ewl_entry_mouse_up(Ewl_Widget * widget, void * func_data); -static void ewl_entry_focus_in(Ewl_Widget * widget, void * func_data); -static void ewl_entry_focus_out(Ewl_Widget * widget, void * func_data); +static void ewl_entry_select(Ewl_Widget * widget, void * func_data); +static void ewl_entry_unselect(Ewl_Widget * widget, void * func_data); static void ewl_entry_delete_to_left(Ewl_Widget * widget); static void ewl_entry_delete_to_right(Ewl_Widget * widget); @@ -66,10 +66,10 @@ ewl_entry_mouse_down, NULL); ewl_callback_append(widget, Ewl_Callback_Mouse_Up, ewl_entry_mouse_up, NULL); - ewl_callback_append(widget, Ewl_Callback_Focus_In, - ewl_entry_focus_in, NULL); - ewl_callback_append(widget, Ewl_Callback_Focus_Out, - ewl_entry_focus_out, NULL); + ewl_callback_append(widget, Ewl_Callback_Select, + ewl_entry_select, NULL); + ewl_callback_append(widget, Ewl_Callback_Unselect, + ewl_entry_unselect, NULL); widget->container.recursive = FALSE; @@ -134,7 +134,6 @@ ebits_show(widget->ebits_object); ewl_widget_show(EWL_WIDGET(EWL_ENTRY(widget)->text)); - ebits_show(EWL_ENTRY(widget)->cursor->ebits_object); evas_show(widget->evas, widget->container.clip_box); ewl_container_set_clip(widget); } @@ -275,15 +274,19 @@ } static void -ewl_entry_focus_in(Ewl_Widget * widget, void * func_data) +ewl_entry_select(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + ebits_show(EWL_ENTRY(widget)->cursor->ebits_object); } static void -ewl_entry_focus_out(Ewl_Widget * widget, void * func_data) +ewl_entry_unselect(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + ebits_hide(EWL_ENTRY(widget)->cursor->ebits_object); } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_entry.h 2001/04/14 01:16:38 1.1.1.1 +++ ewl_entry.h 2001/04/16 02:14:19 1.2 @@ -10,6 +10,7 @@ Ewl_Widget * text; char * font; int font_size; + Window paste_win; }; typedef struct _ewl_entry Ewl_Entry; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_events.c 2001/04/14 01:16:37 1.1.1.1 +++ ewl_events.c 2001/04/16 02:14:19 1.2 @@ -102,6 +102,13 @@ widget = ewl_container_get_child_at_recursive(EWL_WIDGET(window), ev->x, ev->y); + if (widget != last_selected) { + if (last_selected) + ewl_callback_call(last_selected, Ewl_Callback_Unselect); + if (widget) + ewl_callback_call(widget, Ewl_Callback_Select); + } + if (widget) ewl_callback_call_with_data(widget, Ewl_Callback_Mouse_Down, ev); @@ -139,8 +146,10 @@ ev->x, ev->y); if (widget != last_focused) { - if (widget) + if (widget) { ewl_callback_call(widget, Ewl_Callback_Focus_In); + DPRINT(5, "Focus In on %p", widget); + } if (last_focused) ewl_callback_call(last_focused, Ewl_Callback_Focus_Out); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_macros.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_macros.h 2001/04/14 19:59:30 1.2 +++ ewl_macros.h 2001/04/16 02:14:19 1.3 @@ -2,9 +2,12 @@ #ifndef __EWL_MACROS_H #define __EWL_MACROS_H -#define DPRINT(msg, lvl) { \ - if (lvl) \ - fprintf(stderr, "%s\n"); \ +#define DPRINT(lvl, format, args...) { \ + if (lvl) { \ + fprintf(stderr, " -- "); \ + fprintf(stderr, format, args); \ + fprintf(stderr, "\n"); \ + } \ } #define DERROR(format, args...) { \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_misc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_misc.c 2001/04/14 01:16:38 1.1.1.1 +++ ewl_misc.c 2001/04/16 02:14:19 1.2 @@ -3,7 +3,6 @@ void ewl_idle_render(void * data); - extern Ewd_List * ewl_window_list; void @@ -50,5 +49,7 @@ void ewl_main_quit() { + ewd_list_goto_first(ewl_window_list); + exit(-1); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_prefs.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_prefs.c 2001/04/14 01:16:38 1.1.1.1 +++ ewl_prefs.c 2001/04/16 02:14:19 1.2 @@ -5,7 +5,7 @@ #include "../config.h" #endif -#define EWL_CONFIG_FILE "config.db" +#define EWL_CONFIG_FILE "config/system.db" #define EWL_GLOBAL_CONFIG PACKAGE_DATA_DIR "/config/system.db" /* The paths to the config files */ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_widget.h 2001/04/14 19:59:30 1.2 +++ ewl_widget.h 2001/04/16 02:14:19 1.3 @@ -3,18 +3,25 @@ #define __EWL_WIDGET_H__ typedef struct _ewl_widget Ewl_Widget; +typedef enum _ewl_widget_type Ewl_Widget_Type; #include <ewl_container.h> +enum _ewl_widget_type { + Ewl_Widget_Window, + Ewl_Widget_Box, + Ewl_Widget_Button, + Ewl_Widget_Entry, + Ewl_Widget_Table +}; + struct _ewl_widget { - /* Object geometry etc */ Ewl_Object object; - /* Parent widget */ Ewl_Widget * parent; - /* Container for the widget, a doubly linked list - * with children of the widget */ + Ewl_Widget_Type type; + Ewl_Container container; /* List of callbacks for this widget */ @@ -22,11 +29,10 @@ Evas evas; Ebits_Object ebits_object; - Window evas_window; }; -#define EWL_WIDGET(ptr) ((Ewl_Widget *) ptr) +#define EWL_WIDGET(widget) ((Ewl_Widget *) widget) /* Returns a allocated widget structure */ Ewl_Widget * ewl_widget_new(); |
From: <enl...@li...> - 2001-04-16 02:14:49
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl Modified Files: configure.in Log Message: Started a table widget, wich is _really_ behaving like a child =) At least its the start ill clean it up tomorrow. The same goes for the box code... Also now user prefs can be read from ~/.e/ewl/config/system.db =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/configure.in,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- configure.in 2001/04/14 01:16:16 1.1.1.1 +++ configure.in 2001/04/16 02:14:19 1.2 @@ -60,7 +60,7 @@ ecore_cflags=`ecore-config --cflags` ecore_libs=`ecore-config --libs` -AC_PATH_GENERIC(evas, 0.0.4, [ +AC_PATH_GENERIC(evas, 0.0.5, [ AC_SUBST(evas_cflags) AC_SUBST(evas_libs) ], AC_MSG_ERROR(Cannot find evas: Is evas-config in path?)) |
From: <enl...@li...> - 2001-04-16 02:14:59
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/table/default Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/table/default added to the repository |
From: <enl...@li...> - 2001-04-16 02:17:55
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/table/default Added Files: base.bits.db Log Message: ops forgot this ;P |
From: <enl...@li...> - 2001-04-16 11:58:12
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/test Modified Files: ewl_table_test.c Log Message: the table configure callback is almost done =) all that remains now is the homogeneous options.. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/ewl_table_test.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewl_table_test.c 2001/04/16 02:14:19 1.1 +++ ewl_table_test.c 2001/04/16 11:58:11 1.2 @@ -1,56 +1,93 @@ #include <Ewl.h> +static int col_spacing = 5; +static int row_spacing = 5; +static void change_col_spacing(Ewl_Widget * widget, void * func_data); +static void change_row_spacing(Ewl_Widget * widget, void * func_data); + + int main(int argc, char **argv) { Ewl_Widget * window = NULL; Ewl_Widget * table = NULL; Ewl_Widget * vbox = NULL; - Ewl_Widget * button[4]; - Ewl_Widget * label[2]; + Ewl_Widget * button[100]; + Ewl_Widget * label[100]; + int row, col; + int b = 0; ewl_init(argc, argv); window = ewl_window_new(); ewl_window_set_title(window, "Ewl Table Test Program"); ewl_widget_show(window); + ewl_window_resize(window, 800, 768); vbox = ewl_box_new(Ewl_Box_Type_Vertical); ewl_container_append_child(window, vbox); ewl_widget_show(vbox); - table = ewl_table_new_all(FALSE, 2, 2, 5, 5); + table = ewl_table_new_all(FALSE, 5, 10, 5, 5); ewl_container_append_child(vbox, table); ewl_widget_show(table); - - button[0] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_table_attach(table, button[0], 0, 0, 0, 0); - ewl_widget_show(button[0]); - - label[0] = ewl_text_new(); - ewl_container_append_child(button[0], label[0]); - ewl_widget_show(label[0]); - ewl_text_set_text(label[0], "E W L ! !"); - - button[1] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_table_attach(table, button[1], 1, 1, 0, 0); - ewl_widget_show(button[1]); - - label[1] = ewl_text_new(); - ewl_container_append_child(button[1], label[1]); - ewl_widget_show(label[1]); - ewl_text_set_text(label[1], "s m u g g"); - - button[2] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_table_attach(table, button[2], 0, 0, 1, 1); - ewl_widget_show(button[2]); - - button[3] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_table_attach(table, button[3], 1, 1, 1, 1); - ewl_widget_show(button[3]); + for (row=0;row<10;row++) + { + for (col=0;col<5;col++) + { + button[b] = ewl_button_new(Ewl_Button_Type_Normal); + ewl_table_attach(table, button[b], col, 0, row, 0); + if (b >= 25) + ewl_callback_append(button[b], Ewl_Callback_Clicked, + change_row_spacing, table); + else + ewl_callback_append(button[b], Ewl_Callback_Clicked, + change_col_spacing, table); + ewl_widget_show(button[b]); + + label[b] = ewl_text_new(); + ewl_container_append_child(button[b], label[b]); + ewl_widget_show(label[b]); + if (b >= 25) + ewl_text_set_text(label[b], "Row Spacing"); + else + ewl_text_set_text(label[b], "Col Spacing"); + b++; + } + } ewl_main(); exit(0); +} + +static void +change_col_spacing(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + if (col_spacing != 40) + col_spacing += 5; + else + col_spacing = 0; + + ewl_table_set_col_spacing(func_data, col_spacing); + printf("Changed table's column's spacing to %i\n", col_spacing); +} + +static void +change_row_spacing(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + if (row_spacing != 40) + row_spacing += 5; + else + row_spacing = 0; + + ewl_table_set_row_spacing(func_data, row_spacing); + printf("Changed table's row's spacing to %i\n", row_spacing); } |
From: <enl...@li...> - 2001-04-16 11:58:42
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/src Modified Files: Makefile.am ewl_button.c ewl_macros.h ewl_misc.c ewl_misc.h ewl_table.c ewl_text.c ewl_window.c Log Message: the table configure callback is almost done =) all that remains now is the homogeneous options.. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 2001/04/16 02:14:19 1.2 +++ Makefile.am 2001/04/16 11:58:11 1.3 @@ -37,7 +37,8 @@ ewl_text.c \ ewl_theme.c \ ewl_widget.c \ - ewl_window.c + ewl_window.c \ + getopt.c libewl_la_LIBADD = @ebits_libs@ @ecore_libs@ @evas_libs@ @ewd_libs@ -lm libewl_la_LDFLAGS = -version-info 0:0:0 =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_button.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_button.c 2001/04/16 02:14:19 1.3 +++ ewl_button.c 2001/04/16 11:58:11 1.4 @@ -160,9 +160,11 @@ EWL_OBJECT(widget)->request.h = h; } - ebits_move(widget->ebits_object, - EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); + if (widget->ebits_object) + ebits_move(widget->ebits_object, + EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); + if (widget->ebits_object) ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_macros.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_macros.h 2001/04/16 02:14:19 1.3 +++ ewl_macros.h 2001/04/16 11:58:11 1.4 @@ -3,7 +3,8 @@ #define __EWL_MACROS_H #define DPRINT(lvl, format, args...) { \ - if (lvl) { \ + extern Ewl_Options ewl_options; \ + if (ewl_options.debug_level > lvl) { \ fprintf(stderr, " -- "); \ fprintf(stderr, format, args); \ fprintf(stderr, "\n"); \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_misc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_misc.c 2001/04/16 02:14:19 1.2 +++ ewl_misc.c 2001/04/16 11:58:11 1.3 @@ -5,9 +5,16 @@ extern Ewd_List * ewl_window_list; +Ewl_Options ewl_options; + +static void ewl_init_parse_options(int argc, char **argv); +static void ewl_parse_option_array(int argc, char **argv); + void ewl_init(int argc, char ** argv) { + ewl_init_parse_options(argc, argv); + if (!e_display_init(NULL)) { fprintf(stderr, "ERRR: Cannot connect to X display!\n"); exit(-1); @@ -52,4 +59,40 @@ ewd_list_goto_first(ewl_window_list); exit(-1); +} + +static void +ewl_init_parse_options(int argc, char **argv) +{ + memset(&ewl_options, 0, sizeof(Ewl_Options)); + ewl_parse_option_array(argc, argv); +} + +static void +ewl_parse_option_array(int argc, char ** argv) +{ + char stropts[] = + "a:A:b:BcC:dD:e:f:Fg:hH:iIklL:mM:nNo:O:pPqQrR:sS:tT:uUvVwW:xXy:zZ1:2:3:4:56:78:90:"; + + struct option lopts[] = { + {"ewl_debug-level", 1, 0, '@'}, + {0, 0, 0, 0} + }; + int optch = 0, cmdx = 0; + + while ((optch = getopt_long_only(argc, argv, stropts, lopts, &cmdx)) != EOF) + { + switch (optch) + { + case 0: + break; + + case '@': + ewl_options.debug_level = 0; + break; + + default: + break; + } + } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_misc.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_misc.h 2001/04/14 01:16:37 1.1.1.1 +++ ewl_misc.h 2001/04/16 11:58:11 1.2 @@ -2,6 +2,12 @@ #ifndef __EWL_MISC_H #define __EWL_MISC_H +struct _ewl_options { + int debug_level; +}; + +typedef struct _ewl_options Ewl_Options; + void ewl_init(int argc, char ** argv); void ewl_main(); void ewl_main_quit(); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_table.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewl_table.c 2001/04/16 02:14:19 1.1 +++ ewl_table.c 2001/04/16 11:58:11 1.2 @@ -132,6 +132,9 @@ CHECK_PARAM_POINTER("widget", widget); EWL_TABLE(widget)->homogeneous = homogeneous; + + ewl_widget_configure(widget); + ewl_widget_configure(widget->parent); } void @@ -141,6 +144,9 @@ CHECK_PARAM_POINTER("widget", widget); EWL_TABLE(widget)->col_spacing = col_spacing; + + ewl_widget_configure(widget); + ewl_widget_configure(widget->parent); } void @@ -150,6 +156,9 @@ CHECK_PARAM_POINTER("widget", widget); EWL_TABLE(widget)->row_spacing = row_spacing; + + ewl_widget_configure(widget); + ewl_widget_configure(widget->parent); } @@ -210,23 +219,45 @@ x = EWL_OBJECT(widget)->request.x + l; y = EWL_OBJECT(widget)->request.y + t; + for (col=0;col<EWL_TABLE(widget)->columns;col++) + { + max_col_w[col] = 0; + } + + for (row=0;row<EWL_TABLE(widget)->rows;row++) + { + max_row_h[row] = 0; + } + /* Really really incomplete atm */ for (row=0;row<EWL_TABLE(widget)->rows;row++) { - max_row_h[row] = 0; for (col=0;col<EWL_TABLE(widget)->columns;col++) { - max_col_w[col] = 0; while ((child = ewd_list_next(widget->container.children)) != NULL) { if (child->start_col == col && child->start_row == row) { - if (EWL_OBJECT(child->child)->current.w > max_col_w[col]) + if (EWL_OBJECT(child->child)->current.w > max_col_w[col]) { max_col_w[col] = EWL_OBJECT(child->child)->current.w; + row = 0; + col = 0; + EWL_OBJECT(child->child)->request.x = x - + (EWL_OBJECT(child->child)->current.w / 2) + + (max_col_w[col] / 2); + EWL_OBJECT(child->child)->request.y = y; + x = EWL_OBJECT(widget)->request.x + l; + y = EWL_OBJECT(widget)->request.y + t; + total_h = 0; + total_w = 0; + total_w2 = 0; + } if (EWL_OBJECT(child->child)->current.h > max_row_h[row]) max_row_h[row] = EWL_OBJECT(child->child)->current.h; - EWL_OBJECT(child->child)->request.x = x; + EWL_OBJECT(child->child)->request.x = x - + (EWL_OBJECT(child->child)->current.w / 2) + + (max_col_w[col] / 2); EWL_OBJECT(child->child)->request.y = y; } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_text.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_text.c 2001/04/14 19:59:30 1.2 +++ ewl_text.c 2001/04/16 11:58:11 1.3 @@ -41,7 +41,7 @@ ewl_text_init(EWL_WIDGET(text)); - text->font = strdup("borzoib.ttf"); + text->font = strdup("borzoib"); text->font_size = 15; text->text = strdup(""); text->color.r = 0; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_window.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_window.c 2001/04/14 19:59:30 1.2 +++ ewl_window.c 2001/04/16 11:58:11 1.3 @@ -70,7 +70,8 @@ window = EWL_WINDOW(widget); - window->window = e_window_new(0, 0, 0, 256, 256); + window->window = e_window_new(0, 0, 0, EWL_OBJECT(widget)->current.w, + EWL_OBJECT(widget)->current.h); e_window_set_events(window->window, XEV_CONFIGURE); e_window_set_name_class(window->window, "EWL", "EWL!"); @@ -78,11 +79,11 @@ EWL_WIDGET(window)->evas = evas_new_all(e_display_get(), window->window, 0, 0, - 256, 256, + EWL_OBJECT(widget)->current.w, EWL_OBJECT(widget)->current.h, ewl_prefs_render_method_get(), 216, - 1024 * 1024 * 1, - 1024 * 1024 * 16, + 1024 * 1024 * 2, + 1024 * 1024 * 5, ewl_theme_font_path()); widget->evas_window = evas_get_window(widget->evas); @@ -127,12 +128,13 @@ ewl_window_configure(Ewl_Widget * widget, void * func_data) { Ewl_Widget * child; - int x, y, l, r, t, b; + int x, y, l = 0, r = 0, t = 0, b = 0; CHECK_PARAM_POINTER("widget", widget); - ebits_resize(widget->ebits_object, - EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); + if (widget->ebits_object) + ebits_resize(widget->ebits_object, + EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); EWL_OBJECT(widget)->request.x = 0; EWL_OBJECT(widget)->request.y = 0; @@ -151,7 +153,8 @@ ewd_list_goto_first(widget->container.children); - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + if (widget->ebits_object); + ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); x = l; y = t; |
From: <enl...@li...> - 2001-04-16 11:59:24
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/src Added Files: getopt.c getopt.h Log Message: need those =) |
From: <enl...@li...> - 2001-05-01 03:52:45
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/font_styles Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/font_styles added to the repository |
From: <enl...@li...> - 2001-05-01 03:52:45
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/seeker Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/seeker added to the repository |
From: <enl...@li...> - 2001-05-01 03:53:32
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/seeker/default Log Message: Directory /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/seeker/default added to the repository |
From: <enl...@li...> - 2001-05-01 04:00:38
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/font_styles Added Files: plain.style sh_ol.style Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... |
From: <enl...@li...> - 2001-05-01 04:00:38
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/seeker/default Added Files: base.bits.db dragbar.bits.db Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... |
From: <enl...@li...> - 2001-05-01 04:00:38
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/test Modified Files: Makefile.am ewl_test.c Removed Files: ewl_box_test.c ewl_table_test.c Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 2001/04/16 02:14:19 1.3 +++ Makefile.am 2001/05/01 04:00:38 1.4 @@ -4,18 +4,9 @@ CFLAGS = -g -W -Wall -Wno-implicit INCLUDES = -I$(top_srcdir)/src @ebits_cflags@ @ecore_cflags@ @evas_cflags@ @ewd_cflags@ -bin_PROGRAMS = ewl_test ewl_box_test ewl_table_test +bin_PROGRAMS = ewl_test + ewl_test_DEPENDENCIES = $(top_builddir)/src/libewl.la ewl_test_SOURCES = ewl_test.c ewl_test_LDFLAGS = -static ewl_test_LDADD = $(top_builddir)/src/libewl.la - -ewl_box_test_DEPENDENCIES = $(top_builddir)/src/libewl.la -ewl_box_test_SOURCES = ewl_box_test.c -ewl_box_test_LDFLAGS = -static -ewl_box_test_LDADD = $(top_builddir)/src/libewl.la - -ewl_table_test_DEPENDENCIES = $(top_builddir)/src/libewl.la -ewl_table_test_SOURCES = ewl_table_test.c -ewl_table_test_LDFLAGS = -static -ewl_table_test_LDADD = $(top_builddir)/src/libewl.la =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/test/ewl_test.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_test.c 2001/04/16 02:14:19 1.3 +++ ewl_test.c 2001/05/01 04:00:38 1.4 @@ -1,162 +1,422 @@ #include <Ewl.h> -static Ewl_Widget * window2 = NULL; +static void callback_main_exit(Ewl_Widget * widget, void * func_data); +static void callback_entry_main(Ewl_Widget * widget, void * func_data); +static void callback_entry_print(Ewl_Widget * widget, void * func_data); +static void callback_entry_set_text(Ewl_Widget * widget, void * func_data); + +static void callback_seeker_main(Ewl_Widget * widget, void * func_data); +static void callback_seeker_get_val(Ewl_Widget * widget, void * func_data); +static void callback_seeker_set_val(Ewl_Widget * widget, void * func_data); +static void callback_seeker_change_ori(Ewl_Widget * widget, void * func_data); + +static void callback_spinner_main(Ewl_Widget * widget, void * func_data); +static void callback_spinner_get_val(Ewl_Widget * widget, void * func_data); +static void callback_spinner_set_val(Ewl_Widget * widget, void * func_data); +static void callback_spinner_set_digits(Ewl_Widget * widget, void * func_data); -static void create_info_win(Ewl_Widget * widget, void * func_data); -static void change_font(Ewl_Widget * widget, void * func_data); -static void change_color(Ewl_Widget * widget, void * func_data); + +static void callback_box_main(Ewl_Widget * widget, void * func_data); +static void callback_button_main(Ewl_Widget * widget, void * func_data); +static void callback_table_main(Ewl_Widget * widget, void * func_data); + + int main(int argc, char ** argv) { - Ewl_Widget * window; - Ewl_Widget * button[4]; - Ewl_Widget * vbox[3], * hbox[1]; - Ewl_Widget * label[4], * text[2]; - Ewl_Widget * entry[1]; - - ewl_init(argc, argv); + Ewl_Widget * main_window; + Ewl_Widget * table[2]; + Ewl_Widget * button[7]; + Ewl_Widget * text; + void (** callbacks) (Ewl_Widget * widget, void * func_data) = NULL; + char * labels[] = + { + "Entry Test", "Seeker Test", "Spinner Test", + "Box Test", "Button Test", "Table Test" + }; + int row, col, count = 0; + + callbacks = NEW_PTR(7); + for (count = 0; count < 6;count++) + { + callbacks[count] = NULL; + } + + callbacks[0] = callback_entry_main; + callbacks[1] = callback_seeker_main; + callbacks[2] = callback_spinner_main; + callbacks[3] = callback_box_main; + callbacks[4] = callback_button_main; + callbacks[5] = callback_table_main; - window = ewl_window_new(); - ewl_window_set_title(window, "EWL Demonstation Application"); - ewl_widget_show(window); - ewl_window_resize(window, 299, 500); - - vbox[0] = ewl_box_new(Ewl_Box_Type_Vertical); - ewl_container_append_child(window, vbox[0]); - ewl_widget_show(vbox[0]); - - vbox[2] = ewl_box_new(Ewl_Box_Type_Vertical); - ewl_container_append_child(vbox[0], vbox[2]); - ewl_widget_show(vbox[2]); - - text[0] = ewl_text_new(); - ewl_container_prepend_child(vbox[2], text[0]); - ewl_widget_show(text[0]); - ewl_text_set_text(text[0], "Blehe blaha bleho\nBlah blah blah\nBleh bleh blaha!"); - - text[1] = ewl_text_new(); - ewl_container_append_child(vbox[2], text[1]); - ewl_widget_show(text[1]); - ewl_text_set_text(text[1], "Bleh blah bloh\nBlahblah!!!"); - - entry[0] = ewl_entry_new(); - ewl_container_append_child(vbox[2], entry[0]); - ewl_widget_show(entry[0]); - ewl_entry_set_text(entry[0], "Play with me!"); - - vbox[1] = ewl_box_new(Ewl_Box_Type_Vertical); - ewl_container_append_child(vbox[0], vbox[1]); - ewl_widget_show(vbox[1]); - - button[0] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_container_append_child(vbox[1], button[0]); - ewl_callback_append(button[0], Ewl_Callback_Clicked, change_font, text[0]); - ewl_widget_show(button[0]); + count = 0; - label[0] = ewl_text_new(); - ewl_container_append_child(button[0], label[0]); - ewl_widget_show(label[0]); - ewl_text_set_text(label[0], strdup("Press Me!")); - - button[1] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_container_append_child(vbox[1], button[1]); - ewl_callback_append(button[1], Ewl_Callback_Clicked, change_color, text[0]); - ewl_widget_show(button[1]); + ewl_init(argc, argv); - label[1] = ewl_text_new(); - ewl_container_append_child(button[1], label[1]); - ewl_widget_show(label[1]); - ewl_text_set_text(label[1], strdup("Press Me 2!")); - - hbox[0] = ewl_box_new(Ewl_Box_Type_Horisontal); - ewl_container_append_child(vbox[0], hbox[0]); - ewl_widget_show(hbox[0]); - - button[2] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_container_append_child(hbox[0], button[2]); - ewl_callback_append(button[2], Ewl_Callback_Clicked, create_info_win, NULL); - ewl_widget_show(button[2]); + main_window = ewl_window_new(); + ewl_window_set_title(main_window, "EWL Demo/Test Application"); + ewl_window_resize(main_window, 759, 346); + ewl_window_set_min_size(main_window, 759, 346); + ewl_window_set_max_size(main_window, 759, 346); + ewl_widget_show(main_window); + + table[0] = ewl_table_new_all(FALSE, 1, 3, 10, 10); + ewl_container_append_child(main_window, table[0]); + ewl_widget_show(table[0]); - label[2] = ewl_text_new(); - ewl_container_append_child(button[2], label[2]); - ewl_widget_show(label[2]); - ewl_text_set_text(label[2], strdup("And Me!!")); - - button[3] = ewl_button_new(Ewl_Button_Type_Normal); - ewl_container_append_child(hbox[0], button[3]); - ewl_callback_append(button[3], Ewl_Callback_Clicked, change_color, text[1]); - ewl_widget_show(button[3]); + text = ewl_text_new(); + ewl_table_attach(table[0], text, 1, 1, 1, 1); + ewl_text_set_text(text, + " Welcome!\n \n" + " This is a test/demonstration Application of what EWL can do.\n" + " Atm, its not to much, but it gets better every day.\n" + " A bit down in this window you see a table with some buttons \n" + " Press a button and a new window should appear with some info\n" + " and widgets wich you can play with....\n" + " Not to much yet, but there will be more within a short future..\n" + " // smugg"); + ewl_widget_show(text); - label[3] = ewl_text_new(); - ewl_container_append_child(button[3], label[3]); - ewl_widget_show(label[3]); - ewl_text_set_text(label[3], strdup("Hey! Me 2!")); + table[1] = ewl_table_new_all(FALSE, 3, 2, 2, 2); + ewl_table_attach(table[0], table[1], 1, 1, 2, 2); + ewl_widget_show(table[1]); + + for (row=0;row<2;row++) + { + for (col=0;col<3;col++) + { + button[count] = ewl_button_new_with_label(labels[count]); + ewl_table_attach(table[1],button[count],col+1, col+1, row+1, row+1); + ewl_callback_append(button[count], EWL_CALLBACK_CLICKED, + callbacks[count], NULL); + ewl_widget_show(button[count++]); + } + } + + button[count] = ewl_button_new_with_label("Exit"); + ewl_table_attach(table[0], button[count], 1, 1, 3, 3); + ewl_callback_append(button[count], EWL_CALLBACK_CLICKED, + callback_main_exit, main_window); + ewl_widget_show(button[count]); ewl_main(); - exit(0); + exit(-1); } static void -create_info_win(Ewl_Widget * widget, void * func_data) +callback_main_exit(Ewl_Widget * widget, void * func_data) { - Ewl_Widget * text; - Ewl_Widget * vbox = NULL; - char * str; - CHECK_PARAM_POINTER("widget", widget); + + ewl_main_quit(); + + printf("Thank You For Using Ewl.. Good bye\n"); + + func_data = NULL; +} - if (window2) - return; - window2 = ewl_window_new(); - ewl_widget_show(window2); - ewl_window_resize(window2, 440, 296); - ewl_window_set_min_size(window2, 440, 296); - ewl_window_set_max_size(window2, 1024, 768); - - vbox = ewl_box_new(Ewl_Box_Type_Vertical); - ewl_container_append_child(window2, vbox); - ewl_widget_show(vbox); - - str = strdup("Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - "Bleh bleh bleh blah blah blah bleh!\n" - " // smugg"); +/* Entry Test Section */ +static void +callback_entry_main(Ewl_Widget * widget, void * func_data) +{ + Ewl_Widget * entry_win; + Ewl_Widget * main_vbox; + Ewl_Widget * text; + Ewl_Widget * entry; + Ewl_Widget * button_table; + Ewl_Widget * button[3]; + + entry_win = ewl_window_new(); + ewl_window_set_title(entry_win, "EWL Entry Widget Test"); + ewl_window_resize(entry_win, 779, 463); + ewl_window_set_min_size(entry_win, 779, 463); + ewl_window_set_max_size(entry_win, 779, 463); + ewl_widget_show(entry_win); + + main_vbox = ewl_vbox_new(); + ewl_container_append_child(entry_win, main_vbox); + ewl_widget_show(main_vbox); + text = ewl_text_new(); - ewl_container_append_child(vbox, text); + ewl_container_append_child(main_vbox, text); + ewl_text_set_text(text, + "This is entry widget, it's designed so it uses the text widget\n" + "for text, and it has its own cursor and selection widget So far\n" + "you can only do text query's, but you will be able to hide the text,\n" + "could be useful when you want to type a password and toggle\n" + "numberic/alphabetic, with means you can only type one of those, or\n" + "both as you can now."); ewl_widget_show(text); - ewl_text_set_text(text, str); + entry = ewl_entry_new(); + ewl_container_append_child(main_vbox, entry); + ewl_entry_set_text(entry, "Play With Me..."); + ewl_widget_show(entry); + + button_table = ewl_table_new_all(FALSE, 3, 1, 5, 0); + ewl_container_append_child(main_vbox, button_table); + ewl_widget_show(button_table); + + button[0] = ewl_button_new_with_label("Get Text"); + ewl_table_attach(button_table, button[0], 1, 1, 1, 1); + ewl_callback_append(button[0], EWL_CALLBACK_CLICKED, + callback_entry_print, entry); + ewl_widget_show(button[0]); + + button[1] = ewl_button_new_with_label("Set Text"); + ewl_table_attach(button_table, button[1], 2, 2, 1, 1); + ewl_callback_append(button[1], EWL_CALLBACK_CLICKED, + callback_entry_set_text, entry); + ewl_widget_show(button[1]); + + button[2] = ewl_button_new_with_label("Close"); + ewl_table_attach(button_table, button[2], 3, 3, 1, 1); + ewl_widget_show(button[2]); + return; + widget = NULL; func_data = NULL; } static void -change_font(Ewl_Widget * widget, void * func_data) +callback_entry_print(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); CHECK_PARAM_POINTER("func_data", func_data); + + printf("%s\n", ewl_entry_get_text(func_data)); + + return; + widget = NULL; +} - if (!strcmp(ewl_text_get_font(EWL_WIDGET(func_data)), "borzoib")) - ewl_text_set_font(EWL_WIDGET(func_data), "andover"); +static void +callback_entry_set_text(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + return; + widget = NULL; + func_data = NULL; +} + + +/* Seeker Test Section */ +static void callback_seeker_main(Ewl_Widget * widget, void * func_data) +{ + Ewl_Widget * seeker_win; + Ewl_Widget * main_vbox; + Ewl_Widget * text; + Ewl_Widget * seeker; + Ewl_Widget * button_table; + Ewl_Widget * button[4]; + + seeker_win = ewl_window_new(); + ewl_window_set_title(seeker_win, "E W L Seeker Widget Test"); + ewl_window_resize(seeker_win, 779, 463); + ewl_window_set_min_size(seeker_win, 779, 463); + ewl_window_set_max_size(seeker_win, 779, 463); + ewl_widget_show(seeker_win); + + main_vbox = ewl_vbox_new(); + ewl_container_append_child(seeker_win, main_vbox); + ewl_widget_show(main_vbox); + + text = ewl_text_new(); + ewl_container_append_child(main_vbox, text); + ewl_text_set_text(text, + "The seeker widget can be very useful to let the user change value\n" + "of something, or for example change volume in a multimedia system.\n" + "The seeker can be very useful"); + ewl_widget_show(text); + + seeker = ewl_vseeker_new(); + ewl_container_append_child(main_vbox, seeker); + ewl_widget_show(seeker); + + button_table = ewl_table_new_all(FALSE, 4, 1, 5, 0); + ewl_container_append_child(main_vbox, button_table); + ewl_widget_show(button_table); + + button[0] = ewl_button_new_with_label("Get Val"); + ewl_table_attach(button_table, button[0], 1, 1, 1, 1); + ewl_callback_append(button[0], EWL_CALLBACK_CLICKED, + callback_seeker_get_val, seeker); + ewl_widget_show(button[0]); + + button[1] = ewl_button_new_with_label("Set Val"); + ewl_table_attach(button_table, button[1], 2, 2, 1, 1); + ewl_callback_append(button[1], EWL_CALLBACK_CLICKED, + callback_seeker_set_val, seeker); + ewl_widget_show(button[1]); + + button[2] = ewl_button_new_with_label("Change Orientation"); + ewl_table_attach(button_table, button[2], 3, 3, 1, 1); + ewl_callback_append(button[2], EWL_CALLBACK_CLICKED, + callback_seeker_change_ori, seeker); + ewl_widget_show(button[2]); + + button[3] = ewl_button_new_with_label("Close"); + ewl_table_attach(button_table, button[3], 4, 4, 1, 1); + ewl_widget_show(button[3]); + + return; + widget = NULL; + func_data = NULL; +} + +static void +callback_seeker_get_val(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + printf("%i\n", ewl_seeker_get_value(func_data)); +} + +static void +callback_seeker_set_val(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + ewl_seeker_set_value(func_data,rand() % (EWL_SEEKER(func_data)->range)); +} + +static void +callback_seeker_change_ori(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + if (EWL_SEEKER(func_data)->orientation == EWL_ORIENTATION_HORISONTAL) + ewl_seeker_set_orientation(func_data, EWL_ORIENTATION_VERTICAL); else - ewl_text_set_font(EWL_WIDGET(func_data), "borzoib"); + ewl_seeker_set_orientation(func_data, EWL_ORIENTATION_HORISONTAL); +} + + +/* Spinner Test Section */ +static void callback_spinner_main(Ewl_Widget * widget, void * func_data) +{ + Ewl_Widget * spinner_win; + Ewl_Widget * main_vbox; + Ewl_Widget * text; + Ewl_Widget * spinner; + Ewl_Widget * button_table; + Ewl_Widget * button[4]; + + spinner_win = ewl_window_new(); + ewl_window_set_title(spinner_win, "E W L Seeker Widget Test"); + ewl_window_resize(spinner_win, 779, 463); + ewl_window_set_min_size(spinner_win, 779, 463); + ewl_window_set_max_size(spinner_win, 779, 463); + ewl_widget_show(spinner_win); + + main_vbox = ewl_vbox_new(); + ewl_container_append_child(spinner_win, main_vbox); + ewl_widget_show(main_vbox); + + text = ewl_text_new(); + ewl_container_append_child(main_vbox, text); + ewl_text_set_text(text, + "With a spinner widget you can set maximum/minimum value.\n" + "the value in a seeker widget is a double, for maximum precision\n" + "you can also set how many digits you want to display."); + ewl_widget_show(text); + + spinner = ewl_spinner_new(); + ewl_container_append_child(main_vbox, spinner); + ewl_widget_show(spinner); + + button_table = ewl_table_new_all(FALSE, 4, 1, 5, 0); + ewl_container_append_child(main_vbox, button_table); + ewl_widget_show(button_table); + + button[0] = ewl_button_new_with_label("Get Val"); + ewl_table_attach(button_table, button[0], 1, 1, 1, 1); + ewl_callback_append(button[0], EWL_CALLBACK_CLICKED, + callback_spinner_get_val, spinner); + ewl_widget_show(button[0]); + + button[1] = ewl_button_new_with_label("Set Val"); + ewl_table_attach(button_table, button[1], 2, 2, 1, 1); + ewl_callback_append(button[1], EWL_CALLBACK_CLICKED, + callback_spinner_set_val, spinner); + ewl_widget_show(button[1]); + + button[2] = ewl_button_new_with_label("Set Digits"); + ewl_table_attach(button_table, button[2], 3, 3, 1, 1); + ewl_callback_append(button[2], EWL_CALLBACK_CLICKED, + callback_spinner_set_digits, spinner); + ewl_widget_show(button[2]); + + button[3] = ewl_button_new_with_label("Close"); + ewl_table_attach(button_table, button[3], 4, 4, 1, 1); + ewl_widget_show(button[3]); + + return; + widget = NULL; + func_data = NULL; +} + +static void +callback_spinner_get_val(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + printf("%f\n", ewl_spinner_get_value(func_data)); } static void -change_color(Ewl_Widget * widget, void * func_data) +callback_spinner_set_val(Ewl_Widget * widget, void * func_data) { + double val; + CHECK_PARAM_POINTER("widget", widget); CHECK_PARAM_POINTER("func_data", func_data); - ewl_text_set_color(EWL_WIDGET(func_data), rand()&0xff, - rand()&0xff, rand()&0xff, 200); + val = (double) (rand() % (int) EWL_SPINNER(func_data)->max_val) / 3; + printf("%f\n", val); + + ewl_spinner_set_value(func_data, val); +} + +static void +callback_spinner_set_digits(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("func_data", func_data); + + ewl_spinner_set_digits(func_data, rand() % 5); +} + + +/* Box Test Section */ +static void callback_box_main(Ewl_Widget * widget, void * func_data) +{ + return; + widget = NULL; + func_data = NULL; +} + +/* Button Test Section */ +static void callback_button_main(Ewl_Widget * widget, void * func_data) +{ + return; + widget = NULL; + func_data = NULL; +} + +/* Table Test Section */ +static void callback_table_main(Ewl_Widget * widget, void * func_data) +{ + return; + widget = NULL; + func_data = NULL; } |
From: <enl...@li...> - 2001-05-01 04:01:08
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/config Modified Files: system.db Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/data/config/system.db,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 Binary files /tmp/cvsczyT3f and /tmp/cvsKibn2l differ |
From: <enl...@li...> - 2001-05-01 04:01:08
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl Modified Files: ChangeLog README aclocal.m4 configure.in ltconfig ltmain.sh Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/ChangeLog,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ChangeLog 2001/04/14 01:16:16 1.1.1.1 +++ ChangeLog 2001/05/01 04:00:37 1.2 @@ -1,8 +1,12 @@ EWL 0.0.0 (Development) + * Added A Spinner Widget + * Added A Seeker Widget + * Added Some Special FX Code + * Added A Table Widget * Added A Entry widget * Added A Text widget - * Added A Box widget (Horisontal or Vertical) + * Added A Box widget (Horisontal and Vertical) * Added A Button Widget * Added A Window Widget - * Wrote base object hierachy + * Wrote core object hierachy =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/README,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- README 2001/04/14 01:16:13 1.1.1.1 +++ README 2001/05/01 04:00:37 1.2 @@ -1,15 +0,0 @@ -================================================================================ -= E W L 0.0.1 = -================================================================================ - - EWL is the Enlightenment Widget Library written with evas, ecore, ebits, ewd, - etox and edb to achieve maximum prestanda. - Why another widget lib you ask your self? Well we wanted the special look for - Enlightenment 17. There are millions of widget set's out there, but noone that - can do alpha blending, and this is a poor shame, without alpha blending - you aren't able to have all this cool special FX that EWL will have. - Now you ask yourself why not change a current widget set to use evas instead? - Well for starters it is REALLY REALLY hard to rewrite the gfx engine in a - widget set, its nearly impossible, so thats why we write a whole new widget set - -// Christopher =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/aclocal.m4,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- aclocal.m4 2001/04/14 01:16:16 1.1.1.1 +++ aclocal.m4 2001/05/01 04:00:37 1.2 @@ -265,7 +265,12 @@ esac # Check for any special flags to pass to ltconfig. -libtool_flags="--cache-file=$cache_file" +# +# the following will cause an existing older ltconfig to fail, so +# we ignore this at the expense of the cache file... Checking this +# will just take longer ... bummer! +#libtool_flags="--cache-file=$cache_file" +# test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/configure.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- configure.in 2001/04/16 02:14:19 1.2 +++ configure.in 2001/05/01 04:00:37 1.3 @@ -53,6 +53,13 @@ ebits_cflags=`ebits-config --cflags` ebits_libs=`ebits-config --libs` +AC_PATH_GENERIC(edb, 1.0.2, [ + AC_SUBST(edb_cflags) + AC_SUBST(edb_libs) ], + AC_MSG_ERROR(Cannot find ebits: Is edb-config in path?)) +edb_cflags=`edb-config --cflags` +edb_libs=`edb-config --libs` + AC_PATH_GENERIC(ecore, 0.0.1, [ AC_SUBST(ecore_cflags) AC_SUBST(ecore_libs) ], =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/ltconfig,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ltconfig 2001/04/14 01:16:25 1.1.1.1 +++ ltconfig 2001/05/01 04:00:37 1.2 @@ -1922,7 +1922,6 @@ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method=pass_all ;; hpux9* | hpux10* | hpux11*) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/ltmain.sh,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ltmain.sh 2001/04/14 01:16:34 1.1.1.1 +++ ltmain.sh 2001/05/01 04:00:38 1.2 @@ -1656,7 +1656,7 @@ # Check that each of the things are valid numbers. case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; + [0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -1665,7 +1665,7 @@ esac case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; + [0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -1674,7 +1674,7 @@ esac case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; + [0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -3462,7 +3462,11 @@ if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` + if test $? = 0 ; then : + else + tmpdir="$tmpdir/libtool-$$" + fi if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 |
From: <enl...@li...> - 2001-05-01 04:01:08
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/data/themes/default/appearance/button/default Modified Files: clicked.bits.db Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/data/themes/default/appearance/button/default/clicked.bits.db,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 Binary files /tmp/cvsaqorhr and /tmp/cvs8a7xbM differ |
From: <enl...@li...> - 2001-05-01 04:01:09
|
Enlightenment CVS committal Author : smugg Project : e17 Module : libs/ewl Dir : e17/libs/ewl/src Modified Files: Ewl.h Makefile.am ewl_box.c ewl_box.h ewl_button.c ewl_button.h ewl_callback.c ewl_container.c ewl_container.h ewl_entry.c ewl_entry.h ewl_events.c ewl_events.h ewl_misc.c ewl_object.c ewl_prefs.c ewl_prefs.h ewl_table.c ewl_table.h ewl_text.c ewl_theme.c ewl_widget.c ewl_widget.h ewl_window.c ewl_window.h Added Files: ewl_enums.h ewl_fx.c ewl_fx.h ewl_seeker.c ewl_seeker.h ewl_spinner.c ewl_spinner.h Log Message: I've added some FX code... for fun And i wrote together a new test app quickly, im tired now so ill finish it tomorrow =) 2 New widgets... A seeker widget and a spinner widget... run the test program to see them in action, the spinner isnt complete ill fix that tomorrow Lots of fixes... =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Ewl.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Ewl.h 2001/04/16 02:14:19 1.3 +++ Ewl.h 2001/05/01 04:00:38 1.4 @@ -3,6 +3,7 @@ #include <Edb.h> #include <Evas.h> #define LIBRARY_NAME "EWL" +#include <Etox.h> #include <Ewd.h> #include <stdio.h> @@ -21,29 +22,32 @@ #endif enum _ewl_callback_type { - Ewl_Callback_Realize, - Ewl_Callback_Show, - Ewl_Callback_Hide, - Ewl_Callback_Destroy, - Ewl_Callback_Configure, - Ewl_Callback_Key_Down, - Ewl_Callback_Key_Up, - Ewl_Callback_Mouse_Down, - Ewl_Callback_Mouse_Up, - Ewl_Callback_Focus_In, - Ewl_Callback_Focus_Out, - Ewl_Callback_Select, - Ewl_Callback_Unselect, - Ewl_Callback_Clicked, - Ewl_Callback_Released, - Ewl_Callback_Hilited, - Ewl_Callback_Max + EWL_CALLBACK_REALIZE, + EWL_CALLBACK_SHOW, + EWL_CALLBACK_HIDE, + EWL_CALLBACK_DESTROY, + EWL_CALLBACK_CONFIGURE, + EWL_CALLBACK_KEY_DOWN, + EWL_CALLBACK_KEY_UP, + EWL_CALLBACK_MOUSE_DOWN, + EWL_CALLBACK_MOUSE_UP, + EWL_CALLBACK_MOUSE_MOVE, + EWL_CALLBACK_FOCUS_IN, + EWL_CALLBACK_FOCUS_OUT, + EWL_CALLBACK_SELECT, + EWL_CALLBACK_UNSELECT, + EWL_CALLBACK_CLICKED, + EWL_CALLBACK_RELEASED, + EWL_CALLBACK_HILITED, + EWL_CALLBACK_MAX }; typedef enum _ewl_callback_type Ewl_Callback_Type; typedef struct _ewl_container Ewl_Container; +#include <ewl_enums.h> + #include <ewl_object.h> #include <ewl_widget.h> #include <ewl_container.h> @@ -64,3 +68,9 @@ #include <ewl_window.h> #include <ewl_text.h> #include <ewl_entry.h> + +/* Playing around */ +#include <ewl_fx.h> + +#include <ewl_seeker.h> +#include <ewl_spinner.h> =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 2001/04/16 11:58:11 1.3 +++ Makefile.am 2001/05/01 04:00:38 1.4 @@ -14,9 +14,13 @@ ewl_container.h \ ewl_entry.h \ ewl_events.h \ + ewl_fx.h \ + ewl_macros.h \ ewl_misc.h \ ewl_object.h \ ewl_prefs.h \ + ewl_seeker.h \ + ewl_spinner.h \ ewl_text.h \ ewl_table.h \ ewl_theme.h \ @@ -30,9 +34,12 @@ ewl_container.c \ ewl_entry.c \ ewl_events.c \ + ewl_fx.c \ ewl_misc.c \ ewl_object.c \ ewl_prefs.c \ + ewl_seeker.c \ + ewl_spinner.c \ ewl_table.c \ ewl_text.c \ ewl_theme.c \ @@ -40,5 +47,5 @@ ewl_window.c \ getopt.c -libewl_la_LIBADD = @ebits_libs@ @ecore_libs@ @evas_libs@ @ewd_libs@ -lm +libewl_la_LIBADD = @ebits_libs@ @ecore_libs@ @evas_libs@ @ewd_libs@ -lm -letox libewl_la_LDFLAGS = -version-info 0:0:0 =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_box.c 2001/04/14 19:59:30 1.2 +++ ewl_box.c 2001/05/01 04:00:38 1.3 @@ -1,70 +1,117 @@ #include <Ewl.h> -static void ewl_box_init(Ewl_Widget * widget, Ewl_Box_Type type); +static Ewl_Widget * ewl_box_new(Ewl_Orientation orientation); +static void ewl_box_init(Ewl_Box * box, Ewl_Orientation orientation); static void ewl_box_realize(Ewl_Widget * widget, void * func_data); static void ewl_box_show(Ewl_Widget * widget, void * func_data); static void ewl_box_hide(Ewl_Widget * widget, void * func_data); static void ewl_box_destroy(Ewl_Widget * widget, void * func_data); static void ewl_box_configure(Ewl_Widget * widget, void * func_data); - -Ewl_Widget * -ewl_box_new(Ewl_Box_Type type) +static Ewl_Widget * +ewl_box_new(Ewl_Orientation orientation) { Ewl_Box * box = NULL; box = NEW(Ewl_Box, 1); - ewl_box_init(EWL_WIDGET(box), type); + ewl_box_init(box, orientation); return EWL_WIDGET(box); } +Ewl_Widget * +ewl_hbox_new(void) +{ + return ewl_box_new(EWL_ORIENTATION_HORISONTAL); +} + +Ewl_Widget * +ewl_vbox_new(void) +{ + return ewl_box_new(EWL_ORIENTATION_VERTICAL); +} + +void +ewl_box_set_orientation(Ewl_Widget * widget, Ewl_Orientation orientation) +{ + CHECK_PARAM_POINTER("widget", widget); + + EWL_BOX(widget)->orientation = orientation; + + ewl_widget_configure(widget); +} + +void +ewl_box_set_spacing(Ewl_Widget * widget, unsigned int spacing) +{ + CHECK_PARAM_POINTER("widget", widget); + + EWL_BOX(widget)->spacing = spacing; + + ewl_widget_configure(widget); +} + +void +ewl_box_set_homogeneous(Ewl_Widget * widget, unsigned int homogeneous) +{ + CHECK_PARAM_POINTER("widget", widget); + + EWL_BOX(widget)->homogeneous = homogeneous; + + ewl_widget_configure(widget); +} + + static void -ewl_box_init(Ewl_Widget * widget, Ewl_Box_Type type) +ewl_box_init(Ewl_Box * box, Ewl_Orientation orientation) { - CHECK_PARAM_POINTER("widget", widget); + CHECK_PARAM_POINTER("box", box); - memset(EWL_BOX(widget), 0, sizeof(Ewl_Box)); + memset(box, 0, sizeof(Ewl_Box)); - ewl_callback_append(widget, Ewl_Callback_Realize, - ewl_box_realize, NULL); - ewl_callback_append(widget, Ewl_Callback_Show, - ewl_box_show, NULL); - ewl_callback_append(widget, Ewl_Callback_Hide, - ewl_box_hide, NULL); - ewl_callback_append(widget, Ewl_Callback_Destroy, - ewl_box_destroy, NULL); - ewl_callback_append(widget, Ewl_Callback_Configure, - ewl_box_configure, NULL); - - widget->container.recursive = TRUE; - - EWL_BOX(widget)->type = type; - EWL_BOX(widget)->spacing = 5; - - EWL_OBJECT(widget)->current.w = 10; - EWL_OBJECT(widget)->current.h = 10; - EWL_OBJECT(widget)->maximum.w = 2024; - EWL_OBJECT(widget)->maximum.h = 2024; - EWL_OBJECT(widget)->minimum.w = 10; - EWL_OBJECT(widget)->minimum.h = 10; - EWL_OBJECT(widget)->request.w = 10; - EWL_OBJECT(widget)->request.h = 10; + ewl_callback_append(EWL_WIDGET(box), + EWL_CALLBACK_REALIZE, ewl_box_realize, NULL); + ewl_callback_append(EWL_WIDGET(box), + EWL_CALLBACK_SHOW, ewl_box_show, NULL); + ewl_callback_append(EWL_WIDGET(box), + EWL_CALLBACK_HIDE, ewl_box_hide, NULL); + ewl_callback_append(EWL_WIDGET(box), + EWL_CALLBACK_DESTROY, ewl_box_destroy, NULL); + ewl_callback_append(EWL_WIDGET(box), + EWL_CALLBACK_CONFIGURE, ewl_box_configure, NULL); + + EWL_WIDGET(box)->container.recursive = TRUE; + + box->orientation = orientation; + box->spacing = 5; + box->homogeneous = 0; + + EWL_OBJECT(box)->current.w = 10; + EWL_OBJECT(box)->current.h = 10; + EWL_OBJECT(box)->maximum.w = 2024; + EWL_OBJECT(box)->maximum.h = 2024; + EWL_OBJECT(box)->minimum.w = 10; + EWL_OBJECT(box)->minimum.h = 10; + EWL_OBJECT(box)->request.w = 10; + EWL_OBJECT(box)->request.h = 10; } static void ewl_box_realize(Ewl_Widget * widget, void * func_data) { - if (EWL_BOX(widget)->type == Ewl_Box_Type_Horisontal) - ewl_widget_set_ebit(widget, - ewl_theme_ebit_get("box", "horisontal", "base")); - else - ewl_widget_set_ebit(widget, - ewl_theme_ebit_get("box", "vertical", "base")); + char * image = NULL; - ewl_container_new(widget); + if (EWL_BOX(widget)->orientation == EWL_ORIENTATION_HORISONTAL) + image = ewl_theme_ebit_get("box", "horisontal", "base"); + else if (EWL_BOX(widget)->orientation == EWL_ORIENTATION_VERTICAL) + image = ewl_theme_ebit_get("box", "vertical", "base"); + + EWL_BOX(widget)->ebits_object = ebits_load(image); + IF_FREE(image); + ebits_add_to_evas(EWL_BOX(widget)->ebits_object, widget->evas); + ebits_set_layer(EWL_BOX(widget)->ebits_object, widget->object.layer); } static void @@ -72,9 +119,21 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_show(widget->ebits_object); + ewl_fx_clip_box_create(widget); - ewl_container_set_clip(widget); + ebits_show(EWL_BOX(widget)->ebits_object); + + if (widget->parent && widget->parent->container.clip_box) + { + evas_set_clip(widget->evas, widget->fx_clip_box, + widget->parent->container.clip_box); + ebits_set_clip(EWL_BOX(widget)->ebits_object, + widget->fx_clip_box); + evas_set_clip(widget->evas, widget->container.clip_box, + widget->fx_clip_box); + } + + evas_set_color(widget->evas, widget->fx_clip_box, 255, 255, 255, 255); } static void @@ -82,7 +141,7 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_hide(widget->ebits_object); + ebits_hide(EWL_BOX(widget)->ebits_object); } static void @@ -90,8 +149,7 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_hide(widget->ebits_object); - ebits_free(widget->ebits_object); + ebits_free(EWL_BOX(widget)->ebits_object); FREE(EWL_BOX(widget)); } @@ -99,71 +157,85 @@ static void ewl_box_configure(Ewl_Widget * widget, void * func_data) { + int l = 0, r = 0, t = 0, b = 0; + CHECK_PARAM_POINTER("widget", widget); EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->request.h; + + ebits_get_insets(EWL_BOX(widget)->ebits_object, &l, &r, &t, &b); - if (EWL_OBJECT(widget)->realized) { - ebits_move(widget->ebits_object, EWL_OBJECT(widget)->request.x, - EWL_OBJECT(widget)->request.y); - ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->request.w, - EWL_OBJECT(widget)->request.h); - ewl_container_clip_box_resize(widget); - } + if (EWL_OBJECT(widget)->realized) + { + ebits_move(EWL_BOX(widget)->ebits_object, + EWL_OBJECT(widget)->request.x, + EWL_OBJECT(widget)->request.y); + ebits_resize(EWL_BOX(widget)->ebits_object, + EWL_OBJECT(widget)->request.w, + EWL_OBJECT(widget)->request.h); + ewl_fx_clip_box_resize(widget); + if (widget->container.clip_box) + { + evas_move(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.x + l, + EWL_OBJECT(widget)->current.y + t); + evas_resize(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.w - (l+r), + EWL_OBJECT(widget)->current.h - (t+b)); + } + } if (!widget->container.children || !widget->container.children->nodes) return; - if (EWL_BOX(widget)->type == Ewl_Box_Type_Horisontal) { + if (EWL_BOX(widget)->orientation == EWL_ORIENTATION_HORISONTAL) + { Ewl_Widget * child; - int w, x, l, r, t, b; + int w = 0, x = 0; ewd_list_goto_first(widget->container.children); - if (EWL_OBJECT(widget)->realized) { - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - } else { - l = 0; - r = 0; - t = 0; - b = 0; - } - w = EWL_OBJECT(widget)->current.w / widget->container.children->nodes; x = EWL_OBJECT(widget)->current.x + l; - while ((child = ewd_list_next(widget->container.children)) != NULL) { + while ((child = ewd_list_next(widget->container.children)) != NULL) + { EWL_OBJECT(child)->request.x = x; EWL_OBJECT(child)->request.y = EWL_OBJECT(widget)->current.y + t; EWL_OBJECT(child)->request.w = w - (l + r); EWL_OBJECT(child)->request.h = EWL_OBJECT(widget)->current.h - (t + b); - if (EWL_OBJECT(child)->request.w < EWL_OBJECT(child)->minimum.w) { - EWL_OBJECT(child)->request.x += (EWL_OBJECT(child)->request.w / 2) - - (EWL_OBJECT(child)->minimum.w / 2); + if (EWL_OBJECT(child)->request.w < EWL_OBJECT(child)->minimum.w) + { + EWL_OBJECT(child)->request.x += + (EWL_OBJECT(child)->request.w / 2) - + (EWL_OBJECT(child)->minimum.w / 2); EWL_OBJECT(child)->request.w = EWL_OBJECT(child)->minimum.w; - } + } - if (EWL_OBJECT(child)->request.h < EWL_OBJECT(child)->minimum.h) { + if (EWL_OBJECT(child)->request.h < EWL_OBJECT(child)->minimum.h) + { EWL_OBJECT(child)->request.y += (EWL_OBJECT(child)->request.h / 2) - (EWL_OBJECT(child)->minimum.h / 2); EWL_OBJECT(child)->request.h = EWL_OBJECT(child)->minimum.h; - } + } - if (EWL_OBJECT(child)->request.w > EWL_OBJECT(child)->maximum.w) { + if (EWL_OBJECT(child)->request.w > EWL_OBJECT(child)->maximum.w) + { EWL_OBJECT(child)->request.x += (EWL_OBJECT(child)->request.w / 2) - (EWL_OBJECT(child)->maximum.w / 2); EWL_OBJECT(child)->request.w = EWL_OBJECT(child)->maximum.w; - } + } - if (EWL_OBJECT(child)->request.h > EWL_OBJECT(child)->maximum.h) { + if (EWL_OBJECT(child)->request.h > EWL_OBJECT(child)->maximum.h) + { EWL_OBJECT(child)->request.y += (EWL_OBJECT(child)->request.h / 2) - (EWL_OBJECT(child)->maximum.h / 2); EWL_OBJECT(child)->request.h = EWL_OBJECT(child)->maximum.h; - } + } if (EWL_OBJECT(child)->request.y < EWL_OBJECT(widget)->current.y + t) EWL_OBJECT(child)->request.y = EWL_OBJECT(widget)->current.y + t; @@ -172,54 +244,53 @@ ewl_widget_configure(child); - } - } else if (EWL_BOX(widget)->type == Ewl_Box_Type_Vertical) { + } + } + else if (EWL_BOX(widget)->orientation == EWL_ORIENTATION_VERTICAL) + { Ewl_Widget * child; - int h, y, l, r, t, b; + int h = 0; + int y = 0; ewd_list_goto_first(widget->container.children); - if (EWL_OBJECT(widget)->realized) { - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - } else { - l = 0; - r = 0; - t = 0; - b = 0; - } - h = EWL_OBJECT(widget)->current.h / widget->container.children->nodes; y = EWL_OBJECT(widget)->current.y + t; - while ((child = ewd_list_next(widget->container.children)) != NULL) { + while ((child = ewd_list_next(widget->container.children)) != NULL) + { EWL_OBJECT(child)->request.x = EWL_OBJECT(widget)->current.x + l; EWL_OBJECT(child)->request.y = y; EWL_OBJECT(child)->request.w = EWL_OBJECT(widget)->current.w - (l + r); EWL_OBJECT(child)->request.h = h - (t + b); - if (EWL_OBJECT(child)->request.w < EWL_OBJECT(child)->minimum.w) { + if (EWL_OBJECT(child)->request.w < EWL_OBJECT(child)->minimum.w) + { EWL_OBJECT(child)->request.x += (EWL_OBJECT(child)->request.w / 2) - (EWL_OBJECT(child)->minimum.w / 2); EWL_OBJECT(child)->request.w = EWL_OBJECT(child)->minimum.w; - } + } - if (EWL_OBJECT(child)->request.h < EWL_OBJECT(child)->minimum.h) { + if (EWL_OBJECT(child)->request.h < EWL_OBJECT(child)->minimum.h) + { EWL_OBJECT(child)->request.y += (EWL_OBJECT(child)->request.h / 2) - (EWL_OBJECT(child)->minimum.h / 2); EWL_OBJECT(child)->request.h = EWL_OBJECT(child)->minimum.h; - } + } - if (EWL_OBJECT(child)->request.w > EWL_OBJECT(child)->maximum.w) { + if (EWL_OBJECT(child)->request.w > EWL_OBJECT(child)->maximum.w) + { EWL_OBJECT(child)->request.x += (EWL_OBJECT(child)->request.w / 2) - (EWL_OBJECT(child)->maximum.w / 2); EWL_OBJECT(child)->request.w = EWL_OBJECT(child)->maximum.w; - } + } - if (EWL_OBJECT(child)->request.h > EWL_OBJECT(child)->maximum.h) { + if (EWL_OBJECT(child)->request.h > EWL_OBJECT(child)->maximum.h) + { EWL_OBJECT(child)->request.y += (EWL_OBJECT(child)->request.h / 2) - (EWL_OBJECT(child)->maximum.h / 2); EWL_OBJECT(child)->request.h = EWL_OBJECT(child)->maximum.h; - } + } if (EWL_OBJECT(child)->request.x < EWL_OBJECT(widget)->current.x + l) EWL_OBJECT(child)->request.x = EWL_OBJECT(widget)->current.x + l; @@ -227,36 +298,6 @@ y += h - (t + b) + EWL_BOX(widget)->spacing; ewl_widget_configure(child); - } - } -} - -void -ewl_box_set_type(Ewl_Widget * widget, Ewl_Box_Type type) -{ - CHECK_PARAM_POINTER("widget", widget); - - EWL_BOX(widget)->type = type; - - ewl_callback_call(widget, Ewl_Callback_Configure); -} - -void -ewl_box_set_spacing(Ewl_Widget * widget, unsigned int spacing) -{ - CHECK_PARAM_POINTER("widget", widget); - - EWL_BOX(widget)->spacing = spacing; - - ewl_callback_call(widget, Ewl_Callback_Configure); -} - -void -ewl_box_set_homogeneous(Ewl_Widget * widget, unsigned int homogeneous) -{ - CHECK_PARAM_POINTER("widget", widget); - - EWL_BOX(widget)->homogeneous = homogeneous; - - ewl_callback_call(widget, Ewl_Callback_Configure); + } + } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_box.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_box.h 2001/04/16 02:14:19 1.2 +++ ewl_box.h 2001/05/01 04:00:38 1.3 @@ -1,31 +1,29 @@ -#ifndef __EWL_BOX_H__ -#define __EWL_BOX_H__ +#ifndef __EWL_BOX_H +#define __EWL_BOX_H -enum _ewl_box_type { - Ewl_Box_Type_Horisontal, - Ewl_Box_Type_Vertical -}; - -typedef enum _ewl_box_type Ewl_Box_Type; - struct _ewl_box { - Ewl_Widget widget; - Ewl_Box_Type type; - unsigned int homogeneous; - unsigned int spacing; + Ewl_Widget widget; + Ewl_Orientation orientation; + Ebits_Object * ebits_object; + unsigned int homogeneous; + unsigned int spacing; }; -typedef struct _ewl_box Ewl_Box; +typedef struct _ewl_box Ewl_Box; #define EWL_BOX(box) ((Ewl_Box *) box) -Ewl_Widget * ewl_box_new(Ewl_Box_Type type); -Ewl_Widget * ewl_box_new_all(Ewl_Box_Type type, +Ewl_Widget * ewl_hbox_new(void); +Ewl_Widget * ewl_vbox_new(void); +Ewl_Widget * ewl_box_new_all(Ewl_Orientation orientation, unsigned int spacing, + unsigned int homogeneous); +void ewl_box_set_orientation(Ewl_Widget * widget, + Ewl_Orientation orientation); +void ewl_box_set_spacing(Ewl_Widget * widget, + unsigned int spacing); +void ewl_box_set_homogeneous(Ewl_Widget * widget, unsigned int homogeneous); -void ewl_box_set_type(Ewl_Widget * widget, Ewl_Box_Type type); -void ewl_box_set_spacing(Ewl_Widget * widget, unsigned int spacing); -void ewl_box_set_homogeneous(Ewl_Widget * widget, unsigned int homogeneous); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_button.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ewl_button.c 2001/04/16 11:58:11 1.4 +++ ewl_button.c 2001/05/01 04:00:38 1.5 @@ -13,56 +13,71 @@ static void ewl_button_mouse_up(Ewl_Widget * widget, void * func_data); static void ewl_button_focus_in(Ewl_Widget * widget, void * func_data); static void ewl_button_focus_out(Ewl_Widget * widget, void * func_data); +static void ewl_button_select(Ewl_Widget * widget, void * func_data); +static void ewl_button_unselect(Ewl_Widget * widget, void * func_data); - static void ewl_button_set_state(Ewl_Widget * widget, void * func_data); Ewl_Widget * -ewl_button_new(Ewl_Button_Type type) +ewl_button_new() { Ewl_Button * button = NULL; button = NEW(Ewl_Button, 1); - ewl_button_init(EWL_WIDGET(button), type); + ewl_button_init(EWL_WIDGET(button), EWL_BUTTON_TYPE_NORMAL); return EWL_WIDGET(button); } +Ewl_Widget * +ewl_button_new_with_label(const char * label) +{ + Ewl_Widget * button; + Ewl_Widget * text; + + button = ewl_button_new(EWL_BUTTON_TYPE_NORMAL); + + text = ewl_text_new(); + ewl_text_set_text(text, strdup(label)); + ewl_container_append_child(button, text); + + return button; +} + static void ewl_button_init(Ewl_Widget * widget, Ewl_Button_Type type) { CHECK_PARAM_POINTER("widget", widget); - /* Zero out bogus values before adding anything */ memset(EWL_BUTTON(widget), 0, sizeof(Ewl_Button)); + + EWL_WIDGET(widget)->type = EWL_WIDGET_BUTTON; - /* Add necessery callback's */ - ewl_callback_append(widget, Ewl_Callback_Realize, + ewl_callback_append(widget, EWL_CALLBACK_REALIZE, ewl_button_realize, NULL); - ewl_callback_append(widget, Ewl_Callback_Show, + ewl_callback_append(widget, EWL_CALLBACK_SHOW, ewl_button_show, NULL); - ewl_callback_append(widget, Ewl_Callback_Hide, + ewl_callback_append(widget, EWL_CALLBACK_HIDE, ewl_button_hide, NULL); - ewl_callback_append(widget, Ewl_Callback_Destroy, + ewl_callback_append(widget, EWL_CALLBACK_DESTROY, ewl_button_destroy, NULL); - ewl_callback_append(widget, Ewl_Callback_Configure, + ewl_callback_append(widget, EWL_CALLBACK_CONFIGURE, ewl_button_configure, NULL); - ewl_callback_append(widget, Ewl_Callback_Key_Down, + ewl_callback_append(widget, EWL_CALLBACK_KEY_DOWN, ewl_button_key_down, NULL); - ewl_callback_append(widget, Ewl_Callback_Key_Up, + ewl_callback_append(widget, EWL_CALLBACK_KEY_UP, ewl_button_key_up, NULL); - ewl_callback_append(widget, Ewl_Callback_Mouse_Down, + ewl_callback_append(widget, EWL_CALLBACK_MOUSE_DOWN, ewl_button_mouse_down, NULL); - ewl_callback_append(widget, Ewl_Callback_Mouse_Up, + ewl_callback_append(widget, EWL_CALLBACK_MOUSE_UP, ewl_button_mouse_up, NULL); - ewl_callback_append(widget, Ewl_Callback_Focus_In, + ewl_callback_append(widget, EWL_CALLBACK_FOCUS_IN, ewl_button_focus_in, NULL); - ewl_callback_append(widget, Ewl_Callback_Focus_Out, + ewl_callback_append(widget, EWL_CALLBACK_FOCUS_OUT, ewl_button_focus_out, NULL); - /* Do this so the button's child wont get any events */ widget->container.recursive = FALSE; EWL_BUTTON(widget)->type = type; @@ -80,26 +95,62 @@ static void ewl_button_realize(Ewl_Widget * widget, void * func_data) { + char * image = NULL; + CHECK_PARAM_POINTER("widget", widget); + + if (EWL_BUTTON(widget)->type == EWL_BUTTON_TYPE_CHECK) + image = ewl_theme_ebit_get("button", "check", "base"); + else if (EWL_BUTTON(widget)->type == EWL_BUTTON_TYPE_NORMAL) + image = ewl_theme_ebit_get("button", "default", "base"); + else if (EWL_BUTTON(widget)->type == EWL_BUTTON_TYPE_RADIO) + image = ewl_theme_ebit_get("button", "radio", "base"); - /* Lets do only this for now */ - EWL_BUTTON(widget)->state = Ewl_Button_State_Normal; + EWL_BUTTON(widget)->ebits_object = ebits_load(image); + FREE(image); + ebits_add_to_evas(EWL_BUTTON(widget)->ebits_object, widget->evas); + ebits_set_layer(EWL_BUTTON(widget)->ebits_object, widget->object.layer); - ewl_widget_set_ebit(widget,ewl_theme_ebit_get("button", "default", "base")); + if (widget->container.children) + { + Ewl_Widget * child; - ewl_container_new(widget); + ewd_list_goto_first(widget->container.children); + + while ((child = ewd_list_next(widget->container.children)) != NULL) + ewl_widget_realize(child); + } } static void ewl_button_show(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + ewl_fx_clip_box_create(widget); - /* Prehaps show it's parent automatically ? - * But that sounds more like the ewl_widget_show's responsibility */ - ebits_show(widget->ebits_object); + ebits_show(EWL_BUTTON(widget)->ebits_object); + if (widget->parent && widget->parent->container.clip_box) + { + evas_set_clip(widget->evas, widget->fx_clip_box, + widget->parent->container.clip_box); + ebits_set_clip(EWL_BUTTON(widget)->ebits_object, + widget->fx_clip_box); + evas_set_clip(widget->evas, widget->container.clip_box, + widget->fx_clip_box); + } + + if (widget->container.children) + { + Ewl_Widget * child; - ewl_container_set_clip(widget); + ewd_list_goto_first(widget->container.children); + + while ((child = ewd_list_next(widget->container.children)) != NULL) + ewl_widget_show(child); + } + + evas_set_color(widget->evas, widget->fx_clip_box, 255, 255, 255, 255); } static void @@ -107,8 +158,7 @@ { CHECK_PARAM_POINTER("widget", widget); - /* Maybe hide children to ? */ - ebits_hide(widget->ebits_object); + ebits_hide(EWL_BUTTON(widget)->ebits_object); } static void @@ -116,7 +166,7 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_free(widget->ebits_object); + ebits_free(EWL_BUTTON(widget)->ebits_object); FREE(EWL_BUTTON(widget)); } @@ -125,24 +175,23 @@ ewl_button_configure(Ewl_Widget * widget, void * func_data) { Ewl_Widget * child = NULL; + int l = 0, r = 0, t = 0, b = 0; CHECK_PARAM_POINTER("widget", widget); EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; + + if (EWL_BUTTON(widget)->ebits_object) + ebits_get_insets(EWL_BUTTON(widget)->ebits_object, &l, &r, &t, &b); -/* DPRINT(8, "Button X %i Y %i", EWL_OBJECT(widget)->request.x, - EWL_OBJECT(widget)->request.y); -*/ if (!widget->container.children || !widget->container.children->nodes) { - EWL_OBJECT(widget)->request.w = 85; - EWL_OBJECT(widget)->request.h = 35; + EWL_OBJECT(widget)->request.w = EWL_OBJECT(widget)->minimum.w; + EWL_OBJECT(widget)->request.h = EWL_OBJECT(widget)->minimum.h; } else { int w = 6, h = 6, x, y; - int l, r, t, b; - ewd_list_goto_first(widget->container.children); - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + ewd_list_goto_first(widget->container.children); x = EWL_OBJECT(widget)->current.x + l + 2; y = EWL_OBJECT(widget)->current.y + t + 2; @@ -160,16 +209,28 @@ EWL_OBJECT(widget)->request.h = h; } - if (widget->ebits_object) - ebits_move(widget->ebits_object, + if (EWL_BUTTON(widget)->ebits_object) + { + ebits_move(EWL_BUTTON(widget)->ebits_object, EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); + + ebits_resize(EWL_BUTTON(widget)->ebits_object, + EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); - if (widget->ebits_object) - ebits_resize(widget->ebits_object, - EWL_OBJECT(widget)->request.w, EWL_OBJECT(widget)->request.h); + ewl_fx_clip_box_resize(widget); + } - ewl_container_clip_box_resize(widget); + if (widget->container.clip_box) + { + evas_move(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.x + l, + EWL_OBJECT(widget)->current.y + t); + evas_resize(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.w - (l+r), + EWL_OBJECT(widget)->current.h - (t+b)); + } + EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->request.h; EWL_OBJECT(widget)->minimum.w = EWL_OBJECT(widget)->request.w; @@ -188,11 +249,11 @@ ev = func_data; if (!strcmp(ev->key, "Return")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Clicked); + ewl_button_set_state(widget, (void *) EWL_STATE_PRESSED); } else if (!strcmp(ev->key, "XP_Enter")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Clicked); + ewl_button_set_state(widget, (void *) EWL_STATE_PRESSED); } else if (!strcmp(ev->key, "Space")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Clicked); + ewl_button_set_state(widget, (void *) EWL_STATE_PRESSED); } } @@ -206,11 +267,11 @@ ev = func_data; if (!strcmp(ev->key, "Return")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Normal); + ewl_button_set_state(widget, (void *) EWL_STATE_NORMAL); } else if (!strcmp(ev->key, "XP_Enter")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Normal); + ewl_button_set_state(widget, (void *) EWL_STATE_NORMAL); } else if (!strcmp(ev->key, "Space")) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Normal); + ewl_button_set_state(widget, (void *) EWL_STATE_NORMAL); } } @@ -224,7 +285,7 @@ ev = func_data; if (ev->button == 1) { - ewl_button_set_state(widget, (void *) Ewl_Button_State_Clicked); + ewl_button_set_state(widget, (void *) EWL_STATE_PRESSED); } else if (ev->button == 2) { } else if (ev->button == 3) { } @@ -246,9 +307,9 @@ EWL_OBJECT(widget)->current.w >= ev->x && EWL_OBJECT(widget)->current.y + EWL_OBJECT(widget)->current.h >= ev->y) - ewl_button_set_state(widget, (void *) Ewl_Button_State_Hilited); + ewl_button_set_state(widget, (void *) EWL_STATE_HILITED); else - ewl_button_set_state(widget, (void *) Ewl_Button_State_Normal); + ewl_button_set_state(widget, (void *) EWL_STATE_NORMAL); } else if (ev->button == 2) { } else if (ev->button == 3) { } @@ -257,26 +318,43 @@ static void ewl_button_set_state(Ewl_Widget * widget, void * func_data) { + char * image = NULL; + CHECK_PARAM_POINTER("widget", widget); - if (EWL_BUTTON(widget)->type == Ewl_Button_Type_Normal) { - if ((Ewl_Button_State) func_data == Ewl_Button_State_Normal) { - EWL_BUTTON(widget)->state = Ewl_Button_State_Normal; - ewl_widget_set_ebit(widget, - ewl_theme_ebit_get("button", "default", "base")); - ewl_callback_call(widget, Ewl_Callback_Released); - } else if ((Ewl_Button_State) func_data == Ewl_Button_State_Hilited) { - EWL_BUTTON(widget)->state = Ewl_Button_State_Hilited; - ewl_widget_set_ebit(widget, - ewl_theme_ebit_get("button", "default", "hilited")); - ewl_callback_call(widget, Ewl_Callback_Hilited); - } else if ((Ewl_Button_State) func_data == Ewl_Button_State_Clicked) { - EWL_BUTTON(widget)->state = Ewl_Button_State_Clicked; - ewl_widget_set_ebit(widget, - ewl_theme_ebit_get("button", "default", "clicked")); - ewl_callback_call(widget, Ewl_Callback_Clicked); - } - } + if (EWL_BUTTON(widget)->type == EWL_BUTTON_TYPE_NORMAL) + { + if ((Ewl_State) func_data == EWL_STATE_NORMAL) + { + EWL_BUTTON(widget)->state = EWL_STATE_NORMAL; + image = ewl_theme_ebit_get("button", "default", "base"); + ewl_callback_call(widget, EWL_CALLBACK_RELEASED); + } + else if ((Ewl_State) func_data == EWL_STATE_HILITED) + { + EWL_BUTTON(widget)->state = EWL_STATE_HILITED; + image = ewl_theme_ebit_get("button", "default", "hilited"); + ewl_callback_call(widget, EWL_CALLBACK_HILITED); + } + else if ((Ewl_State) func_data == EWL_STATE_PRESSED) + { + EWL_BUTTON(widget)->state = EWL_STATE_PRESSED; + image = ewl_theme_ebit_get("button", "default", "clicked"); + ewl_callback_call(widget, EWL_CALLBACK_CLICKED); + } + ebits_hide(EWL_BUTTON(widget)->ebits_object); + ebits_free(EWL_BUTTON(widget)->ebits_object); + EWL_BUTTON(widget)->ebits_object = ebits_load(image); + ebits_add_to_evas(EWL_BUTTON(widget)->ebits_object, widget->evas); + ebits_set_layer(EWL_BUTTON(widget)->ebits_object, + EWL_OBJECT(widget)->layer); + if (EWL_OBJECT(widget)->visible) + ebits_show(EWL_BUTTON(widget)->ebits_object); + ebits_set_clip(EWL_BUTTON(widget)->ebits_object, + widget->fx_clip_box); + ewl_widget_configure(widget); + IF_FREE(image); + } } static void @@ -284,15 +362,29 @@ { CHECK_PARAM_POINTER("widget", widget); - if (EWL_BUTTON(widget)->state != Ewl_Button_State_Clicked) - ewl_button_set_state(widget, (void *) Ewl_Button_State_Hilited); + if (EWL_BUTTON(widget)->state != EWL_STATE_PRESSED) + ewl_button_set_state(widget, (void *) EWL_STATE_HILITED); } static void ewl_button_focus_out(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + if (EWL_BUTTON(widget)->state != EWL_STATE_PRESSED) + ewl_button_set_state(widget, (void *) EWL_STATE_NORMAL); +} + +static void +ewl_button_select(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); - if (EWL_BUTTON(widget)->state != Ewl_Button_State_Clicked) - ewl_button_set_state(widget, (void *) Ewl_Button_State_Normal); + +} + +static void +ewl_button_unselect(Ewl_Widget * widget, void * func_data) +{ + CHECK_PARAM_POINTER("widget", widget); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_button.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_button.h 2001/04/14 01:16:36 1.1.1.1 +++ ewl_button.h 2001/05/01 04:00:38 1.2 @@ -2,25 +2,20 @@ #ifndef __EWL_BUTTON_H__ #define __EWL_BUTTON_H__ -enum _ewl_button_state { - Ewl_Button_State_Normal, - Ewl_Button_State_Hilited, - Ewl_Button_State_Clicked -}; - typedef enum _ewl_button_state Ewl_Button_State; enum _ewl_button_type { - Ewl_Button_Type_Normal, - Ewl_Button_Type_Check, - Ewl_Button_Type_Radio + EWL_BUTTON_TYPE_NORMAL, + EWL_BUTTON_TYPE_CHECK, + EWL_BUTTON_TYPE_RADIO }; typedef enum _ewl_button_type Ewl_Button_Type; struct _ewl_button { Ewl_Widget widget; - Ewl_Button_State state; + Ebits_Object ebits_object; + Ewl_State state; Ewl_Button_Type type; }; @@ -28,6 +23,7 @@ #define EWL_BUTTON(button) ((Ewl_Button *) button) -Ewl_Widget * ewl_button_new(Ewl_Button_Type type); +Ewl_Widget * ewl_button_new(); +Ewl_Widget * ewl_button_new_with_label(const char * label); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_callback.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_callback.c 2001/04/16 02:14:19 1.3 +++ ewl_callback.c 2001/05/01 04:00:38 1.4 @@ -6,6 +6,8 @@ { Ewl_Callback * callback = NULL; + CHECK_PARAM_POINTER_RETURN("widget", widget, -1); + callback = NEW(Ewl_Callback, 1); memset(callback, 0, sizeof(Ewl_Callback)); @@ -29,6 +31,8 @@ { Ewl_Callback * callback = NULL; + CHECK_PARAM_POINTER_RETURN("widget", widget, -1); + callback = NEW(Ewl_Callback, 1);; callback = memset(callback, 0, sizeof(Ewl_Callback)); @@ -49,6 +53,8 @@ ewl_callback_del(Ewl_Widget * widget, Ewl_Callback_Type type, int callback_number) { + CHECK_PARAM_POINTER("widget", widget); + if (!widget->callbacks[type] || ewd_list_is_empty(widget->callbacks[type]) || callback_number < widget->callbacks[type]->nodes) @@ -65,6 +71,8 @@ { Ewl_Callback * callback = NULL; + CHECK_PARAM_POINTER("widget", widget); + if (!widget->callbacks[type] || ewd_list_is_empty(widget->callbacks[type])) return; @@ -79,6 +87,8 @@ Ewl_Callback_Type type, void * func_data) { Ewl_Callback * callback = NULL; + + CHECK_PARAM_POINTER("widget", widget); if (!widget->callbacks[type] || ewd_list_is_empty(widget->callbacks[type])) return; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_container.c 2001/04/16 02:14:19 1.3 +++ ewl_container.c 2001/05/01 04:00:38 1.4 @@ -22,6 +22,9 @@ EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; + if (!parent->container.children) + ewl_container_new(parent); + if (ewd_list_is_empty(parent->container.children)) ewl_container_show_clip(parent); @@ -44,6 +47,9 @@ EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; + if (!parent->container.children) + ewl_container_new(parent); + if (ewd_list_is_empty(parent->container.children)) ewl_container_show_clip(parent); @@ -63,8 +69,28 @@ } void -ewl_container_insert_child(Ewl_Widget * parent, Ewl_Widget * child) +ewl_container_insert_child(Ewl_Widget * parent, Ewl_Widget * child, int index) { + CHECK_PARAM_POINTER("parent", parent); + CHECK_PARAM_POINTER("child", child); + + child->evas = parent->evas; + child->evas_window = parent->evas_window; + child->parent = parent; + + EWL_OBJECT(child)->layer = EWL_OBJECT(parent)->layer+1; + + if (!parent->container.children) + ewl_container_new(parent); + + if (ewd_list_is_empty(parent->container.children)) + ewl_container_show_clip(parent); + + if (parent->container.free_cb) + ewd_list_set_free_cb(parent->container.children, + parent->container.free_cb); + + ewd_list_goto_index(parent->container.children, index); ewd_list_insert(parent->container.children, child); } @@ -79,12 +105,12 @@ ewd_list_goto_first(widget->container.children); - if (widget->type == Ewl_Widget_Table) - { + if (widget->type == EWL_WIDGET_TABLE) + { Ewl_Table_Child * child = NULL; while ((child = ewd_list_next(widget->container.children)) != NULL) - { + { if (x >= EWL_OBJECT(child->child)->current.x && y >= EWL_OBJECT(child->child)->current.y && EWL_OBJECT(child->child)->current.x + @@ -92,20 +118,20 @@ EWL_OBJECT(child->child)->current.y + EWL_OBJECT(child->child)->current.h >= y) return child->child; - } - } + } + } else - { + { Ewl_Widget * child = NULL; while ((child = ewd_list_next(widget->container.children)) != NULL) - { + { if (x >= EWL_OBJECT(child)->current.x && y >= EWL_OBJECT(child)->current.y && EWL_OBJECT(child)->current.x + EWL_OBJECT(child)->current.w >= x && EWL_OBJECT(child)->current.y + EWL_OBJECT(child)->current.h >= y) return child; - } - } + } + } return NULL; } @@ -124,12 +150,13 @@ child = widget; - while ((child2 = ewl_container_get_child_at(child, x, y)) != NULL) { + while ((child2 = ewl_container_get_child_at(child, x, y)) != NULL) + { if (child2->container.recursive) child = ewl_container_get_child_at(child, x, y); else return child2; - } + } return NULL; } @@ -137,40 +164,32 @@ void ewl_container_clip_box_create(Ewl_Widget * widget) { - if (!widget->container.clip_box) { - int l = 0, r = 0, t = 0, b = 0; - - if (widget->ebits_object) - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - + if (!widget->container.clip_box) + { widget->container.clip_box = evas_add_rectangle(widget->evas); evas_set_color(widget->evas, widget->container.clip_box, 255, 255, 255, 255); evas_move(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->current.x +l, EWL_OBJECT(widget)->current.y +t); + EWL_OBJECT(widget)->current.x, EWL_OBJECT(widget)->current.y); evas_resize(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->current.w - (l+r), - EWL_OBJECT(widget)->current.h - (t+b)); + EWL_OBJECT(widget)->current.w, + EWL_OBJECT(widget)->current.h); evas_set_layer(widget->evas, widget->container.clip_box, EWL_OBJECT(widget)->layer); - } + } } void ewl_container_clip_box_resize(Ewl_Widget * widget) { - if (widget->container.clip_box) { - int l = 0, r = 0, t = 0, b = 0; - - if (widget->ebits_object) - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); - + if (widget->container.clip_box) + { evas_move(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->request.x +l, EWL_OBJECT(widget)->request.y +t); + EWL_OBJECT(widget)->request.x, EWL_OBJECT(widget)->request.y); evas_resize(widget->evas, widget->container.clip_box, - EWL_OBJECT(widget)->request.w - (l+r), - EWL_OBJECT(widget)->request.h - (t+b)); - } + EWL_OBJECT(widget)->request.w, + EWL_OBJECT(widget)->request.h); + } } void @@ -179,13 +198,10 @@ CHECK_PARAM_POINTER("widget", widget); if (widget->parent && - widget->parent->container.clip_box && + widget->fx_clip_box && widget->container.clip_box) evas_set_clip(widget->evas, widget->container.clip_box, - widget->parent->container.clip_box); - - if (widget->ebits_object) - ebits_set_clip(widget->ebits_object,widget->parent->container.clip_box); + widget->fx_clip_box); } void =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_container.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_container.h 2001/04/14 19:59:30 1.2 +++ ewl_container.h 2001/05/01 04:00:38 1.3 @@ -3,21 +3,28 @@ #define __EWL_CONTAINER_H__ struct _ewl_container { - Ewd_List * children; - Ewd_Free_Cb free_cb; - int recursive; - Evas_Object clip_box; + Ewd_List * children; + Ewd_Free_Cb free_cb; + int recursive; + Evas_Object clip_box; }; #define EWL_CONTAINER(widget) ((Ewl_Container *) widget) void ewl_container_new(Ewl_Widget * widget); -void ewl_container_append_child(Ewl_Widget * parent, Ewl_Widget * child); -void ewl_container_prepend_child(Ewl_Widget * parent, Ewl_Widget * child); -void ewl_container_insert_child(Ewl_Widget * parent, Ewl_Widget * child); -Ewl_Widget * ewl_container_get_child_at(Ewl_Widget * widget, int x, int y); -Ewl_Widget * -ewl_container_get_child_at_recursive(Ewl_Widget * widget, int x, int y); +void ewl_container_append_child(Ewl_Widget * parent, + Ewl_Widget * child); +void ewl_container_prepend_child(Ewl_Widget * parent, + Ewl_Widget * child); +void ewl_container_insert_child(Ewl_Widget * parent, + Ewl_Widget * child, + int index); +Ewl_Widget * ewl_container_get_child_at(Ewl_Widget * widget, + int x, + int y); +Ewl_Widget * ewl_container_get_child_at_recursive(Ewl_Widget * widget, + int x, + int y); void ewl_container_clip_box_create(Ewl_Widget * widget); void ewl_container_clip_box_resize(Ewl_Widget * widget); void ewl_container_set_clip(Ewl_Widget * widget); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_entry.c 2001/04/16 02:14:19 1.3 +++ ewl_entry.c 2001/05/01 04:00:38 1.4 @@ -44,37 +44,33 @@ memset(EWL_ENTRY(widget), 0, sizeof(Ewl_Entry)); - EWL_ENTRY(widget)->cursor = ewl_widget_new(); - EWL_ENTRY(widget)->selection = ewl_widget_new(); - EWL_ENTRY(widget)->text = ewl_text_new(); + EWL_WIDGET(widget)->type = EWL_WIDGET_ENTRY; - ewl_callback_append(widget, Ewl_Callback_Realize, + ewl_callback_append(widget, EWL_CALLBACK_REALIZE, ewl_entry_realize, NULL); - ewl_callback_append(widget, Ewl_Callback_Show, + ewl_callback_append(widget, EWL_CALLBACK_SHOW, ewl_entry_show, NULL); - ewl_callback_append(widget, Ewl_Callback_Hide, + ewl_callback_append(widget, EWL_CALLBACK_HIDE, ewl_entry_hide, NULL); - ewl_callback_append(widget, Ewl_Callback_Destroy, + ewl_callback_append(widget, EWL_CALLBACK_DESTROY, ewl_entry_destroy, NULL); - ewl_callback_append(widget, Ewl_Callback_Configure, + ewl_callback_append(widget, EWL_CALLBACK_CONFIGURE, ewl_entry_configure, NULL); - ewl_callback_append(widget, Ewl_Callback_Key_Down, + ewl_callback_append(widget, EWL_CALLBACK_KEY_DOWN, ewl_entry_key_down, NULL); - ewl_callback_append(widget, Ewl_Callback_Key_Up, + ewl_callback_append(widget, EWL_CALLBACK_KEY_UP, ewl_entry_key_up, NULL); - ewl_callback_append(widget, Ewl_Callback_Mouse_Down, + ewl_callback_append(widget, EWL_CALLBACK_MOUSE_DOWN, ewl_entry_mouse_down, NULL); - ewl_callback_append(widget, Ewl_Callback_Mouse_Up, + ewl_callback_append(widget, EWL_CALLBACK_MOUSE_UP, ewl_entry_mouse_up, NULL); - ewl_callback_append(widget, Ewl_Callback_Select, + ewl_callback_append(widget, EWL_CALLBACK_SELECT, ewl_entry_select, NULL); - ewl_callback_append(widget, Ewl_Callback_Unselect, + ewl_callback_append(widget, EWL_CALLBACK_UNSELECT, ewl_entry_unselect, NULL); widget->container.recursive = FALSE; - EWL_ENTRY(widget)->cursor = ewl_widget_new(); - EWL_ENTRY(widget)->selection = ewl_widget_new(); EWL_ENTRY(widget)->text = ewl_text_new(); EWL_ENTRY(widget)->font = strdup("borzoib"); @@ -88,42 +84,33 @@ EWL_OBJECT(widget)->maximum.h = 20; EWL_OBJECT(widget)->request.w = 130; EWL_OBJECT(widget)->request.h = 35; - - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->current.w = 10; - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->current.h = 35; } static void ewl_entry_realize(Ewl_Widget * widget, void * func_data) { + char * image = NULL; + CHECK_PARAM_POINTER("widget", widget); + + image = ewl_theme_ebit_get("entry", "default", "base"); - ewl_widget_set_ebit(widget, ewl_theme_ebit_get("entry", "default", "base")); - ewl_container_new(widget); + EWL_ENTRY(widget)->ebits_object = ebits_load(image); + IF_FREE(image); + ebits_add_to_evas(EWL_ENTRY(widget)->ebits_object, widget->evas); + ebits_set_layer(EWL_ENTRY(widget)->ebits_object, widget->object.layer); - EWL_ENTRY(widget)->cursor->evas = widget->evas; - EWL_ENTRY(widget)->cursor->parent = widget; - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->layer = EWL_OBJECT(widget)->layer +30; - ewl_widget_set_ebit(EWL_ENTRY(widget)->cursor, - ewl_theme_ebit_get("entry", "cursor", "base")); - ewl_container_set_clip(EWL_ENTRY(widget)->cursor); - - EWL_ENTRY(widget)->selection->evas = widget->evas; - EWL_ENTRY(widget)->selection->parent = widget; - EWL_OBJECT(EWL_ENTRY(widget)->selection)->layer = - EWL_OBJECT(widget)->layer +20; - ewl_widget_set_ebit(EWL_ENTRY(widget)->selection, - ewl_theme_ebit_get("entry", "selection", "base")); + image = ewl_theme_ebit_get("entry", "cursor", "base"); + EWL_ENTRY(widget)->cursor = ebits_load(image); + IF_FREE(image); + ebits_add_to_evas(EWL_ENTRY(widget)->cursor, widget->evas); + ebits_set_layer(EWL_ENTRY(widget)->cursor, widget->object.layer +3); + EWL_WIDGET(EWL_ENTRY(widget)->text)->parent = widget; EWL_WIDGET(EWL_ENTRY(widget)->text)->evas = widget->evas; - EWL_OBJECT(EWL_ENTRY(widget)->text)->layer = EWL_OBJECT(widget)->layer +10; -/* EWL_WIDGET(EWL_ENTRY(widget)->text)->container.clip_box = - widget->container.clip_box;*/ - ewl_text_set_font(EWL_WIDGET(EWL_ENTRY(widget)->text), - EWL_ENTRY(widget)->font); - ewl_text_set_font_size(EWL_WIDGET(EWL_ENTRY(widget)->text), - EWL_ENTRY(widget)->font_size); + EWL_OBJECT(EWL_ENTRY(widget)->text)->layer = EWL_OBJECT(widget)->layer +1; + ewl_text_set_font_size(EWL_ENTRY(widget)->text, 10); ewl_widget_realize(EWL_WIDGET(EWL_ENTRY(widget)->text)); } @@ -131,11 +118,26 @@ ewl_entry_show(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + ewl_fx_clip_box_create(widget); + ewl_container_clip_box_create(widget); + ewl_container_show_clip(widget); + + ebits_set_clip(EWL_ENTRY(widget)->ebits_object, widget->fx_clip_box); + evas_set_clip(widget->evas, widget->fx_clip_box, + widget->parent->container.clip_box); + evas_set_clip(widget->evas, widget->container.clip_box,widget->fx_clip_box); + evas_show(widget->evas, widget->fx_clip_box); + ebits_show(EWL_ENTRY(widget)->ebits_object); + + ebits_set_clip(EWL_ENTRY(widget)->cursor, widget->fx_clip_box); + ebits_show(EWL_ENTRY(widget)->cursor); - ebits_show(widget->ebits_object); - ewl_widget_show(EWL_WIDGET(EWL_ENTRY(widget)->text)); + ewl_widget_show(EWL_ENTRY(widget)->text); + evas_show(widget->evas, widget->container.clip_box); - ewl_container_set_clip(widget); + + evas_set_color(widget->evas, widget->fx_clip_box, 255, 255, 255, 255); } static void @@ -143,37 +145,53 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_hide(widget->ebits_object); + ebits_hide(EWL_ENTRY(widget)->ebits_object); + ebits_hide(EWL_ENTRY(widget)->cursor); } static void ewl_entry_destroy(Ewl_Widget * widget, void * func_data) { CHECK_PARAM_POINTER("widget", widget); + + ebits_hide(EWL_ENTRY(widget)->ebits_object); + ebits_free(EWL_ENTRY(widget)->ebits_object); + + ebits_hide(EWL_ENTRY(widget)->cursor); + ebits_free(EWL_ENTRY(widget)->cursor); - ebits_hide(widget->ebits_object); - ebits_free(widget->ebits_object); + ewl_widget_destroy(EWL_ENTRY(widget)->text); } static void ewl_entry_configure(Ewl_Widget * widget, void * func_data) { int l, r, t, b; + CHECK_PARAM_POINTER("widget", widget); EWL_OBJECT(widget)->current.x = EWL_OBJECT(widget)->request.x; EWL_OBJECT(widget)->current.y = EWL_OBJECT(widget)->request.y; EWL_OBJECT(widget)->current.w = EWL_OBJECT(widget)->request.w; EWL_OBJECT(widget)->current.h = EWL_OBJECT(widget)->maximum.h; - - ebits_move(widget->ebits_object, EWL_OBJECT(widget)->current.x, - EWL_OBJECT(widget)->current.y); - ebits_resize(widget->ebits_object, EWL_OBJECT(widget)->current.w, - EWL_OBJECT(widget)->current.h); - - ewl_container_clip_box_resize(widget); - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + if (EWL_OBJECT(widget)->realized) + { + ebits_move(EWL_ENTRY(widget)->ebits_object, EWL_OBJECT(widget)->current.x, + EWL_OBJECT(widget)->current.y); + ebits_resize(EWL_ENTRY(widget)->ebits_object, EWL_OBJECT(widget)->current.w, + EWL_OBJECT(widget)->current.h); + + ewl_fx_clip_box_resize(widget); + + ebits_get_insets(EWL_ENTRY(widget)->ebits_object, &l, &r, &t, &b); + + evas_move(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.x + l, + EWL_OBJECT(widget)->current.y + t); + evas_resize(widget->evas, widget->container.clip_box, + EWL_OBJECT(widget)->current.w - (l+r), + EWL_OBJECT(widget)->current.h - (t+b)); l += 2; @@ -182,25 +200,10 @@ EWL_OBJECT(EWL_ENTRY(widget)->text)->request.y = EWL_OBJECT(widget)->current.y +t; - EWL_OBJECT(EWL_ENTRY(widget)->text)->request.y += - (EWL_OBJECT(EWL_ENTRY(widget)->text)->maximum.h / 2) - - ((EWL_OBJECT(widget)->current.h / 2) - t -b); - - ewl_widget_configure(EWL_WIDGET(EWL_ENTRY(widget)->text)); - - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.x = - EWL_OBJECT(widget)->current.x +l; - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.y = - EWL_OBJECT(widget)->current.y +t; - - ebits_move(EWL_ENTRY(widget)->cursor->ebits_object, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.x, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.y); - ebits_resize(EWL_ENTRY(widget)->cursor->ebits_object, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->current.w, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->current.h); + ewl_widget_configure(EWL_ENTRY(widget)->text); ewl_entry_set_cursor_pos(widget, EWL_ENTRY(widget)->cursor_pos); + } } static void @@ -213,21 +216,34 @@ ev = func_data; - if (!strcmp(ev->key, "Left")) { + if (!strcmp(ev->key, "Left")) + { ewl_entry_move_cursor_to_left(widget); - } else if (!strcmp(ev->key, "Right")) { + } + else if (!strcmp(ev->key, "Right")) + { ewl_entry_move_cursor_to_right(widget); - } else if (!strcmp(ev->key, "Home")) { + } + else if (!strcmp(ev->key, "Home")) + { ewl_entry_move_cursor_to_start(widget); - } else if (!strcmp(ev->key, "End")) { + } + else if (!strcmp(ev->key, "End")) + { ewl_entry_move_cursor_to_end(widget); - } else if (!strcmp(ev->key, "BackSpace")) { + } + else if (!strcmp(ev->key, "BackSpace")) + { ewl_entry_delete_to_left(widget); - } else if (!strcmp(ev->key, "Delete")) { + } + else if (!strcmp(ev->key, "Delete")) + { ewl_entry_delete_to_right(widget); - } else if (ev->compose && strlen(ev->compose) == 1) { + } + else if (ev->compose && strlen(ev->compose) == 1) + { ewl_entry_insert_text(widget, ev->compose); - } + } } static void @@ -249,22 +265,29 @@ ev = func_data; - if (ev->button == 1) { + if (ev->button == 1) + { ewl_text_get_letter_geometry_at(EWL_ENTRY(widget)->text, ev->x, ev->y, &x, &y, &w, &h); - for (i=0;i<strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text);i++) { + for (i=0;i<strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text);i++) + { ewl_text_get_letter_geometry(EWL_ENTRY(widget)->text, i, &px, &py, &pw, &ph); - if (px == x && py == y && pw == w && ph == h) { + if (px == x && py == y && pw == w && ph == h) + { ewl_entry_set_cursor_pos(widget, i); return; - } - } + } + } ewl_entry_set_cursor_pos(widget, strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text)); - } else if (ev->button == 2) { - } else if (ev->button == 3) { - } + } + else if (ev->button == 2) + { + } + else if (ev->button == 3) + { + } } static void @@ -278,7 +301,7 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_show(EWL_ENTRY(widget)->cursor->ebits_object); + ebits_show(EWL_ENTRY(widget)->cursor); } static void @@ -286,7 +309,7 @@ { CHECK_PARAM_POINTER("widget", widget); - ebits_hide(EWL_ENTRY(widget)->cursor->ebits_object); + ebits_hide(EWL_ENTRY(widget)->cursor); } static void @@ -401,36 +424,34 @@ CHECK_PARAM_POINTER("widget", widget); - ebits_get_insets(widget->ebits_object, &l, &r, &t, &b); + ebits_get_insets(EWL_ENTRY(widget)->ebits_object, &l, &r, &t, &b); if (strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text) > pos) ewl_text_get_letter_geometry(EWL_WIDGET(EWL_ENTRY(widget)->text), pos, &x, &y, &w, 0); - else if (!strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text)) { + else if (!strlen(EWL_TEXT(EWL_ENTRY(widget)->text)->text)) + { x = 0; y = 0; w = 3; - } else { + } + else + { ewl_text_get_letter_geometry(EWL_WIDGET(EWL_ENTRY(widget)->text), pos-1, &x, &y, &w, 0); x += w + 1; w = 3; - } + } - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.x = - EWL_OBJECT(widget)->current.x + x + l; - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.y = - EWL_OBJECT(widget)->current.y + y +t; EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.w = w + 4; EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.h = EWL_OBJECT(widget)->current.h - t - b; - ebits_move(EWL_ENTRY(widget)->cursor->ebits_object, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.x, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.y); - ebits_resize(EWL_ENTRY(widget)->cursor->ebits_object, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.w, - EWL_OBJECT(EWL_ENTRY(widget)->cursor)->request.h); + ebits_move(EWL_ENTRY(widget)->cursor, + EWL_OBJECT(widget)->current.x + x + l, + EWL_OBJECT(widget)->current.y + y + t); + ebits_resize(EWL_ENTRY(widget)->cursor, + w + 4, EWL_OBJECT(widget)->current.h - t - b); EWL_ENTRY(widget)->cursor_pos = pos; } @@ -442,11 +463,11 @@ } void -ewl_entry_set_text(Ewl_Widget * widget, char * text) +ewl_entry_set_text(Ewl_Widget * widget, const char * text) { CHECK_PARAM_POINTER("widget", widget); - ewl_text_set_text(EWL_WIDGET(EWL_ENTRY(widget)->text), text); + ewl_text_set_text(EWL_ENTRY(widget)->text, text); } char * =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_entry.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_entry.h 2001/04/16 02:14:19 1.2 +++ ewl_entry.h 2001/05/01 04:00:38 1.3 @@ -3,22 +3,23 @@ #define __EWL_ENTRY_H struct _ewl_entry { - Ewl_Widget widget; - Ewl_Widget * cursor; - int cursor_pos; - Ewl_Widget * selection; - Ewl_Widget * text; - char * font; - int font_size; - Window paste_win; + Ewl_Widget widget; + Ebits_Object ebits_object; + Ebits_Object cursor; + int cursor_pos; + Ewl_Widget * selection; + Ewl_Widget * text; + char * font; + int font_size; + Window paste_win; }; -typedef struct _ewl_entry Ewl_Entry; +typedef struct _ewl_entry Ewl_Entry; #define EWL_ENTRY(entry) ((Ewl_Entry *) entry) Ewl_Widget * ewl_entry_new(); -void ewl_entry_set_text(Ewl_Widget * widget, char * text); +void ewl_entry_set_text(Ewl_Widget * widget, const char * text); char * ewl_entry_get_text(Ewl_Widget * widget); void ewl_entry_set_cursor_pos(Ewl_Widget * widget, int pos); int ewl_entry_get_cursor_pos(Ewl_Widget * widget); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_events.c 2001/04/16 02:14:19 1.2 +++ ewl_events.c 2001/05/01 04:00:38 1.3 @@ -34,9 +34,10 @@ ev = _ev->event; window = ewl_window_find_window_by_evas_window(ev->win); - if (window) { + if (window) + { evas_update_rect(EWL_WIDGET(window)->evas, ev->x, ev->y, ev->w, ev->h); - } + } } static void @@ -48,13 +49,14 @@ ev = _ev->event; window = ewl_window_find_window(ev->win); - if (window) { + if (window) + { EWL_OBJECT(window)->request.x = ev->x; EWL_OBJECT(window)->request.y = ev->y; EWL_OBJECT(window)->request.w = ev->w; EWL_OBJECT(window)->request.h = ev->h; - ewl_callback_call(EWL_WIDGET(window), Ewl_Callback_Configure); - } + ewl_callback_call(EWL_WIDGET(window), EWL_CALLBACK_CONFIGURE); + } } static void @@ -66,11 +68,12 @@ ev = _ev->event; window = ewl_window_find_window_by_evas_window(ev->win); - if (window) { + if (window) + { if (last_selected) - ewl_callback_call_with_data(last_selected,Ewl_Callback_Key_Down,ev); + ewl_callback_call_with_data(last_selected,EWL_CALLBACK_KEY_DOWN,ev); last_key = last_selected; - } + } } static void @@ -82,10 +85,11 @@ ev = _ev->event; window = ewl_window_find_window_by_evas_window(ev->win); - if (window) { + if (window) + { if (last_key) - ewl_callback_call_with_data(last_key, Ewl_Callback_Key_Up, ev); - } + ewl_callback_call_with_data(last_key, EWL_CALLBACK_KEY_UP, ev); + } } static void @@ -98,22 +102,30 @@ ev = _ev->event; window = ewl_window_find_window_by_evas_window(ev->win); - if (window) { + if (window) + { widget = ewl_container_get_child_at_recursive(EWL_WIDGET(window), ev->x, ev->y); - if (widget != last_selected) { + if (widget != last_selected) + { if (last_selected) - ewl_callback_call(last_selected, Ewl_Callback_Unselect); + { + last_selected->state = last_selected->state&!EWL_STATE_SELECTED; + ewl_callback_call(last_selected, EWL_CALLBACK_UNSELECT); + } if (widget) - ewl_callback_call(widget, Ewl_Callback_Select); - } + { + widget->state = widget->state | EWL_STATE_SELECTED; + ewl_callback_call(widget, EWL_CALLBACK_SELECT); + } + } if (widget) - ewl_callback_call_with_data(widget, Ewl_Callback_Mouse_Down, ev); + ewl_callback_call_with_data(widget, EWL_CALLBACK_MOUSE_DOWN, ev); last_selected = widget; - } + } } static void @@ -128,7 +140,7 @@ if (window) if (last_selected) ewl_callback_call_with_data(last_selected, - Ewl_Callback_Mouse_Up, ev); + EWL_CALLBACK_MOUSE_UP, ev); } static void @@ -141,20 +153,25 @@ ev = _ev->event; window = ewl_window_find_window_by_evas_window(ev->win); - if (window) { + if (window) + { widget = ewl_container_get_child_at_recursive(EWL_WIDGET(window), ev->x, ev->y); - if (widget != last_focused) { - if (widget) { - ewl_callback_call(widget, Ewl_Callback_Focus_In); - DPRINT(5, "Focus In on %p", widget); - } - if (last_focused) - ewl_callback_call(last_focused, Ewl_Callback_Focus_Out); - } - - last_focused = widget; - } + if (widget) + { + widget->state = widget->state | EWL_STATE_HILITED; + ewl_callback_call(widget, EWL_CALLBACK_FOCUS_IN); + DPRINT(5, "Focus In on %p", widget); + ewl_callback_call_with_data(widget, EWL_CALLBACK_MOUSE_MOVE,ev); + } + if (last_focused != widget && last_focused) + { + last_focused->state = widget->state & !EWL_STATE_HILITED; + ewl_callback_call(last_focused, EWL_CALLBACK_FOCUS_OUT); + DPRINT(5, "Focus Out off %p", last_focused); + } + last_focused = widget; + } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- ewl_events.h 2001/04/14 01:16:38 1.1.1.1 +++ ewl_events.h 2001/05/01 04:00:38 1.2 @@ -1,6 +1,6 @@ -#ifndef __EWL_EVENTS_H__ -#define __EWL_EVENTS_H__ +#ifndef __EWL_EVENTS_H +#define __EWL_EVENTS_H void ewl_ev_init(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_misc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ewl_misc.c 2001/04/16 11:58:11 1.3 +++ ewl_misc.c 2001/05/01 04:00:38 1.4 @@ -15,10 +15,11 @@ { ewl_init_parse... [truncated message content] |