From 2ec072088f5ce23d9d7494434176cd134c56c095 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 11 Jul 2006 15:55:16 +0000 Subject: [PATCH] Fixed SD2-925: Building a project when the solution has different configurations git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1564 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Commands/BuildCommands.cs | 23 ++++++++++----- src/Main/Base/Project/Src/Gui/IWorkbench.cs | 5 ++++ .../Commands/SolutionNodeCommands.cs | 3 +- .../Project/Src/Gui/WorkbenchSingleton.cs | 9 ++---- .../Project/Src/Project/Solution/Solution.cs | 29 +++++++++++++++---- .../Services/ProjectService/ProjectService.cs | 21 +++++++------- 6 files changed, 59 insertions(+), 31 deletions(-) diff --git a/src/Main/Base/Project/Src/Commands/BuildCommands.cs b/src/Main/Base/Project/Src/Commands/BuildCommands.cs index 9c191e1f4e..5fab9555d8 100644 --- a/src/Main/Base/Project/Src/Commands/BuildCommands.cs +++ b/src/Main/Base/Project/Src/Commands/BuildCommands.cs @@ -66,28 +66,35 @@ namespace ICSharpCode.SharpDevelop.Project.Commands public event EventHandler BuildComplete; } - public class Build : AbstractBuildMenuCommand + public sealed class Build : AbstractBuildMenuCommand { public override void StartBuild() { + ProjectService.RaiseEventStartBuild(); ProjectService.OpenSolution.Build(CallbackMethod); } public override void AfterBuild() { - ProjectService.OnEndBuild(); + ProjectService.RaiseEventEndBuild(); } } - public class Rebuild : Build + public sealed class Rebuild : AbstractBuildMenuCommand { public override void StartBuild() { + ProjectService.RaiseEventStartBuild(); ProjectService.OpenSolution.Rebuild(CallbackMethod); } + + public override void AfterBuild() + { + ProjectService.RaiseEventEndBuild(); + } } - public class Clean : AbstractBuildMenuCommand + public sealed class Clean : AbstractBuildMenuCommand { public override void StartBuild() { @@ -95,7 +102,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands } } - public class Publish : AbstractBuildMenuCommand + public sealed class Publish : AbstractBuildMenuCommand { public override void StartBuild() { @@ -130,19 +137,21 @@ namespace ICSharpCode.SharpDevelop.Project.Commands public override void StartBuild() { + ProjectService.RaiseEventStartBuild(); this.ProjectToBuild.Build(CallbackMethod); } public override void AfterBuild() { - ProjectService.OnEndBuild(); + ProjectService.RaiseEventEndBuild(); } } - public class RebuildProject : BuildProject + public sealed class RebuildProject : BuildProject { public override void StartBuild() { + ProjectService.RaiseEventStartBuild(); this.ProjectToBuild.Rebuild(CallbackMethod); } } diff --git a/src/Main/Base/Project/Src/Gui/IWorkbench.cs b/src/Main/Base/Project/Src/Gui/IWorkbench.cs index d7df9739b9..04e2b64196 100644 --- a/src/Main/Base/Project/Src/Gui/IWorkbench.cs +++ b/src/Main/Base/Project/Src/Gui/IWorkbench.cs @@ -90,6 +90,11 @@ namespace ICSharpCode.SharpDevelop.Gui /// /// Is called, when a workbench view was opened /// + /// + /// WorkbenchSingleton.WorkbenchCreated += delegate { + /// WorkbenchSingleton.Workbench.ViewOpened += ...; + /// }; + /// event ViewContentEventHandler ViewOpened; /// diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs index 4427778001..2616f7fc55 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs @@ -52,8 +52,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, fileName); ProjectService.AddProject(solutionFolderNode, newProject); NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); - solutionFolderNode.Solution.ApplySolutionConfigurationToProjects(); - solutionFolderNode.Solution.ApplySolutionPlatformToProjects(); + solutionFolderNode.Solution.ApplySolutionConfigurationAndPlatformToProjects(); } } diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs index 3c41bd5701..3a2b3a29b5 100644 --- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs +++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs @@ -52,12 +52,6 @@ namespace ICSharpCode.SharpDevelop.Gui } } - static WorkbenchSingleton() - { - PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges); - ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); }; - } - /// /// This method handles the redraw all event for specific changed IDE properties /// @@ -82,6 +76,9 @@ namespace ICSharpCode.SharpDevelop.Gui workbench = new DefaultWorkbench(); MessageService.MainForm = workbench; + PropertyService.PropertyChanged += new PropertyChangedEventHandler(TrackPropertyChanges); + ResourceService.LanguageChanged += delegate { workbench.RedrawAllComponents(); }; + caller = new STAThreadCaller(workbench); workbench.InitializeWorkspace(); diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs index c5543f45f2..4e69122ba6 100644 --- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs +++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs @@ -627,17 +627,34 @@ namespace ICSharpCode.SharpDevelop.Project public void ApplySolutionConfigurationToProjects() { - // TODO: Use assignments from project configuration section - foreach (IProject p in Projects) { - p.Configuration = preferences.ActiveConfiguration; - } + ApplySolutionConfigurationAndPlatformToProjects(); } public void ApplySolutionPlatformToProjects() { - // TODO: Use assignments from project configuration section + ApplySolutionConfigurationAndPlatformToProjects(); + } + + public void ApplySolutionConfigurationAndPlatformToProjects() + { + string conf = preferences.ActiveConfiguration; + string plat = preferences.ActivePlatform; + ProjectSection prjSec = GetProjectConfigurationsSection(); + Dictionary dict = new Dictionary(); + foreach (SolutionItem item in prjSec.Items) { + dict[item.Name] = item.Location; + } + string searchKeyPostFix = "." + conf + "|" + plat + ".Build.0"; foreach (IProject p in Projects) { - p.Platform = preferences.ActivePlatform; + string searchKey = p.IdGuid + searchKeyPostFix; + string targetConfPlat; + if (dict.TryGetValue(searchKey, out targetConfPlat)) { + p.Configuration = AbstractProject.GetConfigurationNameFromKey(targetConfPlat); + p.Platform = AbstractProject.GetPlatformNameFromKey(targetConfPlat); + } else { + p.Configuration = conf; + p.Platform = plat; + } } } diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs index d4ba32d4d0..558339aacb 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs @@ -263,8 +263,7 @@ namespace ICSharpCode.SharpDevelop.Project static void ApplyConfigurationAndReadPreferences() { - openSolution.ApplySolutionConfigurationToProjects(); - openSolution.ApplySolutionPlatformToProjects(); + openSolution.ApplySolutionConfigurationAndPlatformToProjects(); foreach (IProject project in openSolution.Projects) { string file = GetPreferenceFileName(project.FileName); if (FileUtility.IsValidFileName(file) && File.Exists(file)) { @@ -467,23 +466,25 @@ namespace ICSharpCode.SharpDevelop.Project } } - static void OnStartBuild(EventArgs e) + public static void RaiseEventStartBuild() { if (StartBuild != null) { - StartBuild(null, e); + StartBuild(null, EventArgs.Empty); } } - public static void OnEndBuild() + public static void RaiseEventEndBuild() { - OnEndBuild(new EventArgs()); + if (EndBuild != null) { + EndBuild(null, EventArgs.Empty); + } } - static void OnEndBuild(EventArgs e) + // TODO: Remove me in Serralongue + [Obsolete("Use RaiseEventEndBuild instead")] + public static void OnEndBuild() { - if (EndBuild != null) { - EndBuild(null, e); - } + RaiseEventEndBuild(); } public static void RemoveSolutionFolder(string guid)