miniview: use edje

This commit is contained in:
Boris Faure 2014-05-12 20:25:36 +02:00
parent b38defd518
commit 8d04ae955e
2 changed files with 91 additions and 34 deletions

View File

@ -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";

View File

@ -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;