Enlightenment CVS committal Author : urandom Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/lib Modified Files: etk_label.c etk_label.h Log Message: Make the label themeable =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_label.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- etk_label.c 12 Jan 2007 02:53:56 -0000 1.25 +++ etk_label.c 28 Jan 2007 18:39:07 -0000 1.26 @@ -25,7 +25,6 @@ static void _etk_label_size_request(Etk_Widget *widget, Etk_Size *requested_size); static void _etk_label_size_allocate(Etk_Widget *widget, Etk_Geometry geometry); static void _etk_label_realize_cb(Etk_Object *object, void *data); -static void _etk_label_unrealize_cb(Etk_Object *object, void *data); /************************** * @@ -78,15 +77,25 @@ */ void etk_label_set(Etk_Label *label, const char *text) { - if (!label || label->text == text) + if (!label) return; - free(label->text); - label->text = (text && *text != '\0') ? strdup(text) : NULL; + if (text != label->text) + { + free(label->text); + label->text = (text && *text != '\0') ? strdup(text) : NULL; + } + + if (ETK_WIDGET(label)->theme_object) + { + if (!label->text) + etk_widget_theme_part_text_set(ETK_WIDGET(label), "etk.text.textblock", ""); + else + etk_widget_theme_part_text_set(ETK_WIDGET(label), "etk.text.textblock", label->text); + } +/* if (label->text_object)*/ +/* evas_object_textblock_text_markup_set(label->text_object, label->text ? label->text : " ");*/ - if (label->text_object) - evas_object_textblock_text_markup_set(label->text_object, label->text ? label->text : " "); - etk_widget_size_recalc_queue(ETK_WIDGET(label)); } @@ -166,8 +175,6 @@ if (!(widget = ETK_WIDGET(label))) return; - label->text_object = NULL; - label->clip = NULL; label->text = NULL; label->xalign = 0.0; @@ -177,7 +184,6 @@ widget->size_allocate = _etk_label_size_allocate; etk_signal_connect("realize", ETK_OBJECT(label), ETK_CALLBACK(_etk_label_realize_cb), NULL); - etk_signal_connect("unrealize", ETK_OBJECT(label), ETK_CALLBACK(_etk_label_unrealize_cb), NULL); } /* Destroys the label */ @@ -246,8 +252,9 @@ requested_size->w = 0; requested_size->h = 0; - if (label->text_object) - evas_object_textblock_size_native_get(label->text_object, &requested_size->w, &requested_size->h); + + if (ETK_WIDGET(label)->theme_object) + edje_object_size_min_calc(ETK_WIDGET(label)->theme_object, &requested_size->w, &requested_size->h); } /* Resizes the label to the allocated size */ @@ -260,12 +267,9 @@ return; _etk_label_size_request(widget, &requested_size); - evas_object_move(label->text_object, geometry.x + (geometry.w - requested_size.w) * label->xalign, + evas_object_move(ETK_WIDGET(label)->theme_object, geometry.x + (geometry.w - requested_size.w) * label->xalign, geometry.y + (geometry.h - requested_size.h) * label->yalign); - evas_object_resize(label->text_object, requested_size.w + 1, requested_size.h); - - evas_object_move(label->clip, geometry.x, geometry.y); - evas_object_resize(label->clip, geometry.w, geometry.h); + evas_object_resize(ETK_WIDGET(label)->theme_object, requested_size.w, requested_size.h); } /************************** @@ -278,57 +282,12 @@ static void _etk_label_realize_cb(Etk_Object *object, void *data) { Etk_Label *label; - Evas *evas; - Evas_Textblock_Style *style; - if (!(label = ETK_LABEL(object)) || !(evas = etk_widget_toplevel_evas_get(ETK_WIDGET(label)))) + if (!(label = ETK_LABEL(object))) return; - style = evas_textblock_style_new(); - /* TODO: make the label themable... */ - evas_textblock_style_set(style, - "DEFAULT='font=Vera font_size=10 align=left color=#000000 wrap=word style=shadow shadow_color=#ffffff80'" - "left='+ align=left'" - "/left='- \n'" - "center='+ align=center'" - "/center='- \n'" - "right='+ align=right'" - "/right='- \n'" - "h1='+ font_size=20'" - "b='+font=Vera-Bold'" - "i='+font=Vera-Italic'" - "bi='+font=Vera-Bold-Italic'" - "glow='+ style=glow color=#fff glow2_color=#fe87 glow_color=#fa14'" - "link='+ underline=on underline_color=#0000aa color=#0000aa'" - "red='+ color=#ff0000'" - "br='\n'" - "tab='\t'"); - - label->clip = evas_object_rectangle_add(evas); - evas_object_show(label->clip); - etk_widget_member_object_add(ETK_WIDGET(label), label->clip); - - label->text_object = evas_object_textblock_add(evas); - evas_object_textblock_style_set(label->text_object, style); - evas_textblock_style_free(style); - evas_object_show(label->text_object); - etk_widget_member_object_add(ETK_WIDGET(label), label->text_object); - evas_object_clip_set(label->text_object, label->clip); - - evas_object_textblock_text_markup_set(label->text_object, label->text ? label->text : " "); + etk_label_set(label, label->text); etk_widget_size_recalc_queue(ETK_WIDGET(label)); -} - -/* Called when the label is unrealized */ -static void _etk_label_unrealize_cb(Etk_Object *object, void *data) -{ - Etk_Label *label; - - if (!(label = ETK_LABEL(object))) - return; - - label->text_object = NULL; - label->clip = NULL; } /** @} */ =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_label.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- etk_label.h 6 Oct 2006 17:04:14 -0000 1.4 +++ etk_label.h 28 Jan 2007 18:39:07 -0000 1.5 @@ -35,8 +35,6 @@ /* Inherit from Etk_Widget */ Etk_Widget widget; - Evas_Object *text_object; - Evas_Object *clip; char *text; float xalign; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs