public LayoutSlot(ManageWindowLayoutsDialogViewModel parent, string name, Keys shortcut) { Name = name; OldName = name; Shortcut = shortcut; RenameCommand = parent.RenameCommand; DeleteCommand = parent.DeleteCommand; }
/// <summary> /// Shows the manage layouts dialog</summary> /// <remarks>Programmatic method for showing the 'manage layouts' dialog</remarks> public override void ShowManageLayoutsDialog() { var layouts = new List<Pair<string, Keys>>(); foreach (var layoutName in WindowLayoutService.Layouts) { Keys shortcut = Keys.None; { IEnumerable<Keys> keys; if (m_dictCommandKeys.TryGetValue(layoutName, out keys)) shortcut = keys.FirstOrDefault(); } layouts.Add(new Pair<string, Keys>(layoutName, shortcut)); } var vm = new ManageWindowLayoutsDialogViewModel(layouts); vm.ScreenshotDirectory = LayoutScreenshotDirectory; var dialog = new WindowLayoutManageDialog(vm); if (dialog.ShowParentedDialog() != true) return; // Re-associate shortcuts for proper persisting foreach (var kv in vm.RenamedLayouts) { IEnumerable<Keys> shortcuts; if (!m_dictCommandKeys.TryGetValue(kv.Key, out shortcuts)) continue; m_dictCommandKeys.Remove(kv.Key); m_dictCommandKeys[kv.Value] = shortcuts; } foreach (var kv in vm.RenamedLayouts) WindowLayoutService.RenameLayout(kv.Key, kv.Value); foreach (var layoutName in vm.DeletedLayouts) WindowLayoutService.RemoveLayout(layoutName); }