+let gui_instance = ref None ;;
+
+class console ~evbox ~phrase_sep ~packing ~paned () =
+ let console = MatitaConsole.console ~evbox ~phrase_sep ~packing ~paned () in
+ object
+ method clear = console#clear
+ method echo_error = console#echo_error
+ method echo_message = console#echo_message
+ method wrap_exn: 'a. (unit -> 'a) -> 'a option = console#wrap_exn
+ method choose_uri uris =
+ let g = match !gui_instance with None -> assert false | Some g -> g in
+ let ul = g#newUriDialog () in
+ ul#toplevel#show ();
+ let model = new stringListModel ul#uriChoiceTreeView in
+ List.iter model#easy_append uris;
+ ul#uriChoiceDialog#set_title "Hints";
+ ul#uriChoiceLabel#set_text "Suggested uris";
+ ul#uriChoiceAbortButton#misc#hide ();
+ ul#uriChoiceAutoButton#misc#hide ();
+ ul#uriChoiceConstantsButton#misc#hide ();
+ ul#hbox2#misc#hide ();
+ ul#uriChoiceTreeView#selection#set_mode
+ (`SINGLE :> Gtk.Tags.selection_mode);
+ let _ = ul#uriChoiceTreeView#selection#connect#changed
+ ~callback:(fun () -> ()) in
+ let _ = ul#toplevel#connect#destroy
+ ~callback:(fun () -> GMain.Main.quit ()) in
+ let choices = ref None in
+ let _ = ul#uriChoiceSelectedButton#connect#clicked
+ ~callback:(fun () ->
+ (match model#easy_selection () with
+ | [] -> ()
+ | [uri] -> choices := (Some uri)
+ | _ -> assert false);
+ ul#uriChoiceDialog#destroy ();
+ GMain.Main.quit ()) in
+ GMain.main ();
+ match !choices with
+ | Some u -> u
+ | None -> raise MatitaTypes.Cancel
+
+ method show = console#show
+
+ method console = console
+ end
+