private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { SaveCurrentSession(null); if (TabControlParent.TabPages.Count > 0) { for (var i = 0; i < TabControlParent.TabPages.Count; i++) { Classes.LogTabPage logTabPage = TabControlParent.TabPages[i] as Classes.LogTabPage; if (logTabPage.IsFolder) { TabControl subTabControl = (logTabPage.Controls.Find("SubTabControl", true).FirstOrDefault()) as TabControl; for (var ik = 0; ik < subTabControl.TabPages.Count; ik++) { try { (subTabControl.TabPages[ik] as Classes.LogTabPage).Deconstruct(); } catch (NullReferenceException err) { Console.WriteLine(err.Message); } } } try { logTabPage.Deconstruct(); } catch (NullReferenceException err) { Console.WriteLine(err.Message); } } TabControlParent.TabPages.Clear(); } DirectoryInfo tempDir = new DirectoryInfo("./Assets/TempFiles/"); if (tempDir.GetFiles().Any()) { foreach (FileInfo file in tempDir.GetFiles()) { try { file.Delete(); } catch (IOException err) { Console.WriteLine(err.Message); } } } }
private void LoadSession(string path) { if (TabControlParent.TabPages.Count > 0) { for (var i = 0; i < TabControlParent.TabPages.Count; i++) { Classes.LogTabPage logTabPage = TabControlParent.TabPages[i] as Classes.LogTabPage; if (logTabPage.IsFolder) { TabControl subTabControl = (logTabPage.Controls.Find("SubTabControl", true).FirstOrDefault()) as TabControl; for (var ik = 0; ik < subTabControl.TabPages.Count; ik++) { try { (subTabControl.TabPages[ik] as Classes.LogTabPage).Deconstruct(); } catch (NullReferenceException err) { Console.WriteLine(err.Message); } } } try { logTabPage.Deconstruct(); } catch (NullReferenceException err) { Console.WriteLine(err.Message); } } TabControlParent.TabPages.Clear(); } try { XDocument LastSession = XDocument.Load(path ?? @"./Assets/Session/Session.xml"); XElement files = LastSession.Root.Elements("Files").First(); for (var i = 0; i < files.Elements().Count(); i++) { XElement element = files.Elements().ToList()[i]; int index = -1; Int32.TryParse(element.Attribute("Position").Value, out index); CreateParentTabPageAtIndex(element.Attribute("Path").Value, index, text: element.Attribute("Name").Value); } XElement folders = LastSession.Root.Elements("Folders").First(); for (var f = 0; f < folders.Elements().Count(); f++) { XElement element = folders.Elements().ToList()[f]; int index = -1; Int32.TryParse(element.Attribute("Position").Value, out index); CreateFolder(element.Attribute("Name").Value, index); for (var fi = 0; fi < folders.Elements().ToList()[f].Elements().Count(); fi++) { int subIndex = -1; Int32.TryParse(folders.Elements().ToList()[f].Elements().ToList()[fi].Attribute("Position").Value, out subIndex); CreateParentTabPageAtIndex(folders.Elements().ToList()[f].Elements().ToList()[fi].Attribute("Path").Value, subIndex, parentName: element.Attribute("Name").Value, text: folders.Elements().ToList()[f].Elements().ToList()[fi].Attribute("Name").Value); } } SetIndexes(); } catch (IOException err) { MessageBox.Show(err.Message); return; } }