mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-05 17:37:51 +08:00
239 lines
7.3 KiB
C#
239 lines
7.3 KiB
C#
using CPF.Mac.CoreGraphics;
|
|
using CPF.Mac.Foundation;
|
|
using CPF.Mac.ObjCRuntime;
|
|
using System;
|
|
using System.ComponentModel;
|
|
|
|
namespace CPF.Mac.AppKit
|
|
{
|
|
[Register("NSHelpManager", true)]
|
|
public class NSHelpManager : NSObject
|
|
{
|
|
private static readonly IntPtr selIsContextHelpModeActiveHandle = Selector.GetHandle("isContextHelpModeActive");
|
|
|
|
private static readonly IntPtr selSetContextHelpModeActive_Handle = Selector.GetHandle("setContextHelpModeActive:");
|
|
|
|
private static readonly IntPtr selSharedHelpManagerHandle = Selector.GetHandle("sharedHelpManager");
|
|
|
|
private static readonly IntPtr selSetContextHelpForObject_Handle = Selector.GetHandle("setContextHelp:forObject:");
|
|
|
|
private static readonly IntPtr selRemoveContextHelpForObject_Handle = Selector.GetHandle("removeContextHelpForObject:");
|
|
|
|
private static readonly IntPtr selContextHelpForObject_Handle = Selector.GetHandle("contextHelpForObject:");
|
|
|
|
private static readonly IntPtr selShowContextHelpForObjectLocationHint_Handle = Selector.GetHandle("showContextHelpForObject:locationHint:");
|
|
|
|
private static readonly IntPtr selOpenHelpAnchorInBook_Handle = Selector.GetHandle("openHelpAnchor:inBook:");
|
|
|
|
private static readonly IntPtr selFindStringInBook_Handle = Selector.GetHandle("findString:inBook:");
|
|
|
|
private static readonly IntPtr selRegisterBooksInBundle_Handle = Selector.GetHandle("registerBooksInBundle:");
|
|
|
|
private static readonly IntPtr class_ptr = Class.GetHandle("NSHelpManager");
|
|
|
|
public override IntPtr ClassHandle => class_ptr;
|
|
|
|
public static bool ContextHelpModeActive
|
|
{
|
|
[Export("isContextHelpModeActive")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
return Messaging.bool_objc_msgSend(class_ptr, selIsContextHelpModeActiveHandle);
|
|
}
|
|
[Export("setContextHelpModeActive:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
Messaging.void_objc_msgSend_bool(class_ptr, selSetContextHelpModeActive_Handle, value);
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
[Export("init")]
|
|
public NSHelpManager()
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend(base.Handle, Selector.Init);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.Init);
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
[Export("initWithCoder:")]
|
|
public NSHelpManager(NSCoder coder)
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle);
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public NSHelpManager(NSObjectFlag t)
|
|
: base(t)
|
|
{
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public NSHelpManager(IntPtr handle)
|
|
: base(handle)
|
|
{
|
|
}
|
|
|
|
[Export("sharedHelpManager")]
|
|
public static NSHelpManager SharedHelpManager()
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
return (NSHelpManager)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(class_ptr, selSharedHelpManagerHandle));
|
|
}
|
|
|
|
[Export("setContextHelp:forObject:")]
|
|
public virtual void SetContext(NSAttributedString attrString, NSObject theObject)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (attrString == null)
|
|
{
|
|
throw new ArgumentNullException("attrString");
|
|
}
|
|
if (theObject == null)
|
|
{
|
|
throw new ArgumentNullException("theObject");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr_IntPtr(base.Handle, selSetContextHelpForObject_Handle, attrString.Handle, theObject.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selSetContextHelpForObject_Handle, attrString.Handle, theObject.Handle);
|
|
}
|
|
}
|
|
|
|
[Export("removeContextHelpForObject:")]
|
|
public virtual void RemoveContext(NSObject theObject)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (theObject == null)
|
|
{
|
|
throw new ArgumentNullException("theObject");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selRemoveContextHelpForObject_Handle, theObject.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selRemoveContextHelpForObject_Handle, theObject.Handle);
|
|
}
|
|
}
|
|
|
|
[Export("contextHelpForObject:")]
|
|
public virtual NSAttributedString Context(NSObject theObject)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (theObject == null)
|
|
{
|
|
throw new ArgumentNullException("theObject");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
return (NSAttributedString)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selContextHelpForObject_Handle, theObject.Handle));
|
|
}
|
|
return (NSAttributedString)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selContextHelpForObject_Handle, theObject.Handle));
|
|
}
|
|
|
|
[Export("showContextHelpForObject:locationHint:")]
|
|
public virtual bool ShowContext(NSObject theObject, CGPoint pt)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (theObject == null)
|
|
{
|
|
throw new ArgumentNullException("theObject");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend_IntPtr_CGPoint(base.Handle, selShowContextHelpForObjectLocationHint_Handle, theObject.Handle, pt);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper_IntPtr_CGPoint(base.SuperHandle, selShowContextHelpForObjectLocationHint_Handle, theObject.Handle, pt);
|
|
}
|
|
|
|
[Export("openHelpAnchor:inBook:")]
|
|
public virtual void OpenHelpAnchor(string anchor, string book)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (anchor == null)
|
|
{
|
|
throw new ArgumentNullException("anchor");
|
|
}
|
|
if (book == null)
|
|
{
|
|
throw new ArgumentNullException("book");
|
|
}
|
|
IntPtr intPtr = NSString.CreateNative(anchor);
|
|
IntPtr intPtr2 = NSString.CreateNative(book);
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr_IntPtr(base.Handle, selOpenHelpAnchorInBook_Handle, intPtr, intPtr2);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selOpenHelpAnchorInBook_Handle, intPtr, intPtr2);
|
|
}
|
|
NSString.ReleaseNative(intPtr);
|
|
NSString.ReleaseNative(intPtr2);
|
|
}
|
|
|
|
[Export("findString:inBook:")]
|
|
public virtual void FindString(string query, string book)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (query == null)
|
|
{
|
|
throw new ArgumentNullException("query");
|
|
}
|
|
if (book == null)
|
|
{
|
|
throw new ArgumentNullException("book");
|
|
}
|
|
IntPtr intPtr = NSString.CreateNative(query);
|
|
IntPtr intPtr2 = NSString.CreateNative(book);
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr_IntPtr(base.Handle, selFindStringInBook_Handle, intPtr, intPtr2);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selFindStringInBook_Handle, intPtr, intPtr2);
|
|
}
|
|
NSString.ReleaseNative(intPtr);
|
|
NSString.ReleaseNative(intPtr2);
|
|
}
|
|
|
|
[Export("registerBooksInBundle:")]
|
|
public virtual bool RegisterBooks(NSBundle bundle)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (bundle == null)
|
|
{
|
|
throw new ArgumentNullException("bundle");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend_IntPtr(base.Handle, selRegisterBooksInBundle_Handle, bundle.Handle);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper_IntPtr(base.SuperHandle, selRegisterBooksInBundle_Handle, bundle.Handle);
|
|
}
|
|
}
|
|
}
|