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

namespace WebKit {

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

#region Autogenerated code
	public partial class WebInspector : GLib.Object {

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

		protected WebInspector() : base(IntPtr.Zero)
		{
			CreateNativeObject (Array.Empty<string> (), Array.Empty<GLib.Value> ());
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate uint d_webkit_web_inspector_get_attached_height(IntPtr raw);
		static d_webkit_web_inspector_get_attached_height webkit_web_inspector_get_attached_height = FuncLoader.LoadFunction<d_webkit_web_inspector_get_attached_height>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_get_attached_height"));

		[GLib.Property ("attached-height")]
		public uint AttachedHeight {
			get  {
				uint raw_ret = webkit_web_inspector_get_attached_height(Handle);
				uint ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_inspector_get_can_attach(IntPtr raw);
		static d_webkit_web_inspector_get_can_attach webkit_web_inspector_get_can_attach = FuncLoader.LoadFunction<d_webkit_web_inspector_get_can_attach>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_get_can_attach"));

		[GLib.Property ("can-attach")]
		public bool CanAttach {
			get  {
				bool raw_ret = webkit_web_inspector_get_can_attach(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_inspector_get_inspected_uri(IntPtr raw);
		static d_webkit_web_inspector_get_inspected_uri webkit_web_inspector_get_inspected_uri = FuncLoader.LoadFunction<d_webkit_web_inspector_get_inspected_uri>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_get_inspected_uri"));

		[GLib.Property ("inspected-uri")]
		public string InspectedUri {
			get  {
				IntPtr raw_ret = webkit_web_inspector_get_inspected_uri(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[GLib.Signal("attach")]
		public event WebKit.AttachEventHandler AttachEvent {
			add {
				this.AddSignalHandler ("attach", value, typeof (WebKit.AttachEventArgs));
			}
			remove {
				this.RemoveSignalHandler ("attach", value);
			}
		}

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

		[GLib.Signal("bring-to-front")]
		public event WebKit.BringToFrontHandler BringToFront {
			add {
				this.AddSignalHandler ("bring-to-front", value, typeof (WebKit.BringToFrontArgs));
			}
			remove {
				this.RemoveSignalHandler ("bring-to-front", value);
			}
		}

		[GLib.Signal("detach")]
		public event WebKit.DetachEventHandler DetachEvent {
			add {
				this.AddSignalHandler ("detach", value, typeof (WebKit.DetachEventArgs));
			}
			remove {
				this.RemoveSignalHandler ("detach", value);
			}
		}

		[GLib.Signal("open-window")]
		public event WebKit.OpenWindowHandler OpenWindow {
			add {
				this.AddSignalHandler ("open-window", value, typeof (WebKit.OpenWindowArgs));
			}
			remove {
				this.RemoveSignalHandler ("open-window", value);
			}
		}

		static AttachEventNativeDelegate AttachEvent_cb_delegate;
		static AttachEventNativeDelegate AttachEventVMCallback {
			get {
				if (AttachEvent_cb_delegate == null)
					AttachEvent_cb_delegate = new AttachEventNativeDelegate (AttachEvent_cb);
				return AttachEvent_cb_delegate;
			}
		}

		static void OverrideAttachEvent (GLib.GType gtype)
		{
			OverrideAttachEvent (gtype, AttachEventVMCallback);
		}

		static void OverrideAttachEvent (GLib.GType gtype, AttachEventNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "attach", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool AttachEventNativeDelegate (IntPtr inst);

		static bool AttachEvent_cb (IntPtr inst)
		{
			try {
				WebInspector __obj = GLib.Object.GetObject (inst, false) as WebInspector;
				bool __result;
				__result = __obj.OnAttachEvent ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebInspector), ConnectionMethod="OverrideAttachEvent")]
		protected virtual bool OnAttachEvent ()
		{
			return InternalAttachEvent ();
		}

		private bool InternalAttachEvent ()
		{
			GLib.Value ret = new GLib.Value (GLib.GType.Boolean);
			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 ();
			bool result = (bool) ret;
			ret.Dispose ();
			return result;
		}

		static BringToFrontNativeDelegate BringToFront_cb_delegate;
		static BringToFrontNativeDelegate BringToFrontVMCallback {
			get {
				if (BringToFront_cb_delegate == null)
					BringToFront_cb_delegate = new BringToFrontNativeDelegate (BringToFront_cb);
				return BringToFront_cb_delegate;
			}
		}

		static void OverrideBringToFront (GLib.GType gtype)
		{
			OverrideBringToFront (gtype, BringToFrontVMCallback);
		}

		static void OverrideBringToFront (GLib.GType gtype, BringToFrontNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "bring-to-front", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool BringToFrontNativeDelegate (IntPtr inst);

		static bool BringToFront_cb (IntPtr inst)
		{
			try {
				WebInspector __obj = GLib.Object.GetObject (inst, false) as WebInspector;
				bool __result;
				__result = __obj.OnBringToFront ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebInspector), ConnectionMethod="OverrideBringToFront")]
		protected virtual bool OnBringToFront ()
		{
			return InternalBringToFront ();
		}

		private bool InternalBringToFront ()
		{
			GLib.Value ret = new GLib.Value (GLib.GType.Boolean);
			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 ();
			bool result = (bool) ret;
			ret.Dispose ();
			return result;
		}

		static ClosedNativeDelegate Closed_cb_delegate;
		static ClosedNativeDelegate ClosedVMCallback {
			get {
				if (Closed_cb_delegate == null)
					Closed_cb_delegate = new ClosedNativeDelegate (Closed_cb);
				return Closed_cb_delegate;
			}
		}

		static void OverrideClosed (GLib.GType gtype)
		{
			OverrideClosed (gtype, ClosedVMCallback);
		}

		static void OverrideClosed (GLib.GType gtype, ClosedNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "closed", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void ClosedNativeDelegate (IntPtr inst);

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

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebInspector), ConnectionMethod="OverrideClosed")]
		protected virtual void OnClosed ()
		{
			InternalClosed ();
		}

		private void InternalClosed ()
		{
			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 DetachEventNativeDelegate DetachEvent_cb_delegate;
		static DetachEventNativeDelegate DetachEventVMCallback {
			get {
				if (DetachEvent_cb_delegate == null)
					DetachEvent_cb_delegate = new DetachEventNativeDelegate (DetachEvent_cb);
				return DetachEvent_cb_delegate;
			}
		}

		static void OverrideDetachEvent (GLib.GType gtype)
		{
			OverrideDetachEvent (gtype, DetachEventVMCallback);
		}

		static void OverrideDetachEvent (GLib.GType gtype, DetachEventNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "detach", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool DetachEventNativeDelegate (IntPtr inst);

		static bool DetachEvent_cb (IntPtr inst)
		{
			try {
				WebInspector __obj = GLib.Object.GetObject (inst, false) as WebInspector;
				bool __result;
				__result = __obj.OnDetachEvent ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebInspector), ConnectionMethod="OverrideDetachEvent")]
		protected virtual bool OnDetachEvent ()
		{
			return InternalDetachEvent ();
		}

		private bool InternalDetachEvent ()
		{
			GLib.Value ret = new GLib.Value (GLib.GType.Boolean);
			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 ();
			bool result = (bool) ret;
			ret.Dispose ();
			return result;
		}

		static OpenWindowNativeDelegate OpenWindow_cb_delegate;
		static OpenWindowNativeDelegate OpenWindowVMCallback {
			get {
				if (OpenWindow_cb_delegate == null)
					OpenWindow_cb_delegate = new OpenWindowNativeDelegate (OpenWindow_cb);
				return OpenWindow_cb_delegate;
			}
		}

		static void OverrideOpenWindow (GLib.GType gtype)
		{
			OverrideOpenWindow (gtype, OpenWindowVMCallback);
		}

		static void OverrideOpenWindow (GLib.GType gtype, OpenWindowNativeDelegate callback)
		{
			OverrideVirtualMethod (gtype, "open-window", callback);
		}
		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool OpenWindowNativeDelegate (IntPtr inst);

		static bool OpenWindow_cb (IntPtr inst)
		{
			try {
				WebInspector __obj = GLib.Object.GetObject (inst, false) as WebInspector;
				bool __result;
				__result = __obj.OnOpenWindow ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(WebKit.WebInspector), ConnectionMethod="OverrideOpenWindow")]
		protected virtual bool OnOpenWindow ()
		{
			return InternalOpenWindow ();
		}

		private bool InternalOpenWindow ()
		{
			GLib.Value ret = new GLib.Value (GLib.GType.Boolean);
			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 ();
			bool result = (bool) ret;
			ret.Dispose ();
			return result;
		}


		// 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("_webkit_reserved0"
							, GLib.Object.class_abi.Fields
							, (uint) sizeof( IntPtr ) // _webkit_reserved0
							, null
							, "_webkit_reserved1"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved1"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved1
							, "_webkit_reserved0"
							, "_webkit_reserved2"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved2"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved2
							, "_webkit_reserved1"
							, "_webkit_reserved3"
							, (uint) sizeof(IntPtr)
							, 0
							),
						new GLib.AbiField("_webkit_reserved3"
							, -1
							, (uint) sizeof( IntPtr ) // _webkit_reserved3
							, "_webkit_reserved2"
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _class_abi;
			}
		}


		// End of the ABI representation.

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_inspector_get_type();
		static d_webkit_web_inspector_get_type webkit_web_inspector_get_type = FuncLoader.LoadFunction<d_webkit_web_inspector_get_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_get_type"));

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

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

		public void Attach() {
			webkit_web_inspector_attach(Handle);
		}

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

		public void Close() {
			webkit_web_inspector_close(Handle);
		}

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

		public void Detach() {
			webkit_web_inspector_detach(Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_webkit_web_inspector_get_web_view(IntPtr raw);
		static d_webkit_web_inspector_get_web_view webkit_web_inspector_get_web_view = FuncLoader.LoadFunction<d_webkit_web_inspector_get_web_view>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_get_web_view"));

		public WebKit.WebViewBase WebView { 
			get {
				IntPtr raw_ret = webkit_web_inspector_get_web_view(Handle);
				WebKit.WebViewBase ret = GLib.Object.GetObject(raw_ret) as WebKit.WebViewBase;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_webkit_web_inspector_is_attached(IntPtr raw);
		static d_webkit_web_inspector_is_attached webkit_web_inspector_is_attached = FuncLoader.LoadFunction<d_webkit_web_inspector_is_attached>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Webkit), "webkit_web_inspector_is_attached"));

		public bool IsAttached { 
			get {
				bool raw_ret = webkit_web_inspector_is_attached(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

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

		public void Show() {
			webkit_web_inspector_show(Handle);
		}


		static WebInspector ()
		{
			GtkSharp.WebkitGtkSharp.ObjectManager.Initialize ();
		}

		// 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"
							, GLib.Object.abi_info.Fields
							, (uint) sizeof( IntPtr ) // priv
							, null
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _abi_info;
			}
		}


		// End of the ABI representation.

#endregion
	}
}
