Esempio n. 1
0
        private void Setup(PsfConfig psfConfig)
        {
            var hadPsf = this.HasPsf;

            if (psfConfig?.Processes != null)
            {
                foreach (var process in psfConfig.Processes)
                {
                    foreach (var item in process.Fixups.Where(f => f.Config != null))
                    {
                        if (item.Config is PsfRedirectionFixupConfig redirectionConfig)
                        {
                            var psfContentProcessViewModel = new PsfContentProcessRedirectionViewModel(process.Executable, item.Dll, redirectionConfig.RedirectedPaths);
                            this.RedirectionRules.Add(psfContentProcessViewModel);
                            this.HasPsf = true;
                        }
                        else if (item.Config is PsfTraceFixupConfig traceConfig)
                        {
                            var psfContentProcessViewModel = new PsfContentProcessTraceViewModel(process.Executable, item.Dll, traceConfig);
                            this.TraceRules.Add(psfContentProcessViewModel);
                            this.HasPsf = true;
                        }
                        else if (item.Config is PsfElectronFixupConfig electronConfig)
                        {
                            var psfContentProcessViewModel = new PsfContentProcessElectronViewModel(process.Executable, item.Dll, electronConfig);
                            this.ElectronRules.Add(psfContentProcessViewModel);
                            this.HasPsf = true;
                        }
                        else if (item.Config is CustomPsfFixupConfig customConfig)
                        {
                            var psfContentProcessViewModel = new PsfContentProcessCustomViewModel(process.Executable, item.Dll, customConfig);
                            this.CustomRules.Add(psfContentProcessViewModel);
                            this.HasPsf = true;
                        }
                    }
                }
            }

            if (hadPsf != this.HasPsf)
            {
                this.OnPropertyChanged(nameof(HasPsf));
            }
        }
Esempio n. 2
0
        public PsfContentViewModel(PsfConfig psfConfig)
        {
            this.RedirectionRules = new ChangeableCollection <PsfContentProcessRedirectionViewModel>();
            this.TraceRules       = new ChangeableCollection <PsfContentProcessTraceViewModel>();
            this.ElectronRules    = new ChangeableCollection <PsfContentProcessElectronViewModel>();
            this.CustomRules      = new ChangeableCollection <PsfContentProcessCustomViewModel>();

            this.Setup(psfConfig);

            this.RedirectionRules.Commit();
            this.TraceRules.Commit();
            this.ElectronRules.Commit();
            this.CustomRules.Commit();
            this.AddChildren(this.RedirectionRules, this.TraceRules, this.ElectronRules, this.CustomRules);

            this.RedirectionRules.CollectionChanged += this.RedirectionRulesOnCollectionChanged;
            this.ElectronRules.CollectionChanged    += this.ElectronRulesOnCollectionChanged;
            this.TraceRules.CollectionChanged       += this.TraceRulesOnCollectionChanged;
            this.CustomRules.CollectionChanged      += this.CustomRulesOnCollectionChanged;
        }