using System;
using System.Text.RegularExpressions;
using Gtk;
+using WebKit;
using bytex64.WebThing;
public class Vimish : WebThingPlugin {
WebThing wt;
Gtk.Entry commandline;
- public void Init(WebThing wt) {
+ public override void Init(WebThing wt) {
this.wt = wt;
- wt.WebView.KeyPressEvent += WebView_KeyPress;
+
+ wt.Window.KeyPressEvent += Window_KeyPress;
commandline = new Gtk.Entry();
commandline.Activated += command_Activate;
commandline.Hide();
}
- private void WebView_KeyPress(object o, KeyPressEventArgs e) {
- Console.WriteLine(e.Event.Key);
+ public override void InitWebView(WebView wv) {
+ wv.KeyPressEvent += WebView_KeyPress;
+ }
+
+ private void Window_KeyPress(object o, KeyPressEventArgs e) {
switch(e.Event.Key) {
- case Gdk.Key.j:
- wt.ScrolledWindow.Vadjustment.Value += wt.ScrolledWindow.Vadjustment.StepIncrement;
- break;
- case Gdk.Key.k:
- wt.ScrolledWindow.Vadjustment.Value -= wt.ScrolledWindow.Vadjustment.StepIncrement;
- break;
- case Gdk.Key.l:
- wt.ScrolledWindow.Hadjustment.Value += wt.ScrolledWindow.Hadjustment.StepIncrement;
- break;
- case Gdk.Key.h:
- wt.ScrolledWindow.Hadjustment.Value -= wt.ScrolledWindow.Hadjustment.StepIncrement;
- break;
case Gdk.Key.o:
CommandStart("open ");
break;
- case Gdk.Key.r:
- wt.WebView.Reload();
- break;
case Gdk.Key.t:
CommandStart("tabopen ");
break;
case Gdk.Key.colon:
CommandlineShow();
break;
- case Gdk.Key.Escape:
- wt.WebView.ExecuteScript("document.activeElement.blur()");
- break;
+ }
+ }
+
+ private void WebView_KeyPress(object o, KeyPressEventArgs e) {
+ Console.WriteLine(e.Event.Key);
+ if ((Gdk.ModifierType.ControlMask & e.Event.State) != 0) {
+ switch(e.Event.Key) {
+ case Gdk.Key.n:
+ wt.Tabs.NextPage();
+ break;
+ case Gdk.Key.p:
+ wt.Tabs.PrevPage();
+ break;
+ }
+ } else {
+ switch(e.Event.Key) {
+ case Gdk.Key.j:
+ wt.ScrolledWindow.Vadjustment.Value += wt.ScrolledWindow.Vadjustment.StepIncrement;
+ break;
+ case Gdk.Key.k:
+ wt.ScrolledWindow.Vadjustment.Value -= wt.ScrolledWindow.Vadjustment.StepIncrement;
+ break;
+ case Gdk.Key.l:
+ wt.ScrolledWindow.Hadjustment.Value += wt.ScrolledWindow.Hadjustment.StepIncrement;
+ break;
+ case Gdk.Key.h:
+ wt.ScrolledWindow.Hadjustment.Value -= wt.ScrolledWindow.Hadjustment.StepIncrement;
+ break;
+ case Gdk.Key.r:
+ wt.WebView.Reload();
+ break;
+ case Gdk.Key.Escape:
+ wt.WebView.ExecuteScript("document.activeElement.blur()");
+ break;
+ }
}
}
private void command_Activate(object o, EventArgs e) {
string[] args = Regex.Split(commandline.Text, @"\s+");
switch(args[0]) {
+ case "close":
+ wt.CloseTab();
+ break;
case "open":
if (args.Length < 2) return;
wt.OpenUri(args[1]);
break;
+ case "tabopen":
+ if (args.Length < 2) return;
+ wt.OpenUriTab(args[1]);
+ wt.Tabs.CurrentPage = wt.Tabs.NPages - 1;
+ break;
+ case "n":
+ wt.Tabs.NextPage();
+ break;
+ case "p":
+ wt.Tabs.PrevPage();
+ break;
case "q":
wt.Quit();
break;