public void ConfigureCallback() { try { var project = currentProjectFinder.GetCurrentProject(); if (UnsaveProjectChecker.HasUnsavedPendingChanges(project)) { return; } var projectReader = new ProjectReader(project.FullName); var model = new ConfigureWindowModel(); var defaulter = new Defaulter(); defaulter.ToModel(projectReader, model); var configureWindow = new ConfigureWindow(model); new WindowInteropHelper(configureWindow) { Owner = GetActiveWindow() }; if (configureWindow.ShowDialog().GetValueOrDefault()) { Configure(model, project); } } catch (COMException exception) { exceptionDialog.HandleException(exception); } catch (Exception exception) { exceptionDialog.HandleException(exception); } }
public void FromModel(CosturaProjectInjector projectInjector, ConfigureWindowModel configureWindowModel) { if (!configureWindowModel.DeriveTargetPathFromBuildEngine) { projectInjector.TargetPath = configureWindowModel.TargetPath; } if (!configureWindowModel.Overwrite) { projectInjector.Overwrite = false; } if (!configureWindowModel.IncludeDebugSymbols) { projectInjector.IncludeDebugSymbols = false; } if (!configureWindowModel.DeleteReferences) { projectInjector.DeleteReferences = false; } if (configureWindowModel.MessageImportance != MessageImportance.Low) { projectInjector.MessageImportance = configureWindowModel.MessageImportance; } projectInjector.ToolsDirectory = configureWindowModel.ToolsDirectory; }
public void FromModel(CosturaProjectInjector projectInjector, ConfigureWindowModel configureWindowModel) { if (!configureWindowModel.DeriveTargetPathFromBuildEngine) { projectInjector.TargetPath = configureWindowModel.TargetPath; } if (!configureWindowModel.Overwrite) { projectInjector.Overwrite = false; } if (!configureWindowModel.IncludeDebugSymbols) { projectInjector.IncludeDebugSymbols = false; } if (!configureWindowModel.DeleteReferences) { projectInjector.DeleteReferences = false; } if (!configureWindowModel.RunPostBuildEvents) { projectInjector.RunPostBuildEvents = false; } if (configureWindowModel.MessageImportance != MessageImportance.Low) { projectInjector.MessageImportance = configureWindowModel.MessageImportance; } projectInjector.ToolsDirectory = configureWindowModel.ToolsDirectory; }
void Configure(ConfigureWindowModel model, Project project) { var directoryInfo = fullPathResolver.GetFullPath(model.ToolsDirectory, project); var targetFile = new FileInfo(Path.Combine(directoryInfo.FullName, "NotifyPropertyWeaverMsBuildTask.dll")); if (!targetFile.Exists || VersionChecker.IsVersionNewer(targetFile)) { if (!fileExporter.ExportTask(directoryInfo)) { taskFileReplacer.AddFile(directoryInfo); } } if (model.IncludeAttributeAssembly) { var frameworkType = FrameworkTypeReader.GetFrameworkType(project.FullName); fileExporter.ExportAttribute(fullPathResolver.GetFullPath(model.DependenciesDirectory, project), frameworkType); } var defaulter = new Defaulter(); var projectInjector = new NotifyPropertyWeaverProjectInjector { ProjectFile = project.FullName }; defaulter.FromModel(projectInjector, model); projectInjector.Execute(); }
public ConfigureWindow(ConfigureWindowModel model) { Model = model; InitializeComponent(); DataContext = Model; }
public void ToModel(ProjectReader projectReader, ConfigureWindowModel configureWindowModel) { configureWindowModel.MessageImportance = projectReader.MessageImportance.GetValueOrDefault(MessageImportance.Low); configureWindowModel.TargetPath = projectReader.TargetPath; configureWindowModel.Overwrite = projectReader.Overwrite.GetValueOrDefault(true); configureWindowModel.IncludeDebugSymbols = projectReader.IncludeDebugSymbols.GetValueOrDefault(true); configureWindowModel.DeleteReferences = projectReader.DeleteReferences.GetValueOrDefault(true); configureWindowModel.DeriveTargetPathFromBuildEngine = projectReader.TargetPath == null; configureWindowModel.ToolsDirectory = GetValueOrDefault(projectReader.ToolsDirectory, @"$(SolutionDir)Tools\"); }
public void ValidateTargetPath() { var model = new ConfigureWindowModel { TargetPath = null, DeriveTargetPathFromBuildEngine = false, ToolsDirectory = "foo," }; Assert.IsNotNullOrEmpty(model.GetErrors()); model.TargetPath = string.Empty; Assert.IsNotNullOrEmpty(model.GetErrors()); model.TargetPath = "a"; Assert.IsNull(model.GetErrors()); }
public void ValidateTargetNode() { var model = new ConfigureWindowModel { DeriveTargetPathFromBuildEngine = true, EventInvokerName = "foo", ToolsDirectory = "foo,", }; Assert.IsNotNullOrEmpty(model.GetErrors()); model.TargetNode = string.Empty; Assert.IsNotNullOrEmpty(model.GetErrors()); model.TargetNode = "AfterCompile"; Assert.IsNull(model.GetErrors()); }
public void ValidateEventInvokerName() { Debug.WriteLine(Guid.NewGuid().ToString()); var model = new ConfigureWindowModel { EventInvokerName = null, DeriveTargetPathFromBuildEngine = true, ToolsDirectory = "foo", TargetNode = "AfterCompile", }; Assert.IsNotNullOrEmpty(model.GetErrors()); model.EventInvokerName = string.Empty; Assert.IsNotNullOrEmpty(model.GetErrors()); model.EventInvokerName = "a"; Assert.IsNull(model.GetErrors()); }
public void ValidateDependenciesDirectory() { var model = new ConfigureWindowModel { IncludeAttributeAssembly = true, DependenciesDirectory = null, DeriveTargetPathFromBuildEngine = true, EventInvokerName = "foo", ToolsDirectory = "foo", TargetNode = "AfterCompile", }; Assert.IsNotNullOrEmpty(model.GetErrors()); model.DependenciesDirectory = string.Empty; Assert.IsNotNullOrEmpty(model.GetErrors()); model.DependenciesDirectory = "a"; Assert.IsNull(model.GetErrors()); }
void Configure(ConfigureWindowModel model, Project project) { var directoryInfo = fullPathResolver.GetFullPath(model.ToolsDirectory, project); var targetFile = new FileInfo(Path.Combine(directoryInfo.FullName, "Costura.dll")); if (!targetFile.Exists || VersionChecker.IsVersionNewer(targetFile)) { if (!fileExporter.ExportTask(directoryInfo)) { taskFileReplacer.AddFile(directoryInfo); } } var defaulter = new Defaulter(); var projectInjector = new CosturaProjectInjector { ProjectFile = project.FullName }; defaulter.FromModel(projectInjector, model); projectInjector.Execute(); }
public void FromModel(NotifyPropertyWeaverProjectInjector projectInjector, ConfigureWindowModel configureWindowModel) { if (!configureWindowModel.CheckForEquality) { projectInjector.CheckForEquality = false; } if (configureWindowModel.ProcessFields) { projectInjector.ProcessFields = true; } if (configureWindowModel.CheckForIsChanged) { projectInjector.CheckForIsChanged = true; } projectInjector.IncludeAttributeAssembly = configureWindowModel.IncludeAttributeAssembly; if (!configureWindowModel.DeriveTargetPathFromBuildEngine) { projectInjector.TargetPath = configureWindowModel.TargetPath; } if (!configureWindowModel.TryToWeaveAllTypes) { projectInjector.TryToWeaveAllTypes = false; } if (configureWindowModel.MessageImportance != MessageImportance.Low) { projectInjector.MessageImportance = configureWindowModel.MessageImportance; } projectInjector.Target = configureWindowModel.TargetNode; projectInjector.ToolsDirectory = configureWindowModel.ToolsDirectory; projectInjector.DependenciesDirectory = configureWindowModel.DependenciesDirectory; if (configureWindowModel.EventInvokerName != "OnPropertyChanged") { projectInjector.EventInvokerName = configureWindowModel.EventInvokerName; } }
public void ToModel(ProjectReader projectReader, ConfigureWindowModel configureWindowModel) { configureWindowModel.CheckForEquality = projectReader.CheckForEquality.GetValueOrDefault(true); configureWindowModel.CheckForIsChanged = projectReader.CheckForIsChanged.GetValueOrDefault(false); configureWindowModel.TryToWeaveAllTypes = projectReader.TryToWeaveAllTypes.GetValueOrDefault(true); configureWindowModel.ProcessFields = projectReader.ProcessFields.GetValueOrDefault(false); configureWindowModel.MessageImportance = projectReader.MessageImportance.GetValueOrDefault(MessageImportance.Low); if (projectReader.TargetNode == null) { configureWindowModel.TargetNode = "AfterCompile"; } else { configureWindowModel.TargetNode = projectReader.TargetNode; } configureWindowModel.TargetPath = projectReader.TargetPath; configureWindowModel.DeriveTargetPathFromBuildEngine = projectReader.TargetPath == null; configureWindowModel.DependenciesDirectory = GetValueOrDefault(projectReader.DependenciesDirectory, @"$(SolutionDir)Lib\"); configureWindowModel.ToolsDirectory = GetValueOrDefault(projectReader.ToolsDirectory, @"$(SolutionDir)Tools\"); configureWindowModel.EventInvokerName = GetValueOrDefault(projectReader.EventInvokerName, "OnPropertyChanged"); configureWindowModel.IncludeAttributeAssembly = !string.IsNullOrWhiteSpace(projectReader.DependenciesDirectory); }