using System; using System.Collections.Generic; using System.Text.RegularExpressions; using bytex64.WebThing; public class Session : WebThingPlugin { WebThing wt; string CurrentSession = "Default"; public override void Init(WebThing wt) { this.wt = wt; if (Config.Arguments.Length == 0) { if (Config.Options.ContainsKey("Session")) { RestoreSession(Config.Options["Session"]); } else if (Options.ContainsKey("Default")) { RestoreSession("Default"); } } } public override void Deinit(WebThing wt) { if (Options.ContainsKey("AutoSave") && Config.ParseBool(Options["AutoSave"])) { SaveSession(CurrentSession); } } public void RestoreSession(string SessionName) { if (Options.ContainsKey(SessionName)) { while (wt.Tabs.NPages > 0) { WebThingView wtv = wt.Tabs.CurrentPageWidget as WebThingView; wt.Tabs.Remove(wtv); wtv.Dispose(); } string[] pages = Regex.Split(Options[SessionName], @"\s+"); foreach (string page in pages) { wt.OpenTab(page); } CurrentSession = SessionName; } else { Console.WriteLine("Could not restore session {0} because it does not exist.", SessionName); } } public void SaveSession(string SessionName) { List Uris = new List(); foreach (WebThingView wtv in wt.Tabs) { Uris.Add(wtv.WebView.MainFrame.Uri); } Options[SessionName] = String.Join(" ", Uris.ToArray()); SaveConfig(); } public void DeleteSession(string SessionName) { Options.Remove(SessionName); SaveConfig(); } }