slightly more errr... mature things for packing... working on it..

all oo... :)


SVN revision: 4356
This commit is contained in:
Carsten Haitzler 2001-03-08 23:30:42 +00:00
parent f7b571fb1b
commit bc5be0a810
4 changed files with 108 additions and 2 deletions

20
src/e.h
View File

@ -555,6 +555,7 @@ struct _E_Entry
int focused;
int scroll_pos;
int x, y, w, h;
int min_size;
Ebits_Object obj_base;
Ebits_Object obj_cursor;
Ebits_Object obj_selection;
@ -590,8 +591,20 @@ struct _E_Pack_Object_Class
void (*resize) (void *object, int w, int h);
void (*min) (void *object, int *w, int *h);
void (*max) (void *object, int *w, int *h);
void (*size) (void *object, int x, int y);
};
#define PACK_HBOX 0
#define PACK_VBOX 1
#define PACK_TABLE 2
#define PACK_ENTRY 3
#define PACK_LABEL 4
#define PACK_BUTTON 5
#define PACK_RADIO 6
#define PACK_CHECK 7
#define PACK_MAX 8
struct _E_Pack_Object
{
int type;
@ -610,7 +623,7 @@ struct _E_Pack_Object
};
#define DO(_object, _method, _args...) \
{ if (_object->class._method) _object->class._method(_object, ## _args); }
{ if (_object->class._method) _object->class._method(_object->data.object, ## _args); }
void e_entry_init(void);
void e_entry_free(E_Entry *entry);
@ -619,12 +632,17 @@ void e_entry_handle_keypress(E_Entry *entry, Ev_Key_Down *e);
void e_entry_set_evas(E_Entry *entry, Evas evas);
void e_entry_show(E_Entry *entry);
void e_entry_hide(E_Entry *entry);
void e_entry_raise(E_Entry *entry);
void e_entry_lower(E_Entry *entry);
void e_entry_set_layer(E_Entry *entry, int l);
void e_entry_set_clip(E_Entry *entry, Evas_Object clip);
void e_entry_unset_clip(E_Entry *entry);
void e_entry_move(E_Entry *entry, int x, int y);
void e_entry_resize(E_Entry *entry, int w, int h);
void e_entry_query_max_size(E_Entry *entry, int *w, int *h);
void e_entry_max_size(E_Entry *entry, int *w, int *h);
void e_entry_min_size(E_Entry *entry, int *w, int *h);
void e_entry_set_size(E_Entry *entry, int w, int h);
void e_entry_set_focus(E_Entry *entry, int focused);
void e_entry_set_text(E_Entry *entry, const char *text);
const char *e_entry_get_text(E_Entry *entry);

View File

@ -531,6 +531,28 @@ e_entry_hide(E_Entry *entry)
evas_hide(entry->evas, entry->text);
}
void
e_entry_raise(E_Entry *entry)
{
if (entry->obj_base) ebits_raise(entry->obj_base);
evas_raise(entry->evas, entry->clip_box);
evas_raise(entry->evas, entry->text);
if (entry->obj_selection) ebits_raise(entry->obj_selection);
if (entry->obj_cursor) ebits_raise(entry->obj_cursor);
evas_raise(entry->evas, entry->event_box);
}
void
e_entry_lower(E_Entry *entry)
{
evas_lower(entry->evas, entry->event_box);
if (entry->obj_cursor) ebits_lower(entry->obj_cursor);
if (entry->obj_selection) ebits_lower(entry->obj_selection);
evas_lower(entry->evas, entry->text);
evas_lower(entry->evas, entry->clip_box);
if (entry->obj_base) ebits_lower(entry->obj_base);
}
void
e_entry_set_layer(E_Entry *entry, int l)
{
@ -589,6 +611,51 @@ e_entry_query_max_size(E_Entry *entry, int *w, int *h)
if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
}
void
e_entry_max_size(E_Entry *entry, int *w, int *h)
{
int p1l, p1r, p1t, p1b;
int p2l, p2r, p2t, p2b;
p1l = p1r = p1t = p1b = 0;
if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b);
p2l = p2r = p2t = p2b = 0;
if (entry->obj_cursor) ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
if (w) *w = 8000;
if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
}
void
e_entry_min_size(E_Entry *entry, int *w, int *h)
{
int p1l, p1r, p1t, p1b;
int p2l, p2r, p2t, p2b;
p1l = p1r = p1t = p1b = 0;
if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b);
p2l = p2r = p2t = p2b = 0;
if (entry->obj_cursor) ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
if (w) *w = p1l + p1r + p2l + p2r + entry->min_size;
if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
}
void
e_entry_set_size(E_Entry *entry, int w, int h)
{
int p1l, p1r, p1t, p1b;
int p2l, p2r, p2t, p2b;
p1l = p1r = p1t = p1b = 0;
if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b);
p2l = p2r = p2t = p2b = 0;
if (entry->obj_cursor) ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
if (p1l + p1r + p2l + p2r + w > entry->w)
{
entry->min_size = w;
e_entry_configure(entry);
}
}
void
e_entry_set_focus(E_Entry *entry, int focused)
{

View File

@ -47,6 +47,7 @@ main(int argc, char **argv)
e_event_filter_init();
e_ev_x_init();
e_pack_object_init();
e_fs_init();
e_desktops_init();
e_border_init();

View File

@ -1,10 +1,29 @@
#include "e.h"
E_Pack_Object_Class classes[1];
E_Pack_Object_Class classes[PACK_MAX];
void
e_pack_object_init(void)
{
ZERO(classes, E_Pack_Object_Class, PACK_MAX);
classes[PACK_ENTRY] = (E_Pack_Object_Class)
{
e_entry_new,
e_entry_free,
e_entry_show,
e_entry_hide,
e_entry_raise,
e_entry_lower,
e_entry_set_layer,
e_entry_set_evas,
e_entry_set_clip,
e_entry_unset_clip,
e_entry_move,
e_entry_resize,
e_entry_min_size,
e_entry_max_size,
e_entry_set_size
};
}
E_Pack_Object *
@ -16,5 +35,6 @@ e_pack_object_new(int type)
ZERO(po, E_Pack_Object, 1);
po->type = type;
po->class = classes[type];
po->data.object = po->class.new();
return po;
}