void UpdateExcludes(ExcludeItem[] backup) { var exclude_map = new Dictionary <Mesh, ExcludeItem>(); var excludes = new List <ExcludeItem>(); foreach (var x in m_root.GetComponentsInChildren <Renderer>()) { var mesh = x.GetMesh(); if (mesh == null) { continue; } if (exclude_map.ContainsKey(mesh)) { continue; } var item = new ExcludeItem { Mesh = mesh, }; var found = backup.FirstOrDefault(y => y.Mesh == mesh); if (found != null) { item.Exclude = found.Exclude; } excludes.Add(item); exclude_map[mesh] = item; } m_excludes.AddRange(excludes); }
private void contextMenuResults_Clicked(object sender, RoutedEventArgs e) { switch ((string)(sender as MenuItem)?.Header) { case "Select All": { SetCheckedItems(true); break; } case "Select None": { SetCheckedItems(false); break; } case "Invert Selection": { SetCheckedItems(null); break; } case "Exclude Selection": { if (Tree.SelectedNode == null) { MessageBox.Show(Application.Current.MainWindow, "No registry key is selected", Utils.ProductName, MessageBoxButton.OK, MessageBoxImage.Error); return; } var regKeyPath = (Tree.SelectedNode.Tag as BadRegistryKey)?.RegKeyPath; var excludeItem = new ExcludeItem { RegistryPath = regKeyPath }; if (!Settings.Default.ArrayExcludeList.Contains(excludeItem)) { Settings.Default.ArrayExcludeList.Add(excludeItem); MessageBox.Show(Application.Current.MainWindow, $"Added registry key ({regKeyPath}) to the exclude list", Utils.ProductName, MessageBoxButton.OK, MessageBoxImage.Information); Tree.RemoveNode(Tree.SelectedNode); } else { MessageBox.Show(Application.Current.MainWindow, $"Registry key ({regKeyPath}) already exists", Utils.ProductName, MessageBoxButton.OK, MessageBoxImage.Error); } break; } case "View In RegEdit": { if (Tree.SelectedNode == null) { MessageBox.Show(Application.Current.MainWindow, "No registry key is selected", Utils.ProductName, MessageBoxButton.OK, MessageBoxImage.Error); return; } try { var regKeyPath = (Tree.SelectedNode.Tag as BadRegistryKey)?.RegKeyPath; var regKeyValueName = (Tree.SelectedNode.Tag as BadRegistryKey)?.ValueName; RegEditGo.GoTo(regKeyPath, regKeyValueName); } catch (Exception ex) { string message = $"Unable to open registry key in RegEdit.\nThe following error occurred: {ex.Message}"; MessageBox.Show(Application.Current.MainWindow, message, Utils.ProductName, MessageBoxButton.OK, MessageBoxImage.Error); } break; } } }