using System; using System.Collections; using System.Runtime.InteropServices; namespace IgeMacIntegration { public class IgeMacMenu { [DllImport("libigemacintegration.dylib")] static extern void ige_mac_menu_connect_window_key_handler(IntPtr window); public static void ConnectWindowKeyHandler(Gtk.Window window) { ige_mac_menu_connect_window_key_handler(window.Handle); } [DllImport("libigemacintegration.dylib")] static extern void ige_mac_menu_set_global_key_handler_enabled(bool enabled); public static bool GlobalKeyHandlerEnabled { set { ige_mac_menu_set_global_key_handler_enabled(value); } } [DllImport("libigemacintegration.dylib")] static extern void ige_mac_menu_set_menu_bar(IntPtr menu_shell); public static Gtk.MenuShell MenuBar { set { ige_mac_menu_set_menu_bar(value == null ? IntPtr.Zero : value.Handle); } } [DllImport("libigemacintegration.dylib")] static extern void ige_mac_menu_set_quit_menu_item(IntPtr quit_item); public static Gtk.MenuItem QuitMenuItem { set { ige_mac_menu_set_quit_menu_item(value == null ? IntPtr.Zero : value.Handle); } } [DllImport("libigemacintegration.dylib")] static extern IntPtr ige_mac_menu_add_app_menu_group(); public static IgeMacIntegration.IgeMacMenuGroup AddAppMenuGroup() { IntPtr raw_ret = ige_mac_menu_add_app_menu_group(); IgeMacIntegration.IgeMacMenuGroup ret = raw_ret == IntPtr.Zero ? null : (IgeMacIntegration.IgeMacMenuGroup)GLib.Opaque.GetOpaque(raw_ret, typeof(IgeMacIntegration.IgeMacMenuGroup), false); return ret; } } public class IgeMacMenuGroup : GLib.Opaque { [DllImport("libigemacintegration.dylib")] static extern void ige_mac_menu_add_app_menu_item(IntPtr raw, IntPtr menu_item, IntPtr label); public void AddMenuItem(Gtk.MenuItem menu_item, string label) { IntPtr native_label = GLib.Marshaller.StringToPtrGStrdup(label); ige_mac_menu_add_app_menu_item(Handle, menu_item == null ? IntPtr.Zero : menu_item.Handle, native_label); GLib.Marshaller.Free(native_label); } public IgeMacMenuGroup(IntPtr raw) : base(raw) { } } }