using System; using Gtk; using WebKit; using bytex64.WebThing; public class FFNav : WebThingPlugin { WebThing wt; public override void Init(WebThing wt) { this.wt = wt; wt.Window.KeyPressEvent += Window_KeyPress; } public override void InitWebView(WebView wv) { wv.KeyPressEvent += WebView_KeyPress; } private void Window_KeyPress(object o, KeyPressEventArgs e) { if ((e.Event.State & Gdk.ModifierType.ControlMask) != 0) { switch(e.Event.Key) { case Gdk.Key.t: wt.NewTab(); wt.Tabs.CurrentPage = wt.Tabs.NPages - 1; break; case Gdk.Key.w: wt.CloseTab(); break; } } } private void WebView_KeyPress(object o, KeyPressEventArgs e) { WebView wv = (WebView) o; if ((e.Event.State & Gdk.ModifierType.Mod1Mask) != 0) { switch(e.Event.Key) { case Gdk.Key.Left: wv.GoBack(); break; case Gdk.Key.Right: wv.GoForward(); break; } } else if ((e.Event.State & Gdk.ModifierType.ControlMask) != 0) { switch(e.Event.Key) { case Gdk.Key.ISO_Left_Tab: if (wt.Tabs.CurrentPage == 0) wt.Tabs.CurrentPage = wt.Tabs.NPages - 1; else wt.Tabs.PrevPage(); break; case Gdk.Key.Tab: if (wt.Tabs.CurrentPage == wt.Tabs.NPages - 1) wt.Tabs.CurrentPage = 0; else wt.Tabs.NextPage(); break; } } else { switch(e.Event.Key) { case Gdk.Key.BackSpace: wv.GoBack(); break; case Gdk.Key.Escape: wv.StopLoading(); break; } } } }