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 @@
<Compile Include="Src\Gui\BrowserDisplayBinding\BrowserLocationConditionEvaluator.cs" /> <Compile Include="Src\Gui\BrowserDisplayBinding\BrowserLocationConditionEvaluator.cs" />
<Compile Include="Src\Services\Debugger\DebuggerDoozer.cs" /> <Compile Include="Src\Services\Debugger\DebuggerDoozer.cs" />
<Compile Include="Src\Dom\HelpProvider.cs" /> <Compile Include="Src\Dom\HelpProvider.cs" />
<Compile Include="Src\Project\Solution\SolutionPreferences.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj"> <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
{ {
public override void Run() public override void Run()
{ {
throw new System.NotImplementedException(); AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
// ProjectBrowserView browser = Owner as ProjectBrowserView; Solution solution = ProjectService.OpenSolution;
// AbstractBrowserNode node = null; if (node == null || solution == null) {
// return;
// if (browser != null) { }
// node = browser.SelectedNode as FolderNode; if (node.Project.IsStartable) {
// } else { solution.Preferences.StartupProject = node.Project;
// ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView pbv = (ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)WorkbenchSingleton.Workbench.GetPad(typeof(ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)); } else {
// MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}");
// node = pbv.GetNodeFromProject(ProjectService.CurrentProject); }
// }
//
// if (node != null) {
// Combine combine = node.Combine;
// combine.SingleStartProjectName = node.Project.Name;
// combine.SingleStartupProject = true;
//
// ProjectService.SaveCombine();
// }
} }
} }

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

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

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

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

Loading…
Cancel
Save