From: <enl...@so...> - 2001-01-02 23:10:44
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Modified Files: selected-0.sticky-0.shaded-0.bits.db selected-1.sticky-0.shaded-0.bits.db Log Message: e17 does..... MENUS! =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/config/appearance/default/borders/default/selected-0.sticky-0.shaded-0.bits.db,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 Binary files /tmp/cvs08P83W and /tmp/cvswnn03L differ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/config/appearance/default/borders/default/selected-1.sticky-0.shaded-0.bits.db,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 Binary files /tmp/cvs1ySg3Z and /tmp/cvsEGXjJT differ |
From: <enl...@so...> - 2001-01-02 23:11:17
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Added Files: base.bits.db selected-0.submenu-0.bits.db selected-0.submenu-1.bits.db selected-1.submenu-0.bits.db selected-1.submenu-1.bits.db Log Message: add the data for menus |
From: <enl...@so...> - 2001-01-02 23:11:37
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Added Files: borzoib.ttf Log Message: add a font |
From: <enl...@so...> - 2001-01-02 23:12:06
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Added Files: arrow.png m.xcf mb1.png mb2.png mb3.png mb4.png mb5.png mb6.png mb7.png mb8.png mbb.png tile.png Log Message: add some more original images for data... |
From: <enl...@so...> - 2001-02-03 12:04:21
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: Makefile.am desktops.c e.h menu.c resist.c Added Files: menudb.c Log Message: add data needed to menus, menu code that fully works (tho test code in desktop.c is currently a bad hack that does rely on my own personal icons dir to show icons - i'll add a menu creator set of code in menudb.c that can create menus from db's so we can start being able to configure menus for the desktop etc.) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- Makefile.am 2000/12/29 20:49:17 1.7 +++ Makefile.am 2001/02/03 12:04:30 1.8 @@ -15,6 +15,7 @@ icccm.c \ main.c \ menu.c \ +menudb.c \ resist.c \ util.c \ view.c \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- desktops.c 2001/01/02 23:10:12 1.9 +++ desktops.c 2001/02/03 12:04:30 1.10 @@ -139,17 +139,59 @@ if (!menu) { menu = e_menu_new(); + menu->pad.icon = 2; + menu->pad.state = 2; for (count = 1; count <= 16; count++) { int count2; E_Menu *menu2; E_Menu_Item *menuitem; + char *icons[] = + { + "cd.png", + "drawer_closed.png", + "drawer_cube_closed.png", + "drawer_cube_open.png", + "drawer_cube_open_socks.png", + "drawer_image_closed.png", + "drawer_image_open.png", + "drawer_image_open_socks.png", + "drawer_light_closed.png", + "drawer_light_open.png", + "drawer_light_open_socks.png", + "drawer_open.png", + "drawer_open_socks.png", + "drawer_palette_closed.png", + "drawer_palette_open.png", + "drawer_palette_open_socks.png", + "drawer_style_closed.png", + "drawer_style_open.png", + "drawer_style_open_socks.png", + "drawer_text_closed.png", + "drawer_text_open.png", + "drawer_text_open_socks.png", + "palette.png", + "quake3.png", + "trash_closed.png", + "trash_full_closed.png", + "trash_full_open.png", + "trash_open.png", + "watch.png" + }; sprintf(buf, "Menu item %i", count); menuitem = e_menu_item_new(buf); + sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); + menuitem->icon = strdup(buf); + menuitem->scale_icon = 1; + menuitem->radio = rand() & 0x1; + menuitem->check = rand() & 0x1; + menuitem->on = rand() & 0x1; if (count < 10) { menu2 = e_menu_new(); + menu2->pad.icon = 2; + menu2->pad.state = 2; menuitem->submenu = menu2; } e_menu_add_item(menu, menuitem); @@ -162,16 +204,33 @@ int count3; sprintf(buf, "Submenu item %i", count2); - menuitem2 = e_menu_item_new(buf); + if (!(rand()%3)) menuitem2 = e_menu_item_new(buf); + else menuitem2 = e_menu_item_new(""); menu3 = e_menu_new(); + menu3->pad.icon = 2; + menu3->pad.state = 2; menuitem2->submenu = menu3; + sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); + if (!(rand()%3)) menuitem2->icon = strdup(buf); + menuitem2->scale_icon = 1; + menuitem2->radio = rand() & 0x1; + menuitem2->check = rand() & 0x1; + menuitem2->on = rand() & 0x1; + if (!(rand()%3)) menuitem2->separator = 1; e_menu_add_item(menu2, menuitem2); for (count3 = 1; count3 <= 12; count3++) { E_Menu_Item *menuitem3; sprintf(buf, "Submenu item %i", count3); - menuitem3 = e_menu_item_new(buf); + menuitem3 = e_menu_item_new(NULL); + sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); + menuitem3->icon = strdup(buf); + menuitem3->scale_icon = 1; + menuitem3->radio = rand() & 0x1; + menuitem3->check = rand() & 0x1; + menuitem3->on = rand() & 0x1; + if (!(rand()%3)) menuitem3->separator = 1; e_menu_add_item(menu3, menuitem3); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- e.h 2001/01/02 23:10:12 1.12 +++ e.h 2001/02/03 12:04:30 1.13 @@ -326,6 +326,13 @@ int redo_sel; int changed; + struct { + int state, icon, text; + } size; + struct { + int icon, state; + } pad; + E_Menu_Item *selected; Time time; @@ -343,27 +350,36 @@ int w, h; } size; - Ebits_Object bg; - char *bg_file; - int selected; + Ebits_Object bg; + char *bg_file; + int selected; - Evas_Object obj_entry; + Evas_Object obj_entry; - char *str; - Evas_Object obj_text; + char *str; + Evas_Object obj_text; - char *icon; - Evas_Object obj_icon; + char *icon; + Evas_Object obj_icon; + int scale_icon; - int radio_group; - int check; - int on; + Ebits_Object state; + char *state_file; - E_Menu *menu; - E_Menu *submenu; + Ebits_Object sep; + char *sep_file; - void (*func_select) (E_Menu *m, E_Menu_Item *mi, void *data); - void *func_select_data; + int separator; + int radio_group; + int radio; + int check; + int on; + + E_Menu *menu; + E_Menu *submenu; + + void (*func_select) (E_Menu *m, E_Menu_Item *mi, void *data); + void *func_select_data; }; void e_action_add_proto(char *action, @@ -465,3 +481,35 @@ void e_view_free(E_View *v); E_View *e_view_new(void); void e_view_init(void); + +void e_menu_callback_item(E_Menu *m, E_Menu_Item *mi); +void e_menu_item_set_callback(E_Menu_Item *mi, void (*func) (E_Menu *m, E_Menu_Item *mi, void *data), void *data); +void e_menu_hide_submenus(E_Menu *menus_after); +void e_menu_select(int dx, int dy); +void e_menu_init(void); +void e_menu_event_win_show(void); +void e_menu_event_win_hide(void); +void e_menu_set_background(E_Menu *m); +void e_menu_set_sel(E_Menu *m, E_Menu_Item *mi); +void e_menu_set_sep(E_Menu *m, E_Menu_Item *mi); +void e_menu_set_state(E_Menu *m, E_Menu_Item *mi); +void e_menu_free(E_Menu *m); +E_Menu *e_menu_new(void); +void e_menu_hide(E_Menu *m); +void e_menu_show(E_Menu *m); +void e_menu_move_to(E_Menu *m, int x, int y); +void e_menu_show_at_mouse(E_Menu *m, int x, int y, Time t); +void e_menu_add_item(E_Menu *m, E_Menu_Item *mi); +void e_menu_del_item(E_Menu *m, E_Menu_Item *mi); +void e_menu_item_update(E_Menu *m, E_Menu_Item *mi); +void e_menu_item_unrealize(E_Menu *m, E_Menu_Item *mi); +void e_menu_item_realize(E_Menu *m, E_Menu_Item *mi); +E_Menu_Item *e_menu_item_new(char *str); +void e_menu_obscure_outside_screen(E_Menu *m); +void e_menu_scroll_all_by(int dx, int dy); +void e_menu_update_visibility(E_Menu *m); +void e_menu_update_base(E_Menu *m); +void e_menu_update_finish(E_Menu *m); +void e_menu_update_shows(E_Menu *m); +void e_menu_update_hides(E_Menu *m); +void e_menu_update(E_Menu *m); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menu.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- menu.c 2001/01/02 23:10:12 1.2 +++ menu.c 2001/02/03 12:04:30 1.3 @@ -5,6 +5,7 @@ static Window menu_event_win = 0; static int screen_w, screen_h; static int mouse_x, mouse_y; +static int keyboard_nav = 0; static void e_idle(void *data); static void e_key_down(Eevent * ev); @@ -21,9 +22,16 @@ Evas_List l; int ok = 0; int resist = 5; - int scroll_speed = 16; - static double last_time = 0.0, t; - + int scroll_speed = 12; + char *settings_db; + static double last_time = 0.0; + double t; + + settings_db = e_config_get("settings"); + ok = 0; E_DB_INT_GET(settings_db, "/menu/scroll/resist", resist, ok); + if (!ok) resist = 5; + ok = 0; E_DB_INT_GET(settings_db, "/menu/scroll/speed", scroll_speed, ok); + if (!ok) scroll_speed = 12; t = e_get_time(); if (val != 0) scroll_speed = (int)(((t - last_time) / 0.02) * (double)scroll_speed); @@ -119,6 +127,7 @@ } if (ok) e_add_event_timer("menu_scroller", 0.02, e_scroller_timer, val + 1, NULL); + UN(data); } static void @@ -215,22 +224,27 @@ } if (!strcmp(e->key, "Up")) { + keyboard_nav = 1; e_menu_select(0, -1); } else if (!strcmp(e->key, "Down")) { + keyboard_nav = 1; e_menu_select(0, 1); } else if (!strcmp(e->key, "Left")) { + keyboard_nav = 1; e_menu_select(-1, 0); } else if (!strcmp(e->key, "Right")) { + keyboard_nav = 1; e_menu_select(1, 0); } else if (!strcmp(e->key, "Escape")) { + keyboard_nav = 1; for (l = menus; l; l = l->next) { m = l->data; @@ -241,6 +255,7 @@ } else if (!strcmp(e->key, "Return")) { + keyboard_nav = 1; if (mi) { e_menu_callback_item(m, mi); @@ -289,6 +304,7 @@ Ev_Mouse_Up *e; e = ev->event; + keyboard_nav = 0; if (e->win == menu_event_win) { if (open_menus) @@ -330,6 +346,7 @@ Ev_Mouse_Move *e; e = ev->event; + keyboard_nav = 0; if (e->win == menu_event_win) { Evas_List l; @@ -373,6 +390,7 @@ Ev_Window_Enter *e; e = ev->event; + keyboard_nav = 0; if (e->win == menu_event_win) { } @@ -385,6 +403,7 @@ Ev_Window_Leave *e; e = ev->event; + keyboard_nav = 0; if (e->win == menu_event_win) { } @@ -433,7 +452,6 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Menu_Item *mi; - Evas_List l; mi = _data; mi->menu->selected = mi; @@ -448,6 +466,11 @@ mi->menu->current.y + mi->y - mi->menu->border.t); e_menu_show(mi->submenu); } + UN(_e); + UN(_o); + UN(_b); + UN(_x); + UN(_y); } static void @@ -460,6 +483,11 @@ mi->selected = 0; mi->menu->redo_sel = 1; mi->menu->changed = 1; + UN(_e); + UN(_o); + UN(_b); + UN(_x); + UN(_y); } void @@ -724,23 +752,27 @@ char *menus; char buf[4096]; char *style = "default"; - char *part; int pl, pr, pt, pb; int has_sub = 0; int selected = 0; menus = e_config_get("menus"); - selected = mi->selected; - if (mi->submenu) has_sub = 1; - sprintf(buf, "%s%s/selected-%i.submenu-%i.bits.db", menus, style, - selected, has_sub); - if ((mi->bg_file) && (!strcmp(mi->bg_file, buf))) return; - + if (!mi->separator) + { + selected = mi->selected; + if (mi->submenu) has_sub = 1; + sprintf(buf, "%s%s/selected-%i.submenu-%i.bits.db", menus, style, + selected, has_sub); + if ((mi->bg_file) && (!strcmp(mi->bg_file, buf))) return; + } IF_FREE(mi->bg_file); - mi->bg_file = strdup(buf); - + if (!mi->separator) + mi->bg_file = strdup(buf); + else + mi->bg_file = NULL; if (mi->bg) ebits_free(mi->bg); - mi->bg = ebits_load(mi->bg_file); + if (mi->bg_file) + mi->bg = ebits_load(mi->bg_file); if (mi->bg) ebits_set_color_class(mi->bg, "Menu BG", 100, 200, 255, 255); pl = pr = pt = pb = 0; @@ -759,8 +791,102 @@ } void +e_menu_set_sep(E_Menu *m, E_Menu_Item *mi) +{ + char *menus; + char buf[4096]; + char *style = "default"; + int pl, pr, pt, pb, minx, miny; + + menus = e_config_get("menus"); + sprintf(buf, "%s%s/separator.bits.db", menus, style); + if ((mi->sep_file) && (!strcmp(mi->sep_file, buf))) return; + + IF_FREE(mi->sep_file); + mi->sep_file = strdup(buf); + + if (mi->sep) ebits_free(mi->sep); + mi->sep = ebits_load(mi->sep_file); + if (mi->sep) ebits_set_color_class(mi->sep, "Menu BG", 100, 200, 255, 255); + + pl = pr = pt = pb = 0; + minx = 0; + miny = 0; + if (mi->sep) + { + ebits_get_insets(mi->sep, &pl, &pr, &pt, &pb); + ebits_add_to_evas(mi->sep, m->evas); + ebits_set_layer(mi->sep, 1); + ebits_get_min_size(mi->sep, &minx, &miny); + } + if (mi->size.min.w < minx) mi->size.min.w = minx; + if (mi->size.min.h < miny) mi->size.min.h = miny; + m->redo_sel = 1; + m->changed = 1; +} + +void +e_menu_set_state(E_Menu *m, E_Menu_Item *mi) +{ + char *menus; + char buf[4096]; + char *style = "default"; + int on; + int pl, pr, pt, pb, minx, miny; + + menus = e_config_get("menus"); + on = mi->on; + if (mi->check) + sprintf(buf, "%s%s/check-%i.bits.db", menus, style, on); + else + sprintf(buf, "%s%s/radio-%i.bits.db", menus, style, on); + if ((mi->state_file) && (!strcmp(mi->state_file, buf))) return; + + IF_FREE(mi->state_file); + mi->state_file = strdup(buf); + + if (mi->state) ebits_free(mi->state); + mi->state = ebits_load(mi->state_file); + if (mi->state) ebits_set_color_class(mi->state, "Menu BG", 100, 200, 255, 255); + + pl = pr = pt = pb = 0; + minx = 0; + miny = 0; + if (mi->state) + { + ebits_get_insets(mi->state, &pl, &pr, &pt, &pb); + ebits_add_to_evas(mi->state, m->evas); + ebits_set_layer(mi->state, 2); + ebits_get_min_size(mi->state, &minx, &miny); + } + if (mi->size.min.w < minx) mi->size.min.w = minx; + if (mi->size.min.h < miny) mi->size.min.h = miny; + m->redo_sel = 1; + m->changed = 1; +} + +void e_menu_free(E_Menu *m) { + Evas_List l; + + for (l = m->entries; l; l = l->next) + { + E_Menu_Item *mi; + + mi = l->data; + e_menu_item_unrealize(m, mi); + IF_FREE(mi->str); + IF_FREE(mi->icon); + free(mi); + } + evas_list_free(m->entries); + IF_FREE(m->bg_file); + evas_free(m->evas); + e_window_destroy(m->win.main); + menus = evas_list_remove(menus, m); + open_menus = evas_list_remove(open_menus, m); + free(m); } E_Menu * @@ -869,41 +995,152 @@ m->recalc_entries = 1; m->changed = 1; e_menu_item_unrealize(m, mi); + IF_FREE(mi->str); + IF_FREE(mi->icon); + if (mi->menu->selected == mi) mi->menu->selected = NULL; + free(mi); mi->menu = NULL; } void e_menu_item_update(E_Menu *m, E_Menu_Item *mi) { - evas_move(m->evas, mi->obj_text, mi->x + m->sel_border.l, mi->y + m->sel_border.t); - evas_move(m->evas, mi->obj_entry, mi->x, mi->y); - evas_resize(m->evas, mi->obj_entry, mi->size.w + m->sel_border.l + m->sel_border.r, mi->size.h + m->sel_border.t + m->sel_border.b); + int tx, ty, tw, th, ix, iy, iw, ih, rx, ry, rw, rh; + double dtw, dth; + + if (mi->sep) + { + ebits_move(mi->sep, mi->x, mi->y); + ebits_resize(mi->sep, mi->size.w + m->sel_border.l + m->sel_border.r, mi->size.h); + ebits_show(mi->sep); + } + else + { + rx = 0; ry = 0; rh = 0; + rw = m->size.state; + if (mi->state) + { + ebits_get_min_size(mi->state, &rw, &rh); + rx = 0; + ry = ((mi->size.h - rh) / 2); + ebits_move(mi->state, m->sel_border.l + mi->x + rx, m->sel_border.t + mi->y + ry); + ebits_resize(mi->state, rw, rh); + } + + tx = 0; ty = 0; tw = 0; th = 0; + if (mi->obj_text) + { + evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &dtw, &dth); + tw = (int)dtw; th = (int)dth; + } + + ix = 0; iy = 0; iw = 0; ih = 0; + if (mi->obj_icon) + { + int sh; + + evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih); + sh = th; + if (rh > th) sh = rh; + if ((mi->scale_icon) && (ih > sh) && (mi->str)) + { + iw = (iw * sh) / ih; + ih = sh; + } + if (m->size.state) ix = rx + m->size.state + m->pad.state; + ix += ((m->size.icon - iw) / 2); + iy = ((mi->size.h - ih) / 2); + evas_move(m->evas, mi->obj_icon, m->sel_border.l + mi->x + ix, m->sel_border.t + mi->y + iy); + evas_resize(m->evas, mi->obj_icon, iw, ih); + evas_set_image_fill(m->evas, mi->obj_icon, 0, 0, iw, ih); + } + + if (mi->obj_text) + { + if (m->size.state) tx = rx + m->size.state + m->pad.state; + if (m->size.icon) tx += m->size.icon + m->pad.icon; + ty = ((mi->size.h - th) / 2); + evas_move(m->evas, mi->obj_text, m->sel_border.l + mi->x + tx, m->sel_border.t + mi->y + ty); + } + + if (mi->obj_entry) + { + evas_move(m->evas, mi->obj_entry, mi->x, mi->y); + evas_resize(m->evas, mi->obj_entry, mi->size.w + m->sel_border.l + m->sel_border.r, mi->size.h + m->sel_border.t + m->sel_border.b); + } + if (mi->state) + { + ebits_show(mi->state); + } + } } void e_menu_item_unrealize(E_Menu *m, E_Menu_Item *mi) { + if (mi->bg) ebits_free(mi->bg); + mi->bg = NULL; + IF_FREE(mi->bg_file); + mi->bg_file = NULL; + if (mi->obj_entry) evas_del_object(m->evas, mi->obj_text); + mi->obj_entry = NULL; + if (mi->obj_icon) evas_del_object(m->evas, mi->obj_icon); + mi->obj_icon = NULL; + if (mi->state) ebits_free(mi->state); + mi->state = NULL; + IF_FREE(mi->state_file); + mi->state_file = NULL; + if (mi->sep) ebits_free(mi->sep); + mi->sep = NULL; + IF_FREE(mi->sep_file); + mi->sep_file = NULL; } void e_menu_item_realize(E_Menu *m, E_Menu_Item *mi) { double tw, th; + int iw, ih, rw, rh; - mi->obj_text = evas_add_text(m->evas, "borzoib", 8, mi->str); - mi->obj_entry = evas_add_rectangle(m->evas); - evas_set_color(m->evas, mi->obj_text, 0, 0, 0, 255); - evas_set_color(m->evas, mi->obj_entry, 0, 0, 0, 0); - evas_show(m->evas, mi->obj_text); - evas_show(m->evas, mi->obj_entry); - evas_set_layer(m->evas, mi->obj_text, 10); - evas_set_layer(m->evas, mi->obj_entry, 11); - evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th); - mi->size.min.w = tw; - mi->size.min.h = th; - evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_IN, e_menu_item_in_cb, mi); - evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_OUT, e_menu_item_out_cb, mi); - e_menu_set_sel(m, mi); + if (mi->separator) + { + e_menu_set_sep(m, mi); + } + else + { + if (mi->str) + { + mi->obj_text = evas_add_text(m->evas, "borzoib", 8, mi->str); + evas_set_color(m->evas, mi->obj_text, 0, 0, 0, 255); + evas_show(m->evas, mi->obj_text); + evas_set_layer(m->evas, mi->obj_text, 10); + } + if (mi->icon) + { + mi->obj_icon = evas_add_image_from_file(m->evas, mi->icon); + evas_show(m->evas, mi->obj_icon); + evas_set_layer(m->evas, mi->obj_icon, 10); + } + mi->obj_entry = evas_add_rectangle(m->evas); + evas_set_layer(m->evas, mi->obj_entry, 11); + evas_set_color(m->evas, mi->obj_entry, 0, 0, 0, 0); + evas_show(m->evas, mi->obj_entry); + tw = 0; th = 0; + if (mi->obj_text) evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th); + iw = 0; ih = 0; + if (mi->obj_icon) evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih); + rw = 0; rh = 0; + if (mi->state) ebits_get_min_size(mi->state, &rw, &rh); + mi->size.min.w = (int)tw + rw; + if (rh > th) th = (double)rh; + if (((!mi->scale_icon) && (ih > th)) || + ((!mi->str) && (ih > th))) th = (double)ih; + mi->size.min.h = (int)th; + evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_IN, e_menu_item_in_cb, mi); + evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_OUT, e_menu_item_out_cb, mi); + e_menu_set_sel(m, mi); + if ((mi->radio) || (mi->check)) e_menu_set_state(m, mi); + } } E_Menu_Item * @@ -913,8 +1150,8 @@ mi = NEW(E_Menu_Item, 1); ZERO(mi, E_Menu_Item, 1); - - mi->str = strdup(str); + + if (str) mi->str = strdup(str); return mi; } @@ -959,14 +1196,17 @@ m->changed = 1; } } - for (l = open_menus; l; l = l->next) + if (!keyboard_nav) { - E_Menu *m; - - m = l->data; - evas_event_move(m->evas, - mouse_x - m->current.x, - mouse_y - m->current.y); + for (l = open_menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + evas_event_move(m->evas, + mouse_x - m->current.x, + mouse_y - m->current.y); + } } } @@ -1014,35 +1254,76 @@ { Evas_List l; int max_w, max_h; - int i, count; + int i; max_w = 0; max_h = 0; - count = 0; for (l = m->entries; l; l = l->next) { E_Menu_Item *mi; mi = l->data; - if (mi->size.min.w > max_w) max_w = mi->size.min.w; if (mi->size.min.h > max_h) max_h = mi->size.min.h; - count++; } - m->current.w = m->border.l + m->border.r + max_w + m->sel_border.l + m->sel_border.r; - m->current.h = m->border.b + m->border.t + ((max_h + m->sel_border.t + m->sel_border.b) * count); - i = 0; + m->size.state = 0; + m->size.icon = 0; + m->size.text = 0; for (l = m->entries; l; l = l->next) { E_Menu_Item *mi; + int iw, ih, rw, rh; + double tw, th; mi = l->data; + if (!mi->separator) + { + tw = 0; th = 0; + if (mi->obj_text) evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th); + iw = 0; ih = 0; + if (mi->obj_icon) evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih); + rw = 0; rh = 0; + if (mi->state) ebits_get_min_size(mi->state, &rw, &rh); + if (m->size.text < tw) m->size.text = tw; + if (m->size.state < rw) m->size.state = rw; + if ((mi->scale_icon) && (iw > 0) && (ih > 0) && (mi->str)) + { + int iiw; + + iiw = iw; + if (ih > (int)th) iiw = (iw * (int)th) / ih; + if (m->size.icon < iiw) m->size.icon = iiw; + } + else if (m->size.icon < iw) m->size.icon = iw; + } + } + max_w = m->size.state; + if (m->size.state) max_w += m->pad.state; + max_w += m->size.icon; + if (m->size.icon) max_w += m->pad.icon; + max_w += m->size.text; + + i = m->border.t; + for (l = m->entries; l; l = l->next) + { + E_Menu_Item *mi; + + mi = l->data; mi->size.w = max_w; - mi->size.h = max_h; + if (mi->separator) mi->size.h = mi->size.min.h; + else mi->size.h = max_h; mi->x = m->border.l; - mi->y = m->border.t + (i * (max_h + m->sel_border.t + m->sel_border.b)); + mi->y = i; + if (!mi->separator) + i += m->sel_border.t + m->sel_border.b; + if (mi->separator) + i += mi->size.h; + else + i += max_h; e_menu_item_update(m, mi); - i++; } + m->current.w = m->border.l + m->border.r + max_w + m->sel_border.l + m->sel_border.r; + m->current.h = m->border.b + i; + m->recalc_entries = 0; } if (m->redo_sel) @@ -1119,6 +1400,7 @@ e_window_raise(m->win.main); e_menu_event_win_show(); e_window_show(m->win.main); + if (!open_menus) keyboard_nav = 0; open_menus = evas_list_append(open_menus, m); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/resist.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- resist.c 2000/12/27 22:42:59 1.3 +++ resist.c 2001/02/03 12:04:30 1.4 @@ -22,9 +22,9 @@ b->current.y = b->current.requested.y; return; } - E_DB_INT_GET(settings_db, "/move/resist/desk", desk_resist, ok); + ok = 0; E_DB_INT_GET(settings_db, "/move/resist/desk", desk_resist, ok); if (!ok) desk_resist = 32; - E_DB_INT_GET(settings_db, "/move/resist/win", win_resist, ok); + ok = 0; E_DB_INT_GET(settings_db, "/move/resist/win", win_resist, ok); if (!ok) win_resist = 12; if (!b->desk) return; dx = b->current.requested.x - b->previous.requested.x; @@ -40,6 +40,8 @@ OBSTACLE(-1000000, -1000000, 1000000, 2000000 + b->desk->real.h, desk_resist); OBSTACLE(-1000000, b->desk->real.h, 2000000 + b->desk->real.w, 1000000, desk_resist); OBSTACLE(b->desk->real.w, -1000000, 1000000, 2000000 + b->desk->real.h, desk_resist); + /* can add code here to add more fake obstacles with custom resist values */ + /* here if need be - ie xinerama middle between screens and panels etc. */ for (l = b->desk->windows; l; l = l->next) { |
From: <enl...@so...> - 2001-02-03 12:04:21
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/orig Added Files: check_fg.png radio.xcf radio_bg.png radio_fg.png sep.png Log Message: add data needed to menus, menu code that fully works (tho test code in desktop.c is currently a bad hack that does rely on my own personal icons dir to show icons - i'll add a menu creator set of code in menudb.c that can create menus from db's so we can start being able to configure menus for the desktop etc.) |
From: <enl...@so...> - 2001-02-03 12:04:51
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/scripts Modified Files: build_db.sh Log Message: add data needed to menus, menu code that fully works (tho test code in desktop.c is currently a bad hack that does rely on my own personal icons dir to show icons - i'll add a menu creator set of code in menudb.c that can create menus from db's so we can start being able to configure menus for the desktop etc.) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/scripts/build_db.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- build_db.sh 2000/12/13 23:44:24 1.1 +++ build_db.sh 2001/02/03 12:04:30 1.2 @@ -156,10 +156,12 @@ # basic settings DB="./settings.db" -edb_ed $DB add "/move/resist" int 1 -edb_ed $DB add "/move/resist/desk" int 24 -edb_ed $DB add "/move/resist/win" int 12 -edb_ed $DB add "/focus/mode " int $FOCUS_POINTER +edb_ed $DB add "/focus/mode " int $FOCUS_POINTER +edb_ed $DB add "/move/resist" int 1 +edb_ed $DB add "/move/resist/desk" int 24 +edb_ed $DB add "/move/resist/win" int 12 +edb_ed $DB add "/menu/scroll/resist" int 5 +edb_ed $DB add "/menu/scroll/speed" int 12 # what events on windows are "grabbed" by the window manager DB="./grabs.db" |
From: <enl...@so...> - 2001-02-03 12:04:51
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/config/behavior/default Modified Files: settings.db Log Message: add data needed to menus, menu code that fully works (tho test code in desktop.c is currently a bad hack that does rely on my own personal icons dir to show icons - i'll add a menu creator set of code in menudb.c that can create menus from db's so we can start being able to configure menus for the desktop etc.) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/config/behavior/default/settings.db,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 Binary files /tmp/cvs6r16jv and /tmp/cvs29vDxQ differ |
From: <enl...@so...> - 2001-02-03 17:16:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/config/behavior/default Added Files: apps_menu.db Log Message: oooooh - look at this - the desktop left click menu is......... CONFIGURABLE yes - it generates it from a..... DATABASE - there's a script that builds the menu - it's a default set - but easily editable in the script (an example of how to build a menu db - but... eventually we'd need a gui.) This only builds a menu from a db file - it also monitors it for changes and updates the menu to match any changes that happen. I need to write later a fs menu builder that builds a menu from the filing system. |
From: <enl...@so...> - 2001-02-03 17:16:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/scripts Added Files: build_app_menu_db.sh Log Message: oooooh - look at this - the desktop left click menu is......... CONFIGURABLE yes - it generates it from a..... DATABASE - there's a script that builds the menu - it's a default set - but easily editable in the script (an example of how to build a menu db - but... eventually we'd need a gui.) This only builds a menu from a db file - it also monitors it for changes and updates the menu to match any changes that happen. I need to write later a fs menu builder that builds a menu from the filing system. |
From: <enl...@so...> - 2001-02-03 17:16:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: border.c config.c desktops.c e.h menu.c menudb.c Log Message: oooooh - look at this - the desktop left click menu is......... CONFIGURABLE yes - it generates it from a..... DATABASE - there's a script that builds the menu - it's a default set - but easily editable in the script (an example of how to build a menu db - but... eventually we'd need a gui.) This only builds a menu from a db file - it also monitors it for changes and updates the menu to match any changes that happen. I need to write later a fs menu builder that builds a menu from the filing system. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/border.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- border.c 2001/01/02 23:10:12 1.15 +++ border.c 2001/02/03 17:17:07 1.16 @@ -75,7 +75,7 @@ evas_render(b->evas.b); } } - e_db_runtime_flush(); + e_db_flush(); return; UN(data); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/config.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- config.c 2001/01/02 23:10:12 1.5 +++ config.c 2001/02/03 17:17:07 1.6 @@ -16,7 +16,8 @@ static char cfg_settings_db[4096] = ""; static char cfg_actions_db[4096] = ""; static char cfg_borders_db[4096] = ""; -static char cfg_menus_db[4096] = ""; +static char cfg_apps_menu_db[4096] = ""; +static char cfg_menus_dir[4096] = ""; static char cfg_user_dir[4096] = ""; static char cfg_images_dir[4096] = ""; static char cfg_fonts_dir[4096] = ""; @@ -45,9 +46,11 @@ PACKAGE_DATA_DIR"/data/config/behavior/default/settings.db"); E_CONF("actions", cfg_actions_db, PACKAGE_DATA_DIR"/data/config/behavior/default/actions.db"); + E_CONF("apps_menu", cfg_apps_menu_db, + PACKAGE_DATA_DIR"/data/config/behavior/default/apps_menu.db"); E_CONF("borders", cfg_borders_db, PACKAGE_DATA_DIR"/data/config/appearance/default/borders/"); - E_CONF("menus", cfg_menus_db, + E_CONF("menus", cfg_menus_dir, PACKAGE_DATA_DIR"/data/config/appearance/default/menus/"); E_CONF("images", cfg_images_dir, PACKAGE_DATA_DIR"/data/images/"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- desktops.c 2001/02/03 12:04:30 1.10 +++ desktops.c 2001/02/03 17:17:07 1.11 @@ -26,7 +26,7 @@ desk = l->data; e_desktops_update(desk); } - e_db_runtime_flush(); + e_db_flush(); return; UN(data); } @@ -132,112 +132,22 @@ evas_event_button_down(evas, x, y, e->button); if (e->button == 1) { - int count; static E_Menu *menu = NULL; - char buf[4096]; + static E_Build_Menu *buildmenu = NULL; - if (!menu) + if (!buildmenu) { - menu = e_menu_new(); - menu->pad.icon = 2; - menu->pad.state = 2; - for (count = 1; count <= 16; count++) - { - int count2; - E_Menu *menu2; - E_Menu_Item *menuitem; - char *icons[] = - { - "cd.png", - "drawer_closed.png", - "drawer_cube_closed.png", - "drawer_cube_open.png", - "drawer_cube_open_socks.png", - "drawer_image_closed.png", - "drawer_image_open.png", - "drawer_image_open_socks.png", - "drawer_light_closed.png", - "drawer_light_open.png", - "drawer_light_open_socks.png", - "drawer_open.png", - "drawer_open_socks.png", - "drawer_palette_closed.png", - "drawer_palette_open.png", - "drawer_palette_open_socks.png", - "drawer_style_closed.png", - "drawer_style_open.png", - "drawer_style_open_socks.png", - "drawer_text_closed.png", - "drawer_text_open.png", - "drawer_text_open_socks.png", - "palette.png", - "quake3.png", - "trash_closed.png", - "trash_full_closed.png", - "trash_full_open.png", - "trash_open.png", - "watch.png" - }; - - sprintf(buf, "Menu item %i", count); - menuitem = e_menu_item_new(buf); - sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); - menuitem->icon = strdup(buf); - menuitem->scale_icon = 1; - menuitem->radio = rand() & 0x1; - menuitem->check = rand() & 0x1; - menuitem->on = rand() & 0x1; - if (count < 10) - { - menu2 = e_menu_new(); - menu2->pad.icon = 2; - menu2->pad.state = 2; - menuitem->submenu = menu2; - } - e_menu_add_item(menu, menuitem); - if (count < 10) - { - for (count2 = 1; count2 <= 14; count2++) - { - E_Menu_Item *menuitem2; - E_Menu *menu3; - int count3; - - sprintf(buf, "Submenu item %i", count2); - if (!(rand()%3)) menuitem2 = e_menu_item_new(buf); - else menuitem2 = e_menu_item_new(""); - menu3 = e_menu_new(); - menu3->pad.icon = 2; - menu3->pad.state = 2; - menuitem2->submenu = menu3; - sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); - if (!(rand()%3)) menuitem2->icon = strdup(buf); - menuitem2->scale_icon = 1; - menuitem2->radio = rand() & 0x1; - menuitem2->check = rand() & 0x1; - menuitem2->on = rand() & 0x1; - if (!(rand()%3)) menuitem2->separator = 1; - e_menu_add_item(menu2, menuitem2); - for (count3 = 1; count3 <= 12; count3++) - { - E_Menu_Item *menuitem3; - - sprintf(buf, "Submenu item %i", count3); - menuitem3 = e_menu_item_new(NULL); - sprintf(buf, "/home/raster/icons/%s", icons[rand() % 29]); - menuitem3->icon = strdup(buf); - menuitem3->scale_icon = 1; - menuitem3->radio = rand() & 0x1; - menuitem3->check = rand() & 0x1; - menuitem3->on = rand() & 0x1; - if (!(rand()%3)) menuitem3->separator = 1; - e_menu_add_item(menu3, menuitem3); - } - } - } - } + char *apps_menu_db; + + apps_menu_db = e_config_get("apps_menu"); + if (apps_menu_db) buildmenu = e_build_menu_new_from_db(apps_menu_db); } - e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); + if (buildmenu) + { + menu = buildmenu->menu; + if (menu) + e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); + } } if (e->button == 3) e_exec_restart(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- e.h 2001/02/03 12:04:30 1.13 +++ e.h 2001/02/03 17:17:07 1.14 @@ -132,6 +132,7 @@ typedef struct _E_View E_View; typedef struct _E_Menu E_Menu; typedef struct _E_Menu_Item E_Menu_Item; +typedef struct _E_Build_Menu E_Build_Menu; struct _E_Object { @@ -382,6 +383,19 @@ void *func_select_data; }; +struct _E_Build_Menu +{ + OBJ_PROPERTIES; + + char *file; + time_t mod_time; + + E_Menu *menu; + + Evas_List menus; + Evas_List commands; +}; + void e_action_add_proto(char *action, void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry), void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry), @@ -513,3 +527,9 @@ void e_menu_update_shows(E_Menu *m); void e_menu_update_hides(E_Menu *m); void e_menu_update(E_Menu *m); + +void e_build_menu_unbuild(E_Build_Menu *bm); +E_Menu *e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num); +void e_build_menu_build(E_Build_Menu *bm); +void e_build_menu_free(E_Build_Menu *bm); +E_Build_Menu *e_build_menu_new_from_db(char *file); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menu.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- menu.c 2001/02/03 12:04:30 1.3 +++ menu.c 2001/02/03 17:17:07 1.4 @@ -171,7 +171,7 @@ if (m->first_expose) evas_render(m->evas); } - e_db_runtime_flush(); + e_db_flush(); return; UN(data); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menudb.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- menudb.c 2001/02/03 12:04:30 1.1 +++ menudb.c 2001/02/03 17:17:07 1.2 @@ -1 +1,168 @@ #include "e.h" + +Evas_List build_menus = NULL; + +static void e_build_menu_poll(int val, void *data); + +static void +e_build_menu_poll(int val, void *data) +{ + time_t mod; + E_Build_Menu *bm; + + bm = data; + mod = e_file_modified_time(bm->file); + if (mod <= bm->mod_time) + { + e_add_event_timer(bm->file, 1.0, e_build_menu_poll, 0, data); + return; + } + bm->mod_time = mod; + + e_build_menu_unbuild(bm); + e_build_menu_build(bm); + if (!bm->menu) bm->mod_time = 0; + + e_add_event_timer(bm->file, 1.0, e_build_menu_poll, 0, data); + UN(val); +} + +static void +e_build_menu_cb_exec(E_Menu *m, E_Menu_Item *mi, void *data) +{ + char *exe; + + exe = data; + e_exec_run(exe); + UN(m); + UN(mi); +} + +void +e_build_menu_unbuild(E_Build_Menu *bm) +{ + Evas_List l; + + bm->menu = NULL; + if (bm->menus) + { + for (l = bm->menus; l; l = l->next) + { + E_Menu *m; + + m = l->data; + e_menu_hide(m); + e_menu_update_shows(m); + e_menu_update_hides(m); + e_menu_update_finish(m); + OBJ_DO_FREE(m); + } + bm->menus = evas_list_free(bm->menus); + } + if (bm->commands) + { + for (l = bm->commands; l; l = l->next) + { + IF_FREE(l->data); + } + bm->commands = evas_list_free(bm->commands); + } +} + +E_Menu * +e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num) +{ + E_Menu *menu; + char buf[4096]; + int num2, i2; + + sprintf(buf, "/menu/%i/count", num); + if (!e_db_int_get(db, buf, &num2)) return NULL; + menu = e_menu_new(); + menu->pad.icon = 2; + menu->pad.state = 2; + for (i2 = 0; i2 < num2; i2++) + { + E_Menu_Item *menuitem; + char *text, *icon, *exe; + int ok, sub, sep; + + sprintf(buf, "/menu/%i/%i/text", num, i2); + text = e_db_str_get(db, buf); + sprintf(buf, "/menu/%i/%i/icon", num, i2); + icon = e_db_str_get(db, buf); + sprintf(buf, "/menu/%i/%i/command", num, i2); + exe = e_db_str_get(db, buf); + sprintf(buf, "/menu/%i/%i/submenu", num, i2); + ok = e_db_int_get(db, buf, &sub); + sep = 0; + sprintf(buf, "/menu/%i/%i/separator", num, i2); + e_db_int_get(db, buf, &sep); + menuitem = e_menu_item_new(text); + menuitem->icon = icon; + if ((icon) && (text)) menuitem->scale_icon = 1; + if (sep) + menuitem->separator = 1; + else + { + if (ok) + { + E_Menu *menu2; + + menu2 = e_build_menu_build_number(bm, db, sub); + menuitem->submenu = menu2; + } + } + if (exe) + { + e_menu_item_set_callback(menuitem, e_build_menu_cb_exec, exe); + bm->commands = evas_list_prepend(bm->commands, exe); + } + e_menu_add_item(menu, menuitem); + } + bm->menus = evas_list_prepend(bm->menus, menu); + return menu; +} + +void +e_build_menu_build(E_Build_Menu *bm) +{ + E_DB_File *db; + int num; + + e_db_flush(); + db = e_db_open_read(bm->file); + if (!db) return; + + if (!e_db_int_get(db, "/menu/count", &num)) goto error; + if (num > 0) bm->menu = e_build_menu_build_number(bm, db, 0); + error: + e_db_close(db); +} + +void +e_build_menu_free(E_Build_Menu *bm) +{ + e_del_event_timer(bm->file); + e_build_menu_unbuild(bm); + IF_FREE(bm->file); + build_menus = evas_list_remove(build_menus, bm); + FREE(bm); +} + +E_Build_Menu * +e_build_menu_new_from_db(char *file) +{ + E_Build_Menu *bm; + + if (!file) return NULL; + bm = NEW(E_Build_Menu, 1); + ZERO(bm, E_Build_Menu, 1); + OBJ_INIT(bm, e_build_menu_free); + + bm->file = strdup(file); + + build_menus = evas_list_prepend(build_menus, bm); + e_build_menu_poll(0, bm); + return bm; +} |
From: <enl...@so...> - 2001-02-06 08:23:20
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: desktops.c e.h main.c menu.c menudb.c view.c Log Message: clean code.. star work on views code - will have to modify desktop code a bit to handle swallowing of a view instead of its own thing - but thats easy. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- desktops.c 2001/02/03 17:17:07 1.11 +++ desktops.c 2001/02/06 08:23:36 1.12 @@ -132,7 +132,6 @@ evas_event_button_down(evas, x, y, e->button); if (e->button == 1) { - static E_Menu *menu = NULL; static E_Build_Menu *buildmenu = NULL; if (!buildmenu) @@ -144,13 +143,12 @@ } if (buildmenu) { + static E_Menu *menu = NULL; menu = buildmenu->menu; if (menu) e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); } } - if (e->button == 3) - e_exec_restart(); return; } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- e.h 2001/02/03 17:17:07 1.14 +++ e.h 2001/02/06 08:23:36 1.15 @@ -300,6 +300,31 @@ struct _E_View { OBJ_PROPERTIES; + + char *directory; + + struct { + Evas_Render_Method render_method; + int back_pixmap; + } options; + + Evas evas; + struct { + Window base; + Window main; + } win; + Pixmap pmap; + struct { + int w, h; + } size; + struct { + int x, y; + } viewport; + struct { + int x, y; + } location; + + Evas_List icons; }; struct _E_Menu =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/main.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- main.c 2001/01/02 23:10:12 1.4 +++ main.c 2001/02/06 08:23:36 1.5 @@ -51,6 +51,7 @@ e_border_init(); e_actions_init(); e_menu_init(); + e_view_init(); setup(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menu.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- menu.c 2001/02/03 17:17:07 1.4 +++ menu.c 2001/02/06 08:23:36 1.5 @@ -8,10 +8,12 @@ static int keyboard_nav = 0; static void e_idle(void *data); +static void e_wheel(Eevent * ev); static void e_key_down(Eevent * ev); static void e_key_up(Eevent * ev); static void e_mouse_down(Eevent * ev); static void e_mouse_up(Eevent * ev); +static void e_mouse_move(Eevent * ev); static void e_mouse_in(Eevent * ev); static void e_mouse_out(Eevent * ev); static void e_window_expose(Eevent * ev); @@ -127,6 +129,7 @@ } if (ok) e_add_event_timer("menu_scroller", 0.02, e_scroller_timer, val + 1, NULL); + return; UN(data); } @@ -466,6 +469,7 @@ mi->menu->current.y + mi->y - mi->menu->border.t); e_menu_show(mi->submenu); } + return; UN(_e); UN(_o); UN(_b); @@ -483,6 +487,7 @@ mi->selected = 0; mi->menu->redo_sel = 1; mi->menu->changed = 1; + return; UN(_e); UN(_o); UN(_b); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menudb.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- menudb.c 2001/02/03 17:17:07 1.2 +++ menudb.c 2001/02/06 08:23:36 1.3 @@ -24,6 +24,7 @@ if (!bm->menu) bm->mod_time = 0; e_add_event_timer(bm->file, 1.0, e_build_menu_poll, 0, data); + return; UN(val); } @@ -34,6 +35,7 @@ exe = data; e_exec_run(exe); + return; UN(m); UN(mi); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/view.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- view.c 2000/12/27 22:42:59 1.2 +++ view.c 2001/02/06 08:23:36 1.3 @@ -2,6 +2,103 @@ static Evas_List views = NULL; +static void e_idle(void *data); +static void e_wheel(Eevent * ev); +static void e_key_down(Eevent * ev); +static void e_key_up(Eevent * ev); +static void e_mouse_down(Eevent * ev); +static void e_mouse_up(Eevent * ev); +static void e_mouse_move(Eevent * ev); +static void e_mouse_in(Eevent * ev); +static void e_mouse_out(Eevent * ev); +static void e_window_expose(Eevent * ev); + +static void +e_idle(void *data) +{ + Evas_List l; + + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + evas_render(v->evas); + } +} + +static void +e_wheel(Eevent * ev) +{ + Ev_Wheel *e; + + e = ev->event; +} + +static void +e_key_down(Eevent * ev) +{ + Ev_Key_Down *e; + + e = ev->event; +} + +static void +e_key_up(Eevent * ev) +{ + Ev_Key_Up *e; + + e = ev->event; +} + +static void +e_mouse_down(Eevent * ev) +{ + Ev_Mouse_Down *e; + + e = ev->event; +} + +static void +e_mouse_up(Eevent * ev) +{ + Ev_Mouse_Up *e; + + e = ev->event; +} + +static void +e_mouse_move(Eevent * ev) +{ + Ev_Mouse_Move *e; + + e = ev->event; +} + +static void +e_mouse_in(Eevent * ev) +{ + Ev_Window_Enter *e; + + e = ev->event; +} + +static void +e_mouse_out(Eevent * ev) +{ + Ev_Window_Leave *e; + + e = ev->event; +} + +static void +e_window_expose(Eevent * ev) +{ + Ev_Window_Expose *e; + + e = ev->event; +} + void e_view_free(E_View *v) { @@ -17,12 +114,34 @@ v = NEW(E_View, 1); ZERO(v, E_View, 1); OBJ_INIT(v, e_view_free); + - views = evas_list_append(views, v); + + views = evas_list_append(views, v); return v; } void +e_view_realize(void) +{ +} + +void +e_view_unrealize(void) +{ +} + +void e_view_init(void) { + e_event_filter_handler_add(EV_MOUSE_DOWN, e_mouse_down); + e_event_filter_handler_add(EV_MOUSE_UP, e_mouse_up); + e_event_filter_handler_add(EV_MOUSE_MOVE, e_mouse_move); + e_event_filter_handler_add(EV_MOUSE_IN, e_mouse_in); + e_event_filter_handler_add(EV_MOUSE_OUT, e_mouse_out); + e_event_filter_handler_add(EV_WINDOW_EXPOSE, e_window_expose); + e_event_filter_handler_add(EV_KEY_DOWN, e_key_down); + e_event_filter_handler_add(EV_KEY_UP, e_key_up); + e_event_filter_handler_add(EV_MOUSE_WHEEL, e_wheel); + e_event_filter_idle_handler_add(e_idle, NULL); } |
From: <enl...@so...> - 2001-02-06 08:23:51
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/scripts Modified Files: build_app_menu_db.sh Log Message: clean code.. star work on views code - will have to modify desktop code a bit to handle swallowing of a view instead of its own thing - but thats easy. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/scripts/build_app_menu_db.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- build_app_menu_db.sh 2001/02/03 17:17:07 1.1 +++ build_app_menu_db.sh 2001/02/06 08:23:36 1.2 @@ -97,8 +97,8 @@ end_menu menu 1 -entry text 'Ethernet On' 'sudo -S /sbin/ifup eth0' -entry text 'Ethernet Off' 'sudo -S /sbin/ifdown eth0' +entry text 'Ethernet On' '/sbin/ifup eth0' +entry text 'Ethernet Off' '/sbin/ifdown eth0' end_menu menu 2 |
From: <enl...@so...> - 2001-02-06 08:23:50
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/config/behavior/default Modified Files: apps_menu.db Log Message: clean code.. star work on views code - will have to modify desktop code a bit to handle swallowing of a view instead of its own thing - but thats easy. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/config/behavior/default/apps_menu.db,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 Binary files /tmp/cvsDXNQh2 and /tmp/cvsgIlaeW differ |
From: <enl...@so...> - 2001-02-08 22:11:06
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: Makefile.am e.h view.c Added Files: icons.c Log Message: working on views, and icons. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/Makefile.am,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- Makefile.am 2001/02/03 12:04:30 1.8 +++ Makefile.am 2001/02/08 22:11:30 1.9 @@ -13,6 +13,7 @@ desktops.c \ exec.c \ icccm.c \ +icons.c \ main.c \ menu.c \ menudb.c \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e.h 2001/02/06 08:23:36 1.15 +++ e.h 2001/02/08 22:11:30 1.16 @@ -130,6 +130,7 @@ typedef struct _E_Rect E_Rect; typedef struct _E_Active_Action_Timer E_Active_Action_Timer; typedef struct _E_View E_View; +typedef struct _E_Icon E_Icon; typedef struct _E_Menu E_Menu; typedef struct _E_Menu_Item E_Menu_Item; typedef struct _E_Build_Menu E_Build_Menu; @@ -323,8 +324,22 @@ struct { int x, y; } location; + struct { + int on; + int x, y, w, h; + } selection; Evas_List icons; + + int changed; +}; + +struct _E_Icon +{ + OBJ_PROPERTIES; + + E_View *view; + int changed; }; struct _E_Menu =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/view.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- view.c 2001/02/06 08:23:36 1.3 +++ view.c 2001/02/08 22:11:30 1.4 @@ -23,80 +23,198 @@ E_View *v; v = l->data; - evas_render(v->evas); + e_view_update(v); } + return; + UN(data); } static void e_wheel(Eevent * ev) { Ev_Wheel *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + } } static void e_key_down(Eevent * ev) { Ev_Key_Down *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if ((e->win == v->win.base) || + (e->win == v->win.main)) + { + if (!strcmp(e->key, "Up")) + { + } + else if (!strcmp(e->key, "Down")) + { + } + else if (!strcmp(e->key, "Left")) + { + } + else if (!strcmp(e->key, "Right")) + { + } + else if (!strcmp(e->key, "Escape")) + { + } + else + { + char *type; + + type = e_key_press_translate_into_typeable(e); + if (type) + { + } + } + } + } } static void e_key_up(Eevent * ev) { Ev_Key_Up *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + } } static void e_mouse_down(Eevent * ev) { Ev_Mouse_Down *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + evas_event_button_down(v->evas, e->x, e->y, e->button); + } + } } static void e_mouse_up(Eevent * ev) { Ev_Mouse_Up *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + evas_event_button_up(v->evas, e->x, e->y, e->button); + } + } } static void e_mouse_move(Eevent * ev) { Ev_Mouse_Move *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + evas_event_move(v->evas, e->x, e->y); + } + } } static void e_mouse_in(Eevent * ev) { Ev_Window_Enter *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + evas_event_enter(v->evas); + } + } } static void e_mouse_out(Eevent * ev) { Ev_Window_Leave *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + evas_event_leave(v->evas); + } + } } static void e_window_expose(Eevent * ev) { Ev_Window_Expose *e; + Evas_List l; e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.main) + { + if (!(v->pmap)) + evas_update_rect(v->evas, e->x, e->y, e->w, e->h); + } + } } void @@ -115,20 +233,111 @@ ZERO(v, E_View, 1); OBJ_INIT(v, e_view_free); + v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE; + v->options.back_pixmap = 1; - - views = evas_list_append(views, v); + views = evas_list_append(views, v); return v; } +void +e_view_set_background(E_View *v) +{ +} + +void +e_view_set_dir(E_View *v, char *dir) +{ +} + +void +e_view_scroll(E_View *v, int dx, int dy) +{ +} + +void +e_view_add_icon(E_View *v, E_Icon *icon) +{ + v->changed = 1; +} + +void +e_view_del_icon(E_View *v, E_Icon *icon) +{ + v->changed = 1; +} + void -e_view_realize(void) +e_view_realize(E_View *v) { + int max_colors = 216; + int font_cache = 1024 * 1024; + int image_cache = 8192 * 1024; + char *font_dir; + + if (v->evas) return; + v->win.base = e_window_override_new(0, + v->location.x, v->location.y, + v->size.w, v->size.h); + font_dir = e_config_get("fonts"); + v->evas = evas_new_all(e_display_get(), + v->win.base, + 0, 0, v->size.w, v->size.h, + v->options.render_method, + max_colors, + font_cache, + image_cache, + font_dir); + v->win.main = evas_get_window(v->evas); + e_add_child(v->win.base, v->win.main); + if (v->options.back_pixmap) + { + v->pmap = e_pixmap_new(v->win.main, v->size.w, v->size.h, 0); + evas_set_output(v->evas, e_display_get(), v->pmap, + evas_get_visual(v->evas), + evas_get_colormap(v->evas)); + e_window_set_background_pixmap(v->win.main, v->pmap); + } + e_window_set_events(v->win.main, + XEV_EXPOSE | XEV_MOUSE_MOVE | + XEV_BUTTON | XEV_IN_OUT | XEV_KEY); + e_window_show(v->win.main); + v->changed = 1; } void -e_view_unrealize(void) +e_view_unrealize(E_View *v) { + if (!v->evas) return; +} + +void +e_view_update(E_View *v) +{ + if (!v->changed) return; + + if (v->options.back_pixmap) + { + Imlib_Updates up; + + up = evas_render_updates(v->evas); + if (up) + { + Imlib_Updates u; + + for (u = up; u; u = imlib_updates_get_next(u)) + { + int x, y, w, h; + + imlib_updates_get_coordinates(u, &x, &y, &w, &h); + e_window_clear_area(v->win.main, x, y, w, h); + } + imlib_updates_free(up); + } + } + else + evas_render(v->evas); + v->changed = 0; } void |
From: <enl...@so...> - 2001-02-09 02:36:28
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e Modified Files: configure.in e.spec Log Message: change version to be a pre instead of a .0 - cause it isnt 0.17.0 at all also make maximize action work... :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/configure.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- configure.in 2000/12/11 20:08:37 1.3 +++ configure.in 2001/02/09 02:36:53 1.4 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(configure.in) -AM_INIT_AUTOMAKE(enlightenment, 0.17.0) +AM_INIT_AUTOMAKE(enlightenment, 0.17.pre_0) AM_CONFIG_HEADER(config.h) AC_ISC_POSIX =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/e.spec,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e.spec 2001/01/06 16:29:22 1.4 +++ e.spec 2001/02/09 02:36:53 1.5 @@ -1,5 +1,5 @@ # Note that this is NOT a relocatable package -%define ver 0.17.0 +%define ver 0.17.pre_0 %define rel 1 %define prefix /usr/local |
From: <enl...@so...> - 2001-02-09 02:36:58
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: actions.c e.h icons.c Log Message: change version to be a pre instead of a .0 - cause it isnt 0.17.0 at all also make maximize action work... :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/actions.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- actions.c 2001/01/02 23:10:12 1.11 +++ actions.c 2001/02/09 02:36:53 1.12 @@ -1059,6 +1059,42 @@ E_Border *b; b = o; + if (b->current.shaded > 0) return; + if ((b->mode.move) || (b->mode.resize)) return; + b->mode.move = 0; + b->mode.resize = 0; + if (b->max.is) + { + b->current.requested.x = b->max.x; + b->current.requested.y = b->max.y; + b->current.requested.w = b->max.w; + b->current.requested.h = b->max.h; + b->changed = 1; + b->max.is = 0; + e_border_adjust_limits(b); + b->current.requested.x = b->current.x; + b->current.requested.y = b->current.y; + b->current.requested.w = b->current.w; + b->current.requested.h = b->current.h; + } + else + { + b->max.x = b->current.x; + b->max.y = b->current.y; + b->max.w = b->current.w; + b->max.h = b->current.h; + b->current.requested.x = 0; + b->current.requested.y = 0; + b->current.requested.w = b->desk->real.w; + b->current.requested.h = b->desk->real.h; + b->changed = 1; + b->max.is = 1; + e_border_adjust_limits(b); + b->current.requested.x = b->current.x; + b->current.requested.y = b->current.y; + b->current.requested.w = b->current.w; + b->current.requested.h = b->current.h; + } return; UN(a); UN(data); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- e.h 2001/02/08 22:11:30 1.16 +++ e.h 2001/02/09 02:36:53 1.17 @@ -213,6 +213,10 @@ int move, resize; } mode; + struct { + int x, y, w, h; + int is; + } max; int ignore_unmap; int shape_changed; @@ -338,8 +342,31 @@ { OBJ_PROPERTIES; + char *file; + char *dir; + E_View *view; - int changed; + int x, y, w, h; + struct { + int text_location; + int show_text; + int show_icon; + } options; + struct { + Evas_Object icon; + Evas_Object filename; + Evas_Object sel1, sel2; + Ebits_Object sel_icon; + Ebits_Object sel_text; + Ebits_Object base_icon; + Ebits_Object base_text; + } obj; + struct { + int clicked; + int selected; + int hilited; + } state; + int changed; }; struct _E_Menu =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/icons.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- icons.c 2001/02/08 22:11:30 1.1 +++ icons.c 2001/02/09 02:36:53 1.2 @@ -3,6 +3,7 @@ void e_icon_free(E_Icon *icon) { + FREE(icon); } E_Icon * @@ -14,4 +15,9 @@ ZERO(icon, E_Icon, 1); OBJ_INIT(icon, e_icon_free); return icon; +} + +void +e_icon_calulcate_geometry(E_Icon *icon) +{ } |
From: <enl...@so...> - 2001-02-09 08:12:51
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: Makefile.am e.h icons.c main.c view.c Added Files: fs.c Log Message: fs layer in... using efsd... :) primitive for now =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/Makefile.am,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- Makefile.am 2001/02/08 22:11:30 1.9 +++ Makefile.am 2001/02/09 08:13:16 1.10 @@ -2,7 +2,7 @@ INCLUDES = \ -I$(top_srcdir)/intl \ - @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ + @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ bin_PROGRAMS = enlightenment @@ -12,6 +12,7 @@ config.c \ desktops.c \ exec.c \ +fs.c \ icccm.c \ icons.c \ main.c \ @@ -22,5 +23,5 @@ view.c \ e.h -enlightenment_LDADD = @evas_libs@ @edb_libs@ @ebits_libs@ @ecore_libs@ -lm $(INTLLIBS) +enlightenment_LDADD = @evas_libs@ @edb_libs@ @ebits_libs@ @ecore_libs@ @efsd_libs@ -lm $(INTLLIBS) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e.h 2001/02/09 02:36:53 1.17 +++ e.h 2001/02/09 08:13:16 1.18 @@ -1,10 +1,5 @@ #include "../config.h" #include <X11/Xlib.h> -#include <Imlib2.h> -#include <Evas.h> -#include <Ebits.h> -#include <Ecore.h> -#include <Edb.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -20,6 +15,12 @@ #ifdef WITH_DMALLOC #include <dmalloc.h> #endif +#include <Imlib2.h> +#include <Evas.h> +#include <Ebits.h> +#include <Ecore.h> +#include <Edb.h> +#include <libefsd.h> #define E_PROF 1 #ifdef E_PROF @@ -600,3 +601,6 @@ void e_build_menu_build(E_Build_Menu *bm); void e_build_menu_free(E_Build_Menu *bm); E_Build_Menu *e_build_menu_new_from_db(char *file); + +void e_fs_add_event_handler(void (*func) (EfsdEvent *ev)); +void e_fs_init(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/icons.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- icons.c 2001/02/09 02:36:53 1.2 +++ icons.c 2001/02/09 08:13:16 1.3 @@ -20,4 +20,5 @@ void e_icon_calulcate_geometry(E_Icon *icon) { + if (!icon->view) return; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/main.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- main.c 2001/02/06 08:23:36 1.5 +++ main.c 2001/02/09 08:13:16 1.6 @@ -51,6 +51,7 @@ e_border_init(); e_actions_init(); e_menu_init(); + e_fs_init(); e_view_init(); setup(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/view.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- view.c 2001/02/08 22:11:30 1.4 +++ view.c 2001/02/09 08:13:16 1.5 @@ -243,27 +243,63 @@ void e_view_set_background(E_View *v) { + v->changed = 1; } void e_view_set_dir(E_View *v, char *dir) -{ +{ + /* stop monitoring old dir */ + IF_FREE(v->directory); + v->directory = strdup(dir); + /* start monitoring new dir */ + + { + /* bad hack- lets just add some dummy stuff for testing */ + int i; + char *files[8] = { + "The first file", + "Some more things", + "K is a FISH!", + "Possum Eyes", + "Nasty Bums", + "BLUMFRUB!", + "Oh lookie here now!", + "Last one...." + }; + for (i = 0; i < 8; i++) + { + E_Icon *icon; + + icon = e_icon_new(); + icon->file = strdup(files[i]); + e_view_add_icon(v, icon); + } + } + v->changed = 1; } void e_view_scroll(E_View *v, int dx, int dy) { + v->changed = 1; } void e_view_add_icon(E_View *v, E_Icon *icon) { + if (icon->view) return; + icon->view = v; + icon->changed = 1; v->changed = 1; } void e_view_del_icon(E_View *v, E_Icon *icon) { + if (!icon->view) return; + icon->view = NULL; + icon->changed = 1; v->changed = 1; } @@ -302,6 +338,7 @@ XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT | XEV_KEY); e_window_show(v->win.main); + e_view_set_dir(v, v->directory); v->changed = 1; } |
From: <enl...@so...> - 2001-02-09 08:13:21
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e Modified Files: configure.in Log Message: fs layer in... using efsd... :) primitive for now =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/configure.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- configure.in 2001/02/09 02:36:53 1.4 +++ configure.in 2001/02/09 08:13:16 1.5 @@ -81,6 +81,10 @@ ecore_cflags=`ecore-config --cflags` ecore_libs=`ecore-config --libs` +# a hack for now till efsd gets a proper efsd-config +efsd_cflags='-I/usr/local/include' +efsd_libs='-L/usr/local/lib -lefsd' + AC_SUBST(evas_cflags) AC_SUBST(evas_libs) AC_SUBST(edb_cflags) @@ -89,6 +93,8 @@ AC_SUBST(ebits_libs) AC_SUBST(ecore_cflags) AC_SUBST(ecore_libs) +AC_SUBST(efsd_cflags) +AC_SUBST(efsd_libs) AC_OUTPUT([ Makefile |
From: <enl...@so...> - 2001-02-12 18:58:15
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/images Added Files: bg.jpg Removed Files: bg.png Log Message: been working on E............ needs efsd now, desktops are now views, new background, lists directory, cleaned up some bugs here and there, errrr...... cleaned up menu code and some fixups, added fs abstraction init and working on it.... |
From: <enl...@so...> - 2001-02-12 18:58:15
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/orig Added Files: icon_file.png icon_file.xcf Log Message: been working on E............ needs efsd now, desktops are now views, new background, lists directory, cleaned up some bugs here and there, errrr...... cleaned up menu code and some fixups, added fs abstraction init and working on it.... |
From: <enl...@so...> - 2001-02-12 18:58:16
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: Makefile.am actions.c border.c desktops.c e.h fs.c icons.c main.c menu.c util.c view.c Added Files: background.c Log Message: been working on E............ needs efsd now, desktops are now views, new background, lists directory, cleaned up some bugs here and there, errrr...... cleaned up menu code and some fixups, added fs abstraction init and working on it.... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/Makefile.am,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- Makefile.am 2001/02/09 08:13:16 1.10 +++ Makefile.am 2001/02/12 18:58:51 1.11 @@ -8,6 +8,7 @@ enlightenment_SOURCES = \ actions.c \ +background.c \ border.c \ config.c \ desktops.c \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/actions.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- actions.c 2001/02/09 02:36:53 1.12 +++ actions.c 2001/02/12 18:58:51 1.13 @@ -426,7 +426,8 @@ - +/* FIXME: these REALLY need to go into other file(s) but it's not worht it */ +/* yet at this point. it can be done later */ static void e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/border.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- border.c 2001/02/03 17:17:07 1.16 +++ border.c 2001/02/12 18:58:51 1.17 @@ -123,7 +123,9 @@ if (e->mask & EV_VALUE_Y) b->current.requested.y = e->y; if (e->mask & EV_VALUE_W) - b->current.requested.w = e->w + pl + pr; + { + b->current.requested.w = e->w + pl + pr; + } if (e->mask & EV_VALUE_H) { if (b->current.shaded == b->client.h) @@ -1188,6 +1190,8 @@ /* fix size so it matches the hints a client asks for */ b->changed = 1; e_border_adjust_limits(b); + b->current.requested.h = b->current.h; + b->current.requested.w = b->current.w; e_border_raise(b); e_window_show(win); return b; @@ -1632,7 +1636,10 @@ { int w, h, pl, pr, pt, pb, mx, my; - if (b->mode.move) e_resist_border(b); + if (b->mode.move) + { + e_resist_border(b); + } else { b->current.x = b->current.requested.x; @@ -1642,8 +1649,8 @@ b->current.w = b->current.requested.w; b->current.h = b->current.requested.h - b->current.shaded; - if (!b->current.shaded) - { + if ((!b->current.shaded) && (!b->mode.move)) + { if (b->current.w < 1) b->current.w = 1; if (b->current.h < 1) b->current.h = 1; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- desktops.c 2001/02/06 08:23:36 1.12 +++ desktops.c 2001/02/12 18:58:51 1.13 @@ -6,315 +6,15 @@ static int current_desk = 0; static void e_idle(void *data); -static void e_key_down(Eevent * ev); -static void e_key_up(Eevent * ev); -static void e_mouse_down(Eevent * ev); -static void e_mouse_up(Eevent * ev); -static void e_mouse_in(Eevent * ev); -static void e_mouse_out(Eevent * ev); -static void e_window_expose(Eevent * ev); static void e_idle(void *data) { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - e_desktops_update(desk); - } e_db_flush(); return; UN(data); } -/* handling key down events */ -static void -e_key_down(Eevent * ev) -{ - Ev_Key_Down *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - if (!strcmp(e->key, "Up")) - { - } - else if (!strcmp(e->key, "Down")) - { - } - else if (!strcmp(e->key, "Left")) - { - } - else if (!strcmp(e->key, "Right")) - { - } - else if (!strcmp(e->key, "Escape")) - { - } - else - { - /* infact we should pass this onto the view handling */ - /* this desktop here */ - char *type; - - type = e_key_press_translate_into_typeable(e); - if (type) - { - } - } - } - } - } -} - -/* handling key up events */ -static void -e_key_up(Eevent * ev) -{ - Ev_Key_Up *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - } - } - } -} - -/* handling mouse down events */ -static void -e_mouse_down(Eevent * ev) -{ - Ev_Mouse_Down *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - Evas evas; - int x, y; - - evas = desk->evas.desk; - e_window_get_root_relative_location(evas_get_window(evas), - &x, &y); - x = e->rx - x; - y = e->ry - y; - evas_event_button_down(evas, x, y, e->button); - if (e->button == 1) - { - static E_Build_Menu *buildmenu = NULL; - - if (!buildmenu) - { - char *apps_menu_db; - - apps_menu_db = e_config_get("apps_menu"); - if (apps_menu_db) buildmenu = e_build_menu_new_from_db(apps_menu_db); - } - if (buildmenu) - { - static E_Menu *menu = NULL; - menu = buildmenu->menu; - if (menu) - e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); - } - } - return; - } - } - } -} - -/* handling mouse up events */ -static void -e_mouse_up(Eevent * ev) -{ - Ev_Mouse_Up *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - Evas evas; - int x, y; - - evas = desk->evas.desk; - e_window_get_root_relative_location(evas_get_window(evas), - &x, &y); - x = e->rx - x; - y = e->ry - y; - evas_event_button_up(evas, x, y, e->button); - return; - } - } - } -} - -/* handling mouse move events */ -static void -e_mouse_move(Eevent * ev) -{ - Ev_Mouse_Move *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - Evas evas; - int x, y; - - evas = desk->evas.desk; - e_window_get_root_relative_location(evas_get_window(evas), - &x, &y); - x = e->rx - x; - y = e->ry - y; - evas_event_move(evas, x, y); - return; - } - } - } -} - -/* handling mouse enter events */ -static void -e_mouse_in(Eevent * ev) -{ - Ev_Window_Enter *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - Evas evas; - int x, y; - - /* focus handling for desktop */ - e_focus_to_window(e->win); - evas = desk->evas.desk; - e_window_get_root_relative_location(evas_get_window(evas), - &x, &y); - x = e->rx - x; - y = e->ry - y; - evas_event_move(evas, x, y); - evas_event_enter(evas); - return; - } - } - } -} - -/* handling mouse leave events */ -static void -e_mouse_out(Eevent * ev) -{ - Ev_Window_Leave *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - - if (desk->win.desk == e->win) - { - Evas evas; - int x, y; - - evas = desk->evas.desk; - e_window_get_root_relative_location(evas_get_window(evas), - &x, &y); - x = e->rx - x; - y = e->ry - y; - evas_event_move(evas, x, y); - evas_event_leave(evas); - return; - } - } - } -} - -/* handling expose events */ -static void -e_window_expose(Eevent * ev) -{ - Ev_Window_Expose *e; - - e = ev->event; - { - Evas_List l; - - for (l = desktops; l; l = l->next) - { - E_Desktop *desk; - - desk = l->data; - if (!desk->evas.pmap) - { - if (evas_get_window(desk->evas.desk) == e->win) - evas_update_rect(desk->evas.desk, e->x, e->y, e->w, e->h); - } - } - } -} - void e_desktops_init(void) { @@ -325,14 +25,6 @@ e_window_show(e_base_win); desk = e_desktops_new(); e_desktops_show(desk); - e_event_filter_handler_add(EV_MOUSE_DOWN, e_mouse_down); - e_event_filter_handler_add(EV_MOUSE_UP, e_mouse_up); - e_event_filter_handler_add(EV_MOUSE_MOVE, e_mouse_move); - e_event_filter_handler_add(EV_MOUSE_IN, e_mouse_in); - e_event_filter_handler_add(EV_MOUSE_OUT, e_mouse_out); - e_event_filter_handler_add(EV_WINDOW_EXPOSE, e_window_expose); - e_event_filter_handler_add(EV_KEY_DOWN, e_key_down); - e_event_filter_handler_add(EV_KEY_UP, e_key_up); e_event_filter_idle_handler_add(e_idle, NULL); e_icccm_advertise_e_compat(); @@ -459,7 +151,6 @@ } } e_window_destroy(desk->win.main); - if (desk->evas.pmap) e_pixmap_free(desk->evas.pmap); IF_FREE(desk->name); IF_FREE(desk->dir); FREE(desk); @@ -468,47 +159,20 @@ void e_desktops_init_file_display(E_Desktop *desk) { - int max_colors = 216; - int font_cache = 1024 * 1024; - int image_cache = 8192 * 1024; - char *font_dir; - - font_dir = e_config_get("fonts"); - /* software */ - desk->evas.desk = evas_new_all(e_display_get(), - desk->win.container, - 0, 0, screen_w, screen_h, - RENDER_METHOD_ALPHA_SOFTWARE, - max_colors, - font_cache, - image_cache, - font_dir); - desk->win.desk = evas_get_window(desk->evas.desk); - e_add_child(desk->win.container, desk->win.desk); - /* pixmap backing for desktop */ - desk->evas.pmap = e_pixmap_new(desk->win.desk, screen_w, screen_h, 0); - evas_set_output(desk->evas.desk, e_display_get(), desk->evas.pmap, - evas_get_visual(desk->evas.desk), evas_get_colormap(desk->evas.desk)); - e_window_set_background_pixmap(desk->win.desk, desk->evas.pmap); - /* normal stuff */ - e_window_set_events(desk->win.desk, XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT | XEV_KEY); + desk->view = e_view_new(); + desk->view->size.w = desk->real.w; + desk->view->size.h = desk->real.h; + desk->view->bg = e_background_new(); + desk->view->bg->image = strdup(PACKAGE_DATA_DIR"/data/images/bg.jpg"); + /* fixme later */ + /* uncomment this and comment out the next line for some tress testing */ +/* desk->view->dir = strdup("/dev");*/ + desk->view->dir = strdup(e_file_home()); + e_view_realize(desk->view); + if (desk->view->options.back_pixmap) e_view_update(desk->view); + desk->win.desk = desk->view->win.base; + e_window_reparent(desk->win.desk, desk->win.container, 0, 0); e_window_show(desk->win.desk); - { - Evas_Object o; - Evas e; - char buf[4096]; - - e = desk->evas.desk; - sprintf(buf, "%sbg.png", e_config_get("images")); - o = evas_add_image_from_file(e, buf); - evas_move(e, o, 0, 0); - evas_resize(e, o, screen_w, screen_h); - evas_show(e, o); - sprintf(buf, "%se_logo.png", e_config_get("images")); - o = evas_add_image_from_file(e, buf); - evas_move(e, o, 0, 0); - evas_show(e, o); - } } E_Desktop * @@ -565,13 +229,13 @@ void e_desktops_show(E_Desktop *d) { - e_desktops_update(d); e_window_show(d->win.main); } void e_desktops_hide(E_Desktop *d) { + if (d->view->options.back_pixmap) e_view_update(d->view); e_window_hide(d->win.main); } @@ -602,29 +266,4 @@ e_desktops_get_current(void) { return current_desk; -} - -void -e_desktops_update(E_Desktop *desk) -{ - Imlib_Updates up; - - up = evas_render_updates(desk->evas.desk); - if (up) - { - Imlib_Updates u; - - for (u = up; u; u = imlib_updates_get_next(u)) - { - int x, y, w, h; - - imlib_updates_get_coordinates(u, &x, &y, &w, &h); - e_window_clear_area(desk->win.desk, x, y, w, h); - } - imlib_updates_free(up); - } - if (desk->changed) - { - desk->changed = 0; - } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- e.h 2001/02/09 08:13:16 1.18 +++ e.h 2001/02/12 18:58:51 1.19 @@ -132,6 +132,7 @@ typedef struct _E_Active_Action_Timer E_Active_Action_Timer; typedef struct _E_View E_View; typedef struct _E_Icon E_Icon; +typedef struct _E_Background E_Background; typedef struct _E_Menu E_Menu; typedef struct _E_Menu_Item E_Menu_Item; typedef struct _E_Build_Menu E_Build_Menu; @@ -279,10 +280,7 @@ Window container; Window desk; } win; - struct { - Pixmap pmap; - Evas desk; - } evas; + E_View *view; int x, y; struct { int w, h; @@ -307,7 +305,7 @@ { OBJ_PROPERTIES; - char *directory; + char *dir; struct { Evas_Render_Method render_method; @@ -330,10 +328,21 @@ int x, y; } location; struct { + Evas_Object obj_rect; + Evas_Object obj_l1; + Evas_Object obj_l2; + Evas_Object obj_l3; + Evas_Object obj_l4; int on; + int start_x, start_y; int x, y, w, h; } selection; + E_Background *bg; + + int is_listing; + int monitor_id; + Evas_List icons; int changed; @@ -344,9 +353,9 @@ OBJ_PROPERTIES; char *file; - char *dir; E_View *view; + int x, y, w, h; struct { int text_location; @@ -363,13 +372,30 @@ Ebits_Object base_text; } obj; struct { - int clicked; - int selected; - int hilited; + int clicked; + int selected; + int hilited; } state; + char *icon; + int visible; int changed; }; +struct _E_Background +{ + OBJ_PROPERTIES; + + Evas evas; + struct { + int sx, sy; + int w, h; + } geom; + + /* FIXME: REALLY boring for now - just a scaled image - temporoary */ + char *image; + Evas_Object obj; +}; + struct _E_Menu { OBJ_PROPERTIES; @@ -548,7 +574,10 @@ char *e_file_home(void); int e_file_mkdir(char *dir); int e_file_cp(char *src, char *dst); - +char *e_file_real(char *file); +char *e_file_get_file(char *file); +char *e_file_get_dir(char *file); + void e_exec_set_args(int argc, char **argv); void e_exec_restart(void); pid_t e_exec_run(char *exe); @@ -604,3 +633,5 @@ void e_fs_add_event_handler(void (*func) (EfsdEvent *ev)); void e_fs_init(void); +EfsdConnection *e_fs_get_connection(void); + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/fs.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- fs.c 2001/02/09 08:13:16 1.1 +++ fs.c 2001/02/12 18:58:51 1.2 @@ -9,22 +9,55 @@ _e_fs_fd_handle(int fd) { EfsdEvent ev; + int i = 1; - #if 0 /* WE REALLY need NON BLOCKING comms with efsd! cK!!!!! */ - while (efsd_read_event(ec->fd, &ev) >= 0) + /* VERY nasty - sicne efas has no way of checkign If an event is in the */ + /* event queue waiting to be picked up - i cant loop and get the events */ + printf("_e_fs_fd_handle(%i)\n", fd); + while (i >= 0) { - Evas_List l; + fd_set fdset; + struct timeval tv; - for (l = fs_handlers; l; l = l->next) + FD_ZERO(&fdset); + FD_SET(fd, &fdset); + tv.tv_sec = 0; + tv.tv_usec = 0; + select(fd + 1, &fdset, NULL, NULL, &tv); + if (FD_ISSET(fd, &fdset)) { - void (*func) (EfsdEvent *ev); - - func = l->data; - func(&ev); + i = efsd_next_event(ec, &ev); + if (i < 0) + { + efsd_close(ec); + e_del_event_fd(fd); + /* FIXME: need to queue a popup dialog here saying */ + /* efsd went wonky */ + printf("EEEEEEEEEEK efsd went wonky\n"); +/* + ec = efsd_open(); + if (ec) + e_add_event_fd(efsd_get_connection_fd(ec), + _e_fs_fd_handle); +*/ + } + if (i >= 0) + { + Evas_List l; + + for (l = fs_handlers; l; l = l->next) + { + void (*func) (EfsdEvent *ev); + + func = l->data; + func(&ev); + } + efsd_cleanup_event(&ev); + } } - efsd_cleanup_event(&ev); + else + i = -1; } - #endif } void @@ -50,16 +83,32 @@ { ec = efsd_open(); sleep(1); - if (i > 8) break; + /* > than 4 seconds later efsd isnt there... try forced start */ + if (i > 4) + { + e_exec_run("efsd --forcestart"); + for (i = 0; (!ec); i++) + { + ec = efsd_open(); + sleep(1); + /* > 4 seconds later forced efsd not alive - give up */ + if (i > 4) break; + } + break; + } } } + /* after several atempts to talk to efsd - lets give up */ if (!ec) { fprintf(stderr, "efsd is not running - please run efsd.\n"); exit(-1); } e_add_event_fd(efsd_get_connection_fd(ec), _e_fs_fd_handle); - - /* HACK FIXME: testing.... */ - efsd_start_monitor(ec, getenv("HOME")); +} + +EfsdConnection * +e_fs_get_connection(void) +{ + return ec; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/icons.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- icons.c 2001/02/09 08:13:16 1.3 +++ icons.c 2001/02/12 18:58:51 1.4 @@ -22,3 +22,33 @@ { if (!icon->view) return; } + +void +e_icon_realize(E_Icon *icon) +{ + int fx, fy; + int iw, ih; + double tw, th; + + icon->obj.icon = evas_add_image_from_file(icon->view->evas, icon->icon); + icon->obj.filename = evas_add_text(icon->view->evas, "borzoib", 8, icon->file); + evas_get_geometry(icon->view->evas, icon->obj.filename, NULL, NULL, &tw, &th); + evas_get_image_size(icon->view->evas, icon->obj.icon, & iw, &ih); + evas_set_color(icon->view->evas, icon->obj.filename, 0, 0, 0, 255); + fx = icon->x + ((iw - tw) / 2); + fy = icon->y + ih; + evas_set_layer(icon->view->evas, icon->obj.icon, 10); + evas_set_layer(icon->view->evas, icon->obj.filename, 10); + evas_move(icon->view->evas, icon->obj.icon, icon->x, icon->y); + evas_move(icon->view->evas, icon->obj.filename, fx, fy); + if (icon->visible) + { + evas_show(icon->view->evas, icon->obj.icon); + evas_show(icon->view->evas, icon->obj.filename); + } +} + +void +e_icon_unrealize(E_Icon *icon) +{ +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/main.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- main.c 2001/02/11 18:54:04 1.7 +++ main.c 2001/02/12 18:58:51 1.8 @@ -47,11 +47,11 @@ e_event_filter_init(); e_ev_x_init(); + e_fs_init(); e_desktops_init(); e_border_init(); e_actions_init(); e_menu_init(); - /* e_fs_init(); */ e_view_init(); setup(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menu.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- menu.c 2001/02/06 08:23:36 1.5 +++ menu.c 2001/02/12 18:58:51 1.6 @@ -39,6 +39,7 @@ scroll_speed = (int)(((t - last_time) / 0.02) * (double)scroll_speed); last_time = t; + ok = 0; if (mouse_x >= (screen_w - resist)) { int scroll = 0; @@ -49,10 +50,7 @@ m = l->data; if ((m->current.x + m->current.w) > screen_w) - { - scroll = m->current.x + m->current.w - screen_w; - break; - } + scroll = m->current.x + m->current.w - screen_w; } if (scroll) { @@ -71,10 +69,7 @@ m = l->data; if (m->current.x < 0) - { - scroll = -m->current.x; - break; - } + scroll = -m->current.x; } if (scroll) { @@ -93,10 +88,7 @@ m = l->data; if ((m->current.y + m->current.h) > screen_h) - { - scroll = m->current.y + m->current.h - screen_h; - break; - } + scroll = m->current.y + m->current.h - screen_h; } if (scroll) { @@ -115,10 +107,7 @@ m = l->data; if (m->current.y < 0) - { - scroll = -m->current.y; - break; - } + scroll = -m->current.y; } if (scroll) { @@ -127,7 +116,7 @@ ok = 1; } } - if (ok) + if ((ok) && (open_menus)) e_add_event_timer("menu_scroller", 0.02, e_scroller_timer, val + 1, NULL); return; UN(data); @@ -208,7 +197,11 @@ E_Menu *m; m = l->data; - if ((e->win == m->win.main) || (e->win == m->win.evas)) ok = 1; + if ((e->win == m->win.main) || (e->win == m->win.evas)) + { + ok = 1; + break; + } } } if (ok) @@ -223,6 +216,7 @@ if (m->selected) { mi = m->selected; + break; } } if (!strcmp(e->key, "Up")) @@ -446,6 +440,7 @@ { m->first_expose = 1; evas_update_rect(m->evas, e->x, e->y, e->w, e->h); + break; } } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/util.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- util.c 2000/12/15 21:27:23 1.4 +++ util.c 2001/02/12 18:58:51 1.5 @@ -78,3 +78,36 @@ fclose(f2); return 1; } + +char * +e_file_real(char *file) +{ + char buf[4096]; + + if (!realpath(file, buf)) return strdup(""); + return strdup(buf); +} + +char * +e_file_get_file(char *file) +{ + char *p; + char buf[4096]; + + p = strchr(file, '/'); + if (!p) return strdup(file); + return strdup(&(p[1])); +} + +char * +e_file_get_dir(char *file) +{ + char *p; + char buf[4096]; + + strcpy(buf, file); + p = strchr(buf, '/'); + if (!p) return strdup(file); + *p = 0; + return strdup(buf); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/view.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- view.c 2001/02/09 08:13:16 1.5 +++ view.c 2001/02/12 18:58:51 1.6 @@ -12,12 +12,14 @@ static void e_mouse_in(Eevent * ev); static void e_mouse_out(Eevent * ev); static void e_window_expose(Eevent * ev); +static void e_view_handle_fs(EfsdEvent *ev); static void e_idle(void *data) { Evas_List l; - + + printf("view idle.\n"); for (l = views; l; l = l->next) { E_View *v; @@ -83,6 +85,7 @@ { } } + return; } } } @@ -94,6 +97,7 @@ Evas_List l; e = ev->event; + return; for (l = views; l; l = l->next) { E_View *v; @@ -116,7 +120,40 @@ v = l->data; if (e->win == v->win.main) { + /* FIXME: */ + /* normally would handle selection in evasa object callbacks */ + /* but for now it's handled here */ + if (e->button == 1) + { + v->selection.on = 1; + v->selection.start_x = e->x; + v->selection.start_y = e->y; + v->selection.x = e->x; + v->selection.y = e->y; + v->selection.w = 1; + v->selection.h = 1; + if (!v->selection.obj_rect) + { + v->selection.obj_rect = evas_add_rectangle(v->evas); + v->selection.obj_l1 = evas_add_line(v->evas); + v->selection.obj_l2 = evas_add_line(v->evas); + v->selection.obj_l3 = evas_add_line(v->evas); + v->selection.obj_l4 = evas_add_line(v->evas); + evas_set_color(v->evas, v->selection.obj_rect, 255, 255, 255, 100); + evas_set_color(v->evas, v->selection.obj_l1, 0, 0, 0, 200); + evas_set_color(v->evas, v->selection.obj_l2, 0, 0, 0, 200); + evas_set_color(v->evas, v->selection.obj_l3, 0, 0, 0, 200); + evas_set_color(v->evas, v->selection.obj_l4, 0, 0, 0, 200); + evas_set_layer(v->evas, v->selection.obj_rect, 100); + evas_set_layer(v->evas, v->selection.obj_l1, 100); + evas_set_layer(v->evas, v->selection.obj_l2, 100); + evas_set_layer(v->evas, v->selection.obj_l3, 100); + evas_set_layer(v->evas, v->selection.obj_l4, 100); + } + e_view_update_selection(v, e->x, e->y); + } evas_event_button_down(v->evas, e->x, e->y, e->button); + return; } } } @@ -135,6 +172,54 @@ v = l->data; if (e->win == v->win.main) { + /* FIXME: temporary for now- should only do this if its a deskop */ + /* view and desktops accept focus on click. */ + /* e_focus_to_window(e->win); */ + if ((v->selection.w < 6) && (v->selection.h < 6)) + { + if (e->button == 1) + { + static E_Build_Menu *buildmenu = NULL; + + if (!buildmenu) + { + char *apps_menu_db; + + apps_menu_db = e_config_get("apps_menu"); + if (apps_menu_db) buildmenu = e_build_menu_new_from_db(apps_menu_db); + } + if (buildmenu) + { + static E_Menu *menu = NULL; + menu = buildmenu->menu; + if (menu) + e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); + } + } + else if (e->button == 3) + { + static E_Menu *menu = NULL; + + if (!menu) + { + E_Menu_Item *menuitem; + + menu = e_menu_new(); + menu->pad.icon = 2; + menu->pad.state = 2; + menuitem = e_menu_item_new("Enlightenment "VERSION); + menuitem->icon = strdup(PACKAGE_DATA_DIR"/data/images/e_logo.png"); + e_menu_add_item(menu, menuitem); + } + if (menu) + e_menu_show_at_mouse(menu, e->rx, e->ry, e->time); + } + } + if (e->button == 1) + { + v->selection.on = 0; + e_view_update_selection(v, e->x, e->y); + } evas_event_button_up(v->evas, e->x, e->y, e->button); } } @@ -154,7 +239,9 @@ v = l->data; if (e->win == v->win.main) { + e_view_update_selection(v, e->x, e->y); evas_event_move(v->evas, e->x, e->y); + return; } } } @@ -173,7 +260,11 @@ v = l->data; if (e->win == v->win.main) { + /* FIXME: temporary for now- should only do this if its a deskop */ + /* view and desktops accept focus on mouse. */ + e_focus_to_window(e->win); evas_event_enter(v->evas); + return; } } } @@ -193,6 +284,7 @@ if (e->win == v->win.main) { evas_event_leave(v->evas); + return; } } } @@ -212,12 +304,199 @@ if (e->win == v->win.main) { if (!(v->pmap)) - evas_update_rect(v->evas, e->x, e->y, e->w, e->h); + evas_update_rect(v->evas, e->x, e->y, e->w, e->h); + v->changed = 1; + return; } } } +int +e_view_filter_file(E_View *v, char *file) +{ + if (file[0] == '.') return 0; + return 1; +} + +void +e_view_update_selection(E_View *v, int x, int y) +{ + if (v->selection.on) + { + if (x < v->selection.start_x) + { + v->selection.w = (-(x - v->selection.start_x)) + 1; + v->selection.x = x; + } + else + { + v->selection.w = (x - v->selection.start_x) + 1; + v->selection.x = v->selection.start_x; + } + if (y < v->selection.start_y) + { + v->selection.h = (-(y - v->selection.start_y)) + 1; + v->selection.y = y; + } + else + { + v->selection.h = (y - v->selection.start_y) + 1; + v->selection.y = v->selection.start_y; + } + evas_move(v->evas, v->selection.obj_rect, v->selection.x, v->selection.y); + evas_resize(v->evas, v->selection.obj_rect, v->selection.w, v->selection.h); + evas_set_line_xy(v->evas, v->selection.obj_l1, v->selection.x, v->selection.y, v->selection.x + v->selection.w - 1, v->selection.y); + evas_set_line_xy(v->evas, v->selection.obj_l2, v->selection.x, v->selection.y, v->selection.x, v->selection.y + v->selection.h - 1); + evas_set_line_xy(v->evas, v->selection.obj_l3, v->selection.x, v->selection.y + v->selection.h - 1, v->selection.x + v->selection.w - 1, v->selection.y + v->selection.h - 1); + evas_set_line_xy(v->evas, v->selection.obj_l4, v->selection.x + v->selection.w - 1, v->selection.y, v->selection.x + v->selection.w - 1, v->selection.y + v->selection.h - 1); + evas_show(v->evas, v->selection.obj_rect); + evas_show(v->evas, v->selection.obj_l1); + evas_show(v->evas, v->selection.obj_l2); + evas_show(v->evas, v->selection.obj_l3); + evas_show(v->evas, v->selection.obj_l4); + } + else + { + evas_hide(v->evas, v->selection.obj_rect); + evas_hide(v->evas, v->selection.obj_l1); + evas_hide(v->evas, v->selection.obj_l2); + evas_hide(v->evas, v->selection.obj_l3); + evas_hide(v->evas, v->selection.obj_l4); + } +} + +void +e_view_file_added(int id, char *file) +{ + E_Icon *icon; + E_View *v; + char *realfile; + char buf[4096]; + + /* if we get a path - ignore it - its not a file in the a dir */ + printf("e_view_file_added(%i, \"%s\");\n", id, file); + if (!file) return; + if (file[0] == '/') return; + v = e_view_find_by_monitor_id(id); + if (!v) return; + /* filter files here */ + if (!e_view_filter_file(v, file)) return; + icon = e_icon_new(); + icon->file = strdup(file); + icon->x = rand()%(v->size.w - 60); + icon->y = rand()%(v->size.h - 60); + icon->changed = 1; + icon->visible = 1; + icon->icon = strdup(PACKAGE_DATA_DIR"/data/icons/file/default.db:/icon/normal"); + e_view_add_icon(v, icon); + v->changed = 1; +} + void +e_view_file_deleted(int id, char *file) +{ + E_Icon *icon; + E_View *v; + char *realfile; + + printf("e_view_file_deleted(%i, \"%s\");\n", id, file); + v = e_view_find_by_monitor_id(id); + if (!v) return; +} + +static void +e_view_handle_fs(EfsdEvent *ev) +{ + switch (ev->type) + { + case FILECHANGE: + switch (ev->efsd_filechange_event.changecode) + { + case FAMCreated: + e_view_file_added(ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + case FAMExists: + e_view_file_added(ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + case FAMDeleted: + e_view_file_deleted(ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + case FAMChanged: + printf("FAMChanged: %i %s\n", + ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + case FAMMoved: + printf("FAMMoved: %i %s\n", + ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + case FAMEndExist: + printf("FAMEndExist: %i %s\n", + ev->efsd_filechange_event.id, + ev->efsd_filechange_event.file); + break; + default: + break; + } + break; + case REPLY: + switch (ev->efsd_reply_event.command.type) + { + case REMOVE: + break; + case MOVE: + break; + case SYMLINK: + break; + case LISTDIR: + break; + case MAKEDIR: + break; + case CHMOD: + break; + case STAT: + break; + case CLOSE: + break; + case SETMETA: + break; + case GETMETA: + break; + case STARTMON: + printf("Startmon event %i\n", + ev->efsd_reply_event.command.efsd_file_cmd.id); + break; + case STOPMON: + break; + default: + break; + } + break; + default: + break; + } +} + +E_View * +e_view_find_by_monitor_id(int id) +{ + Evas_List l; + + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (v->monitor_id == id) return v; + } + return NULL; +} + +void e_view_free(E_View *v) { views = evas_list_remove(views, v); @@ -232,10 +511,15 @@ v = NEW(E_View, 1); ZERO(v, E_View, 1); OBJ_INIT(v, e_view_free); - + +#if 1 + /* ONLY alpha software can be "backing stored" */ v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE; v->options.back_pixmap = 1; - +#else + v->options.render_method = RENDER_METHOD_BASIC_HARDWARE; + v->options.back_pixmap = 0; +#endif views = evas_list_append(views, v); return v; } @@ -250,32 +534,12 @@ e_view_set_dir(E_View *v, char *dir) { /* stop monitoring old dir */ - IF_FREE(v->directory); - v->directory = strdup(dir); + IF_FREE(v->dir); + v->dir = e_file_real(dir); /* start monitoring new dir */ - - { - /* bad hack- lets just add some dummy stuff for testing */ - int i; - char *files[8] = { - "The first file", - "Some more things", - "K is a FISH!", - "Possum Eyes", - "Nasty Bums", - "BLUMFRUB!", - "Oh lookie here now!", - "Last one...." - }; - for (i = 0; i < 8; i++) - { - E_Icon *icon; - - icon = e_icon_new(); - icon->file = strdup(files[i]); - e_view_add_icon(v, icon); - } - } + v->monitor_id = efsd_start_monitor(e_fs_get_connection(), v->dir); + printf("%i %s\n", v->monitor_id, v->dir); + v->is_listing = 1; v->changed = 1; } @@ -290,7 +554,7 @@ { if (icon->view) return; icon->view = v; - icon->changed = 1; + e_icon_realize(icon); v->changed = 1; } @@ -298,6 +562,7 @@ e_view_del_icon(E_View *v, E_Icon *icon) { if (!icon->view) return; + e_icon_unrealize(icon); icon->view = NULL; icon->changed = 1; v->changed = 1; @@ -334,11 +599,24 @@ evas_get_colormap(v->evas)); e_window_set_background_pixmap(v->win.main, v->pmap); } + if (v->bg) + { + v->bg->geom.w = v->size.w; + v->bg->geom.h = v->size.h; + e_background_realize(v->bg, v->evas); + } e_window_set_events(v->win.main, XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT | XEV_KEY); e_window_show(v->win.main); - e_view_set_dir(v, v->directory); + { + char *dir; + + dir = v->dir; + v->dir = NULL; + e_view_set_dir(v, dir); + IF_FREE(dir); + } v->changed = 1; } @@ -374,7 +652,7 @@ } else evas_render(v->evas); - v->changed = 0; +/* v->changed = 0;*/ } void @@ -390,4 +668,5 @@ e_event_filter_handler_add(EV_KEY_UP, e_key_up); e_event_filter_handler_add(EV_MOUSE_WHEEL, e_wheel); e_event_filter_idle_handler_add(e_idle, NULL); + e_fs_add_event_handler(e_view_handle_fs); } |
From: <enl...@so...> - 2001-02-12 18:58:45
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e Modified Files: README Log Message: been working on E............ needs efsd now, desktops are now views, new background, lists directory, cleaned up some bugs here and there, errrr...... cleaned up menu code and some fixups, added fs abstraction init and working on it.... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/README,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- README 2000/12/11 20:08:37 1.2 +++ README 2001/02/12 18:58:51 1.3 @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- - Enlightenment 0.17.0 CVS Code.... + Enlightenment 0.17.pre CVS Code.... ------------------------------------------------------------------------------- The Rasterman - ra...@va..., ra...@ra... @@ -18,10 +18,11 @@ to remove all traces of anything this CVS code base has installed on your system (it is COMPLETELY up to you to keep track of that - do NOT expect any help), and then install the full release on a cleaned system. Don't come -asking "can I just keep using CVS" oonce things are released - thqat is the -reason I pu this paragraph here - so you don't ask. The asnwer is the same +asking "can I just keep using CVS" once things are released - that is the +reason I put this paragraph here - so you don't ask. The asnwer is the same as above - if there is a proper final release use that. CVS is really only -for those havily hacking on the code. +for those havily hacking on the code, or whose curiosity is too much to resist +not giving it a look and try. Now we have that warning over and done with. How to build and install from CVS? @@ -49,21 +50,22 @@ now - so you need to make sure no other WM is running - E will not do that for you. -Enlightenment has no menus or keybindings or any way of launching -applications right now - you'll have to figure out an alternative way of -doing it. +Enlightenment has no keybindings right now, but does have a primitve menu for +launching some applications. It is configurable - it's in a database file +and tere is a script that builds this menu - you could build a new one after +editing the script or do whatever your like. Enlightenment only handles a small subset of ICCCM and thus will have bugs - -some applications will not behave correctly and may apear in odd spots or +some applications will not behave correctly and may appear in odd spots or not resize or place themselves properly etc. Expect this - it's code being worked on. Just be happy it does as much as it already does. Enlightenment RELIES on lots of libraires that have been written. Ecore, -Ebits, Evas, Edb, Imlib2 just to mention a few. Especially Ebits, Ecore and -Evas change in CVS often - you will need the absolute latest of these if you -wish Enlightenment 0.17 code to run properly or compile. If you update -Enlightenment from CVS update these too to get any changes they have in -their trees. +Ebits, Evas, Edb, Imlib2, Efsd just to mention a few. Especially Ebits, +Ecore, Efsd and Evas change in CVS often - you will need the absolute latest +of these if you wish Enlightenment 0.17 code to run properly or compile. If +you update Enlightenment from CVS update these too to get any changes they +have in their trees. If you plan on working on the code... STOP! don't rush in and work on it - even if you have CVS commit access - EXPECT me (Raster) to revert any changes @@ -75,22 +77,27 @@ object oriented. Learn it well first. Some parts of E 0.17 are "hacked" with hard-coded stuff, just so, for now, it works. They will be virtualized and imporved over time. If you have plans - tell me about them first - discuss -them before you go impliment them. I know I already have a lot of the -components of E 0.17's code planned in my head - but I won't get to them for -a while - and if people go impliment or hack bad stuff in, it means I have to -spend lots of time fixing something that is bad in the first place, or we -end up doing duplicate work. There *IS* a plan - believe it or not - but to -be honest - it's more complex and large than I can just write down in a -README, so talk about your ideas first. I'm going to be ruthless in keeping -the code neat, clean and free of nasty hacks (except ones I put in as -temporary stop-gap measures to make the thing work - since I know where -those are and what I need to do to do it right). If you can't find me or I -don't reply to your e-mail - don't get impatient - just wait. I currently +them before you go impliment them - once you've discussed them and we all +aree on how it should be done, you can go ahead and do it. I know I already +have a lot of the components of E 0.17's code planned in my head - but I +won't get to them for a while - and if people go impliment or hack bad stuff +in, it means I have to spend lots of time fixing something that is bad in the +first place, or we end up doing duplicate work. There *IS* a plan - believe +it or not - but to be honest - it's more complex and large than I can just +write down in a README, so talk about your ideas first. I'm going to be +ruthless in keeping the code neat, clean and free of nasty hacks (except ones +I put in as temporary stop-gap measures to make the thing work - since I know +where those are and what I need to do to do it right). If you can't find me +or I don't reply to your e-mail - don't get impatient - just wait. I currently have no network access at home, so I'm doing a chunk of code offline. I'll get to your mail and queries as time allows. If you have problems with the code or bugs to report, kindly forward them to /dev/null (the code is in now way or form ready for bug reports - I don't -want crap filling my mailbox). +want crap filling my mailbox), unless its a patch hat fixes a silly bug +somewhere. Only experienced people should in any way consider sending a bug +report as I need useful reports, not junk cluttering my mailbox. I hope that clears things up for now. + +In the meantime - have fun. |
From: <enl...@so...> - 2001-02-13 00:50:46
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/data/config/appearance/default/menus/default Added Files: check-0.bits.db check-1.bits.db item.bits.db radio-0.bits.db radio-1.bits.db separator.bits.db Log Message: damn! i didnt add these! |
From: <enl...@so...> - 2001-02-14 04:29:35
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/e Dir : e17/apps/e/src Modified Files: e.h menu.c util.c Log Message: now *THIS* shoudl make tome happy. bilget - take a look - this does what you want (ok - it gets it only if the value is stale for more than 5 seconds) the comments say its waiting on efsd to be more solid and then i'll have a set of config file monitoring flags that will state if the source db is invalid and only then to getit - it still pretty much comes down to a compre - branch and retrieve from ram operation per config value at the beginning of a function. it's be good if you - instead of sahyin the design is HIT and saying i cant desing - just point out somehting coudl be more optimized and suggest things :) i dont deal well with peolep telling me shit is shite when i'm not even done with it :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/e.h,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- e.h 2001/02/12 18:58:51 1.19 +++ e.h 2001/02/14 04:30:15 1.20 @@ -577,6 +577,7 @@ char *e_file_real(char *file); char *e_file_get_file(char *file); char *e_file_get_dir(char *file); +void *e_memdup(void *data, int size); void e_exec_set_args(int argc, char **argv); void e_exec_restart(void); @@ -584,9 +585,114 @@ pid_t e_exec_run_in_dir(char *exe, char *dir); pid_t e_run_in_dir_with_env(char *exe, char *dir, int *launch_id_ret, char **env, char *launch_path); +typedef struct _e_config_element E_Config_Element; +struct _e_config_element +{ + char *src; + char *key; + double last_fetch; + int type; + int def_int_val; + float def_float_val; + char *def_str_val; + void *def_data_val; + int def_data_val_size; + int cur_int_val; + float cur_float_val; + char *cur_str_val; + void *cur_data_val; + int cur_data_val_size; +}; +#define E_CFG_INT_T 123 +#define E_CFG_FLOAT_T 1234 +#define E_CFG_STR_T 12345 +#define E_CFG_DATA_T 123456 +#define E_CFG_INT(_var, _src, _key, _default) \ +static E_Config_Element _var = { _src, _key, 0.0, E_CFG_INT_T, \ +_default, 0.0, NULL, NULL, 0, \ +0, 0.0, NULL, NULL, 0, \ +} +#define E_CFG_FLOAT(_var, _src, _key, _default) \ +static E_Config_Element _var = { _src, _key, 0.0, E_CFG_FLOAT_T, \ +0, _default, NULL, NULL, 0, \ +0, 0.0, NULL, NULL, 0, \ +} +#define E_CFG_STR(_var, _src, _key, _default) \ +static E_Config_Element _var = { _src, _key, 0.0, E_CFG_STR_T, \ +0, 0.0, _default, NULL, 0, \ +0, 0.0, NULL, NULL, 0, \ +} +#define E_CFG_DATA(_var, _src, _key, _default, _default_size) \ +static E_Config_Element _var = { _src, _key, 0.0, E_CFG_DATAT_T, \ +0, 0.0, NULL, _default, _default_size, \ +0, 0.0, NULL, NULL, 0, \ +} +/* yes for now it only fetches them every 5 seconds - in the end i need a */ +/* validity flag for the database file to know if it changed and only then */ +/* get the value again. this is waiting for efsd to become more solid */ +#define E_CFG_VALIDITY_CHECK(_var) \ +{ \ +double __time; \ +__time = e_get_time(); \ +if (_var.last_fetch < (__time - 5.0)) { \ +int __cfg_ok = 0; \ +_var.last_fetch = __time; +#define E_CFG_END_VALIDITY_CHECK \ +} \ +} + +#define E_CONFIG_INT_GET(_var, _val) \ +{{ \ +E_CFG_VALIDITY_CHECK(_var) \ +E_DB_INT_GET(e_config_get(_var.src), _var.key, _var.cur_int_val, __cfg_ok); \ +if (!__cfg_ok) _var.cur_int_val = _var.def_int_val; \ +E_CFG_END_VALIDITY_CHECK \ +} \ +_val = _var.cur_int_val;} +#define E_CONFIG_FLOAT_GET(_var, _val) \ +{{ \ +E_CFG_VALIDITY_CHECK(_var) \ +E_DB_FLOAT_GET(e_config_get(_var.src), _var.key, _var.cur_float_val, __cfg_ok); \ +if (!__cfg_ok) _var.cur_float_val = _var.def_float_val; \ +E_CFG_END_VALIDITY_CHECK \ +} \ +_val = _var.cur_float_val;} +#define E_CONFIG_STR_GET(_var, _val) \ +{{ \ +E_CFG_VALIDITY_CHECK(_var) \ +if (_var.cur_str_val) free(_var.cur_str_val); \ +_var.cur_str_val = NULL; \ +E_DB_STR_GET(e_config_get(_var.src), _var.key, _var.cur_str_val, __cfg_ok); \ +if (!__cfg_ok) _var.cur_str_val = _var.def_str_val \ +E_CFG_END_VALIDITY_CHECK \ +} \ +_val = _var.cur_str_val;} +#define E_CONFIG_DATA_GET(_var, _val, _size) \ +{{ \ +E_CFG_VALIDITY_CHECK(_var) \ +if (_var.cur_data_val) free(_var.cur_data_val); \ +_var.cur_data_val = NULL; \ +_var.cur_data_size = 0; \ +{ E_DB_File *__db; \ +__db = e_db_open_read(e_config_get(_var.src)); \ +if (__db) { \ +_var.cur_data_val = e_db_data_get(__db, _var.key, &(_var.cur_data_size)); \ +if (_var.cur_data_val) __cfg_ok = 1; \ +e_db_close(__db); \ +} \ +} \ +if (!__cfg_ok) { \ +_var.cur_data_val = e_memdup(_var.def_data_val, _var.def_data_size); \ +_var.cur_data_size = _var.def_data_size; \ +} \ +E_CFG_END_VALIDITY_CHECK \ +} \ +_val = _var.cur_data_val; \ +_size = _var.cur_data_size;} + char *e_config_get(char *type); -void e_config_init(void); -void e_config_set_user_dir(char *dir); +void e_config_init(void); +void e_config_set_user_dir(char *dir); char *e_config_user_dir(void); void e_view_free(E_View *v); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/menu.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- menu.c 2001/02/12 18:58:51 1.6 +++ menu.c 2001/02/14 04:30:15 1.7 @@ -25,15 +25,16 @@ int ok = 0; int resist = 5; int scroll_speed = 12; - char *settings_db; static double last_time = 0.0; double t; + /* these two lines... */ + E_CFG_INT(cfg_resist, "settings", "/menu/scroll/resist", 5); + E_CFG_INT(cfg_scroll_speed, "settings", "/menu/scroll/speed", 12); - settings_db = e_config_get("settings"); - ok = 0; E_DB_INT_GET(settings_db, "/menu/scroll/resist", resist, ok); - if (!ok) resist = 5; - ok = 0; E_DB_INT_GET(settings_db, "/menu/scroll/speed", scroll_speed, ok); - if (!ok) scroll_speed = 12; + /* and these 2 should do exactly what tom wants - see e.h */ + E_CONFIG_INT_GET(cfg_resist, resist); + E_CONFIG_INT_GET(cfg_scroll_speed, scroll_speed); + t = e_get_time(); if (val != 0) scroll_speed = (int)(((t - last_time) / 0.02) * (double)scroll_speed); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/util.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- util.c 2001/02/12 18:58:51 1.5 +++ util.c 2001/02/14 04:30:15 1.6 @@ -111,3 +111,14 @@ *p = 0; return strdup(buf); } + +void * +e_memdup(void *data, int size) +{ + void *data_dup; + + data_dup = malloc(size); + if (!data_dup) return NULL; + memcpy(data_dup, data, size); + return data_dup; +} |