* http://helm.cs.unibo.it/
*)
+open MatitaGtkMisc
+
exception Not_implemented of string
let not_implemented feature = raise (Not_implemented feature)
let _ = GMain.Main.init ()
let gui = new MatitaGui.gui (Helm_registry.get "matita.glade_file")
-let interactive_user_uri_choice
- ~(selection_mode:[`MULTIPLE|`SINGLE]) ?(nonvars_button=false) ~title ~msg
- uris
-=
- let only_constant_choices =
- lazy
- (List.filter
- (fun uri -> not (String.sub uri (String.length uri - 4) 4 = ".var"))
- uris)
- in
- if (selection_mode <> `SINGLE) &&
- (Helm_registry.get_bool "matita.auto_disambiguation")
- then
- Lazy.force only_constant_choices
- else begin
- let win = gui#uriChoice in
- let choices = ref [] in
- let chosen = ref false in
- let use_only_constants = ref false in
- win#uriChoiceDialog#set_title title;
- win#uriChoiceLabel#set_text msg;
- gui#uriChoices#list_store#clear ();
- List.iter gui#uriChoices#easy_append uris;
- win#uriChoiceConstantsButton#misc#set_sensitive nonvars_button;
- let bye = ref (fun () -> ()) in
- let id1 =
- win#uriChoiceConstantsButton#connect#clicked (fun _ ->
- use_only_constants := true;
- !bye ())
- in
- let id2 =
- win#uriChoiceAutoButton#connect#clicked (fun _ ->
- use_only_constants := true ;
- Helm_registry.set_bool "matita.auto_disambiguation" true;
- !bye ())
- in
- let id3 =
- win#uriChoiceSelectedButton#connect#clicked (fun _ ->
- choices := gui#uriChoices#easy_selection ();
- !bye ())
- in
- bye := (fun () ->
- win#uriChoiceDialog#misc#hide ();
- win#uriChoiceConstantsButton#misc#disconnect id1;
- win#uriChoiceAutoButton#misc#disconnect id2;
- win#uriChoiceSelectedButton#misc#disconnect id3;
- prerr_endline "quit";
- GMain.Main.quit ());
- win#uriChoiceDialog#show ();
- GtkThread.main ();
- if !use_only_constants then
- Lazy.force only_constant_choices
- else
- match !choices with
- | [] -> error "No choice"
- | choices -> choices
- end
-
-(*
-module DisambiguateCallbacks =
- struct
- let interactive_user_uri_choice =
- assert false (* TODO *)
-(* interactive_user_uri_choice *)
- let interactive_interpretation_choice choices =
- assert false (* TODO *)
- let input_or_locate_uri ~title =
- assert false (* TODO *)
- end
-*)
-
-let debugDialog () =
- let dialog =
- new MatitaGeneratedGui.debug
- ~file:(Helm_registry.get "matita.glade_file") ()
- in
- let retval = ref None in
- let return v =
- retval := Some v;
- dialog#debug#destroy ();
- GMain.Main.quit ()
- in
- ignore (dialog#debug#event#connect#delete (fun _ -> true));
- ignore (dialog#okbutton2#connect#clicked (fun _ -> return 1));
- ignore (dialog#cancelbutton2#connect#clicked (fun _ -> return 2));
- dialog#debug#show ();
- GtkThread.main ();
- (match !retval with None -> assert false | Some v -> v)
-
-let _ =
- gui#main#debugMenuItem2#connect#activate (fun _ ->
- prerr_endline (string_of_int (debugDialog ())))
-
(** quit program, possibly asking for confirmation *)
let quit () = GMain.Main.quit ()
let _ = gui#setQuitCallback quit
-let _ =
- gui#main#debugMenuItem0#connect#activate (fun _ ->
- let uris =
- interactive_user_uri_choice
- ~selection_mode:`MULTIPLE
- ~nonvars_button:false
- ~title:"titolo"
- ~msg:"messaggio"
- ["cic:/uno.con"; "cic:/due.var"; "cic:/tre.con"; "cic:/quattro.con";
- "cic:/cinque.var"]
- in
- List.iter prerr_endline uris; print_newline ())
-let _ =
- gui#main#debugMenuItem1#connect#activate (fun _ ->
+let _ = gui#main#debugMenu#misc#hide ()
+
+ (** <DEBUGGING> *)
+if BuildTimeConf.debug then begin
+ gui#main#debugMenu#misc#show ();
+ let addDebugItem ~label callback =
+ let item = GMenu.menu_item ~label () in
+ gui#main#debugMenu_menu#append item;
+ ignore (item#connect#activate callback);
+ in
+ addDebugItem "interactive user uri choice" (fun _ ->
+ try
+ let uris =
+ interactive_user_uri_choice ~gui ~selection_mode:`MULTIPLE
+ ~title:"titolo" ~msg:"messaggio" ~nonvars_button:true
+ ["cic:/uno.con"; "cic:/due.var"; "cic:/tre.con"; "cic:/quattro.con";
+ "cic:/cinque.var"]
+ in
+ List.iter prerr_endline uris
+ with No_choice -> error "no choice");
+ addDebugItem "toggle auto disambiguation" (fun _ ->
Helm_registry.set_bool "matita.auto_disambiguation"
(not (Helm_registry.get_bool "matita.auto_disambiguation")))
+end
+ (** </DEBUGGING> *)
-let _ =
-(* gui#uriChoices#easy_append "pippo"; *)
-(* gui#uriChoices#list_store#clear (); *)
- GtkThread.main ()
+let _ = GtkThread.main ()