public static SavedTabGroupsState FromXml(XElement child) { var savedState = new SavedTabGroupsState(); savedState.Index = (int)child.Attribute("index"); savedState.IsHorizontal = (bool)child.Attribute("is-horizontal"); foreach (var group in child.Elements("TabGroup")) savedState.Groups.Add(SavedTabGroupState.FromXml(group)); return savedState; }
void RestoreTabGroups(SavedTabGroupsState savedGroups) { Debug.Assert(tabGroupsManager.AllTabGroups.Count == 1); bool first = true; foreach (var savedGroupState in savedGroups.Groups) { var tabManager = first ? tabGroupsManager.ActiveTabGroup : tabGroupsManager.CreateTabGroup(savedGroups.IsHorizontal); first = false; foreach (var savedTabState in savedGroupState.Tabs) { var savedDecompileTabState = savedTabState as SavedDecompileTabState; if (savedDecompileTabState != null) { var tabState = CreateNewDecompileTabState(tabManager, Languages.GetLanguage(savedDecompileTabState.Language)); CreateDecompileTabState(tabState, savedDecompileTabState); continue; } var savedHexTabState = savedTabState as SavedHexTabState; if (savedHexTabState != null && File.Exists(savedHexTabState.FileName)) { var tabState = CreateNewHexTabState(tabManager); CreateHexTabState(tabState, savedHexTabState); continue; } Debug.Fail("Unknown saved state"); } tabManager.SetSelectedIndex(savedGroupState.Index); } tabGroupsManager.SetSelectedIndex(savedGroups.Index); }
SavedTabGroupsState CreateSavedTabGroupsState() { var state = new SavedTabGroupsState(); state.IsHorizontal = tabGroupsManager.IsHorizontal; state.Index = tabGroupsManager.ActiveIndex; foreach (var tabManager in tabGroupsManager.AllTabGroups) state.Groups.Add(CreateSavedTabGroupState(tabManager)); return state; }