---------------------------------------------------------------------------- --# GtkEntry - text selection, selection bounds ---------------------------------------------------------------------------- include GtkEngine.e include euphoria/info.e constant docs = `Text Selection Highlight some text, then click OK ` constant win = create(GtkWindow,"position=1,border=10,size=380x160,$destroy=Quit") constant panel = create(GtkBox,"orientation=VERTICAL,spacing=10") add(win,panel) constant ed = create(GtkEntry,{ {"text","Now is the time for all good men..."}, {"activates default",TRUE}}) -- allow key to activate OK btn; pack(panel,ed,TRUE,TRUE) constant lbl2 = create(GtkLabel) set(lbl2,"markup",docs) add(panel,lbl2) constant clicked = call_back(routine_id("Clicked")) constant box = create(GtkButtonBox) constant btn1 = create(GtkButton,"gtk-quit","Quit") constant btn2 = create(GtkButton,"gtk-ok",clicked) set(btn2,"can default",TRUE) -- allow OK btn to be a default btn set(win,"default",btn2) -- tell window that OK btn is the default add(box,{btn1,btn2}) pack(panel,-box) show_all(win) main() -------------------- function Clicked() -------------------- integer start, fini object tmp = get(ed,"selection bounds") integer position = get(ed,"position") if sequence(tmp) then start = tmp[1] fini = tmp[2] sequence selected_chars = get(ed,"chars",start,fini) set(lbl2,"markup", sprintf("Position: %d, start %d, fini %d\nSelected text: %s", {position,start,fini,selected_chars})) else set(lbl2,"text",sprintf("position: %d, none selected",position)) end if return 1 end function