void image_widget_rep::handle_set_string (set_string_event ev) { if (ev->which == "name") { file_name= ev->s; if (attached ()) this << emit_invalidate_all (); } else attribute_widget_rep::handle_set_string (ev); }
void scrollable_widget_rep::set_extents (SI ex1b, SI ey1b, SI ex2b, SI ey2b) { ex1= ex1b; ey1= ey1b; ex2= ex2b; ey2= ey2b; abs_outer_round (ex1, ey1, ex2, ey2); if (is_nil (hor)) scx = ex1- (x1()- ox); if (is_nil (ver)) scy = ey1- (y1()- oy); a[0]->ox = ox -scx; a[0]->oy = oy -scy ; a[0]->w = ex2-ex1; a[0]->h = ey2-ey1; if (attached ()) this << emit_invalidate_all (); if (!is_nil (hor)) hor << emit_bar_set_extents (ex1, ex2); if (!is_nil (ver)) ver << emit_bar_set_extents (ey1, ey2); }
void file_list_widget_rep::handle_set_string (set_string_event ev) { if (ev->which == "directory") { dir= ev->s; bool flag; names= read_directory (url_system (dir), flag); lids= array<bool>(N(names)); for (int i=0; i<N(names); i++) lids[i]= list_in_directory (dir, names[i], suffix, dir_flag); SI w, h; this << get_size (w, h, 0); get_canvas () << set_extents (0, -h, w, 0); hilight=-1; if (attached ()) this << emit_invalidate_all (); } else attribute_widget_rep::handle_set_string (ev); }
void file_list_widget_rep::handle_mouse (mouse_event ev) { string type= ev->type; if ((type == "release-left") || (type == "release-right")) { int i; SI y= 0, search= ev->y*3; metric ex; font fn= get_default_font (); for (i=0; i<N(names); i++) if (lids[i]) { fn->var_get_extents (names[i], ex); if ((search >= (y+ fn->y1- fn->y2- 12*PIXEL)) && (search < y)) break; y += fn->y1- fn->y2- 12*PIXEL; } if (i==N(names)) return; string s= names[i]; wk_widget fch_wid (fch); if (hilight == i) { if (dir_flag) { string name= as_string (url_system (dir, s)); fch_wid << set_string ("directory", name); } else fch_wid << set_string ("return", s); } else { hilight= i; if (!dir_flag) fch_wid << set_string ("file", s); this << emit_invalidate_all (); } } if ((type == "press-up") || (type == "press-down")) { SI x, y, dy= 100*PIXEL; if (type == "press-down") dy= -dy; get_canvas () << get_coord2 ("scroll position", x, y); y += dy; get_canvas () << set_scroll_pos (x, y); } }