add ilist headers - much easier to organise things now

SVN revision: 21513
This commit is contained in:
Carsten Haitzler 2006-03-27 14:46:26 +00:00
parent 2485636164
commit f96980dbe8
8 changed files with 173 additions and 32 deletions

View File

@ -935,3 +935,78 @@ group {
}
}
}
group {
name: "widgets/ilist_header";
parts {
part {
name: "base";
mouse_events: 0;
description {
state: "default" 0.0;
color: 64 64 64 255;
image {
normal: "e17_ilist_bg0.png";
border: 3 3 3 3;
}
}
}
part {
name: "icon_swallow";
type: SWALLOW;
mouse_events: 0;
description {
state: "default" 0.0;
align: 0.0 0.5;
aspect: 1.0 1.0;
aspect_preference: VERTICAL;
// fixed: 1 1;
rel1 {
relative: 0.0 0.0;
offset: 4 4;
}
rel2 {
relative: 0.0 1.0;
offset: 4 -5;
}
}
}
part {
name: "label";
type: TEXT;
effect: SOFT_SHADOW;
mouse_events: 0;
description {
state: "default" 0.0;
min: 16 16;
rel1 {
to_x: "icon_swallow";
relative: 1.0 0.0;
offset: 16 4;
}
rel2 {
relative: 1.0 1.0;
offset: -5 -5;
}
color: 255 255 255 255;
color2: 0 0 0 64;
text {
text: "Item Label";
font: "Edje-Vera-Bold";
size: 16;
min: 1 1;
align: 0.0 0.5;
text_class: "ilist_item";
}
}
}
part {
name: "event";
type: RECT;
description {
state: "default" 0.0;
color: 0 0 0 0;
}
}
}
}

View File

@ -63,24 +63,35 @@ e_configure_show(E_Container *con)
edje_object_part_text_set(eco->edje, "title", _("Configuration Panel"));
/* add items here */
e_configure_header_item_add(eco, "enlightenment/appearance", _("Appearance"));
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Background Settings"), e_int_config_background);
e_configure_standard_item_add(eco, "enlightenment/themes", _("Theme Selector"), e_int_config_theme);
e_configure_standard_item_add(eco, "enlightenment/modules", _("Module Settings"), e_int_config_modules);
e_configure_standard_item_add(eco, "enlightenment/configuration", _("Config Dialog Settings"), e_int_config_cfgdialogs);
e_configure_standard_item_add(eco, "enlightenment/mouse", _("Cursor Settings"), e_int_config_cursor);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Settings"), e_int_config_desks);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Lock Settings"), e_int_config_desklock);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Display Settings"), e_int_config_display);
e_configure_standard_item_add(eco, "enlightenment/e", _("Focus Settings"), e_int_config_focus);
e_configure_standard_item_add(eco, "enlightenment/e", _("Font Display Hinting"), e_int_config_hinting);
e_configure_standard_item_add(eco, "enlightenment/mouse", _("Cursor Settings"), e_int_config_cursor);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Display Settings"), e_int_config_window_display);
e_configure_header_item_add(eco, "enlightenment/extensions", _("Extensions"));
e_configure_standard_item_add(eco, "enlightenment/modules", _("Module Settings"), e_int_config_modules);
e_configure_header_item_add(eco, "enlightenment/screen_setup", _("Screen"));
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Settings"), e_int_config_desks);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Display Settings"), e_int_config_display);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Lock Settings"), e_int_config_desklock);
e_configure_header_item_add(eco, "enlightenment/behavior", _("Behavior"));
e_configure_standard_item_add(eco, "enlightenment/e", _("Focus Settings"), e_int_config_focus);
e_configure_standard_item_add(eco, "enlightenment/e", _("Key Binding Settings"), e_int_config_keybindings);
e_configure_standard_item_add(eco, "enlightenment/favorites", _("Menu Settings"), e_int_config_menus);
e_configure_header_item_add(eco, "enlightenment/misc", _("Miscellaneous"));
e_configure_standard_item_add(eco, "enlightenment/configuration", _("Performance Settings"), e_int_config_performance);
e_configure_standard_item_add(eco, "enlightenment/run", _("Run Command Settings"), e_int_config_exebuf);
e_configure_standard_item_add(eco, "enlightenment/configuration", _("Config Dialog Settings"), e_int_config_cfgdialogs);
e_configure_header_item_add(eco, "enlightenment/advanced", _("Advanced"));
e_configure_standard_item_add(eco, "enlightenment/run", _("Startup Settings"), e_int_config_startup);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window List Settings"), e_int_config_winlist);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Display Settings"), e_int_config_window_display);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Manipulation Settings"), e_int_config_window_manipulation);
e_configure_standard_item_add(eco, "enlightenment/run", _("Run Command Settings"), e_int_config_exebuf);
/* FIXME: we should have a way for modules to hook in here and add their
* own entries
@ -122,6 +133,16 @@ e_configure_standard_item_add(E_Configure *eco, char *icon, char *label, E_Confi
e_widget_ilist_append(eco->ilist, o, label, _e_configure_cb_standard, ecocb, NULL);
}
EAPI void
e_configure_header_item_add(E_Configure *eco, char *icon, char *label)
{
Evas_Object *o;
o = edje_object_add(eco->evas);
e_util_edje_icon_set(o, icon);
e_widget_ilist_header_append(eco->ilist, o, label);
}
/* local subsystem functions */
static void
_e_configure_free(E_Configure *eco)

