using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Mono.Mozilla { public class WebBrowser: Control, IWebBrowser, IDisposable { //Got to keep an eye on this private CallbackBinder callback; private IntPtr nptr; public WebBrowser() { callback = IWebBrowser.WrapIWebBrowser(this); nptr = MozillaInvoke.mozembed_create(this.callback); } #region callbacks protected override void OnHandleCreated(EventArgs e) { MozillaInvoke.mozembed_init(nptr, this.Handle); base.OnHandleCreated(e); } internal SizeInfo IWebBrowser.GetControlSize() { #if _DEBUG_ Console.WriteLine("GetControlSize Signal"); #endif SizeInfo sz; sz.Width = this.InnerWidth; sz.Height = this.InnerHeight; return sz; } internal void IWebBrowser.OnJSStatus() { #if _DEBUG_ Console.WriteLine("JSStatus Signal"); #endif } internal void IWebBrowser.OnLinkStatus() { #if _DEBUG_ Console.WriteLine("JSStatus Signal"); #endif } internal void IWebBrowser.OnDestoryBrowser() { #if _DEBUG_ Console.WriteLine("OnDestoryBrowser Signal"); #endif } internal void IWebBrowser.OnClientSizeTo(Int32 width, Int32 height) { #if _DEBUG_ Console.WriteLine("OnClientSizeTo Signal - Width: {0}, Height: {1}", width, height); #endif } internal void IWebBrowser.OnFocusNext() { #if _DEBUG_ Console.WriteLine("OnFocusNext Signal"); #endif } internal void IWebBrowser.OnFocusPrev() { #if _DEBUG_ Console.WriteLine("OnFocusPrev Signal"); #endif } internal void IWebBrowser.OnTitleChanged() { #if _DEBUG_ Console.WriteLine("OnTitleChanged Signal"); #endif } internal void IWebBrowser.OnShowTooltipWindow(Int32 x, Int32 y, string tiptext) { #if _DEBUG_ Console.WriteLine("OnShowTooltipWindow Signal - x: {0}, y: {1}, text: {2}", width, height,tiptext); #endif } internal void IWebBrowser.OnHideTooltipWindow() { #if _DEBUG_ Console.WriteLine("OnHideTooltipWindow Signal"); #endif } internal void IWebBrowser.OnStateNetStart() { #if _DEBUG_ Console.WriteLine("OnStateNetStart Signal"); #endif } internal void IWebBrowser.OnStateNetStop() { #if _DEBUG_ Console.WriteLine("OnStateNetStop Signal"); #endif } internal void IWebBrowser.OnStateSpecial(UInt32 stateFlags, Int32 status) { #if _DEBUG_ Console.WriteLine("OnStateSpecial Signal - stateFlags: {0}, status: {1}", stateFlags, status); #endif } internal void IWebBrowser.OnStateChange(string URI, UInt32 stateFlags, Int32 status) { #if _DEBUG_ Console.WriteLine("OnStateChange Signal - URI: {0}, stateFlags: {1}, status: {2}", URI, stateFlags, status); #endif } internal void IWebBrowser.OnProgress(Int32 currentTotalProgress, Int32 maxTotalProgress) { #if _DEBUG_ Console.WriteLine("OnProgress Signal - TotalProgress: {0}, maxTotalProgress: {1}", currentTotalProgress, maxTotalProgress); #endif } internal void IWebBrowser.OnProgressAll(string URI, Int32 currentTotalProgress, Int32 maxTotalProgress) { #if _DEBUG_ Console.WriteLine("OnProgressAll Signal - URI: {0}, TotalProgress: {1}, maxTotalProgress: {2}", URI, currentTotalProgress, maxTotalProgress); #endif } internal void IWebBrowser.OnLocationChanged() { #if _DEBUG_ Console.WriteLine("OnLocationChanged Signal"); #endif } internal void IWebBrowser.OnStatusChange(Int32 status, string message) { #if _DEBUG_ Console.WriteLine("OnStatusChange Signal - status: {0}, message: {1}", status, message); #endif } internal void IWebBrowser.OnSecurityChange(UInt32 state) { #if _DEBUG_ Console.WriteLine("OnSecurityChange Signal - state: {0}", state); #endif } internal void IWebBrowser.OnVisibility(bool val) { #if _DEBUG_ Console.WriteLine("OnVisibility Signal - val: {0}", val); #endif } //Don't have to worry about marshelling bool, PRBool seems very constant and uses 4 bit int underneath internal bool IWebBrowser.OnClientDomKeyDown (ModifierKeys modKey, KeyInfo keyInfo) { #if _DEBUG_ Console.WriteLine("OnClientDomKeyDown Signal"); return false; #endif } internal bool IWebBrowser.OnClientDomKeyUp (ModifierKeys modKey, KeyInfo keyInfo) { #if _DEBUG_ Console.WriteLine("OnClientDomKeyUp Signal"); return false; #endif } internal bool IWebBrowser.OnClientDomKeyPress (ModifierKeys modKey, KeyInfo keyInfo) { #if _DEBUG_ Console.WriteLine("OnClientDomKeyPress Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseDown (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseDown Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseUp (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseUp Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseClick (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseClick Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseDoubleClick (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseDoubleClick Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseOver (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseOver Signal"); return false; #endif } internal bool IWebBrowser.OnClientMouseOut (ModifierKeys aModKey, MouseInfo aMouseInfo) { #if _DEBUG_ Console.WriteLine("OnClientMouseOut Signal"); return false; #endif } internal bool IWebBrowser.OnClientActivate (Int32 detail) { #if _DEBUG_ Console.WriteLine("OnClientActivate Signal - detail: {0}", detail); return false; #endif } // TODO: These two may not fire correctly in Firefox 1.0.x internal bool IWebBrowser.OnClientFocusIn (Int32 detail) { #if _DEBUG_ Console.WriteLine("OnClientFocusIn Signal - detail: {0}", detail); return false; #endif } internal bool IWebBrowser.OnClientFocusOut (Int32 detail) { #if _DEBUG_ Console.WriteLine("OnClientFocusOut Signal - detail: {0}", detail); return false; #endif } internal bool IWebBrowser.OnBeforeURIOpen (string URL) { #if _DEBUG_ Console.WriteLine("OnBeforeURIOpen Signal - URL: {0}", URL); return false; #endif } #endregion } }