(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* "") && (search = self#get_selected_word ()) method replace () = if self#may_replace () then let _ = view#buffer#delete_selection () in let _ = view#buffer#insert_interactive r_replace_entry#text in self#find_forward () else self#find_forward () method replace_all () = let rec replace_at (iter : GText.iter) = let found = iter#forward_search self#search_text in match found with | None -> () | Some (start, stop) -> let start_mark = view#buffer#create_mark start in let stop_mark = view#buffer#create_mark ~left_gravity:false stop in let _ = view#buffer#delete_interactive ~start ~stop () in let iter = view#buffer#get_iter_at_mark (`MARK start_mark) in let _ = view#buffer#insert_interactive ~iter r_replace_entry#text in let next = view#buffer#get_iter_at_mark (`MARK stop_mark) in let () = view#buffer#delete_mark (`MARK start_mark) in let () = view#buffer#delete_mark (`MARK stop_mark) in replace_at next in replace_at view#buffer#start_iter method private set_not_found () = find_entry#misc#modify_base [`NORMAL, `NAME "#F7E6E6"]; r_find_entry#misc#modify_base [`NORMAL, `NAME "#F7E6E6"]; method private set_found () = find_entry#misc#modify_base [`NORMAL, `NAME "#BAF9CE"]; r_find_entry#misc#modify_base [`NORMAL, `NAME "#BAF9CE"] method private set_normal () = find_entry#misc#modify_base [`NORMAL, `NAME "white"]; r_find_entry#misc#modify_base [`NORMAL, `NAME "white"] method private find_from backward (starti : GText.iter) text = let found = if backward then starti#backward_search text else starti#forward_search text in match found with | None -> if not backward && not (starti#equal view#buffer#start_iter) then self#find_from backward view#buffer#start_iter text else if backward && not (starti#equal view#buffer#end_iter) then self#find_from backward view#buffer#end_iter text else self#set_not_found () | Some (start, stop) -> let _ = view#buffer#select_range start stop in let scroll = `MARK (view#buffer#create_mark stop) in let _ = view#scroll_to_mark ~use_align:false scroll in self#set_found () method find_forward () = let starti = view#buffer#get_iter `SEL_BOUND in self#find_from false starti self#search_text method find_backward () = let starti = view#buffer#get_iter `INSERT in self#find_from true starti self#search_text method private search_text = match mode with | Find -> find_entry#text | Replace -> r_find_entry#text method hide () = widget#misc#hide (); view#coerce#misc#grab_focus () method show_find () = mode <- Find; let search = if self#coerce#misc#visible then r_find_entry#text else self#get_selected_word () in self#set_normal (); find_entry#set_text search; widget#misc#show (); find_box#misc#show (); replace_box#misc#hide (); find_entry#misc#grab_focus () method show_replace () = mode <- Replace; let search = if self#coerce#misc#visible then find_entry#text else self#get_selected_word () in self#set_normal (); r_find_entry#set_text search; widget#misc#show (); find_box#misc#hide (); replace_box#misc#show (); r_find_entry#misc#grab_focus () initializer let _ = self#hide () in let _ = next_button#connect#clicked self#find_forward in let _ = previous_button#connect#clicked self#find_backward in let _ = r_next_button#connect#clicked self#find_forward in let _ = r_previous_button#connect#clicked self#find_backward in let _ = r_replace_button#connect#clicked self#replace in let _ = r_replace_all_button#connect#clicked self#replace_all in () end