blim. i just had to do this :) too much fun :)

SVN revision: 5582
This commit is contained in:
Carsten Haitzler 2001-10-28 01:38:54 +00:00
parent d23f3877e6
commit d41f8eacfa
5 changed files with 287 additions and 22 deletions

View File

@ -32,6 +32,7 @@ icon $SYSIC"/netscape.png" "netscape"
icon $USRIC"/mozilla.png" "mozilla"
icon $SYSIC"/gnome-irc.png" "xchat"
icon $SYSIC"/gnome-gimp.png" "gimp"
icon $SYSIC"/gnome-mixer.png" "/home/raster/.desktop/FixMix"
icon $SYSIC"/mc/gnome-audio.png" "xmms"
icon $USRIC"star_office.png" "/home/raster/.desktop/Office"

BIN
data/setup/textzone.bits.db Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

BIN
data/setup/textzonebg.xcf Normal file

Binary file not shown.

View File

@ -370,9 +370,18 @@ typedef struct _text_zone Text_Zone;
struct _text_zone
{
double x, y;
Evas_Object clip;
Ebits_Object *bg;
Evas_Object bg;
struct {
double x, y, w, h;
} l;
struct {
double dx, dy;
int go;
} move;
Evas_List lines;
};
@ -510,13 +519,13 @@ setup(void)
evas_move(evas, o, (root_w - w) / 2, -32);
evas_set_layer(evas, o, 20);
evas_show(evas, o);
evas_set_pass_events(evas, o, 1);
}
{
Text_Zone *txz;
txz = txz_new
((root_w - 512) / 2, 200,
"5c \n"
"9c Enlightenment\n"
"5c \n"
"5c Welcome to Enlightenment 0.17 (pre-release). This is the setup\n"
@ -539,11 +548,226 @@ setup(void)
evas_set_layer(evas, o, 30);
evas_show(evas, o);
animate_logo(0, o);
evas_set_pass_events(evas, o, 1);
}
scr_w = root_w;
scr_h = root_h;
}
static void
_txz_cb_show(void *data)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
evas_show(evas, l->data);
}
evas_show(evas, txz->clip);
}
}
static void
_txz_cb_hide(void *data)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
evas_hide(evas, l->data);
}
evas_hide(evas, txz->clip);
}
}
static void
_txz_cb_move(void *data, double x, double y)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
txz->l.x = x;
txz->l.y = y;
txz_adjust_txt(txz);
}
static void
_txz_cb_resize(void *data, double w, double h)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
txz->l.w = w;
txz->l.h = h;
txz_adjust_txt(txz);
}
static void
_txz_cb_raise(void *data)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
evas_raise(evas, l->data);
}
}
}
static void
_txz_cb_lower(void *data)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
evas_lower(evas, l->data);
}
}
}
static void
_txz_cb_set_layer(void *data, int lay)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
evas_set_layer(evas, l->data, lay);
}
}
}
static void
_txz_cb_get_min_size(void *data, double *minw, double *minh)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
*minw = 0;
*minh = 0;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
double w, h;
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
if (w > *minw) *minw = w;
*minh += h;
}
}
}
static void
_txz_cb_get_max_size(void *data, double *maxw, double *maxh)
{
Text_Zone *txz;
txz = (Text_Zone *)data;
*maxw = 0;
*maxh = 0;
{
Evas_List l;
for (l = txz->lines; l; l = l->next)
{
double w, h;
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
if (w > *maxw) *maxw = w;
*maxh += h;
}
}
}
static void
_txz_cb_title_down(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
Text_Zone *txz;
txz = _data;
txz->move.go = 1;
txz->move.dx = _x - txz->x;
txz->move.dy = _y - txz->y;
}
static void
_txz_cb_title_up(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
Text_Zone *txz;
txz = _data;
txz->move.go = 0;
}
static void
_txz_cb_title_move(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
Text_Zone *txz;
txz = _data;
if (txz->move.go)
{
txz_move(txz, _x - txz->move.dx, _y - txz->move.dy);
}
}
void
txz_adjust_txt(Text_Zone *txz)
{
Evas_List l;
double ypos;
ypos = txz->l.y + 4;
evas_move(evas, txz->clip, txz->l.x, txz->l.y);
evas_resize(evas, txz->clip, txz->l.w, txz->l.h);
for (l = txz->lines; l; l = l->next)
{
Evas_Object o;
double tw, th;
double x;
char align;
o = l->data;
align = (char)evas_get_data(evas, o, "align");
x = txz->l.x + 4;
tw = evas_get_text_width(evas, o);
th = evas_get_text_height(evas, o);
if (align == 'c') x = txz->l.x + 4 + ((txz->l.w - 8 - tw) / 2);
else if (align == 'r') x = txz->l.x + 4 + (txz->l.w - 8 - tw);
evas_move(evas, o, x, ypos);
ypos += th;
}
}
Text_Zone *
txz_new(double x, double y, char *text)
{
@ -554,9 +778,40 @@ txz_new(double x, double y, char *text)
txz->x = 0;
txz->y = 0;
txz->bg = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/textzonebg.png");
evas_set_layer(evas, txz->bg, 9);
txz->clip = evas_add_rectangle(evas);
evas_set_color(evas, txz->clip, 255, 255, 255, 255);
txz->bg = ebits_load(PACKAGE_DATA_DIR"/data/setup/textzone.bits.db");
if (txz->bg)
{
ebits_add_to_evas(txz->bg, evas);
ebits_set_layer(txz->bg, 9);
ebits_set_named_bit_replace(txz->bg, "Contents",
_txz_cb_show,
_txz_cb_hide,
_txz_cb_move,
_txz_cb_resize,
_txz_cb_raise,
_txz_cb_lower,
_txz_cb_set_layer,
NULL,
NULL,
_txz_cb_get_min_size,
_txz_cb_get_max_size,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_DOWN,
_txz_cb_title_down,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_UP,
_txz_cb_title_up,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_MOVE,
_txz_cb_title_move,
txz);
}
txz_text(txz, text);
txz_move(txz, x, y);
@ -569,7 +824,9 @@ txz_free(Text_Zone *txz)
{
Evas_List l;
evas_del_object(evas, txz->bg);
if (txz->bg)
ebits_free(txz->bg);
evas_del_object(evas, txz->clip);
for (l = txz->lines; l; l = l->next)
evas_del_object(evas, (Evas_Object)l->data);
if (txz->lines) evas_list_free(txz->lines);
@ -581,7 +838,8 @@ txz_show(Text_Zone *txz)
{
Evas_List l;
evas_show(evas, txz->bg);
if (txz->bg)
ebits_show(txz->bg);
for (l = txz->lines; l; l = l->next)
evas_show(evas, (Evas_Object)l->data);
}
@ -591,7 +849,8 @@ txz_hide(Text_Zone *txz)
{
Evas_List l;
evas_hide(evas, txz->bg);
if (txz->bg)
ebits_hide(txz->bg);
for (l = txz->lines; l; l = l->next)
evas_hide(evas, (Evas_Object)l->data);
}
@ -600,20 +859,12 @@ void
txz_move(Text_Zone *txz, double x, double y)
{
Evas_List l;
double dx, dy;
dx = x - txz->x;
dy = y - txz->y;
txz->x = x;
txz->y = y;
evas_move(evas, txz->bg, txz->x, txz->y);
for (l = txz->lines; l; l = l->next)
{
Evas_Object o;
o = (Evas_Object)l->data;
evas_get_geometry(evas, o, &x, &y, NULL, NULL);
evas_move(evas, o, x + dx, y + dy);
if (txz->bg)
{
ebits_move(txz->bg, txz->x, txz->y);
}
}
@ -649,7 +900,7 @@ txz_text(Text_Zone *txz, char *text)
sz = atoi(size);
sz = 4 + (sz * 2);
o = evas_add_text(evas, "nationff", sz, str);
evas_set_layer(evas, o, 10);
evas_set_layer(evas, o, 9);
evas_set_color(evas, o, 0, 0, 0, 255);
txz->lines = evas_list_append(txz->lines, o);
tw = evas_get_text_width(evas, o);
@ -661,10 +912,23 @@ txz_text(Text_Zone *txz, char *text)
evas_move(evas, o, txz->x + 512 - tw, ypos);
else
evas_move(evas, o, txz->x + ((512 - tw) / 2), ypos);
ypos += vadv;
evas_set_clip(evas, o, txz->clip);
evas_put_data(evas, o, "align", (void *)align[0]);
ypos += th;
p = tok + 1;
}
if (txz->bg)
{
int minw, minh;
ebits_get_real_min_size(txz->bg, &minw, &minh);
ebits_resize(txz->bg, minw + 8, minh + 8);
ebits_hide(txz->bg);
ebits_show(txz->bg);
ebits_set_layer(txz->bg, 0);
ebits_set_layer(txz->bg, 9);
}
}
void
@ -679,7 +943,7 @@ animate_logo(int v, void *data)
o = (Evas_Object)data;
if (v == 0) start_t = ecore_get_time();
t = ecore_get_time() - start_t;
frame = (int)(t * 15);
frame = (int)(t * 25);
frame = frame % 120;
frame++;
if (frame < 10) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e00%i.png", frame);