[Gtk-sharp-list] Webkit GTK# For Windows
    scocpt 
    tottlecp at cardiff.ac.uk
       
    Tue Mar  4 14:24:09 UTC 2014
    
    
  
Thanks to Cody for the following answer to my post
http://mono.1490590.n4.nabble.com/Embedding-an-IE-Window-td4662025.html
I decided to tackle the problem from a slightly different angle. If my app
was running on Windows then embed IE as the web browser, and if I was
running Linux then embed WebKit. Below is my undocumented code that I wrote
in #Develop (Windows 7) and tested on openSUSE 13.1
My main references for this project are:
http://shana.worldofcoding.com/en/browser.html
https://github.com/bratsche/gtkie
I hope that others find this code of use.
Chris
TWGTKWeb.cs (wrapper for IE and WebKit)
#############################
/*
 * Created by SharpDevelop.
 * User: Chris
 * Date: 04/03/2014
 * Time: 13:43
 * 
 * To change this template use Tools | Options | Coding | Edit Standard
Headers.
 */
using System;
using System.Windows.Forms;
using Gtk;
using WebKit; //Add reference to project, set "Aliases" to global and "Copy
Local" to false (webkit-sharp.dll).
//http://shana.worldofcoding.com/en/browser.html
//https://github.com/bratsche/gtkie
namespace TottleWare.LinuxGUI.WebBrowser
{
	public class TWWebBrowserIE
	{
		[System.Runtime.InteropServices.DllImportAttribute("user32.dll",
EntryPoint = "SetParent")]
		internal static extern System.IntPtr
SetParent([System.Runtime.InteropServices.InAttribute()] System.IntPtr
hWndChild, [System.Runtime.InteropServices.InAttribute()] System.IntPtr
hWndNewParent);
		public System.Windows.Forms.WebBrowser wb = null;
		public Gtk.Socket socket = new Gtk.Socket();
		public void InitIE(Gtk.Window w)
		{
			wb = new System.Windows.Forms.WebBrowser ();
			wb.Height = 600;
			wb.Width  = 600;
			w.Add (socket);
			socket.SetSizeRequest(600, 600);
			socket.Realize();
			socket.Show();
			var browser_handle = wb.Handle;
			IntPtr window_handle = (IntPtr) socket.Id;
			SetParent(browser_handle, window_handle);
		}
		public void Navigate(string uri)
		{
			wb.Navigate(uri);
		}
		public TWWebBrowserIE(Gtk.Window w)
		{
			InitIE (w);
		}
    }
	//=======================================================================
    public class TWWebBrowserWK
    {
        public WebView wb = null;
        public ScrolledWindow scrollWindow = new ScrolledWindow();
        public void InitWebKit(Gtk.Window w)
        {
            wb = new WebView();
            scrollWindow.Add(wb);
            w.Add(scrollWindow);
            w.ShowAll();
        }
        public void Navigate(string uri)
        {
            wb.Open(uri);
        }
        public TWWebBrowserWK(Gtk.Window w)
        {
            InitWebKit(w);
        }
    }
   
//=======================================================================
}
Program.cs (main program)
##################
/*
 * Created by SharpDevelop.
 * User: Chris
 * Date: 04/03/2014
 * Time: 13:43
 * 
 * To change this template use Tools | Options | Coding | Edit Standard
Headers.
 */
using System;
using Gtk;
using TottleWare.LinuxGUI.WebBrowser;
namespace TestWeb
{
	public partial class MainWindow: Gtk.Window
	{
		protected virtual void Build ()
		{
			this.Name = "MainWindow";
			this.WindowPosition = ((global::Gtk.WindowPosition)(1));
			if ((this.Child != null)) {	this.Child.ShowAll (); }
			this.DefaultWidth = 976;
			this.DefaultHeight = 667;
			this.Show ();
			this.DeleteEvent += new global::Gtk.DeleteEventHandler
(this.OnDeleteEvent);
		}
		
		public MainWindow () : base (Gtk.WindowType.Toplevel)
		{
			dynamic web;
			Build ();
			
			if (Environment.OSVersion.Platform.ToString() == "Unix") { web = new
TWWebBrowserWK(this); }
			else { web = new TWWebBrowserIE(this); }
			
			web.Navigate("http://www.cardiff.ac.uk");
		}
		
		protected void OnDeleteEvent (object sender, DeleteEventArgs a)
		{
			Application.Quit ();
		    a.RetVal = true;
		}
	}
			
	class Program
	{
		[STAThread]
		public static void Main(string[] args)
		{
			Application.Init ();
			MainWindow win = new MainWindow ();
			win.Show ();
			Application.Run ();
		}
	}
}
--
View this message in context: http://mono.1490590.n4.nabble.com/Webkit-GTK-For-Windows-tp4661981p4662118.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.
    
    
More information about the Gtk-sharp-list
mailing list