/plugins/FFNav.cs
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;
}
}
}
}