// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace Gtk {

	using System;
	using System.Collections;
	using System.Collections.Generic;
	using System.Runtime.InteropServices;
	using static GLib.AbiStructExtension;

#region Autogenerated code
	public partial class Assistant : Gtk.Window {

		public Assistant (IntPtr raw) : base(raw) {}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_new();
		static d_gtk_assistant_new gtk_assistant_new = FuncLoader.LoadFunction<d_gtk_assistant_new>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_new"));

		public Assistant () : base (IntPtr.Zero)
		{
			if (GetType () != typeof (Assistant)) {
				CreateNativeObject (Array.Empty<string> (), Array.Empty<GLib.Value> ());
				return;
			}
			Raw = gtk_assistant_new();
		}

		[GLib.Property ("use-header-bar")]
		public int UseHeaderBar {
			get {
				GLib.Value val = GetProperty ("use-header-bar");
				int ret = (int) val;
				val.Dispose ();
				return ret;
			}
		}

		[Obsolete]
		public int HeaderPadding {
			get {
				var val = (int)StyleGetProperty("header-padding");
				return val;
			}
		}

		[Obsolete]
		public int ContentPadding {
			get {
				var val = (int)StyleGetProperty("content-padding");
				return val;
			}
		}

		public class AssistantChild : Gtk.Container.ContainerChild {
			protected internal AssistantChild (Gtk.Container parent, Gtk.Widget child) : base (parent, child) {}

			[Gtk.ChildProperty ("page-type")]
			public Gtk.AssistantPageType PageType {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "page-type");
					Gtk.AssistantPageType ret = (Gtk.AssistantPageType) (Enum) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value((Enum) value);
					parent.ChildSetProperty(child, "page-type", val);
					val.Dispose ();
				}
			}

			[Gtk.ChildProperty ("title")]
			public new string Title {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "title");
					string ret = (string) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value(value);
					parent.ChildSetProperty(child, "title", val);
					val.Dispose ();
				}
			}

			[Gtk.ChildProperty ("header-image")]
			public Gdk.Pixbuf HeaderImage {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "header-image");
					Gdk.Pixbuf ret = (Gdk.Pixbuf) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value(value);
					parent.ChildSetProperty(child, "header-image", val);
					val.Dispose ();
				}
			}

			[Gtk.ChildProperty ("sidebar-image")]
			public Gdk.Pixbuf SidebarImage {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "sidebar-image");
					Gdk.Pixbuf ret = (Gdk.Pixbuf) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value(value);
					parent.ChildSetProperty(child, "sidebar-image", val);
					val.Dispose ();
				}
			}

			[Gtk.ChildProperty ("complete")]
			public bool Complete {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "complete");
					bool ret = (bool) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value(value);
					parent.ChildSetProperty(child, "complete", val);
					val.Dispose ();
				}
			}

			[Gtk.ChildProperty ("has-padding")]
			public bool HasPadding {
				get {
					GLib.Value val = parent.ChildGetProperty (child, "has-padding");
					bool ret = (bool) val;
					val.Dispose ();
					return ret;
				}
				set {
					GLib.Value val = new GLib.Value(value);
					parent.ChildSetProperty(child, "has-padding", val);
					val.Dispose ();
				}
			}

		}

		public override Gtk.Container.ContainerChild this [Gtk.Widget child] {
			get {
				return new AssistantChild (this, child);
			}
		}

		[GLib.Signal("cancel")]
		public event System.EventHandler Cancel {
			add {
				this.AddSignalHandler ("cancel", value);
			}
			remove {
				this.RemoveSignalHandler ("cancel", value);
			}
		}

		[GLib.Signal("escape")]
		public event System.EventHandler Escape {
			add {
				this.AddSignalHandler ("escape", value);
			}
			remove {
				this.RemoveSignalHandler ("escape", value);
			}
		}

		[GLib.Signal("apply")]
		public event System.EventHandler Apply {
			add {
				this.AddSignalHandler ("apply", value);
			}
			remove {
				this.RemoveSignalHandler ("apply", value);
			}
		}

		[GLib.Signal("prepare")]
		public event Gtk.PrepareHandler Prepare {
			add {
				this.AddSignalHandler ("prepare", value, typeof (Gtk.PrepareArgs));
			}
			remove {
				this.RemoveSignalHandler ("prepare", value);
			}
		}

		[GLib.Signal("close")]
		public event System.EventHandler Close {
			add {
				this.AddSignalHandler ("close", value);
			}
			remove {
				this.RemoveSignalHandler ("close", value);
			}
		}

		static EscapeNativeDelegate Escape_cb_delegate;
		static EscapeNativeDelegate EscapeVMCallback {
			get {
				if (Escape_cb_delegate == null)
					Escape_cb_delegate = new EscapeNativeDelegate (Escape_cb);
				return Escape_cb_delegate;
			}
		}

		static void OverrideEscape (GLib.GType gtype)
		{
			OverrideEscape (gtype, EscapeVMCallback);
		}

		static void OverrideEscape (GLib.GType gtype, EscapeNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "escape", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void EscapeNativeDelegate (IntPtr inst);

		static void Escape_cb (IntPtr inst)
		{
			try {
				Assistant __obj = GLib.Object.GetObject (inst, false) as Assistant;
				__obj.OnEscape ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gtk.Assistant), ConnectionMethod="OverrideEscape")]
		protected virtual void OnEscape ()
		{
			InternalEscape ();
		}

		private void InternalEscape ()
		{
			GLib.Value ret = GLib.Value.Empty;
			GLib.ValueArray inst_and_params = new GLib.ValueArray (1);
			GLib.Value[] vals = new GLib.Value [1];
			vals [0] = new GLib.Value (this);
			inst_and_params.Append (vals [0]);
			g_signal_chain_from_overridden (inst_and_params.ArrayPtr, ref ret);
			foreach (GLib.Value v in vals)
				v.Dispose ();
		}

		static PrepareNativeDelegate Prepare_cb_delegate;
		static PrepareNativeDelegate PrepareVMCallback {
			get {
				if (Prepare_cb_delegate == null)
					Prepare_cb_delegate = new PrepareNativeDelegate (Prepare_cb);
				return Prepare_cb_delegate;
			}
		}

		static void OverridePrepare (GLib.GType gtype)
		{
			OverridePrepare (gtype, PrepareVMCallback);
		}

		static void OverridePrepare (GLib.GType gtype, PrepareNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("prepare"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void PrepareNativeDelegate (IntPtr inst, IntPtr page);

		static void Prepare_cb (IntPtr inst, IntPtr page)
		{
			try {
				Assistant __obj = GLib.Object.GetObject (inst, false) as Assistant;
				__obj.OnPrepare (GLib.Object.GetObject(page) as Gtk.Widget);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gtk.Assistant), ConnectionMethod="OverridePrepare")]
		protected virtual void OnPrepare (Gtk.Widget page)
		{
			InternalPrepare (page);
		}

		private void InternalPrepare (Gtk.Widget page)
		{
			PrepareNativeDelegate unmanaged = class_abi.BaseOverride<PrepareNativeDelegate>(this.LookupGType(), "prepare");
			if (unmanaged == null) return;

			unmanaged (this.Handle, page == null ? IntPtr.Zero : page.Handle);
		}

		static ApplyNativeDelegate Apply_cb_delegate;
		static ApplyNativeDelegate ApplyVMCallback {
			get {
				if (Apply_cb_delegate == null)
					Apply_cb_delegate = new ApplyNativeDelegate (Apply_cb);
				return Apply_cb_delegate;
			}
		}

		static void OverrideApply (GLib.GType gtype)
		{
			OverrideApply (gtype, ApplyVMCallback);
		}

		static void OverrideApply (GLib.GType gtype, ApplyNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("apply"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void ApplyNativeDelegate (IntPtr inst);

		static void Apply_cb (IntPtr inst)
		{
			try {
				Assistant __obj = GLib.Object.GetObject (inst, false) as Assistant;
				__obj.OnApply ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gtk.Assistant), ConnectionMethod="OverrideApply")]
		protected virtual void OnApply ()
		{
			InternalApply ();
		}

		private void InternalApply ()
		{
			ApplyNativeDelegate unmanaged = class_abi.BaseOverride<ApplyNativeDelegate>(this.LookupGType(), "apply");
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}

		static CloseNativeDelegate Close_cb_delegate;
		static CloseNativeDelegate CloseVMCallback {
			get {
				if (Close_cb_delegate == null)
					Close_cb_delegate = new CloseNativeDelegate (Close_cb);
				return Close_cb_delegate;
			}
		}

		static void OverrideClose (GLib.GType gtype)
		{
			OverrideClose (gtype, CloseVMCallback);
		}

		static void OverrideClose (GLib.GType gtype, CloseNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("close"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void CloseNativeDelegate (IntPtr inst);

		static void Close_cb (IntPtr inst)
		{
			try {
				Assistant __obj = GLib.Object.GetObject (inst, false) as Assistant;
				__obj.OnClose ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gtk.Assistant), ConnectionMethod="OverrideClose")]
		protected virtual void OnClose ()
		{
			InternalClose ();
		}

		private void InternalClose ()
		{
			CloseNativeDelegate unmanaged = class_abi.BaseOverride<CloseNativeDelegate>(this.LookupGType(), "close");
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}

		static CancelNativeDelegate Cancel_cb_delegate;
		static CancelNativeDelegate CancelVMCallback {
			get {
				if (Cancel_cb_delegate == null)
					Cancel_cb_delegate = new CancelNativeDelegate (Cancel_cb);
				return Cancel_cb_delegate;
			}
		}

		static void OverrideCancel (GLib.GType gtype)
		{
			OverrideCancel (gtype, CancelVMCallback);
		}

		static void OverrideCancel (GLib.GType gtype, CancelNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("cancel"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate(callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void CancelNativeDelegate (IntPtr inst);

		static void Cancel_cb (IntPtr inst)
		{
			try {
				Assistant __obj = GLib.Object.GetObject (inst, false) as Assistant;
				__obj.OnCancel ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gtk.Assistant), ConnectionMethod="OverrideCancel")]
		protected virtual void OnCancel ()
		{
			InternalCancel ();
		}

		private void InternalCancel ()
		{
			CancelNativeDelegate unmanaged = class_abi.BaseOverride<CancelNativeDelegate>(this.LookupGType(), "cancel");
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _class_abi = null;
		static public unsafe new GLib.AbiStruct class_abi {
			get {
				if (_class_abi == null)
					_class_abi = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("prepare"
							, Gtk.Window.class_abi.Fields
							, (uint) sizeof( IntPtr ) // prepare
							, null
							, "apply"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("apply"
							, -1
							, (uint) sizeof( IntPtr ) // apply
							, "prepare"
							, "close"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("close"
							, -1
							, (uint) sizeof( IntPtr ) // close
							, "apply"
							, "cancel"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("cancel"
							, -1
							, (uint) sizeof( IntPtr ) // cancel
							, "close"
							, "_gtk_reserved1"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_gtk_reserved1"
							, -1
							, (uint) sizeof( IntPtr ) // _gtk_reserved1
							, "cancel"
							, "_gtk_reserved2"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_gtk_reserved2"
							, -1
							, (uint) sizeof( IntPtr ) // _gtk_reserved2
							, "_gtk_reserved1"
							, "_gtk_reserved3"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_gtk_reserved3"
							, -1
							, (uint) sizeof( IntPtr ) // _gtk_reserved3
							, "_gtk_reserved2"
							, "_gtk_reserved4"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_gtk_reserved4"
							, -1
							, (uint) sizeof( IntPtr ) // _gtk_reserved4
							, "_gtk_reserved3"
							, "_gtk_reserved5"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_gtk_reserved5"
							, -1
							, (uint) sizeof( IntPtr ) // _gtk_reserved5
							, "_gtk_reserved4"
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _class_abi;
			}
		}


		// End of the ABI representation.

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_add_action_widget(IntPtr raw, IntPtr child);
		static d_gtk_assistant_add_action_widget gtk_assistant_add_action_widget = FuncLoader.LoadFunction<d_gtk_assistant_add_action_widget>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_add_action_widget"));

		public void AddActionWidget(Gtk.Widget child) {
			gtk_assistant_add_action_widget(Handle, child == null ? IntPtr.Zero : child.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_append_page(IntPtr raw, IntPtr page);
		static d_gtk_assistant_append_page gtk_assistant_append_page = FuncLoader.LoadFunction<d_gtk_assistant_append_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_append_page"));

		public int AppendPage(Gtk.Widget page) {
			int raw_ret = gtk_assistant_append_page(Handle, page == null ? IntPtr.Zero : page.Handle);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_commit(IntPtr raw);
		static d_gtk_assistant_commit gtk_assistant_commit = FuncLoader.LoadFunction<d_gtk_assistant_commit>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_commit"));

		public void Commit() {
			gtk_assistant_commit(Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_get_current_page(IntPtr raw);
		static d_gtk_assistant_get_current_page gtk_assistant_get_current_page = FuncLoader.LoadFunction<d_gtk_assistant_get_current_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_current_page"));

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_current_page(IntPtr raw, int page_num);
		static d_gtk_assistant_set_current_page gtk_assistant_set_current_page = FuncLoader.LoadFunction<d_gtk_assistant_set_current_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_current_page"));

		public int CurrentPage { 
			get {
				int raw_ret = gtk_assistant_get_current_page(Handle);
				int ret = raw_ret;
				return ret;
			}
			set {
				gtk_assistant_set_current_page(Handle, value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_get_n_pages(IntPtr raw);
		static d_gtk_assistant_get_n_pages gtk_assistant_get_n_pages = FuncLoader.LoadFunction<d_gtk_assistant_get_n_pages>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_n_pages"));

		public int NPages { 
			get {
				int raw_ret = gtk_assistant_get_n_pages(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_get_nth_page(IntPtr raw, int page_num);
		static d_gtk_assistant_get_nth_page gtk_assistant_get_nth_page = FuncLoader.LoadFunction<d_gtk_assistant_get_nth_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_nth_page"));

		public Gtk.Widget GetNthPage(int page_num) {
			IntPtr raw_ret = gtk_assistant_get_nth_page(Handle, page_num);
			Gtk.Widget ret = GLib.Object.GetObject(raw_ret) as Gtk.Widget;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_gtk_assistant_get_page_complete(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_complete gtk_assistant_get_page_complete = FuncLoader.LoadFunction<d_gtk_assistant_get_page_complete>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_complete"));

		public bool GetPageComplete(Gtk.Widget page) {
			bool raw_ret = gtk_assistant_get_page_complete(Handle, page == null ? IntPtr.Zero : page.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_gtk_assistant_get_page_has_padding(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_has_padding gtk_assistant_get_page_has_padding = FuncLoader.LoadFunction<d_gtk_assistant_get_page_has_padding>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_has_padding"));

		public bool GetPageHasPadding(Gtk.Widget page) {
			bool raw_ret = gtk_assistant_get_page_has_padding(Handle, page == null ? IntPtr.Zero : page.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_get_page_header_image(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_header_image gtk_assistant_get_page_header_image = FuncLoader.LoadFunction<d_gtk_assistant_get_page_header_image>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_header_image"));

		[Obsolete]
		public Gdk.Pixbuf GetPageHeaderImage(Gtk.Widget page) {
			IntPtr raw_ret = gtk_assistant_get_page_header_image(Handle, page == null ? IntPtr.Zero : page.Handle);
			Gdk.Pixbuf ret = GLib.Object.GetObject(raw_ret) as Gdk.Pixbuf;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_get_page_side_image(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_side_image gtk_assistant_get_page_side_image = FuncLoader.LoadFunction<d_gtk_assistant_get_page_side_image>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_side_image"));

		[Obsolete]
		public Gdk.Pixbuf GetPageSideImage(Gtk.Widget page) {
			IntPtr raw_ret = gtk_assistant_get_page_side_image(Handle, page == null ? IntPtr.Zero : page.Handle);
			Gdk.Pixbuf ret = GLib.Object.GetObject(raw_ret) as Gdk.Pixbuf;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_get_page_title(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_title gtk_assistant_get_page_title = FuncLoader.LoadFunction<d_gtk_assistant_get_page_title>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_title"));

		public string GetPageTitle(Gtk.Widget page) {
			IntPtr raw_ret = gtk_assistant_get_page_title(Handle, page == null ? IntPtr.Zero : page.Handle);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_get_page_type(IntPtr raw, IntPtr page);
		static d_gtk_assistant_get_page_type gtk_assistant_get_page_type = FuncLoader.LoadFunction<d_gtk_assistant_get_page_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_page_type"));

		public Gtk.AssistantPageType GetPageType(Gtk.Widget page) {
			int raw_ret = gtk_assistant_get_page_type(Handle, page == null ? IntPtr.Zero : page.Handle);
			Gtk.AssistantPageType ret = (Gtk.AssistantPageType) raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_gtk_assistant_get_type();
		static d_gtk_assistant_get_type gtk_assistant_get_type = FuncLoader.LoadFunction<d_gtk_assistant_get_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_get_type"));

		public static new GLib.GType GType { 
			get {
				IntPtr raw_ret = gtk_assistant_get_type();
				GLib.GType ret = new GLib.GType(raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_insert_page(IntPtr raw, IntPtr page, int position);
		static d_gtk_assistant_insert_page gtk_assistant_insert_page = FuncLoader.LoadFunction<d_gtk_assistant_insert_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_insert_page"));

		public int InsertPage(Gtk.Widget page, int position) {
			int raw_ret = gtk_assistant_insert_page(Handle, page == null ? IntPtr.Zero : page.Handle, position);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_next_page(IntPtr raw);
		static d_gtk_assistant_next_page gtk_assistant_next_page = FuncLoader.LoadFunction<d_gtk_assistant_next_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_next_page"));

		public void NextPage() {
			gtk_assistant_next_page(Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_gtk_assistant_prepend_page(IntPtr raw, IntPtr page);
		static d_gtk_assistant_prepend_page gtk_assistant_prepend_page = FuncLoader.LoadFunction<d_gtk_assistant_prepend_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_prepend_page"));

		public int PrependPage(Gtk.Widget page) {
			int raw_ret = gtk_assistant_prepend_page(Handle, page == null ? IntPtr.Zero : page.Handle);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_previous_page(IntPtr raw);
		static d_gtk_assistant_previous_page gtk_assistant_previous_page = FuncLoader.LoadFunction<d_gtk_assistant_previous_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_previous_page"));

		public void PreviousPage() {
			gtk_assistant_previous_page(Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_remove_action_widget(IntPtr raw, IntPtr child);
		static d_gtk_assistant_remove_action_widget gtk_assistant_remove_action_widget = FuncLoader.LoadFunction<d_gtk_assistant_remove_action_widget>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_remove_action_widget"));

		public void RemoveActionWidget(Gtk.Widget child) {
			gtk_assistant_remove_action_widget(Handle, child == null ? IntPtr.Zero : child.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_remove_page(IntPtr raw, int page_num);
		static d_gtk_assistant_remove_page gtk_assistant_remove_page = FuncLoader.LoadFunction<d_gtk_assistant_remove_page>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_remove_page"));

		public void RemovePage(int page_num) {
			gtk_assistant_remove_page(Handle, page_num);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_forward_page_func(IntPtr raw, GtkSharp.AssistantPageFuncNative page_func, IntPtr data, GLib.DestroyNotify destroy);
		static d_gtk_assistant_set_forward_page_func gtk_assistant_set_forward_page_func = FuncLoader.LoadFunction<d_gtk_assistant_set_forward_page_func>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_forward_page_func"));

		public Gtk.AssistantPageFunc ForwardPageFunc { 
			set {
				GtkSharp.AssistantPageFuncWrapper value_wrapper = new GtkSharp.AssistantPageFuncWrapper (value);
				IntPtr data;
				GLib.DestroyNotify destroy;
				if (value == null) {
					data = IntPtr.Zero;
					destroy = null;
				} else {
					data = (IntPtr) GCHandle.Alloc (value_wrapper);
					destroy = GLib.DestroyHelper.NotifyHandler;
				}
				gtk_assistant_set_forward_page_func(Handle, value_wrapper.NativeDelegate, data, destroy);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_complete(IntPtr raw, IntPtr page, bool complete);
		static d_gtk_assistant_set_page_complete gtk_assistant_set_page_complete = FuncLoader.LoadFunction<d_gtk_assistant_set_page_complete>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_complete"));

		public void SetPageComplete(Gtk.Widget page, bool complete) {
			gtk_assistant_set_page_complete(Handle, page == null ? IntPtr.Zero : page.Handle, complete);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_has_padding(IntPtr raw, IntPtr page, bool has_padding);
		static d_gtk_assistant_set_page_has_padding gtk_assistant_set_page_has_padding = FuncLoader.LoadFunction<d_gtk_assistant_set_page_has_padding>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_has_padding"));

		public void SetPageHasPadding(Gtk.Widget page, bool has_padding) {
			gtk_assistant_set_page_has_padding(Handle, page == null ? IntPtr.Zero : page.Handle, has_padding);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_header_image(IntPtr raw, IntPtr page, IntPtr pixbuf);
		static d_gtk_assistant_set_page_header_image gtk_assistant_set_page_header_image = FuncLoader.LoadFunction<d_gtk_assistant_set_page_header_image>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_header_image"));

		[Obsolete]
		public void SetPageHeaderImage(Gtk.Widget page, Gdk.Pixbuf pixbuf) {
			gtk_assistant_set_page_header_image(Handle, page == null ? IntPtr.Zero : page.Handle, pixbuf == null ? IntPtr.Zero : pixbuf.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_side_image(IntPtr raw, IntPtr page, IntPtr pixbuf);
		static d_gtk_assistant_set_page_side_image gtk_assistant_set_page_side_image = FuncLoader.LoadFunction<d_gtk_assistant_set_page_side_image>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_side_image"));

		[Obsolete]
		public void SetPageSideImage(Gtk.Widget page, Gdk.Pixbuf pixbuf) {
			gtk_assistant_set_page_side_image(Handle, page == null ? IntPtr.Zero : page.Handle, pixbuf == null ? IntPtr.Zero : pixbuf.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_title(IntPtr raw, IntPtr page, IntPtr title);
		static d_gtk_assistant_set_page_title gtk_assistant_set_page_title = FuncLoader.LoadFunction<d_gtk_assistant_set_page_title>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_title"));

		public void SetPageTitle(Gtk.Widget page, string title) {
			IntPtr native_title = GLib.Marshaller.StringToPtrGStrdup (title);
			gtk_assistant_set_page_title(Handle, page == null ? IntPtr.Zero : page.Handle, native_title);
			GLib.Marshaller.Free (native_title);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_set_page_type(IntPtr raw, IntPtr page, int type);
		static d_gtk_assistant_set_page_type gtk_assistant_set_page_type = FuncLoader.LoadFunction<d_gtk_assistant_set_page_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_set_page_type"));

		public void SetPageType(Gtk.Widget page, Gtk.AssistantPageType type) {
			gtk_assistant_set_page_type(Handle, page == null ? IntPtr.Zero : page.Handle, (int) type);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_assistant_update_buttons_state(IntPtr raw);
		static d_gtk_assistant_update_buttons_state gtk_assistant_update_buttons_state = FuncLoader.LoadFunction<d_gtk_assistant_update_buttons_state>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_assistant_update_buttons_state"));

		public void UpdateButtonsState() {
			gtk_assistant_update_buttons_state(Handle);
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _abi_info = null;
		static public unsafe new GLib.AbiStruct abi_info {
			get {
				if (_abi_info == null)
					_abi_info = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("priv"
							, Gtk.Window.abi_info.Fields
							, (uint) sizeof( IntPtr ) // priv
							, null
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _abi_info;
			}
		}


		// End of the ABI representation.

#endregion
	}
}
