aboutsummaryrefslogtreecommitdiffhomepage
path: root/ide/coqide_main.ml4
diff options
context:
space:
mode:
authorGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-09-17 14:26:49 +0000
committerGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-09-17 14:26:49 +0000
commita6dac9962929d724c08c9a74a8e05de06469a1a0 (patch)
tree50b0390b38f18c27c2c171c1cbfd130200fa6289 /ide/coqide_main.ml4
parent26f21ad4387a2e9b9c16712859881fee5625f79b (diff)
MacOS integration uses lablgtkosx >= 1.1
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15814 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'ide/coqide_main.ml4')
-rw-r--r--ide/coqide_main.ml443
1 files changed, 25 insertions, 18 deletions
diff --git a/ide/coqide_main.ml4 b/ide/coqide_main.ml4
index 91ae8a96b..b3eee72db 100644
--- a/ide/coqide_main.ml4
+++ b/ide/coqide_main.ml4
@@ -6,19 +6,6 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-IFDEF QUARTZ THEN
-external gtk_mac_init : (string -> unit) -> (unit -> bool) -> unit
- = "caml_gtk_mac_init"
-
-external gtk_mac_ready : ([> Gtk.widget ] as 'a) Gtk.obj -> ([> Gtk.widget ] as 'a) Gtk.obj ->
- ([> Gtk.widget ] as 'a) Gtk.obj -> unit
- = "caml_gtk_mac_ready"
-END
-
-let initmac () = IFDEF QUARTZ THEN gtk_mac_init Coqide.do_load Coqide.forbid_quit_to_save ELSE () END
-
-let macready x y z = IFDEF QUARTZ THEN gtk_mac_ready x#as_widget y#as_widget z#as_widget ELSE () END
-
(* On win32, we add the directory of coqide to the PATH at launch-time
(this used to be done in a .bat script). *)
@@ -66,8 +53,19 @@ END
let () =
Coqide.ignore_break ();
- ignore (GtkMain.Main.init ());
- initmac ();
+ ignore (GtkMain.Main.init ())
+
+IFDEF QUARTZ THEN
+ let osx = GOSXApplication.osxapplication ()
+
+ let _ =
+ osx#connect#ns_application_open_file ~callback:(fun x -> Coqide.do_load x; true) in
+ let _ =
+ osx#connect#ns_application_block_termination ~callback:Coqide.forbid_quit_to_save in
+ ()
+END
+
+let () =
(* Statup preferences *)
begin
try Preferences.load_pref ()
@@ -90,9 +88,18 @@ let () =
Coq.check_connection args;
Coqide.sup_args := args;
Coqide.main files;
- if !Coq_config.with_geoproof then ignore (Thread.create Coqide.check_for_geoproof_input ());
- macready (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar") (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar/Edit/Prefs")
- (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar/Help/Abt");
+ if !Coq_config.with_geoproof then ignore (Thread.create Coqide.check_for_geoproof_input ())
+
+IFDEF QUARTZ THEN
+ let () =
+ GtkOSXApplication.OSXApplication.set_menu_bar osx#as_osxapplication (GtkMenu.MenuShell.cast (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar")#as_widget) in
+ let () =
+ GtkOSXApplication.OSXApplication.insert_app_menu_item osx#as_osxapplication (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar/Edit/Prefs")#as_widget 1 in
+ let () =
+ GtkOSXApplication.OSXApplication.set_help_menu osx#as_osxapplication (Some (GtkMenu.MenuItem.cast (Coqide_ui.ui_m#get_widget "/CoqIde MenuBar/Help")#as_widget)) in
+ osx#ready ()
+END
+
while true do
try
GtkThread.main ()