Browse Source

Fixed SD2-412: Set as startup project is not implemented.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@396 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
5417969348
  1. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  2. 29
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs
  3. 13
      src/Main/Base/Project/Src/Project/Solution/Solution.cs
  4. 57
      src/Main/Base/Project/Src/Project/Solution/SolutionPreferences.cs
  5. 26
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -685,6 +685,7 @@ @@ -685,6 +685,7 @@
<Compile Include="Src\Gui\BrowserDisplayBinding\BrowserLocationConditionEvaluator.cs" />
<Compile Include="Src\Services\Debugger\DebuggerDoozer.cs" />
<Compile Include="Src\Dom\HelpProvider.cs" />
<Compile Include="Src\Project\Solution\SolutionPreferences.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

29
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs

@ -24,25 +24,16 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -24,25 +24,16 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
throw new System.NotImplementedException();
// ProjectBrowserView browser = Owner as ProjectBrowserView;
// AbstractBrowserNode node = null;
//
// if (browser != null) {
// node = browser.SelectedNode as FolderNode;
// } else {
// ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView pbv = (ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)WorkbenchSingleton.Workbench.GetPad(typeof(ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView));
//
// node = pbv.GetNodeFromProject(ProjectService.CurrentProject);
// }
//
// if (node != null) {
// Combine combine = node.Combine;
// combine.SingleStartProjectName = node.Project.Name;
// combine.SingleStartupProject = true;
//
// ProjectService.SaveCombine();
// }
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
Solution solution = ProjectService.OpenSolution;
if (node == null || solution == null) {
return;
}
if (node.Project.IsStartable) {
solution.Preferences.StartupProject = node.Project;
} else {
MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}");
}
}
}

13
src/Main/Base/Project/Src/Project/Solution/Solution.cs

@ -144,6 +144,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -144,6 +144,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (!HasProjects) {
return null;
}
IProject startupProject = preferences.StartupProject;
if (startupProject != null)
return startupProject;
foreach (IProject project in Projects) {
if (project.IsStartable) {
return project;
@ -206,8 +209,17 @@ namespace ICSharpCode.SharpDevelop.Project @@ -206,8 +209,17 @@ namespace ICSharpCode.SharpDevelop.Project
#endregion
SolutionPreferences preferences;
public SolutionPreferences Preferences {
get {
return preferences;
}
}
public Solution()
{
preferences = new SolutionPreferences(this);
solutionFolderEnumerator = new SolutionFolderEnumerator(this);
solutionFolderContainerEnumerator = new SolutionFolderContainerEnumerator(this);
projectEnumerator = new ProjectEnumerator(this);
@ -560,5 +572,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -560,5 +572,6 @@ namespace ICSharpCode.SharpDevelop.Project
{
return MSBuildProject.RunMSBuild(FileName, "Publish");
}
}
}

57
src/Main/Base/Project/Src/Project/Solution/SolutionPreferences.cs

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 19.08.2005
* Time: 12:09
*/
using System;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project
{
public class SolutionPreferences : IMementoCapable
{
Solution solution;
internal SolutionPreferences(Solution solution)
{
this.solution = solution;
}
string startupProject = "";
public IProject StartupProject {
get {
if (startupProject.Length == 0)
return null;
foreach (IProject project in solution.Projects) {
if (project.IdGuid.Equals(startupProject, StringComparison.OrdinalIgnoreCase))
return project;
}
return null;
}
set {
startupProject = (value != null) ? value.IdGuid : "";
}
}
/// <summary>
/// Creates a new memento from the state.
/// </summary>
public Properties CreateMemento()
{
Properties p = new Properties();
p.Set("StartupProject", startupProject);
return p;
}
/// <summary>
/// Sets the state to the given memento.
/// </summary>
public void SetMemento(Properties memento)
{
startupProject = memento.Get("StartupProject", "");
}
}
}

26
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -194,8 +194,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -194,8 +194,12 @@ namespace ICSharpCode.SharpDevelop.Project
return;
OnSolutionLoaded(new SolutionEventArgs(openSolution));
try {
string file = GetPreferenceFileName(openSolution.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
openSolution.Preferences.SetMemento(Properties.Load(file));
}
foreach (IProject project in openSolution.Projects) {
string file = GetPreferenceFileName(project);
file = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
project.SetMemento(Properties.Load(file));
}
@ -229,7 +233,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -229,7 +233,7 @@ namespace ICSharpCode.SharpDevelop.Project
solution.Save(solutionFile);
openSolution = solution;
OnSolutionLoaded(new SolutionEventArgs(openSolution));
string file = GetPreferenceFileName(project);
string file = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(file) && File.Exists(file)) {
project.SetMemento(Properties.Load(file));
}
@ -246,10 +250,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -246,10 +250,10 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
static string GetPreferenceFileName(IProject project)
static string GetPreferenceFileName(string projectFileName)
{
string directory = PropertyService.ConfigDirectory + "preferences";
string fileName = project.FileName.Substring(3).Replace('/', '.').Replace('\\', '.').Replace(Path.DirectorySeparatorChar, '.');
string fileName = projectFileName.Substring(3).Replace('/', '.').Replace('\\', '.').Replace(Path.DirectorySeparatorChar, '.');
string fullFileName = Path.Combine(directory, fileName + ".xml");
return fullFileName;
}
@ -263,11 +267,21 @@ namespace ICSharpCode.SharpDevelop.Project @@ -263,11 +267,21 @@ namespace ICSharpCode.SharpDevelop.Project
Directory.CreateDirectory(directory);
}
string fullFileName;
Properties memento = openSolution.Preferences.CreateMemento();
if (memento != null) {
fullFileName = GetPreferenceFileName(openSolution.FileName);
if (FileUtility.IsValidFileName(fullFileName)) {
FileUtility.ObservedSave(new NamedFileOperationDelegate(memento.Save), fullFileName, FileErrorPolicy.Inform);
}
}
foreach (IProject project in OpenSolution.Projects) {
Properties memento = project.CreateMemento();
memento = project.CreateMemento();
if (memento == null) continue;
string fullFileName = GetPreferenceFileName(project);
fullFileName = GetPreferenceFileName(project.FileName);
if (FileUtility.IsValidFileName(fullFileName)) {
FileUtility.ObservedSave(new NamedFileOperationDelegate(memento.Save), fullFileName, FileErrorPolicy.Inform);
}

Loading…
Cancel
Save