using CPF.Mac.CoreGraphics;
using CPF.Mac.Foundation;
using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;

namespace CPF.Mac.AppKit
{
	[Register("NSPrintInfo", true)]
	public class NSPrintInfo : NSObject
	{
		private static readonly IntPtr selDictionaryHandle = Selector.GetHandle("dictionary");

		private static readonly IntPtr selImageablePageBoundsHandle = Selector.GetHandle("imageablePageBounds");

		private static readonly IntPtr selLocalizedPaperNameHandle = Selector.GetHandle("localizedPaperName");

		private static readonly IntPtr selDefaultPrinterHandle = Selector.GetHandle("defaultPrinter");

		private static readonly IntPtr selPrintSettingsHandle = Selector.GetHandle("printSettings");

		private static readonly IntPtr selSharedPrintInfoHandle = Selector.GetHandle("sharedPrintInfo");

		private static readonly IntPtr selSetSharedPrintInfo_Handle = Selector.GetHandle("setSharedPrintInfo:");

		private static readonly IntPtr selPaperNameHandle = Selector.GetHandle("paperName");

		private static readonly IntPtr selSetPaperName_Handle = Selector.GetHandle("setPaperName:");

		private static readonly IntPtr selPaperSizeHandle = Selector.GetHandle("paperSize");

		private static readonly IntPtr selSetPaperSize_Handle = Selector.GetHandle("setPaperSize:");

		private static readonly IntPtr selOrientationHandle = Selector.GetHandle("orientation");

		private static readonly IntPtr selSetOrientation_Handle = Selector.GetHandle("setOrientation:");

		private static readonly IntPtr selScalingFactorHandle = Selector.GetHandle("scalingFactor");

		private static readonly IntPtr selSetScalingFactor_Handle = Selector.GetHandle("setScalingFactor:");

		private static readonly IntPtr selLeftMarginHandle = Selector.GetHandle("leftMargin");

		private static readonly IntPtr selSetLeftMargin_Handle = Selector.GetHandle("setLeftMargin:");

		private static readonly IntPtr selRightMarginHandle = Selector.GetHandle("rightMargin");

		private static readonly IntPtr selSetRightMargin_Handle = Selector.GetHandle("setRightMargin:");

		private static readonly IntPtr selTopMarginHandle = Selector.GetHandle("topMargin");

		private static readonly IntPtr selSetTopMargin_Handle = Selector.GetHandle("setTopMargin:");

		private static readonly IntPtr selBottomMarginHandle = Selector.GetHandle("bottomMargin");

		private static readonly IntPtr selSetBottomMargin_Handle = Selector.GetHandle("setBottomMargin:");

		private static readonly IntPtr selIsHorizontallyCenteredHandle = Selector.GetHandle("isHorizontallyCentered");

		private static readonly IntPtr selSetHorizontallyCentered_Handle = Selector.GetHandle("setHorizontallyCentered:");

		private static readonly IntPtr selIsVerticallyCenteredHandle = Selector.GetHandle("isVerticallyCentered");

		private static readonly IntPtr selSetVerticallyCentered_Handle = Selector.GetHandle("setVerticallyCentered:");

		private static readonly IntPtr selHorizontalPaginationHandle = Selector.GetHandle("horizontalPagination");

		private static readonly IntPtr selSetHorizontalPagination_Handle = Selector.GetHandle("setHorizontalPagination:");

		private static readonly IntPtr selVerticalPaginationHandle = Selector.GetHandle("verticalPagination");

		private static readonly IntPtr selSetVerticalPagination_Handle = Selector.GetHandle("setVerticalPagination:");

		private static readonly IntPtr selJobDispositionHandle = Selector.GetHandle("jobDisposition");

		private static readonly IntPtr selSetJobDisposition_Handle = Selector.GetHandle("setJobDisposition:");

		private static readonly IntPtr selPrinterHandle = Selector.GetHandle("printer");

		private static readonly IntPtr selSetPrinter_Handle = Selector.GetHandle("setPrinter:");

		private static readonly IntPtr selIsSelectionOnlyHandle = Selector.GetHandle("isSelectionOnly");

		private static readonly IntPtr selSetSelectionOnly_Handle = Selector.GetHandle("setSelectionOnly:");

		private static readonly IntPtr selInitWithDictionary_Handle = Selector.GetHandle("initWithDictionary:");

