X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=plugins%2FFFNav.cs;h=15d35044bdf1f046a3e82f543edf06452cf6c2e1;hb=2744fefc32dbe9b59a570f6515d51121b8fcfbe3;hp=4f22b63626b3d2713140f2d1d52e48e242c9fcfd;hpb=1bff29702cf8ce8c1952d22243e4dc7a9df74105;p=WebThing.git diff --git a/plugins/FFNav.cs b/plugins/FFNav.cs index 4f22b63..15d3504 100644 --- a/plugins/FFNav.cs +++ b/plugins/FFNav.cs @@ -1,29 +1,68 @@ using System; using Gtk; +using WebKit; using bytex64.WebThing; -public class Plugin { +public class FFNav : WebThingPlugin { WebThing wt; - public Plugin(WebThing wt) { + public override void Init(WebThing wt) { this.wt = wt; - wt.WebView.KeyPressEvent += WebView_KeyPress; + + 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: - wt.WebView.GoBack(); + wv.GoBack(); break; case Gdk.Key.Right: - wt.WebView.GoForward(); + 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: - wt.WebView.GoBack(); + wv.GoBack(); + break; + case Gdk.Key.Escape: + wv.StopLoading(); break; } }