CPF/CPF.Mac/Mac/AppKit/NSForm.cs
2023-11-21 23:05:03 +08:00

424 lines
13 KiB
C#

using CPF.Mac.CoreGraphics;
using CPF.Mac.Foundation;
using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
namespace CPF.Mac.AppKit
{
[Register("NSForm", true)]
public class NSForm : NSMatrix
{
private static readonly IntPtr selIndexOfSelectedItemHandle = Selector.GetHandle("indexOfSelectedItem");
private static readonly IntPtr selInitWithFrame_Handle = Selector.GetHandle("initWithFrame:");
private static readonly IntPtr selInitWithFrameModePrototypeNumberOfRowsNumberOfColumns_Handle = Selector.GetHandle("initWithFrame:mode:prototype:numberOfRows:numberOfColumns:");
private static readonly IntPtr selInitWithFrameModeCellClassNumberOfRowsNumberOfColumns_Handle = Selector.GetHandle("initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:");
private static readonly IntPtr selSetEntryWidth_Handle = Selector.GetHandle("setEntryWidth:");
private static readonly IntPtr selSetInterlineSpacing_Handle = Selector.GetHandle("setInterlineSpacing:");
private static readonly IntPtr selSetBordered_Handle = Selector.GetHandle("setBordered:");
private static readonly IntPtr selSetBezeled_Handle = Selector.GetHandle("setBezeled:");
private static readonly IntPtr selSetTitleAlignment_Handle = Selector.GetHandle("setTitleAlignment:");
private static readonly IntPtr selSetTextAlignment_Handle = Selector.GetHandle("setTextAlignment:");
private static readonly IntPtr selSetTitleFont_Handle = Selector.GetHandle("setTitleFont:");
private static readonly IntPtr selSetTextFont_Handle = Selector.GetHandle("setTextFont:");
private static readonly IntPtr selCellAtIndex_Handle = Selector.GetHandle("cellAtIndex:");
private static readonly IntPtr selDrawCellAtIndex_Handle = Selector.GetHandle("drawCellAtIndex:");
private static readonly IntPtr selAddEntry_Handle = Selector.GetHandle("addEntry:");
private static readonly IntPtr selInsertEntryAtIndex_Handle = Selector.GetHandle("insertEntry:atIndex:");
private static readonly IntPtr selRemoveEntryAtIndex_Handle = Selector.GetHandle("removeEntryAtIndex:");
private static readonly IntPtr selIndexOfCellWithTag_Handle = Selector.GetHandle("indexOfCellWithTag:");
private static readonly IntPtr selSelectTextAtIndex_Handle = Selector.GetHandle("selectTextAtIndex:");
private static readonly IntPtr selSetFrameSize_Handle = Selector.GetHandle("setFrameSize:");
private static readonly IntPtr selSetTitleBaseWritingDirection_Handle = Selector.GetHandle("setTitleBaseWritingDirection:");
private static readonly IntPtr selSetTextBaseWritingDirection_Handle = Selector.GetHandle("setTextBaseWritingDirection:");
private static readonly IntPtr class_ptr = Class.GetHandle("NSForm");
public override IntPtr ClassHandle => class_ptr;
public virtual long SelectedItemIndex
{
[Export("indexOfSelectedItem")]
get
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Messaging.Int64_objc_msgSend(base.Handle, selIndexOfSelectedItemHandle);
}
return Messaging.Int64_objc_msgSendSuper(base.SuperHandle, selIndexOfSelectedItemHandle);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSForm()
: 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 NSForm(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 NSForm(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSForm(IntPtr handle)
: base(handle)
{
}
[Export("initWithFrame:")]
public NSForm(CGRect frameRect)
: base(NSObjectFlag.Empty)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_CGRect(base.Handle, selInitWithFrame_Handle, frameRect);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_CGRect(base.SuperHandle, selInitWithFrame_Handle, frameRect);
}
}
[Export("initWithFrame:mode:prototype:numberOfRows:numberOfColumns:")]
public NSForm(CGRect frameRect, NSMatrixMode aMode, NSCell aCell, long rowsHigh, long colsWide)
: base(NSObjectFlag.Empty)
{
NSApplication.EnsureUIThread();
if (aCell == null)
{
throw new ArgumentNullException("aCell");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_CGRect_int_IntPtr_Int64_Int64(base.Handle, selInitWithFrameModePrototypeNumberOfRowsNumberOfColumns_Handle, frameRect, (int)aMode, aCell.Handle, rowsHigh, colsWide);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_CGRect_int_IntPtr_Int64_Int64(base.SuperHandle, selInitWithFrameModePrototypeNumberOfRowsNumberOfColumns_Handle, frameRect, (int)aMode, aCell.Handle, rowsHigh, colsWide);
}
}
[Export("initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:")]
public NSForm(CGRect frameRect, NSMatrixMode aMode, Class factoryId, long rowsHigh, long colsWide)
: base(NSObjectFlag.Empty)
{
NSApplication.EnsureUIThread();
if (factoryId == null)
{
throw new ArgumentNullException("factoryId");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_CGRect_int_IntPtr_Int64_Int64(base.Handle, selInitWithFrameModeCellClassNumberOfRowsNumberOfColumns_Handle, frameRect, (int)aMode, factoryId.Handle, rowsHigh, colsWide);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_CGRect_int_IntPtr_Int64_Int64(base.SuperHandle, selInitWithFrameModeCellClassNumberOfRowsNumberOfColumns_Handle, frameRect, (int)aMode, factoryId.Handle, rowsHigh, colsWide);
}
}
[Export("setEntryWidth:")]
public virtual void SetEntryWidth(double width)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Double(base.Handle, selSetEntryWidth_Handle, width);
}
else
{
Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetEntryWidth_Handle, width);
}
}
[Export("setInterlineSpacing:")]
public virtual void SetInterlineSpacing(double spacing)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Double(base.Handle, selSetInterlineSpacing_Handle, spacing);
}
else
{
Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetInterlineSpacing_Handle, spacing);
}
}
[Export("setBordered:")]
public virtual void SetBordered(bool bordered)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_bool(base.Handle, selSetBordered_Handle, bordered);
}
else
{
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetBordered_Handle, bordered);
}
}
[Export("setBezeled:")]
public virtual void SetBezeled(bool bezeled)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_bool(base.Handle, selSetBezeled_Handle, bezeled);
}
else
{
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetBezeled_Handle, bezeled);
}
}
[Export("setTitleAlignment:")]
public virtual void SetTitleAlignment(NSTextAlignment mode)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_UInt64(base.Handle, selSetTitleAlignment_Handle, (ulong)mode);
}
else
{
Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetTitleAlignment_Handle, (ulong)mode);
}
}
[Export("setTextAlignment:")]
public virtual void SetTextAlignment(NSTextAlignment mode)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_UInt64(base.Handle, selSetTextAlignment_Handle, (ulong)mode);
}
else
{
Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetTextAlignment_Handle, (ulong)mode);
}
}
[Export("setTitleFont:")]
public virtual void SetTitleFont(NSFont fontObj)
{
NSApplication.EnsureUIThread();
if (fontObj == null)
{
throw new ArgumentNullException("fontObj");
}
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetTitleFont_Handle, fontObj.Handle);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetTitleFont_Handle, fontObj.Handle);
}
}
[Export("setTextFont:")]
public virtual void SetTextFont(NSFont fontObj)
{
NSApplication.EnsureUIThread();
if (fontObj == null)
{
throw new ArgumentNullException("fontObj");
}
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetTextFont_Handle, fontObj.Handle);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetTextFont_Handle, fontObj.Handle);
}
}
[Export("cellAtIndex:")]
public virtual NSObject CellAtIndex(long index)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_Int64(base.Handle, selCellAtIndex_Handle, index));
}
return Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_Int64(base.SuperHandle, selCellAtIndex_Handle, index));
}
[Export("drawCellAtIndex:")]
public virtual void DrawCellAtIndex(long index)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selDrawCellAtIndex_Handle, index);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selDrawCellAtIndex_Handle, index);
}
}
[Export("addEntry:")]
public virtual NSFormCell AddEntry(string title)
{
NSApplication.EnsureUIThread();
if (title == null)
{
throw new ArgumentNullException("title");
}
IntPtr intPtr = NSString.CreateNative(title);
NSFormCell result = (!IsDirectBinding) ? ((NSFormCell)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selAddEntry_Handle, intPtr))) : ((NSFormCell)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selAddEntry_Handle, intPtr)));
NSString.ReleaseNative(intPtr);
return result;
}
[Export("insertEntry:atIndex:")]
public virtual NSFormCell InsertEntryatIndex(string title, long index)
{
NSApplication.EnsureUIThread();
if (title == null)
{
throw new ArgumentNullException("title");
}
IntPtr intPtr = NSString.CreateNative(title);
NSFormCell result = (!IsDirectBinding) ? ((NSFormCell)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr_Int64(base.SuperHandle, selInsertEntryAtIndex_Handle, intPtr, index))) : ((NSFormCell)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_Int64(base.Handle, selInsertEntryAtIndex_Handle, intPtr, index)));
NSString.ReleaseNative(intPtr);
return result;
}
[Export("removeEntryAtIndex:")]
public virtual void RemoveEntryAtIndex(long index)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selRemoveEntryAtIndex_Handle, index);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selRemoveEntryAtIndex_Handle, index);
}
}
[Export("indexOfCellWithTag:")]
public virtual long IndexOfCellWithTag(long aTag)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Messaging.Int64_objc_msgSend_Int64(base.Handle, selIndexOfCellWithTag_Handle, aTag);
}
return Messaging.Int64_objc_msgSendSuper_Int64(base.SuperHandle, selIndexOfCellWithTag_Handle, aTag);
}
[Export("selectTextAtIndex:")]
public virtual void SelectTextAtIndex(long index)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selSelectTextAtIndex_Handle, index);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selSelectTextAtIndex_Handle, index);
}
}
[Export("setFrameSize:")]
public new virtual void SetFrameSize(CGSize newSize)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_CGSize(base.Handle, selSetFrameSize_Handle, newSize);
}
else
{
Messaging.void_objc_msgSendSuper_CGSize(base.SuperHandle, selSetFrameSize_Handle, newSize);
}
}
[Export("setTitleBaseWritingDirection:")]
public virtual void SetTitleBaseWritingDirection(NSWritingDirection writingDirection)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selSetTitleBaseWritingDirection_Handle, (long)writingDirection);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selSetTitleBaseWritingDirection_Handle, (long)writingDirection);
}
}
[Export("setTextBaseWritingDirection:")]
public virtual void SetTextBaseWritingDirection(NSWritingDirection writingDirection)
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selSetTextBaseWritingDirection_Handle, (long)writingDirection);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selSetTextBaseWritingDirection_Handle, (long)writingDirection);
}
}
}
}