Enlightenment CVS committal

Author  : lordchaos
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_iconbox.c ewl_iconbox.h 


Log Message:
Moved to Box for Ewl_IconBox_Icon - we outgrew Ewl_Border

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_iconbox.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- ewl_iconbox.c       24 Jul 2005 23:35:35 -0000      1.10
+++ ewl_iconbox.c       26 Jul 2005 23:39:45 -0000      1.11
@@ -68,11 +68,20 @@
 void configure (Ewl_Widget *w, void *ev_data, void *user_data) {
        /*printf ("Got a configure\n");*/
 
+       Ewl_IconBox* ib = EWL_ICONBOX(w);
+       
        ewl_iconbox_inner_pane_calculate(EWL_ICONBOX(w));
 
-       
+       if (REALIZED(ib) && VISIBLE(ib)) { 
+               ewl_callback_del(EWL_WIDGET(ib), EWL_CALLBACK_CONFIGURE, 
configure);
+               ewl_iconbox_icon_arrange(ib); 
+               ewl_callback_append(EWL_WIDGET(ib), EWL_CALLBACK_CONFIGURE, 
configure, NULL);
+       }
 }
 
+
+
+
 void ewl_iconbox_inner_pane_calculate(Ewl_IconBox* ib) {
 
        int pw,ph;
@@ -95,25 +104,33 @@
                /*printf ("Grew iconbox to: %d:%d\n", nw, nh);*/
        }
 
