let occurrence_panel main_ui =
let w = GPack.vbox () in
let selected_var_box = GPack.hbox ~packing:w#pack () in
ignore
(GMisc.label ~xalign:0.0 ~text:"Current var: "
~packing:(selected_var_box#pack ~expand:false) ());
let e = GMisc.label ~xalign:0.0
~selectable:true
~packing:(selected_var_box#pack ~expand:true ~fill:true)
()
in
e#set_use_markup true;
old_gtk_compat e#set_single_line_mode true;
let set_selected = GButton.button ~label:"Set selected"
~packing:selected_var_box#pack ()
in
let do_select localizable =
apply_on_vi
(fun vi -> find_occurrence main_ui vi ())
localizable
in
ignore (set_selected#connect#pressed
(fun () -> History.apply_on_selected do_select));
let enabled = Enabled.get () in
let enabled_button = GButton.check_button
~label:"Enable"
~packing:w#pack
~active:enabled
()
in
ignore
(enabled_button#connect#toggled
~callback:
(fun () ->
Enabled.set enabled_button#active;
!show_column ();
main_ui#rehighlight ()));
let followFocus = GButton.check_button
~label:"Follow focus"
~packing:w#pack
~active:(FollowFocus.get ())
()
in
ignore
(followFocus#connect#toggled
~callback:(fun () -> FollowFocus.set followFocus#active));
let refresh =
let old_vi = ref (-2) in
fun () ->
(let sensitive_set_selected_button = ref false in
History.apply_on_selected
(apply_on_vi (fun _ -> sensitive_set_selected_button:=true));
set_selected#misc#set_sensitive !sensitive_set_selected_button;
if Enabled.get () <> enabled_button#active then (
enabled_button#set_active (Enabled.get ());
!show_column ();
);
let new_result = !Db.Occurrence.get_last_result () in
(match new_result with
| None when !old_vi<> -1 ->
old_vi := -1; e#set_label "<i>None</i>"
| Some (_,vi) when vi.vid<> !old_vi->
old_vi := vi.vid;
e#set_label vi.vname
| _ -> ()))
in
"Occurrence",w#coerce,Some refresh