+ public void CommandlineShow() {
+ commandline.Show();
+ commandline.GrabFocus();
+ }
+
+ public void CommandlineHide() {
+ commandline.Hide();
+ wt.WebView.GrabFocus();
+ }
+
+ 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;
+ case "set":
+ if (args.Length == 2)
+ SetVar(args[1], "");
+ else
+ SetVar(args[1], args[2]);
+ break;
+ }
+ CommandlineHide();
+ }
+
+ public void SetVar(string key, string val) {
+ switch(key) {
+ case "showtabs":
+ wt.Tabs.ShowTabs = true;
+ break;
+ case "hidetabs":
+ wt.Tabs.ShowTabs = false;
+ break;
+ default:
+ Error("No variable {0}", key);
+ break;
+ }
+ }
+
+ private void Error(string format, params object[] values) {
+ Console.WriteLine(format, values);
+ }
+
+ private void command_KeyPress(object o, KeyPressEventArgs e) {
+ if (e.Event.Key == Gdk.Key.Escape)
+ CommandlineHide();
+ }