-       if (REALIZED(ib) && VISIBLE(ib)) { 
-               /*ewl_callback_del(EWL_WIDGET(ib), EWL_CALLBACK_CONFIGURE, 
configure);*/
-               /*ewl_iconbox_icon_arrange(ib); */
-               /*ewl_callback_append(EWL_WIDGET(ib), EWL_CALLBACK_CONFIGURE, 
configure, NULL);*/
-       }
+
 }
 
 int ewl_iconbox_icon_init(Ewl_IconBox_Icon* icon) {
        Ewl_Widget *w;
 
        w = EWL_WIDGET(icon);
-       if (!ewl_border_init(EWL_BORDER(icon), "Test")) {
+       if (!ewl_box_init(EWL_BOX(icon), EWL_ORIENTATION_VERTICAL)) {
                DRETURN_INT(FALSE, DLEVEL_STABLE);
        }
 
+       icon->w_label = ewl_text_new(NULL);
+       icon->image = ewl_image_new(NULL,NULL);
+
+       icon->label = NULL;
+       icon->label_compressed = NULL;
+
+
+       
+
        /* Init ewl setup */
        ewl_widget_appearance_set(EWL_WIDGET(icon), "icon");
        ewl_widget_inherit(EWL_WIDGET(w), "icon");
 
+       ewl_container_child_append(EWL_CONTAINER(icon), icon->image);
+       ewl_container_child_append(EWL_CONTAINER(icon), icon->w_label);
+
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 
        
@@ -262,7 +279,6 @@
        ewl_callback_append(EWL_WIDGET(ib), EWL_CALLBACK_CONFIGURE, configure, 
NULL);
 
 
-
        /*printf("Setup the iconbox...\n");*/
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 
@@ -281,19 +297,24 @@
        ewl_object_custom_size_set(EWL_OBJECT(ib->ewl_iconbox_pane_inner), 
680,700);
 }
 
-void ewl_iconbox_icon_label_set(Ewl_IconBox_Icon* icon, char* text) {
+void ewl_iconbox_icon_label_setup(Ewl_IconBox_Icon* icon, char* text) {
+       
        char* compressed;
+
+
        
        /*If we have a current label, nuke it*/
        if (icon->label) {
                free(icon->label);
        }
-       
+
        /*Copy the existing label to our icon*/
        icon->label = strdup(text);
+       
+
 
        if (strlen(text) <= LABEL_CHARS) {
-               ewl_border_text_set(EWL_BORDER(icon), text);
+               ewl_iconbox_icon_label_set(icon, icon->label);
        } else {
                if (icon->label_compressed) {
                        free(icon->label_compressed);
@@ -302,7 +323,7 @@
                compressed = malloc(sizeof(char) * LABEL_CHARS + 3);
                strncpy(compressed, text, LABEL_CHARS);
                strcpy(compressed+LABEL_CHARS, "..\0");
-               ewl_border_text_set(EWL_BORDER(icon),compressed);
+               ewl_iconbox_icon_label_set(icon, compressed);
 
                icon->label_compressed = compressed;
        }
@@ -310,13 +331,26 @@
        
 }
 
+void ewl_iconbox_icon_label_set(Ewl_IconBox_Icon* icon, char* text) {
+ewl_text_wrap_set(EWL_TEXT(icon->w_label), 1);
+       if (text) {
+               
+               ewl_text_text_set(EWL_TEXT(icon->w_label), text);
+       } else {
+               ewl_text_text_set(EWL_TEXT(icon->w_label), icon->label);
+
+       }
+               
+}
+
 
 void ewl_iconbox_label_edit_key_down(Ewl_Widget *w, void *ev_data, void* 
user_data) {
        Ewl_Event_Key_Down* ev = ev_data;
        Ewl_IconBox* ib = EWL_ICONBOX(user_data);
        
        if (!strcmp(ev->keyname, "Return")) {
-               ewl_border_text_set(EWL_BORDER(ib->edit_icon), 
ewl_text_text_get(EWL_TEXT(ib->entry)));
+               ewl_iconbox_icon_label_set(EWL_ICONBOX_ICON(ib->edit_icon), 
ewl_text_text_get(EWL_TEXT(ib->entry)));
+
                /*printf ("Setting label to: '%s'", 
ewl_text_text_get(EWL_TEXT(ib->entry)));*/
 
                /*Hide the entry, now that we have an enter */
@@ -335,6 +369,7 @@
        Ewl_IconBox_Icon* list_item;
        int maxx=0, maxy=0;
        int pw, ph;
+       int x,y;
 
        /*printf ("Entering the arrange..\n");*/
 
@@ -372,7 +407,16 @@
                        nextx = 0;
                        nexty += ih + EWL_ICONBOX_ICON_PADDING;
                }
-               ewl_floater_position_set(EWL_FLOATER(list_item->floater), 
nextx, nexty);
+
+               x = EWL_FLOATER(list_item->floater)->x;
+               y = EWL_FLOATER(list_item->floater)->y;
+       
+               /*Only move if we have to*/
+               if ( abs(x - nextx) > 0  ||
+                    abs(y - nexty) > 0) 
+                       
ewl_floater_position_set(EWL_FLOATER(list_item->floater), nextx, nexty);
+
+               
                nextx += iw + EWL_ICONBOX_ICON_PADDING;
                
                if (nextx > maxx) maxx = nextx;
@@ -444,16 +488,18 @@
 
                /*Now check which icons we have to select in this range...*/
                {
+                       int w,h;
+                       
                        Ewl_IconBox_Icon* list_item;
                        int ix,iy;
                        ecore_list_goto_first(ib->ewl_iconbox_icon_list);
 
-                       
+               
+                       w = ewl_object_current_w_get(EWL_OBJECT(ib->select));
+                       h = ewl_object_current_h_get(EWL_OBJECT(ib->select));
                        while((list_item = 
(Ewl_IconBox_Icon*)ecore_list_next(ib->ewl_iconbox_icon_list)) != NULL) {
-                               int w,h;
 
-                               w = 
ewl_object_current_w_get(EWL_OBJECT(ib->select));
-                               h = 
ewl_object_current_h_get(EWL_OBJECT(ib->select));
+                               
                                                
                                
                                ix = 
ewl_object_current_x_get(EWL_OBJECT(list_item));
@@ -461,7 +507,7 @@
                                
                                if (ix >= lx && iy >= ly && ix <= hx && iy <= 
hy ) {
                                        
ewl_iconbox_icon_select(EWL_ICONBOX_ICON(list_item),0);
-                               } else {
+                               } else if (list_item->selected) {
                                        
ewl_iconbox_icon_deselect(EWL_ICONBOX_ICON(list_item));
                                }
                        }
@@ -487,8 +533,8 @@
                        /* Get the current width/height to centre
                         */
                        
-                       fw= ewl_object_preferred_w_get(EWL_OBJECT(list_item));
-                       fh= ewl_object_preferred_h_get(EWL_OBJECT(list_item));
+                       fw= 
ewl_object_preferred_w_get(EWL_OBJECT(list_item->image));
+                       fh= 
ewl_object_preferred_h_get(EWL_OBJECT(list_item->image));
 
 
                        
@@ -582,8 +628,9 @@
 }
 
 void ewl_iconbox_icon_select(Ewl_IconBox_Icon* ib, int loc) { /* Loc 0= image, 
1= label */
-       int sel = ib->selected;
        
+       int sel = ib->selected;
+
        if (!ib->icon_box_parent->drag_box) {
                Ewl_IconBox_Icon* list_item;
                
ecore_list_goto_first(ib->icon_box_parent->ewl_iconbox_icon_list);
@@ -602,12 +649,12 @@
                y = EWL_FLOATER(ib->floater)->y;
                
                /*printf ("Edit label event on: '%s'\n", 
ewl_border_text_get(EWL_BORDER(ib)));*/
-               ewl_object_current_size_get(EWL_OBJECT(EWL_BORDER(ib)->label), 
&w, &h);
+               ewl_object_current_size_get(EWL_OBJECT(ib->w_label), &w, &h);
                ewl_object_current_size_get(EWL_OBJECT(ib->image), &iw, &ih);
                
ewl_object_minimum_size_set(EWL_OBJECT(ib->icon_box_parent->entry), w,h);
 
                /* Get the current text to set this to */
-               ewl_text_text_set(EWL_TEXT(ib->icon_box_parent->entry), 
ewl_border_text_get(EWL_BORDER(ib)));
+               ewl_text_text_set(EWL_TEXT(ib->icon_box_parent->entry), 
ewl_text_text_get(EWL_TEXT(ib->w_label)));
                
                ewl_widget_show(EWL_WIDGET(ib->icon_box_parent->entry_floater));
                
ewl_floater_position_set(EWL_FLOATER(ib->icon_box_parent->entry_floater), 
x,y+ih);
@@ -618,26 +665,36 @@
                ib->icon_box_parent->edit_icon = ib;
                        
        } else {
+
+               /*printf("Selecting..\n");*/
                ewl_widget_hide(EWL_WIDGET(ib->icon_box_parent->entry_floater));
-               ewl_border_text_set(EWL_BORDER(ib), ib->label);
+               ewl_iconbox_icon_label_set(ib, ib->label);
+
+               ewl_text_bg_color_set(EWL_TEXT(ib->w_label), 0, 0, 255, 255);
+               ewl_text_cursor_position_set(EWL_TEXT(ib->w_label), 0);
+               ewl_text_color_apply(EWL_TEXT(ib->w_label), 0, 0, 255, 255, 
strlen(ib->label));
        }
 
+
        
        /*TODO allow multiselect, as per a "select policy" set on widget 
create/init*/
        ib->selected = 1;
 
        /*printf("Setting color..\n");*/
-       ewl_widget_color_set(EWL_WIDGET(EWL_BORDER(ib)->label), 140,0,255,128);
-       ewl_callback_call(EWL_WIDGET(EWL_BORDER(ib)->label), 
EWL_CALLBACK_APPEARANCE_CHANGED);
+       
+       ewl_callback_call(EWL_WIDGET(ib->w_label), 
EWL_CALLBACK_APPEARANCE_CHANGED);
 }
 
 void ewl_iconbox_icon_deselect(Ewl_IconBox_Icon *ib) {
+       
        ib->selected = 0;
-       ewl_widget_color_set(EWL_WIDGET(EWL_BORDER(ib)->label), 0,0,0,255);
 
        /*If we have a compressed label, set it now*/
        if (ib->label_compressed) {
-               ewl_border_text_set(EWL_BORDER(ib), ib->label_compressed);
+               ewl_text_bg_color_set(EWL_TEXT(ib->w_label), 0, 0, 0, 255);
+               ewl_iconbox_icon_label_set(ib, ib->label_compressed);
+               ewl_text_cursor_position_set(EWL_TEXT(ib->w_label), 0);
+               ewl_text_color_apply(EWL_TEXT(ib->w_label), 0, 0, 0, 255, 
strlen(ib->label_compressed));
        }
 }
 
@@ -680,11 +737,10 @@
                            ewl_iconbox_icon_destroy_cb, NULL);*/
 
        EWL_ICONBOX_ICON(ib)->selected = 0;
-
        EWL_ICONBOX_ICON(ib)->floater = 
ewl_floater_new(iconbox->ewl_iconbox_pane_inner);
 
        /*Set the label*/
-       ewl_iconbox_icon_label_set(EWL_ICONBOX_ICON(ib), name);
+       ewl_iconbox_icon_label_setup(EWL_ICONBOX_ICON(ib), name);
        
        
        EWL_ICONBOX_ICON(ib)->icon_box_parent = iconbox; /* Set our parent */
@@ -697,14 +753,13 @@
 
        /* Make the image */
        /*printf("MMaking image..\n");*/
-
-       EWL_ICONBOX_ICON(ib)->image = ewl_image_new(icon_file, NULL);
+       ewl_iconbox_icon_image_set(EWL_ICONBOX_ICON(ib), icon_file);
+       
 
        /* Put the image into the border */
        /*printf("Adding image to box..\n");*/
        ewl_container_child_append(EWL_CONTAINER(ib), 
EWL_ICONBOX_ICON(ib)->image);
 
-       ewl_border_label_position_set(EWL_BORDER(ib), EWL_FLAG_ALIGN_BOTTOM);
        
        /* Add the floater to our container
         */
@@ -717,6 +772,7 @@
 
        /*Show*/
        ewl_widget_show(EWL_ICONBOX_ICON(ib)->image);
+       ewl_widget_show(EWL_ICONBOX_ICON(ib)->w_label);
        ewl_widget_show(EWL_ICONBOX_ICON(ib)->floater);
        ewl_widget_show(EWL_WIDGET(ib));
 
@@ -727,7 +783,7 @@
        ewl_callback_prepend(EWL_ICONBOX_ICON(ib)->image, 
EWL_CALLBACK_MOUSE_UP, ewl_iconbox_icon_mouse_up, ib);
        
        /* Add a callback to the border box label, for editing purposes... */
-       ewl_callback_prepend(EWL_BORDER(ib)->label, EWL_CALLBACK_MOUSE_DOWN, 
ewl_iconbox_icon_label_mouse_down_cb, ib);
+       ewl_callback_prepend(EWL_ICONBOX_ICON(ib)->w_label, 
EWL_CALLBACK_MOUSE_DOWN, ewl_iconbox_icon_label_mouse_down_cb, ib);
 
        /* Add this icon to the icon list */
        ecore_list_append(iconbox->ewl_iconbox_icon_list, ib);
@@ -737,8 +793,10 @@
 
        /*printf("Added icon: '%s'\n", name);*/
 
-       ewl_object_alignment_set(EWL_OBJECT(ib), EWL_FLAG_ALIGN_CENTER);
-       ewl_widget_layer_set(EWL_WIDGET(ib), 500);
+       /*ewl_object_alignment_set(EWL_OBJECT(ib), EWL_FLAG_ALIGN_CENTER);*/
+       /*ewl_widget_layer_set(EWL_WIDGET(ib), 500);*/
+
+       
        
        return EWL_ICONBOX_ICON(ib);
 }
@@ -753,8 +811,10 @@
        /*Shouldn't the floater auto-resize?*/
        
        ewl_object_current_size_get(EWL_OBJECT(icon->image), &iw,&ih);
-       ewl_object_current_size_get(EWL_OBJECT(EWL_BORDER(icon)->label), &lw, 
&lh); /* Shouldn't access this directly, is there another way? */
+       ewl_object_current_size_get(EWL_OBJECT(icon->w_label), &lw, &lh); /* 
Shouldn't access this directly, is there another way? */
        ewl_object_minimum_size_set(EWL_OBJECT(icon->floater), iw, ih+lh);
+
+       /*Call the configure callback for the iconbox - it doesn't seem to do 
this by itself*/
 }
 
 void ewl_iconbox_clear(Ewl_IconBox* ib) {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_iconbox.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ewl_iconbox.h       24 Jul 2005 23:35:35 -0000      1.5
+++ ewl_iconbox.h       26 Jul 2005 23:39:45 -0000      1.6
@@ -26,13 +26,16 @@
 typedef struct Ewl_IconBox_Icon Ewl_IconBox_Icon;
 struct Ewl_IconBox_Icon
 {
-       Ewl_Border box;
+       Ewl_Box box;
        
        Ewl_Widget *image;
        Ewl_Widget *floater;
-       /*Ewl_Widget *box;*/
+       Ewl_Widget *w_label;
+
+
        int drag;
        int selected ;
+
        Ewl_IconBox* icon_box_parent; /* Our reference upwards, kinda breaks OO 
conventions */
        char* label;                  /*Our icon's full (unabbreviated) label) 
*/
        char* label_compressed;
@@ -118,6 +121,7 @@
 void ewl_iconbox_label_edit_key_down(Ewl_Widget *w, void *ev_data, void* 
user_data);
 void ewl_iconbox_inner_pane_calculate(Ewl_IconBox* ib);
 void ewl_iconbox_mouse_up(Ewl_Widget *w, void *ev_data, void *user_data);
+void ewl_iconbox_icon_label_set(Ewl_IconBox_Icon*, char*);
 
 
 




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to