View File

@ -24,6 +24,7 @@ struct _E_Configure
EAPI E_Configure *e_configure_show(E_Container *con);
EAPI void e_configure_standard_item_add(E_Configure *eco, char *icon, char *label, E_Config_Dialog *(*func) (E_Container *con));
EAPI void e_configure_header_item_add(E_Configure *eco, char *icon, char *label);
#endif
#endif

View File

@ -30,6 +30,7 @@ struct _E_Smart_Item
void (*func_hilight) (void *data, void *data2);
void *data;
void *data2;
unsigned char header : 1;
};
/* local subsystem functions */
@ -92,7 +93,7 @@ e_ilist_icon_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
}
EAPI void
e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2)
e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, int header, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2)
{
E_Smart_Item *si;
Evas_Coord mw = 0, mh = 0;
@ -101,12 +102,15 @@ e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (v
si = E_NEW(E_Smart_Item, 1);
si->sd = sd;
si->base_obj = edje_object_add(evas_object_evas_get(sd->smart_obj));
if (evas_list_count(sd->items) & 0x1)
e_theme_edje_object_set(si->base_obj, "base/theme/widgets",
if (header)
e_theme_edje_object_set(si->base_obj, "base/theme/widgets",
"widgets/ilist_header");
else if (evas_list_count(sd->items) & 0x1)
e_theme_edje_object_set(si->base_obj, "base/theme/widgets",
"widgets/ilist_odd");
else
e_theme_edje_object_set(si->base_obj, "base/theme/widgets",
e_theme_edje_object_set(si->base_obj, "base/theme/widgets",
"widgets/ilist");
edje_object_part_text_set(si->base_obj, "label", label);
si->icon_obj = icon;
@ -120,6 +124,7 @@ e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (v
si->func_hilight = func_hilight;
si->data = data;
si->data2 = data2;
si->header = header;
sd->items = evas_list_append(sd->items, si);
edje_object_size_min_calc(si->base_obj, &mw, &mh);
e_box_pack_end(sd->box_obj, si->base_obj);
@ -364,17 +369,41 @@ _e_smart_event_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
ev = event_info;
if (!strcmp(ev->keyname, "Up"))
{
int n;
n = e_ilist_selected_get(sd->smart_obj);
e_ilist_selected_set(sd->smart_obj, n - 1);
int n, ns;
E_Smart_Item *si;
ns = e_ilist_selected_get(sd->smart_obj);
do
{
n = e_ilist_selected_get(sd->smart_obj);
if (n == 0)
{
e_ilist_selected_set(sd->smart_obj, ns);
break;
}
e_ilist_selected_set(sd->smart_obj, n - 1);
si = evas_list_nth(sd->items, sd->selected);
}
while ((si) && (si->header));
}
else if (!strcmp(ev->keyname, "Down"))
{
int n;
int n, ns;
E_Smart_Item *si;
n = e_ilist_selected_get(sd->smart_obj);
e_ilist_selected_set(sd->smart_obj, n + 1);
ns = e_ilist_selected_get(sd->smart_obj);
do
{
n = e_ilist_selected_get(sd->smart_obj);
if (n == (evas_list_count(sd->items) - 1))
{
e_ilist_selected_set(sd->smart_obj, ns);
break;
}
e_ilist_selected_set(sd->smart_obj, n + 1);
si = evas_list_nth(sd->items, sd->selected);
}
while ((si) && (si->header));
}
else if ((!strcmp(ev->keyname, "Return")) ||
(!strcmp(ev->keyname, "space")))

View File

@ -8,7 +8,7 @@
EAPI Evas_Object *e_ilist_add (Evas *evas);
EAPI void e_ilist_icon_size_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
EAPI void e_ilist_append (Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2);
EAPI void e_ilist_append (Evas_Object *obj, Evas_Object *icon, char *label, int header, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2);
EAPI void e_ilist_selected_set (Evas_Object *obj, int n);
EAPI int e_ilist_selected_get (Evas_Object *obj);
EAPI const char *e_ilist_selected_label_get (Evas_Object *obj);

View File

@ -443,39 +443,43 @@ _e_test_internal(E_Container *con)
e_theme_edje_object_set(o4, "base/theme/borders",
"widgets/border/default/border");
e_livethumb_thumb_set(o3, o4);
e_ilist_append(o, o3, "Item 1", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Item 1", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/palette.png");
e_ilist_append(o, o3, "Item 2 (Some really long text goes here for testing)", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Item 2 (Some really long text goes here for testing)", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/mozilla.png");
e_ilist_append(o, o3, "Item 3 (Medium length)", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Item 3 (Medium length)", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/trash_open.png");
e_ilist_append(o, o3, "Item POOP", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Item POOP", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/watch.png");
e_ilist_append(o, o3, "Item BLING BLING", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Item BLING BLING", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/quake3.png");
e_ilist_append(o, o3, "Sukebelinth", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Sukebelinth", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/opera6.png");
e_ilist_append(o, o3, "Panties", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "A header", 1, NULL, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/opera6.png");
e_ilist_append(o, o3, "Panties", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/drawer_open.png");
e_ilist_append(o, o3, "Flimbert the cagey", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Flimbert the cagey", 0, _e_test_sel, NULL, NULL, NULL);
o3 = e_icon_add(dia->win->evas);
e_icon_file_set(o3, "/home/raster/C/stuff/icons/cd.png");
e_ilist_append(o, o3, "Norbert", _e_test_sel, NULL, NULL);
e_ilist_append(o, o3, "Norbert", 0, _e_test_sel, NULL, NULL, NULL);
e_ilist_min_size_get(o, &mw, &mh);
evas_object_resize(o, mw, mh);

View File

@ -73,7 +73,17 @@ e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*f
wcb->data = data;
if (val) wcb->value = strdup(val);
wd->callbacks = evas_list_append(wd->callbacks, wcb);
e_ilist_append(wd->o_ilist, icon, label, _e_wid_cb_item_sel, _e_wid_cb_item_hilight, wd, wcb);
e_ilist_append(wd->o_ilist, icon, label, 0, _e_wid_cb_item_sel, _e_wid_cb_item_hilight, wd, wcb);
if (icon) evas_object_show(icon);
}
EAPI void
e_widget_ilist_header_append(Evas_Object *obj, Evas_Object *icon, char *label)
{
E_Widget_Data *wd;
wd = e_widget_data_get(obj);
e_ilist_append(wd->o_ilist, icon, label, 1, NULL, NULL, NULL, NULL);
if (icon) evas_object_show(icon);
}

View File

@ -8,6 +8,7 @@
EAPI Evas_Object *e_widget_ilist_add(Evas *evas, int icon_w, int icon_h, char **value);
EAPI void e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data), void *data, char *val);
EAPI void e_widget_ilist_header_append(Evas_Object *obj, Evas_Object *icon, char *label);
EAPI void e_widget_ilist_selected_set(Evas_Object *obj, int n);
EAPI void e_widget_ilist_selector_set(Evas_Object *obj, int selector);
EAPI void e_widget_ilist_go(Evas_Object *obj);