79 lines
2.5 KiB
C#
79 lines
2.5 KiB
C#
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) { }
|
|
}
|
|
}
|