/plugins/QuickSearch.cs
using System;
using Gtk;
using bytex64.WebThing;
public class QuickSearch : WebThingPlugin {
WebThing wt;
Gtk.Entry SearchEntry;
public override void Init(WebThing wt) {
SearchEntry = new Gtk.Entry();
SearchEntry.KeyPressEvent += SearchEntry_KeyPress;
SearchEntry.Changed += SearchEntry_Changed;
SearchEntry.Activated += SearchEntry_Activated;
wt.AttachWidget(SearchEntry, AttachPoint.S, AttachOptions.Fill, AttachOptions.Shrink);
wt.Window.KeyPressEvent += Window_KeyPress;
this.wt = wt;
}
private void Window_KeyPress(object o, Gtk.KeyPressEventArgs e) {
if (e.Event.State == Gdk.ModifierType.None &&
e.Event.Key == Gdk.Key.slash) {
SearchEntry.Show();
SearchEntry.GrabFocus();
}
}
private void SearchEntry_Changed(object o, EventArgs e) {
Console.WriteLine("Search {0}", SearchEntry.Text);
wt.WebView.SearchText(SearchEntry.Text, false, true, true);
}
private void SearchEntry_Activated(object o, EventArgs e) {
SearchEntry.Hide();
wt.WebView.GrabFocus();
}
private void SearchEntry_KeyPress(object o, Gtk.KeyPressEventArgs e) {
if ((e.Event.State & Gdk.ModifierType.ControlMask) != 0) {
switch(e.Event.Key) {
case Gdk.Key.g:
wt.WebView.SearchText(SearchEntry.Text, false, true, true);
break;
}
} else {
switch(e.Event.Key) {
case Gdk.Key.Escape:
case Gdk.Key.Return:
SearchEntry.Hide();
wt.WebView.GrabFocus();
break;
}
}
}
}