X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=plugins%2FVimish.cs;fp=plugins%2FVimish.cs;h=8de862a05422868ac652ec4d557c8668ac767b2b;hb=0b2e5f8fffd9ed781a1ddab279dbd6fec5c7695a;hp=7acdad2dcb0d905250324d8b66ebcd76733c1a98;hpb=80865e6b884a4bb289cb4a835a6fa66b3529c872;p=WebThing.git diff --git a/plugins/Vimish.cs b/plugins/Vimish.cs index 7acdad2..8de862a 100644 --- a/plugins/Vimish.cs +++ b/plugins/Vimish.cs @@ -1,15 +1,17 @@ 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; @@ -19,36 +21,56 @@ public class Vimish : WebThingPlugin { 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; + } } } @@ -72,10 +94,24 @@ public class Vimish : WebThingPlugin { 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;