		private static readonly IntPtr selSetUpPrintOperationDefaultValuesHandle = Selector.GetHandle("setUpPrintOperationDefaultValues");

		private static readonly IntPtr selPMPrintSessionHandle = Selector.GetHandle("PMPrintSession");

		private static readonly IntPtr selPMPageFormatHandle = Selector.GetHandle("PMPageFormat");

		private static readonly IntPtr selPMPrintSettingsHandle = Selector.GetHandle("PMPrintSettings");

		private static readonly IntPtr selUpdateFromPMPageFormatHandle = Selector.GetHandle("updateFromPMPageFormat");

		private static readonly IntPtr selUpdateFromPMPrintSettingsHandle = Selector.GetHandle("updateFromPMPrintSettings");

		private static readonly IntPtr class_ptr = Class.GetHandle("NSPrintInfo");

		private object __mt_Dictionary_var;

		private static object __mt_DefaultPrinter_var_static;

		private object __mt_PrintSettings_var;

		private static object __mt_SharedPrintInfo_var_static;

		private object __mt_Printer_var;

		public override IntPtr ClassHandle => class_ptr;

		public virtual NSMutableDictionary Dictionary
		{
			[Export("dictionary")]
			get
			{
				NSApplication.EnsureUIThread();
				return (NSMutableDictionary)(__mt_Dictionary_var = ((!IsDirectBinding) ? ((NSMutableDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selDictionaryHandle))) : ((NSMutableDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selDictionaryHandle)))));
			}
		}

		public virtual CGRect ImageablePageBounds
		{
			[Export("imageablePageBounds")]
			get
			{
				NSApplication.EnsureUIThread();
				CGRect retval;
				if (IsDirectBinding)
				{
					Messaging.CGRect_objc_msgSend_stret(out retval, base.Handle, selImageablePageBoundsHandle);
				}
				else
				{
					Messaging.CGRect_objc_msgSendSuper_stret(out retval, base.SuperHandle, selImageablePageBoundsHandle);
				}
				return retval;
			}
		}

		public virtual string LocalizedPaperName
		{
			[Export("localizedPaperName")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selLocalizedPaperNameHandle));
				}
				return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selLocalizedPaperNameHandle));
			}
		}

		public static NSPrinter DefaultPrinter
		{
			[Export("defaultPrinter")]
			get
			{
				NSApplication.EnsureUIThread();
				return (NSPrinter)(__mt_DefaultPrinter_var_static = (NSPrinter)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(class_ptr, selDefaultPrinterHandle)));
			}
		}

		public virtual NSMutableDictionary PrintSettings
		{
			[Export("printSettings")]
			get
			{
				NSApplication.EnsureUIThread();
				return (NSMutableDictionary)(__mt_PrintSettings_var = ((!IsDirectBinding) ? ((NSMutableDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPrintSettingsHandle))) : ((NSMutableDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selPrintSettingsHandle)))));
			}
		}

		public static NSPrintInfo SharedPrintInfo
		{
			[Export("sharedPrintInfo")]
			get
			{
				NSApplication.EnsureUIThread();
				return (NSPrintInfo)(__mt_SharedPrintInfo_var_static = (NSPrintInfo)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(class_ptr, selSharedPrintInfoHandle)));
			}
			[Export("setSharedPrintInfo:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (value == null)
				{
					throw new ArgumentNullException("value");
				}
				Messaging.void_objc_msgSend_IntPtr(class_ptr, selSetSharedPrintInfo_Handle, value.Handle);
			}
		}

		public virtual string PaperName
		{
			[Export("paperName")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selPaperNameHandle));
				}
				return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPaperNameHandle));
			}
			[Export("setPaperName:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (value == null)
				{
					throw new ArgumentNullException("value");
				}
				IntPtr intPtr = NSString.CreateNative(value);
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetPaperName_Handle, intPtr);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetPaperName_Handle, intPtr);
				}
				NSString.ReleaseNative(intPtr);
			}
		}

		public virtual CGSize PaperSize
		{
			[Export("paperSize")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.CGSize_objc_msgSend(base.Handle, selPaperSizeHandle);
				}
				return Messaging.CGSize_objc_msgSendSuper(base.SuperHandle, selPaperSizeHandle);
			}
			[Export("setPaperSize:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_CGSize(base.Handle, selSetPaperSize_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_CGSize(base.SuperHandle, selSetPaperSize_Handle, value);
				}
			}
		}

		public virtual NSPrintingOrientation Orientation
		{
			[Export("orientation")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return (NSPrintingOrientation)Messaging.UInt64_objc_msgSend(base.Handle, selOrientationHandle);
				}
				return (NSPrintingOrientation)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selOrientationHandle);
			}
			[Export("setOrientation:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_UInt64(base.Handle, selSetOrientation_Handle, (ulong)value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetOrientation_Handle, (ulong)value);
				}
			}
		}

		public virtual double ScalingFactor
		{
			[Export("scalingFactor")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.Double_objc_msgSend(base.Handle, selScalingFactorHandle);
				}
				return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selScalingFactorHandle);
			}
			[Export("setScalingFactor:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_Double(base.Handle, selSetScalingFactor_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetScalingFactor_Handle, value);
				}
			}
		}

		public virtual double LeftMargin
		{
			[Export("leftMargin")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.Double_objc_msgSend(base.Handle, selLeftMarginHandle);
				}
				return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selLeftMarginHandle);
			}
			[Export("setLeftMargin:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_Double(base.Handle, selSetLeftMargin_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetLeftMargin_Handle, value);
				}
			}
		}

		public virtual double RightMargin
		{
			[Export("rightMargin")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.Double_objc_msgSend(base.Handle, selRightMarginHandle);
				}
				return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selRightMarginHandle);
			}
			[Export("setRightMargin:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_Double(base.Handle, selSetRightMargin_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetRightMargin_Handle, value);
				}
			}
		}

		public virtual double TopMargin
		{
			[Export("topMargin")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.Double_objc_msgSend(base.Handle, selTopMarginHandle);
				}
				return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selTopMarginHandle);
			}
			[Export("setTopMargin:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_Double(base.Handle, selSetTopMargin_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetTopMargin_Handle, value);
				}
			}
		}

		public virtual double BottomMargin
		{
			[Export("bottomMargin")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.Double_objc_msgSend(base.Handle, selBottomMarginHandle);
				}
				return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selBottomMarginHandle);
			}
			[Export("setBottomMargin:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_Double(base.Handle, selSetBottomMargin_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetBottomMargin_Handle, value);
				}
			}
		}

		public virtual bool HorizontallyCentered
		{
			[Export("isHorizontallyCentered")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.bool_objc_msgSend(base.Handle, selIsHorizontallyCenteredHandle);
				}
				return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsHorizontallyCenteredHandle);
			}
			[Export("setHorizontallyCentered:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_bool(base.Handle, selSetHorizontallyCentered_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetHorizontallyCentered_Handle, value);
				}
			}
		}

		public virtual bool VerticallyCentered
		{
			[Export("isVerticallyCentered")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.bool_objc_msgSend(base.Handle, selIsVerticallyCenteredHandle);
				}
				return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsVerticallyCenteredHandle);
			}
			[Export("setVerticallyCentered:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_bool(base.Handle, selSetVerticallyCentered_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetVerticallyCentered_Handle, value);
				}
			}
		}

		public virtual NSPrintingPaginationMode HorizontalPagination
		{
			[Export("horizontalPagination")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return (NSPrintingPaginationMode)Messaging.UInt64_objc_msgSend(base.Handle, selHorizontalPaginationHandle);
				}
				return (NSPrintingPaginationMode)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selHorizontalPaginationHandle);
			}
			[Export("setHorizontalPagination:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_UInt64(base.Handle, selSetHorizontalPagination_Handle, (ulong)value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetHorizontalPagination_Handle, (ulong)value);
				}
			}
		}

		public virtual NSPrintingPaginationMode VerticalPagination
		{
			[Export("verticalPagination")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return (NSPrintingPaginationMode)Messaging.UInt64_objc_msgSend(base.Handle, selVerticalPaginationHandle);
				}
				return (NSPrintingPaginationMode)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selVerticalPaginationHandle);
			}
			[Export("setVerticalPagination:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_UInt64(base.Handle, selSetVerticalPagination_Handle, (ulong)value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetVerticalPagination_Handle, (ulong)value);
				}
			}
		}

		public virtual string JobDisposition
		{
			[Export("jobDisposition")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selJobDispositionHandle));
				}
				return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selJobDispositionHandle));
			}
			[Export("setJobDisposition:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (value == null)
				{
					throw new ArgumentNullException("value");
				}
				IntPtr intPtr = NSString.CreateNative(value);
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetJobDisposition_Handle, intPtr);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetJobDisposition_Handle, intPtr);
				}
				NSString.ReleaseNative(intPtr);
			}
		}

		public virtual NSPrinter Printer
		{
			[Export("printer")]
			get
			{
				NSApplication.EnsureUIThread();
				return (NSPrinter)(__mt_Printer_var = ((!IsDirectBinding) ? ((NSPrinter)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPrinterHandle))) : ((NSPrinter)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selPrinterHandle)))));
			}
			[Export("setPrinter:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (value == null)
				{
					throw new ArgumentNullException("value");
				}
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetPrinter_Handle, value.Handle);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetPrinter_Handle, value.Handle);
				}
				__mt_Printer_var = value;
			}
		}

		public virtual bool SelectionOnly
		{
			[Export("isSelectionOnly")]
			get
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					return Messaging.bool_objc_msgSend(base.Handle, selIsSelectionOnlyHandle);
				}
				return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsSelectionOnlyHandle);
			}
			[Export("setSelectionOnly:")]
			set
			{
				NSApplication.EnsureUIThread();
				if (IsDirectBinding)
				{
					Messaging.void_objc_msgSend_bool(base.Handle, selSetSelectionOnly_Handle, value);
				}
				else
				{
					Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetSelectionOnly_Handle, value);
				}
			}
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		[Export("init")]
		public NSPrintInfo()
			: 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 NSPrintInfo(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 NSPrintInfo(NSObjectFlag t)
			: base(t)
		{
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		public NSPrintInfo(IntPtr handle)
			: base(handle)
		{
		}

		[Export("initWithDictionary:")]
		public NSPrintInfo(NSDictionary attributes)
			: base(NSObjectFlag.Empty)
		{
			NSApplication.EnsureUIThread();
			if (attributes == null)
			{
				throw new ArgumentNullException("attributes");
			}
			if (IsDirectBinding)
			{
				base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selInitWithDictionary_Handle, attributes.Handle);
			}
			else
			{
				base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selInitWithDictionary_Handle, attributes.Handle);
			}
		}

		[Export("setUpPrintOperationDefaultValues")]
		public virtual void SetUpPrintOperationDefaultValues()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				Messaging.void_objc_msgSend(base.Handle, selSetUpPrintOperationDefaultValuesHandle);
			}
			else
			{
				Messaging.void_objc_msgSendSuper(base.SuperHandle, selSetUpPrintOperationDefaultValuesHandle);
			}
		}

		[Export("PMPrintSession")]
		public virtual IntPtr GetPMPrintSession()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				return Messaging.IntPtr_objc_msgSend(base.Handle, selPMPrintSessionHandle);
			}
			return Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPMPrintSessionHandle);
		}

		[Export("PMPageFormat")]
		public virtual IntPtr GetPMPageFormat()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				return Messaging.IntPtr_objc_msgSend(base.Handle, selPMPageFormatHandle);
			}
			return Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPMPageFormatHandle);
		}

		[Export("PMPrintSettings")]
		public virtual IntPtr GetPMPrintSettings()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				return Messaging.IntPtr_objc_msgSend(base.Handle, selPMPrintSettingsHandle);
			}
			return Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPMPrintSettingsHandle);
		}

		[Export("updateFromPMPageFormat")]
		public virtual void UpdateFromPMPageFormat()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				Messaging.void_objc_msgSend(base.Handle, selUpdateFromPMPageFormatHandle);
			}
			else
			{
				Messaging.void_objc_msgSendSuper(base.SuperHandle, selUpdateFromPMPageFormatHandle);
			}
		}

		[Export("updateFromPMPrintSettings")]
		public virtual void UpdateFromPMPrintSettings()
		{
			NSApplication.EnsureUIThread();
			if (IsDirectBinding)
			{
				Messaging.void_objc_msgSend(base.Handle, selUpdateFromPMPrintSettingsHandle);
			}
			else
			{
				Messaging.void_objc_msgSendSuper(base.SuperHandle, selUpdateFromPMPrintSettingsHandle);
			}
		}

		protected override void Dispose(bool disposing)
		{
			base.Dispose(disposing);
			if (base.Handle == IntPtr.Zero)
			{
				__mt_Dictionary_var = null;
				__mt_PrintSettings_var = null;
				__mt_Printer_var = null;
			}
		}
	}
}
