From 8d04ae955e241580209512656ee60b46dc9f27a3 Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Mon, 12 May 2014 20:25:36 +0200 Subject: [PATCH] miniview: use edje --- data/themes/default.edc | 53 ++++++++++++++++++++++++++++++ src/bin/miniview.c | 72 ++++++++++++++++++++++------------------- 2 files changed, 91 insertions(+), 34 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index 65268411..b86625d0 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -7,6 +7,59 @@ color_classes { collections { + group { name: "terminology/miniview"; + set { name: "bg_shadow"; + image { image: "bg_shadow.png" COMP; size: 0 0 200 150; } + image { image: "bg_shadow2.png" COMP; size: 200 150 400 300; } + image { image: "bg_shadow3.png" COMP; size: 400 300 99999 99999; } + } + parts { + part { name: "miniview.bg"; type: RECT; + //mouse_events: 1; + description { state: "default" 0.0; + color: BG_COL; + } + } + part { name: "shadow"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "bg_shadow"; + fill.smooth: 0; + } + } + part { name: "miniview.img"; type: SWALLOW; + description { state: "default" 0.0; + visible: 1; + rel1 { + to: "miniview.bg"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to: "miniview.bg"; + relative: 1.0 1.0; + offset: 0 0; + } + } + } + part { name: "miniview.close"; type: RECT; + description { state: "default" 0.0; + color: 255 0 0 255; + rel1 { + to: "miniview.bg"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to: "miniview.bg"; + relative: 0.0 0.0; + offset: 5 5; + } + } + } + }; + }; + /////////////////////////////////////////////////////////////////////////// //// the background and general container for the terminal group { name: "terminology/core"; diff --git a/src/bin/miniview.c b/src/bin/miniview.c index cf86eeb0..9a8dd4a3 100644 --- a/src/bin/miniview.c +++ b/src/bin/miniview.c @@ -6,6 +6,7 @@ #include "col.h" #include "termpty.h" #include "termio.h" +#include "utils.h" #include "main.h" /* specific log domain to help debug only miniview */ @@ -46,6 +47,7 @@ typedef struct _Miniview Miniview; struct _Miniview { Evas_Object *self; + Evas_Object *base; Evas_Object *img; Evas_Object *termio; @@ -176,8 +178,6 @@ static void _smart_add(Evas_Object *obj) { Miniview *mv; - Evas_Object *o; - Evas *canvas = evas_object_evas_get(obj); DBG("%p", obj); @@ -186,23 +186,6 @@ _smart_add(Evas_Object *obj) evas_object_smart_data_set(obj, mv); mv->self = obj; - - /* miniview output widget */ - o = evas_object_image_add(canvas); - evas_object_image_alpha_set(o, EINA_TRUE); - - //evas_object_smart_member_add(o, obj); - mv->img = o; - mv->is_shown = 0; - mv->to_render = 0; - mv->img_h = 0; - mv->rows = 0; - mv->cols = 0; - - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, - _smart_cb_mouse_wheel, obj); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, - _smart_cb_mouse_down, obj); } static void @@ -216,6 +199,7 @@ _smart_del(Evas_Object *obj) ecore_timer_del(mv->deferred_renderer); //evas_object_smart_member_del(mv->img); + evas_object_del(mv->base); evas_object_del(mv->img); free(mv); } @@ -227,7 +211,7 @@ _smart_move(Evas_Object *obj, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED if (!mv) return; DBG("%p x:%d y:%d", obj, x, y); - evas_object_move(mv->img, x + mv->img_h - mv->cols, y); + evas_object_move(mv->base, x + mv->img_h - mv->cols, y); mv->to_render = 1; } @@ -240,12 +224,9 @@ _smart_show(Evas_Object *obj) if (!mv) return; - Evas_Coord ox, oy, ow, oh; - evas_object_geometry_get(mv->img, &ox, &oy, &ow, &oh); - DBG("ox:%d oy:%d ow:%d oh:%d", ox, oy, ow, oh); if (!mv->is_shown) { - Evas_Coord /*ox, oy, ow, oh,*/ font_w, font_h; + Evas_Coord ox, oy, ow, oh, font_w, font_h; mv->is_shown = 1; mv->img_hist = 0; @@ -262,16 +243,15 @@ _smart_show(Evas_Object *obj) if (mv->rows == 0 || mv->cols == 0) return; - evas_object_resize(mv->img, mv->cols, mv->img_h); + evas_object_resize(mv->base, mv->cols, mv->img_h); evas_object_image_size_set(mv->img, mv->cols, mv->img_h); - evas_object_image_fill_set(mv->img, 0, 0, mv->cols, mv->img_h); DBG("ox:%d ow:%d cols:%d oy:%d", ox, ow, mv->cols, oy); - evas_object_move(mv->img, ox + ow - mv->cols, oy); + evas_object_move(mv->base, ox + ow - mv->cols, oy); mv->to_render = 1; - evas_object_show(mv->img); + evas_object_show(mv->base); } } @@ -285,7 +265,7 @@ _smart_hide(Evas_Object *obj) if (mv->is_shown) { mv->is_shown = 0; - evas_object_hide(mv->img); + evas_object_hide(mv->base); } } @@ -373,11 +353,11 @@ _smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) if (mv->rows == 0 || mv->cols == 0) return; - evas_object_resize(mv->img, mv->cols, mv->img_h); + evas_object_resize(mv->base, mv->cols, mv->img_h); evas_object_image_size_set(mv->img, mv->cols, mv->img_h); - evas_object_image_fill_set(mv->img, 0, 0, mv->cols, mv->img_h); - evas_object_move(mv->img, ox + w - mv->cols, oy); + //evas_object_image_fill_set(mv->img, 0, 0, mv->cols, mv->img_h); + evas_object_move(mv->base, ox + w - mv->cols, oy); mv->to_render = 1; } @@ -404,14 +384,14 @@ Evas_Object * miniview_add(Evas_Object *parent, Evas_Object *termio) { Evas *e; - Evas_Object *obj; + Evas_Object *obj, *o; Miniview *mv; + Evas *canvas = evas_object_evas_get(parent); EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); e = evas_object_evas_get(parent); if (!e) return NULL; - if (!_smart) _smart_init(); obj = evas_object_smart_add(e, _smart); @@ -420,6 +400,30 @@ miniview_add(Evas_Object *parent, Evas_Object *termio) DBG("ADD parent:%p mv:%p", parent, mv); mv->termio = termio; + + mv->base = edje_object_add(canvas); + theme_apply(mv->base, termio_config_get(termio), "terminology/miniview"); + + evas_object_smart_member_add(mv->base, obj); + + /* miniview output widget */ + o = evas_object_image_add(canvas); + evas_object_image_alpha_set(o, EINA_TRUE); + evas_object_image_filled_set(o, EINA_TRUE); + edje_object_part_swallow(mv->base, "miniview.img", o); + + mv->img = o; + mv->is_shown = 0; + mv->to_render = 0; + mv->img_h = 0; + mv->rows = 0; + mv->cols = 0; + + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, + _smart_cb_mouse_wheel, obj); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, + _smart_cb_mouse_down, obj); + mv->deferred_renderer = ecore_timer_add(0.1, _deferred_renderer, mv); return obj;