コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
            }
        }