Enlightenment CVS committal Author : codewarrior Project : e17 Module : apps/e_utils
Dir : e17/apps/e_utils/src/bin/ethemes Modified Files: Makefile.am main.c Log Message: ethemes gets scrolling. thanks Chady. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/ethemes/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 12 Oct 2005 14:56:41 -0000 1.1 +++ Makefile.am 18 Oct 2005 08:06:39 -0000 1.2 @@ -23,6 +23,8 @@ @ECORE_LIBS@ \ @EVAS_LIBS@ \ @EDJE_LIBS@ \ + @ESMART_LIBS@ \ + -lesmart_container \ @ENLIGHTENMENT_LIBS@ EXTRA_DIST = \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/ethemes/main.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- main.c 14 Oct 2005 14:46:56 -0000 1.3 +++ main.c 18 Oct 2005 08:06:39 -0000 1.4 @@ -5,6 +5,7 @@ #include <Ecore.h> #include <Ecore_Evas.h> #include <Ecore_File.h> +#include <Esmart/Esmart_Container.h> #include <Evas.h> #include <Edje.h> #include <E_Lib.h> @@ -14,12 +15,22 @@ Ecore_Evas * ee; Evas * evas; +const int barwidth = 130; +const int WIDTH = 700; +const int HEIGHT = 500; +const int container_height = 400; + char * selected_theme; char * current_theme; Evas_List * themes; -Evas_Object ** b_labels; +Evas_Object * label; + +Evas_Object * container_outer; +Evas_Object * container; +Evas_Object * scrollbar; + Evas_Object ** buttons; Evas_Object * preview; Evas_Object * preview_clip; @@ -31,19 +42,27 @@ int w, h; evas_output_size_get(evas, &w, &h); - evas_object_move(preview, 120, 0); - evas_object_resize(preview, w - 120 , h ); + evas_object_move(preview, barwidth, 0); + evas_object_resize(preview, w - barwidth , h ); evas_object_show(preview); - evas_object_resize(preview_clip, w - 120 , h ); + evas_object_resize(preview_clip, w - barwidth , h ); evas_object_move(background, 0, 0); - evas_object_resize(background, 120, h); + evas_object_resize(background, barwidth, h); evas_object_show(background); + int n = evas_list_count(themes); + evas_object_move(buttons[n], 0, h - 100 + 10); + evas_object_move(buttons[n+1], 0, h - 100 + 40); + evas_object_move(buttons[n+2], 0, h - 100 + 60); + evas_object_resize(container_outer, barwidth - 19, h - 100); + evas_object_resize(scrollbar, 16, h - 100); + + } -static void _preview_theme(void *data, Evas *e, Evas_Object *o, void *ev) { +static void _preview_theme(void *data, Evas_Object *o, const char *emission, const char *source) { selected_theme = (char *) data; @@ -52,13 +71,13 @@ } -static void __exit(void *data, Evas * e, Evas_Object * obj, void *ev) { +static void _ethemes_exit(void *data, Evas_Object *o, const char *emission, const char *source) { ecore_main_loop_quit(); } -static void _set_theme(void *data, Evas * e, Evas_Object * obj, void *ev) { +static void _set_theme(void *data, Evas_Object *o, const char *emission, const char *source) { e_lib_theme_set("theme", (char *)strdup(selected_theme)); @@ -69,20 +88,27 @@ } -static void _rollover(void *d, Evas *e, Evas_Object *o, void *ev) { - - Evas_Object *b; - b = (Evas_Object *) d; - edje_object_signal_emit(b, "active", ""); +static void _scrollup(void *data, Evas_Object *o, const char *emission, const char *source) { + esmart_container_scroll_start(container, 1); +} +static void _scrolldown(void *data, Evas_Object *o, const char *emission, const char *source) { + esmart_container_scroll_start(container, -1); } -static void _rollout(void *d, Evas *e, Evas_Object *o, void *ev) { +static void _scrolldrag(void *data, Evas_Object *o, const char *emission, const char *source) { + + double x, y; + edje_object_part_drag_value_get(scrollbar, "drag", &x, &y); + esmart_container_scroll_percent_set(container, y); - Evas_Object *b; - b = (Evas_Object *) d; - edje_object_signal_emit(b, "passive", ""); +} +static void _scrollstop(void *data, Evas_Object *o, const char *emission, const char *source) { + esmart_container_scroll_stop(container); + double s; + s = esmart_container_scroll_percent_get(container); + edje_object_part_drag_value_set(scrollbar, "drag", 1, s); } void read_theme_list() { @@ -112,29 +138,41 @@ int n = evas_list_count(themes); - b_labels = calloc(n + 3, sizeof(Evas_Object *)); buttons = calloc(n + 3, sizeof(Evas_Object *)); - -#define BUTTON_EVENTS(A, B, C) \ - evas_object_event_callback_add(buttons[A], EVAS_CALLBACK_MOUSE_IN, _rollover, b_labels[A]);\ - evas_object_event_callback_add(buttons[A], EVAS_CALLBACK_MOUSE_OUT, _rollout, b_labels[A]);\ - evas_object_event_callback_add(buttons[A], EVAS_CALLBACK_MOUSE_UP, B, C); - -#define ADD_BUTTON(A, B, C)\ - b_labels[A] = edje_object_add(evas);\ - edje_object_file_set(b_labels[A], current_theme, "widgets/menu/default/label");\ - evas_object_move(b_labels[A], 10, B + (25 * A));\ - evas_object_resize(b_labels[A], 100, 24);\ - edje_object_part_text_set(b_labels[A], "label", C);\ - evas_object_show(b_labels[A]);\ - buttons[A] = evas_object_rectangle_add(evas);\ - evas_object_resize(buttons[A], 100, 24);\ - evas_object_move(buttons[A], 10, B + (25 * A));\ - evas_object_color_set(buttons[A], 0, 0, 0, 0);\ + container_outer = edje_object_add(evas); + edje_object_file_set(container_outer, current_theme, "modules/ibar/main"); + evas_object_move(container_outer, 0, 0); + evas_object_resize(container_outer, barwidth - 19, container_height); + evas_object_show(container_outer); + + scrollbar = edje_object_add(evas); + edje_object_file_set(scrollbar, current_theme, "widgets/vscrollbar"); + evas_object_move(scrollbar, barwidth - 19, 0); + evas_object_resize(scrollbar, 16, container_height); + evas_object_show(scrollbar); + + edje_object_signal_callback_add(scrollbar, "scroll_top_start", "", _scrollup, NULL); + edje_object_signal_callback_add(scrollbar, "scroll_bottom_start", "", _scrolldown, NULL); + edje_object_signal_callback_add(scrollbar, "scroll_top_stop", "", _scrollstop, NULL); + edje_object_signal_callback_add(scrollbar, "scroll_bottom_stop", "", _scrollstop, NULL); + edje_object_signal_callback_add(scrollbar, "drag", "*", _scrolldrag, NULL); + + container = esmart_container_new(evas); + edje_object_part_swallow(container_outer, "items", container); + esmart_container_direction_set(container, CONTAINER_DIRECTION_VERTICAL); + + +#define BUTTON_EVENTS(A, B, C)\ + edje_object_signal_callback_add(buttons[A], "click", "", B, C); + +#define ADD_BUTTON(A, B, C, D)\ + buttons[A] = edje_object_add(evas);\ + edje_object_file_set(buttons[A], current_theme, "widgets/button");\ + evas_object_resize(buttons[A], D, 24);\ + edje_object_part_text_set(buttons[A], "label", C);\ evas_object_show(buttons[A]); - int i; for (i=0; i<n; i++) { @@ -146,19 +184,23 @@ name = strncpy(name, n, size); name[size] = 0; - ADD_BUTTON(i, 20, name); + ADD_BUTTON(i, 20, name, 100); + esmart_container_element_append(container, buttons[i]); BUTTON_EVENTS(i, _preview_theme, evas_list_nth(themes, i)); } - ADD_BUTTON(n, 40, "Default Theme"); + ADD_BUTTON(n, 40, "Default Theme", 120); + evas_object_move(buttons[n], 5, container_height + 10); BUTTON_EVENTS(n, _preview_theme, "default.edj"); - ADD_BUTTON(n + 1, 60, "Apply"); + ADD_BUTTON(n + 1, 60, "Apply", 120); + evas_object_move(buttons[n+1], 5, container_height + 40); BUTTON_EVENTS(n + 1, _set_theme, NULL); - ADD_BUTTON(n + 2, 80, "Exit"); - BUTTON_EVENTS(n + 2, __exit, NULL); + ADD_BUTTON(n + 2, 80, "Exit", 120); + evas_object_move(buttons[n+2], 5, container_height + 60); + BUTTON_EVENTS(n + 2, _ethemes_exit, NULL); #undef BUTTON_EVENT @@ -210,7 +252,7 @@ return 1; } - ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 700, 500); + ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, WIDTH, HEIGHT); ecore_evas_title_set(ee, "eThemes (connecting...)"); ecore_evas_show(ee); @@ -218,14 +260,14 @@ background = edje_object_add(evas); evas_object_move(background, 0,0); - evas_object_resize(background, 120, 500); + evas_object_resize(background, barwidth, HEIGHT); evas_object_show(background); preview = e_preview_new(evas); preview_clip = evas_object_rectangle_add(evas); - evas_object_move(preview_clip, 120, 0); - evas_object_resize(preview_clip, 680, 500); + evas_object_move(preview_clip, barwidth, 0); + evas_object_resize(preview_clip, WIDTH - barwidth, HEIGHT); evas_object_show(preview_clip); evas_object_clip_set (preview, preview_clip); ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs