demo app now does its own internal edje resizing/moving.. redying for

multiepl edjes in one test app


SVN revision: 7052
This commit is contained in:
Carsten Haitzler 2003-06-21 04:54:15 +00:00
parent e863599780
commit 913f50562a
2 changed files with 221 additions and 8 deletions

View File

@ -1,5 +1,9 @@
#include "edje.h"
/* FIXME: need filename title and part name title */
/* FIXME: need to look a bit prettier! */
/* FIXME: edje test needs to load multiple edjes */
static int main_start(int argc, char **argv);
static void main_stop(void);
static void main_resize(Ecore_Evas *ee);
@ -107,7 +111,174 @@ bg_resize(double w, double h)
evas_object_resize(o_bg, w, h);
}
static Evas_Object *o_edje = NULL;
typedef struct _Demo_Edje Demo_Edje;
struct _Demo_Edje
{
Evas_Object *edje;
Evas_Object *left;
Evas_Object *right;
Evas_Object *top;
Evas_Object *bottom;
Evas_Object *title_text;
int down_top : 1;
int down_bottom : 1;
int hdir;
int vdir;
};
static Evas_List *edjes = NULL;
static void cb (void *data, Evas_Object *o, const char *sig, const char *src);
static void
top_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
de = data;
de->down_top = 1;
}
static void
top_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
de = data;
de->down_top = 0;
}
static void
top_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
Evas_Event_Mouse_Move *ev;
de = data;
ev = event_info;
if (de->down_top)
{
double x, y;
evas_object_geometry_get(de->left, &x, &y, NULL, NULL);
evas_object_move(de->left,
x + ev->cur.canvas.x - ev->prev.canvas.x,
y + ev->cur.canvas.y - ev->prev.canvas.y);
evas_object_geometry_get(de->right, &x, &y, NULL, NULL);
evas_object_move(de->right,
x + ev->cur.canvas.x - ev->prev.canvas.x,
y + ev->cur.canvas.y - ev->prev.canvas.y);
evas_object_geometry_get(de->top, &x, &y, NULL, NULL);
evas_object_move(de->top,
x + ev->cur.canvas.x - ev->prev.canvas.x,
y + ev->cur.canvas.y - ev->prev.canvas.y);
evas_object_geometry_get(de->bottom, &x, &y, NULL, NULL);
evas_object_move(de->bottom,
x + ev->cur.canvas.x - ev->prev.canvas.x,
y + ev->cur.canvas.y - ev->prev.canvas.y);
evas_object_geometry_get(de->edje, &x, &y, NULL, NULL);
evas_object_move(de->edje,
x + ev->cur.canvas.x - ev->prev.canvas.x,
y + ev->cur.canvas.y - ev->prev.canvas.y);
}
}
static void
bottom_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
Evas_Event_Mouse_Down *ev;
double x, y, w, h;
int hdir, vdir;
de = data;
ev = event_info;
de->down_bottom = 1;
evas_object_geometry_get(de->edje, &x, &y, &w, &h);
hdir = 1;
vdir = 1;
x -= 10;
y -= 20;
w += 20;
h += 30;
if ((ev->canvas.x - x) < (w / 2)) hdir = 0;
if ((ev->canvas.y - y) < (h / 2)) vdir = 0;
de->hdir = hdir;
de->vdir = vdir;
}
static void
bottom_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
de = data;
de->down_bottom = 0;
}
static void
bottom_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Demo_Edje *de;
Evas_Event_Mouse_Move *ev;
de = data;
ev = event_info;
if (de->down_bottom)
{
double x, y, w, h;
int hdir, vdir;
evas_object_geometry_get(de->edje, &x, &y, &w, &h);
hdir = de->hdir;
vdir = de->vdir;
x -= 10;
y -= 20;
w += 20;
h += 30;
if (hdir > 0)
{
w += ev->cur.canvas.x - ev->prev.canvas.x;
if (w < 20) w = 20;
}
else
{
w -= ev->cur.canvas.x - ev->prev.canvas.x;
x += ev->cur.canvas.x - ev->prev.canvas.x;
if (w < 20)
{
x += w - 20;
w = 20;
}
}
if (vdir > 0)
{
h += ev->cur.canvas.y - ev->prev.canvas.y;
if (h < 30) h = 30;
}
else
{
h -= ev->cur.canvas.y - ev->prev.canvas.y;
y += ev->cur.canvas.y - ev->prev.canvas.y;
if (h < 30)
{
y += h - 30;
h = 30;
}
}
evas_object_move(de->left, x, y + 20);
evas_object_resize(de->left, 10, h - 30);
evas_object_move(de->right, x + w - 10, y + 20);
evas_object_resize(de->right, 10, h - 30);
evas_object_move(de->top, x, y);
evas_object_resize(de->top, w, 20);
evas_object_move(de->bottom, x, y + (h - 10));
evas_object_resize(de->bottom, w, 10);
evas_object_move(de->edje, x + 10, y + 20);
evas_object_resize(de->edje, w - 20, h - 30);
}
}
static void
cb (void *data, Evas_Object *o, const char *sig, const char *src)
@ -119,22 +290,66 @@ void
test_setup(char *file, char *name)
{
Evas_Object *o;
Demo_Edje *de;
de = calloc(1, sizeof(Demo_Edje));
edjes = evas_list_append(edjes, de);
o = evas_object_rectangle_add(evas);
evas_object_color_set(o, 40, 60, 80, 180);
evas_object_move(o, 10, 10);
evas_object_resize(o, 220, 20);
evas_object_show(o);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, top_down_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, top_up_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, top_move_cb, de);
de->top = o;
o = evas_object_rectangle_add(evas);
evas_object_color_set(o, 40, 60, 80, 140);
evas_object_move(o, 10, 10 + 20 + 240);
evas_object_resize(o, 220, 10);
evas_object_show(o);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, bottom_down_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, bottom_up_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, bottom_move_cb, de);
de->bottom = o;
o = evas_object_rectangle_add(evas);
evas_object_color_set(o, 40, 60, 80, 140);
evas_object_move(o, 10, 10 + 20);
evas_object_resize(o, 10, 240);
evas_object_show(o);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, bottom_down_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, bottom_up_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, bottom_move_cb, de);
de->left = o;
o = evas_object_rectangle_add(evas);
evas_object_color_set(o, 40, 60, 80, 140);
evas_object_move(o, 10 + 10 + 200, 10 + 20);
evas_object_resize(o, 10, 240);
evas_object_show(o);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, bottom_down_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, bottom_up_cb, de);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, bottom_move_cb, de);
de->right = o;
o = edje_add(evas);
edje_file_set(o, file, name);
edje_signal_callback_add(o, "do_it", "the_source", cb, NULL);
edje_signal_callback_add(o, "mouse,*", "logo", cb, NULL);
evas_object_move(o, 10, 10);
evas_object_resize(o, 220, 300);
evas_object_move(o, 10 + 10, 10 + 20);
evas_object_resize(o, 200, 240);
evas_object_show(o);
o_edje = o;
de->edje = o;
}
void
test_reize(double w, double h)
{
evas_object_move(o_edje, 10, 10);
evas_object_resize(o_edje, w - 20, h - 20);
// evas_object_move(o_edje, 10, 10);
// evas_object_resize(o_edje, w - 20, h - 20);
}
int

View File

@ -1,8 +1,6 @@
#include "Edje.h"
#include "edje_private.h"
/* FIXME: edje test need to make in-canvas move & resize controls on edjes */
/* FIXME: edje test needs to load multiple edjes */
/* FIXME: sub objects need to be added to smart object */
/* FIXME: add clicked signal for a mouse up thats a real clicked */
/* FIXME: free stuff - no more leaks */