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

Reply via email to