Browse Source

Various improvements in subversion addin.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2973 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
ca23c28708
  1. 4
      data/templates/project/CSharp/ConsoleProject.xpt
  2. 4
      data/templates/project/CSharp/ControlLibrary.xpt
  3. 5
      data/templates/project/CSharp/FormsProject.xpt
  4. 5
      data/templates/project/CSharp/Library.xpt
  5. 5
      data/templates/project/CSharp/NotifyIcon.xpt
  6. 5
      data/templates/project/CSharp/Service.xpt
  7. 4
      data/templates/project/CSharp/SharpDevelopAddin.xpt
  8. 4
      data/templates/project/CSharp/SharpDevelopCustomTool.xpt
  9. 4
      data/templates/project/CSharp/SharpDevelopMacro.xpt
  10. 5
      data/templates/project/CSharp/WPFApplication.xpt
  11. 5
      data/templates/project/CSharp/WPFNavigationApplication.xpt
  12. 5
      data/templates/project/ComplexExample.xpt.test
  13. 90
      src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs
  14. 8
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/OverlayIconManager.cs
  15. 46
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/SvnProjectBrowserVisitor.cs
  16. 141
      src/AddIns/Misc/SubversionAddIn/Project/Src/InOperationDialog.cs
  17. 142
      src/AddIns/Misc/SubversionAddIn/Project/Src/SvnClientWrapper.cs
  18. 45
      src/AddIns/Misc/SubversionAddIn/Project/Src/SvnMessageView.cs
  19. 5
      src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
  20. 2
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  21. 8
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  22. 2
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ApplicationSettings.cs
  23. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  24. 10
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs
  25. 17
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
  26. 21
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  27. 41
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs
  28. 39
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs
  29. 1
      src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs
  30. 10
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  31. 2
      src/Main/Base/Project/Src/Project/CustomTool.cs
  32. 4
      src/Main/Base/Project/Src/Services/File/FileService.cs
  33. 10
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
  34. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

4
data/templates/project/CSharp/ConsoleProject.xpt

@ -14,11 +14,13 @@ @@ -14,11 +14,13 @@
<!-- Actions -->
<Actions>
<Open filename = "Program.cs"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<!-- Template Content -->
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

4
data/templates/project/CSharp/ControlLibrary.xpt

@ -19,6 +19,10 @@ @@ -19,6 +19,10 @@
</Actions>
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/CSharp/FormsProject.xpt

@ -16,10 +16,13 @@ @@ -16,10 +16,13 @@
<!-- Actions -->
<Actions>
<Open filename = "MainForm.cs"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/CSharp/Library.xpt

@ -13,11 +13,14 @@ @@ -13,11 +13,14 @@
<!-- Actions -->
<Actions>
<Open filename = "MyClass.cs"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<!-- Template Content -->
<Project language="C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>Library</OutputType>
</PropertyGroup>

5
data/templates/project/CSharp/NotifyIcon.xpt

@ -16,10 +16,13 @@ @@ -16,10 +16,13 @@
<!-- Actions -->
<Actions>
<Open filename = "NotificationIcon.cs"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<Project language="C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/CSharp/Service.xpt

@ -16,11 +16,14 @@ @@ -16,11 +16,14 @@
<!-- Actions -->
<Actions>
<Open filename = "${ProjectName}.cs"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<!-- Template Content -->
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />

4
data/templates/project/CSharp/SharpDevelopAddin.xpt

@ -18,6 +18,10 @@ @@ -18,6 +18,10 @@
</Actions>
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

4
data/templates/project/CSharp/SharpDevelopCustomTool.xpt

@ -18,6 +18,10 @@ @@ -18,6 +18,10 @@
</Actions>
<Project language="C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

4
data/templates/project/CSharp/SharpDevelopMacro.xpt

@ -20,6 +20,10 @@ @@ -20,6 +20,10 @@
</Actions>
<Project language="C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/CSharp/WPFApplication.xpt

@ -14,10 +14,13 @@ @@ -14,10 +14,13 @@
<!-- Actions -->
<Actions>
<Open filename = "Window1.xaml"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/CSharp/WPFNavigationApplication.xpt

@ -14,10 +14,13 @@ @@ -14,10 +14,13 @@
<!-- Actions -->
<Actions>
<Open filename = "Page1.xaml"/>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</Actions>
<Project language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

5
data/templates/project/ComplexExample.xpt.test

@ -123,8 +123,11 @@ End Class @@ -123,8 +123,11 @@ End Class
</Project>
</SolutionFolder>
<!-- a project without language uses the language specified in the template header -->
<Project name = "${ProjectName}" directory = "." language = "C#">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />

90
src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs

@ -31,21 +31,69 @@ namespace ICSharpCode.Svn.Commands @@ -31,21 +31,69 @@ namespace ICSharpCode.Svn.Commands
FileService.FileRenaming += FileRenaming;
FileService.FileCreated += FileCreated;
ProjectService.ProjectAdded += ProjectAdded;
ProjectService.SolutionCreated += SolutionCreated;
ProjectService.ProjectCreated += ProjectCreated;
FileUtility.FileSaved += new FileNameEventHandler(FileSaved);
AbstractProjectBrowserTreeNode.AfterNodeInitialize += TreeNodeInitialized;
AbstractProjectBrowserTreeNode.OnNewNode += TreeNodeCreated;
}
SvnProjectBrowserVisitor visitor = new SvnProjectBrowserVisitor();
void TreeNodeCreated(object sender, TreeViewEventArgs e)
{
SolutionNode sn = e.Node as SolutionNode;
if (sn != null) {
if (CanBeVersionControlledDirectory(sn.Solution.Directory)) {
OverlayIconManager.Enqueue(sn);
}
} else {
DirectoryNode dn = e.Node as DirectoryNode;
if (dn != null) {
if (CanBeVersionControlledDirectory(dn.Directory)) {
OverlayIconManager.Enqueue(dn);
}
} else {
FileNode fn = e.Node as FileNode;
if (fn != null) {
if (CanBeVersionControlledFile(fn.FileName)) {
OverlayIconManager.Enqueue(fn);
}
}
}
}
}
void TreeNodeInitialized(object sender, TreeViewEventArgs e)
void SolutionCreated(object sender, SolutionEventArgs e)
{
AbstractProjectBrowserTreeNode node = e.Node as AbstractProjectBrowserTreeNode;
node.AcceptVisitor(visitor, null);
if (!AddInOptions.AutomaticallyAddFiles) return;
string solutionFileName = e.Solution.FileName;
string solutionDirectory = e.Solution.Directory;
if (!CanBeVersionControlledFile(solutionDirectory)) return;
try {
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(solutionDirectory);
if (status.TextStatus == StatusKind.Unversioned) {
client.Add(solutionDirectory, Recurse.None);
}
status = client.SingleStatus(solutionFileName);
if (status.TextStatus == StatusKind.Unversioned) {
client.Add(solutionFileName, Recurse.None);
client.AddToIgnoreList(solutionDirectory, Path.GetFileName(solutionFileName) + ".cache");
}
}
foreach (IProject p in e.Solution.Projects) {
ProjectCreated(null, new ProjectEventArgs(p));
}
} catch (Exception ex) {
MessageService.ShowError(ex, "Solution add exception");
}
}
void ProjectAdded(object sender, ProjectEventArgs e)
void ProjectCreated(object sender, ProjectEventArgs e)
{
if (!AddInOptions.AutomaticallyAddFiles) return;
if (!CanBeVersionControlledFile(e.Project.Directory)) return;
@ -53,6 +101,8 @@ namespace ICSharpCode.Svn.Commands @@ -53,6 +101,8 @@ namespace ICSharpCode.Svn.Commands
string projectDir = Path.GetFullPath(e.Project.Directory);
try {
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(projectDir);
if (status.TextStatus != StatusKind.Unversioned)
return;
@ -77,7 +127,7 @@ namespace ICSharpCode.Svn.Commands @@ -77,7 +127,7 @@ namespace ICSharpCode.Svn.Commands
AddFileWithParentDirectoriesToSvn(client, e.Project.FileName);
}
} catch (Exception ex) {
MessageService.ShowError("Project add exception: " + ex);
MessageService.ShowError(ex, "Project add exception");
}
}
@ -104,19 +154,28 @@ namespace ICSharpCode.Svn.Commands @@ -104,19 +154,28 @@ namespace ICSharpCode.Svn.Commands
void FileSaved(object sender, FileNameEventArgs e)
{
ProjectBrowserPad pad = ProjectBrowserPad.Instance;
if (pad == null) return;
string fileName = e.FileName;
if (!CanBeVersionControlledFile(fileName)) return;
ClearStatusCacheAndEnqueueFile(fileName);
}
void ClearStatusCacheAndEnqueueFile(string fileName)
{
OverlayIconManager.ClearStatusCache();
ProjectBrowserPad pad = ProjectBrowserPad.Instance;
if (pad == null) return;
FileNode node = pad.ProjectBrowserControl.FindFileNode(fileName);
if (node == null) return;
OverlayIconManager.ClearStatusCache();
OverlayIconManager.Enqueue(node);
}
void FileCreated(object sender, FileEventArgs e)
{
// Do not automatically add directories: we cannot rename them while they are in "added" state
// This is an issue with SVN 1.4 and will be fixed in SVN 1.5.
if (e.IsDirectory) return;
if (!AddInOptions.AutomaticallyAddFiles) return;
if (!Path.IsPathRooted(e.FileName)) return;
@ -124,6 +183,8 @@ namespace ICSharpCode.Svn.Commands @@ -124,6 +183,8 @@ namespace ICSharpCode.Svn.Commands
if (!CanBeVersionControlledFile(fullName)) return;
try {
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.Unversioned:
@ -148,6 +209,8 @@ namespace ICSharpCode.Svn.Commands @@ -148,6 +209,8 @@ namespace ICSharpCode.Svn.Commands
// show "cannot delete directories" message even if
// AutomaticallyDeleteFiles (see below) is off!
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.None:
@ -197,6 +260,8 @@ namespace ICSharpCode.Svn.Commands @@ -197,6 +260,8 @@ namespace ICSharpCode.Svn.Commands
if (!AddInOptions.AutomaticallyDeleteFiles) return;
try {
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.None:
@ -246,6 +311,8 @@ namespace ICSharpCode.Svn.Commands @@ -246,6 +311,8 @@ namespace ICSharpCode.Svn.Commands
if (!CanBeVersionControlledFile(fullSource)) return;
try {
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(fullSource);
switch (status.TextStatus) {
case StatusKind.Unversioned:
@ -299,6 +366,7 @@ namespace ICSharpCode.Svn.Commands @@ -299,6 +366,7 @@ namespace ICSharpCode.Svn.Commands
if (args.SourceFile != e.SourceFile || args.TargetFile != e.TargetFile)
return;
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
client.Add(e.TargetFile, Recurse.None);
}
}

8
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/OverlayIconManager.cs

@ -161,8 +161,10 @@ namespace ICSharpCode.Svn @@ -161,8 +161,10 @@ namespace ICSharpCode.Svn
public static void ClearStatusCache()
{
if (client != null) {
client.ClearStatusCache();
lock (clientLock) {
if (client != null) {
client.ClearStatusCache();
}
}
}
@ -172,6 +174,8 @@ namespace ICSharpCode.Svn @@ -172,6 +174,8 @@ namespace ICSharpCode.Svn
if (subversionDisabled)
return StatusKind.None;
//Console.WriteLine(fileName);
if (client == null) {
try {
client = new SvnClientWrapper();

46
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/SvnProjectBrowserVisitor.cs

@ -1,46 +0,0 @@ @@ -1,46 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.Svn
{
/// <summary>
/// Description of SvnProjectBrowserVisitor.
/// </summary>
public class SvnProjectBrowserVisitor : ProjectBrowserTreeNodeVisitor
{
public override object Visit(SolutionNode node, object data)
{
if (Commands.RegisterEventsCommand.CanBeVersionControlledDirectory(node.Solution.Directory)) {
OverlayIconManager.Enqueue(node);
}
return node.AcceptChildren(this, data);
}
public override object Visit(ProjectNode node, object data)
{
return Visit((DirectoryNode)node, data);
}
public override object Visit(DirectoryNode node, object data)
{
if (Commands.RegisterEventsCommand.CanBeVersionControlledDirectory(node.Directory)) {
OverlayIconManager.Enqueue(node);
return node.AcceptChildren(this, data);
}
return data;
}
public override object Visit(FileNode node, object data)
{
OverlayIconManager.Enqueue(node);
return node.AcceptChildren(this, data);
}
}
}

141
src/AddIns/Misc/SubversionAddIn/Project/Src/InOperationDialog.cs

@ -1,141 +0,0 @@ @@ -1,141 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Threading;
namespace ICSharpCode.Svn
{
/// <summary>
/// Description of InOperationDialog.
/// </summary>
public class InOperationDialog : System.Windows.Forms.Form
{
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.Label operationNameLabel;
Thread operation;
public Thread Operation {
get {
return operation;
}
set {
operation = value;
}
}
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
public InOperationDialog(string operationName, Thread operation)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
this.operation = operation;
operationNameLabel.Text = operationName;
timer.Tick += new EventHandler(TimerTick);
timer.Interval = 100;
timer.Start();
}
void TimerTick(object myObject, EventArgs e)
{
if (progressBar1.Value + 1 < progressBar1.Maximum) {
progressBar1.Value++;
} else {
progressBar1.Value = progressBar1.Minimum;
}
}
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent() {
this.operationNameLabel = new System.Windows.Forms.Label();
this.cancelButton = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.SuspendLayout();
//
// operationNameLabel
//
this.operationNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.operationNameLabel.Location = new System.Drawing.Point(8, 40);
this.operationNameLabel.Name = "operationNameLabel";
this.operationNameLabel.Size = new System.Drawing.Size(312, 23);
this.operationNameLabel.TabIndex = 1;
this.operationNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(248, 72);
this.cancelButton.Name = "cancelButton";
this.cancelButton.TabIndex = 2;
this.cancelButton.Text = "Cancel";
this.cancelButton.Click += new System.EventHandler(this.CancelButtonClick);
//
// progressBar1
//
this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.progressBar1.Location = new System.Drawing.Point(8, 8);
this.progressBar1.Maximum = 20;
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(312, 23);
this.progressBar1.TabIndex = 0;
//
// InOperationDialog
//
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(330, 104);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.operationNameLabel);
this.Controls.Add(this.progressBar1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "InOperationDialog";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Please wait...";
this.ResumeLayout(false);
}
#endregion
void CancelButtonClick(object sender, System.EventArgs e)
{
Close();
}
protected override void OnClosed(System.EventArgs ea)
{
base.OnClosed(ea);
try {
timer.Stop();
} catch (Exception e) {
ICSharpCode.Core.MessageService.ShowError(e);
}
try {
if (operation != null && operation.IsAlive) {
operation.Abort();
}
} catch (Exception e) {
ICSharpCode.Core.MessageService.ShowError(e);
}
}
}
}

142
src/AddIns/Misc/SubversionAddIn/Project/Src/SvnClientWrapper.cs

@ -55,7 +55,7 @@ namespace ICSharpCode.Svn @@ -55,7 +55,7 @@ namespace ICSharpCode.Svn
}
}
public static string GetActionString(SvnWcNotify.Actions action)
static string GetActionString(SvnWcNotify.Actions action)
{
switch (action) {
case SvnWcNotify.Actions.Add:
@ -80,115 +80,26 @@ namespace ICSharpCode.Svn @@ -80,115 +80,26 @@ namespace ICSharpCode.Svn
return "skipped";
case SvnWcNotify.Actions.UpdateUpdate:
return "updated";
case SvnWcNotify.Actions.UpdateCompleted:
return "";
case SvnWcNotify.Actions.UpdateExternal:
return "updated external";
case SvnWcNotify.Actions.CommitModified:
return "modified";
case SvnWcNotify.Actions.CommitReplaced:
return "replaced";
case SvnWcNotify.Actions.FailedLock:
return "lock failed";
case SvnWcNotify.Actions.FailedUnlock:
return "unlock failed";
case SvnWcNotify.Actions.Locked:
return "locked";
case SvnWcNotify.Actions.Unlocked:
return "unlocked";
default:
return "unknown";
}
}
#endregion
#region stuff that does not belong here
/*
void ReceiveNotification(object sender, SvnWcNotify e)
{
if (e.Action == NotifyAction.UpdateCompleted) {
SvnCategory.AppendText(Environment.NewLine + "Updated " + e.Path.ToString() + " to revision " + e.Revision + ".");
return;
}
string kind = GetKindString(e.NodeKind);
string action = GetActionString(e.Action);
SvnCategory.AppendText(Environment.NewLine + kind + action + " : " + e.Path);
}
void WriteMid(string str)
{
const int max = 40;
string filler = new String('-', max - str.Length / 2);
SvnCategory.AppendText(Environment.NewLine + filler + " " + str + " " + filler);
if (str.Length % 2 == 0) {
SvnCategory.AppendText("-");
}
}
*/
/*
class ThreadStartWrapper
{
ThreadStart innerDelegate;
public ThreadStartWrapper(ThreadStart innerDelegate)
{
this.innerDelegate = innerDelegate;
}
public void Start()
{
try {
innerDelegate();
} catch (ThreadAbortException) {
// don't show error message, silently cancel thread
} catch (Exception e) {
SvnClient.Instance.OperationDone();
MessageService.ShowError(e);
} finally {
SvnClient.Instance.OperationDone();
}
}
}
InOperationDialog inOperationForm;
bool done = false;
public void OperationStart(string operationName, ThreadStart threadStart)
{
done = false;
WriteMid(operationName);
Thread thread = new Thread(new ThreadStart(new ThreadStartWrapper(threadStart).Start));
thread.Name = "SvnOperation";
thread.IsBackground = true;
inOperationForm = new InOperationDialog(operationName, thread);
inOperationForm.Owner = WorkbenchSingleton.MainForm;
inOperationForm.Show();
thread.Start();
}
void OperationDone()
{
if (done) {
return;
}
WorkbenchSingleton.SafeThreadCall(WriteMid, "Done");
try {
if (inOperationForm != null) {
inOperationForm.Operation = null;
WorkbenchSingleton.SafeThreadCall(inOperationForm.Close);
inOperationForm = null;
}
} catch (Exception e) {
MessageService.ShowError(e);
} finally {
done = true;
}
}
public void WaitForOperationEnd()
{
while (!done) {
Application.DoEvents();
}
}
*/
#endregion
#region AprPoolHandle
sealed class AprPoolHandle : IDisposable
{
@ -222,7 +133,7 @@ namespace ICSharpCode.Svn @@ -222,7 +133,7 @@ namespace ICSharpCode.Svn
AprPoolHandle memoryPool;
SvnClient client;
Dictionary<string, Status> statusCache = new Dictionary<string, Status>();
Dictionary<string, Status> statusCache = new Dictionary<string, Status>(StringComparer.InvariantCultureIgnoreCase);
public SvnClientWrapper()
{
@ -230,8 +141,7 @@ namespace ICSharpCode.Svn @@ -230,8 +141,7 @@ namespace ICSharpCode.Svn
memoryPool = new AprPoolHandle();
client = new SvnClient(memoryPool.Pool);
//client.LogMessage += new LogMessageDelegate(SetLogMessage);
//client.Notification += new NotificationDelegate(ReceiveNotification);
client.Context.NotifyFunc2 = new SvnDelegate(new SvnWcNotify.Func2(OnNotify));
}
public void Dispose()
@ -355,6 +265,21 @@ namespace ICSharpCode.Svn @@ -355,6 +265,21 @@ namespace ICSharpCode.Svn
}
#endregion
#region Notifications
public event EventHandler<NotificationEventArgs> Notify;
void OnNotify(IntPtr baton, SvnWcNotify notify, AprPool pool)
{
if (Notify != null) {
Notify(this, new NotificationEventArgs() {
Action = GetActionString(notify.Action),
Kind = GetKindString(notify.Kind),
Path = notify.Path.Value
});
}
}
#endregion
[System.Diagnostics.ConditionalAttribute("DEBUG")]
void Debug(string text)
{
@ -415,7 +340,13 @@ namespace ICSharpCode.Svn @@ -415,7 +340,13 @@ namespace ICSharpCode.Svn
IntPtr.Zero,
false, true, false, false, false
);
return result;
if (result != null) {
return result;
} else {
return new Status {
TextStatus = StatusKind.None
};
}
} catch (SvnException ex) {
throw new SvnClientException(ex);
} finally {
@ -626,6 +557,13 @@ namespace ICSharpCode.Svn @@ -626,6 +557,13 @@ namespace ICSharpCode.Svn
}
}
public class NotificationEventArgs : EventArgs
{
public string Action;
public string Kind;
public string Path;
}
public class LogMessage
{
public int Revision;

45
src/AddIns/Misc/SubversionAddIn/Project/Src/SvnMessageView.cs

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Svn
{
/// <summary>
/// Description of SvnMessageView.
/// </summary>
public static class SvnMessageView
{
static MessageViewCategory category;
public static MessageViewCategory Category {
get {
if (category == null) {
category = new MessageViewCategory("Subversion");
CompilerMessageView compilerMessageView = (CompilerMessageView)WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).PadContent;
compilerMessageView.AddCategory(category);
}
return category;
}
}
public static void AppendLine(string text)
{
Category.AppendLine(text);
}
public static void HandleNotifications(SvnClientWrapper client)
{
client.Notify += delegate(object sender, NotificationEventArgs e) {
AppendLine(e.Kind + e.Action + " " + e.Path);
};
}
}
}

5
src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj

@ -78,9 +78,6 @@ @@ -78,9 +78,6 @@
<Compile Include="Src\Gui\HistoryViewDisplayBinding\InfoPanel.Designer.cs">
<DependentUpon>InfoPanel.cs</DependentUpon>
</Compile>
<Compile Include="Src\InOperationDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Src\AddInOptions.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" />
<EmbeddedResource Include="Resources\ClientCertDialog.xfrm" />
@ -107,7 +104,6 @@ @@ -107,7 +104,6 @@
<Compile Include="Src\Gui\HistoryViewDisplayBinding\HistoryViewPanel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Src\Gui\ProjectBrowserVisitor\SvnProjectBrowserVisitor.cs" />
<Compile Include="Src\Gui\SubversionOptionsPanel.cs">
<SubType>UserControl</SubType>
</Compile>
@ -125,6 +121,7 @@ @@ -125,6 +121,7 @@
</Compile>
<Compile Include="Src\Gui\HistoryViewDisplayBinding\DiffPanel.cs" />
<Compile Include="Src\SvnClientWrapper.cs" />
<Compile Include="Src\SvnMessageView.cs" />
<EmbeddedResource Include="Src\Gui\HistoryViewDisplayBinding\DiffPanel.resx">
<DependentUpon>DiffPanel.cs</DependentUpon>
</EmbeddedResource>

2
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -501,7 +501,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -501,7 +501,7 @@ namespace ICSharpCode.SharpDevelop.Gui
// raise FileCreated event for the new files
foreach (KeyValuePair<string, FileDescriptionTemplate> entry in createdFiles) {
FileService.FireFileCreated(entry.Key);
FileService.FireFileCreated(entry.Key, false);
}
}
}

8
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -241,8 +241,9 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -241,8 +241,9 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
void PathChanged(object sender, EventArgs e)
{
string solutionPath = NewProjectDirectory;
string solutionPath;
try {
solutionPath = NewProjectDirectory;
if (solutionPath.Length > 3 && Path.IsPathRooted(solutionPath)) {
solutionPath = solutionPath.Substring(3);
bool didCut = false;
@ -337,13 +338,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -337,13 +338,10 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
if (NewSolutionLocation == null || NewSolutionLocation.Length == 0) {
return;
}
if (createNewSolution) {
ProjectService.BeforeLoadSolution();
}
item.Template.RunOpenActions(cinfo);
if (createNewSolution) {
ProjectService.LoadSolution(NewSolutionLocation);
}
item.Template.RunOpenActions(cinfo);
NewProjectLocation = cinfo.createdProjects.Count > 0 ? cinfo.createdProjects[0].FileName : "";
DialogResult = DialogResult.OK;

2
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/ApplicationSettings.cs

@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
}
defaultManifest = defaultManifest.Replace("\t", DefaultEditor.Gui.Editor.SharpDevelopTextEditorProperties.Instance.IndentationString);
File.WriteAllText(manifestFile, defaultManifest, System.Text.Encoding.UTF8);
FileService.FireFileCreated(manifestFile);
FileService.FireFileCreated(manifestFile, false);
}
if (!project.IsFileInProject(manifestFile)) {

1
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -327,6 +327,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -327,6 +327,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
upper.Expanding();
Directory.CreateDirectory(directoryName);
FileService.FireFileCreated(directoryName, true);
DirectoryNode directoryNode = new DirectoryNode(directoryName, FileNodeStatus.InProject);
directoryNode.AddTo(upper);

10
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
@ -131,7 +132,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -131,7 +132,13 @@ namespace ICSharpCode.SharpDevelop.Project
void FileServiceFileRenamed(object sender, FileRenameEventArgs e)
{
CallVisitor(new FileRenameTreeNodeVisitor(e.SourceFile, e.TargetFile));
if (FileUtility.IsEqualFileName(Path.GetDirectoryName(e.SourceFile),
Path.GetDirectoryName(e.TargetFile)))
{
CallVisitor(new FileRenameTreeNodeVisitor(e.SourceFile, e.TargetFile));
} else {
CallVisitor(new FileRemoveTreeNodeVisitor(e.SourceFile));
}
}
public void RefreshView()
@ -169,6 +176,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -169,6 +176,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
public FileNode FindFileNode(string fileName)
{
WorkbenchSingleton.AssertMainThread();
return FindFileNode(treeView.Nodes, fileName);
}

17
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs

@ -114,15 +114,20 @@ namespace ICSharpCode.SharpDevelop.Project @@ -114,15 +114,20 @@ namespace ICSharpCode.SharpDevelop.Project
}
/// <summary>
/// STATIC event called after the initialization of every tree node!
/// STATIC event called after the a new tree node was added to the project browser.
/// </summary>
public static event TreeViewEventHandler AfterNodeInitialize;
public static event TreeViewEventHandler OnNewNode;
protected override void Initialize()
bool isNewNode = true;
public override void Refresh()
{
base.Initialize();
if (AfterNodeInitialize != null)
AfterNodeInitialize(null, new TreeViewEventArgs(this));
base.Refresh();
if (isNewNode) {
isNewNode = false;
if (OnNewNode != null)
OnNewNode(null, new TreeViewEventArgs(this));
}
}
Image overlay;

21
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -507,14 +507,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -507,14 +507,15 @@ namespace ICSharpCode.SharpDevelop.Project
if (System.IO.Directory.Exists(newPath)) {
if (System.IO.Directory.GetFileSystemEntries(newPath).Length == 0) {
System.IO.Directory.Delete(newPath);
FileService.RenameFile(Directory, newPath, true);
} else {
MessageService.ShowError("The folder already exists and contains files!");
Text = oldText;
return;
}
} else {
FileService.RenameFile(Directory, newPath, true);
}
if (!FileService.RenameFile(Directory, newPath, true)) {
Text = oldText;
return;
}
this.directory = newPath;
@ -612,16 +613,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -612,16 +613,12 @@ namespace ICSharpCode.SharpDevelop.Project
string copiedName = Path.Combine(Directory, Path.GetFileName(directoryName));
if (FileUtility.IsEqualFileName(directoryName, copiedName))
return;
AddExistingItemsToProject.CopyDirectory(directoryName, this, true);
if (performMove) {
foreach (OpenedFile file in FileService.OpenedFiles) {
if (file.FileName != null &&
FileUtility.IsBaseDirectory(directoryName, file.FileName))
{
file.FileName = FileUtility.RenameBaseDirectory(file.FileName, directoryName, Path.Combine(this.directory, Path.GetFileName(directoryName)));
}
}
FileService.RemoveFile(directoryName, true);
FileService.RenameFile(directoryName, copiedName, true);
RecreateSubNodes();
Expand();
} else {
AddExistingItemsToProject.CopyDirectory(directoryName, this, true);
}
}

41
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
List<FileDescriptionTemplate> files = new List<FileDescriptionTemplate>();
List<ProjectItem> projectItems = new List<ProjectItem>();
List<ProjectProperty> projectProperties = new List<ProjectProperty>();
List<Action<IProject>> createActions = new List<Action<IProject>>();
/// <summary>
/// Creates a project descriptor for the project node specified by the xml element.
@ -107,6 +108,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -107,6 +108,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
case "Options":
ProjectTemplate.WarnObsoleteNode(node, "Options are no longer supported, use properties instead.");
break;
case "CreateActions":
LoadCreateActions(node);
break;
case "ProjectItems":
LoadProjectItems(node);
break;
@ -140,6 +144,34 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -140,6 +144,34 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
}
void LoadCreateActions(XmlElement createActionsElement)
{
foreach (XmlElement el in createActionsElement) {
Action<IProject> action = ReadAction(el);
if (action != null)
createActions.Add(action);
}
}
static Action<IProject> ReadAction(XmlElement el)
{
switch (el.Name) {
case "RunCommand":
if (el.HasAttribute("path")) {
ICommand command = (ICommand)AddInTree.BuildItem(el.GetAttribute("path"), null);
return project => {
command.Owner = project;
command.Run();
};
} else {
ProjectTemplate.WarnAttributeMissing(el, "path");
return null;
}
default:
throw new TemplateLoadException("Unknown node in <CreateActions>: " + el.Name);
}
}
void LoadProjectItems(XmlElement projectItemsElement)
{
bool escapeIncludeValue = String.Equals(projectItemsElement.GetAttribute("escapeValue"), "false", StringComparison.OrdinalIgnoreCase);
@ -371,6 +403,8 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -371,6 +403,8 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
}
RunCreateActions(project);
// Save project
if (File.Exists(projectLocation)) {
StringParser.Properties["projectLocation"] = projectLocation;
@ -392,6 +426,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -392,6 +426,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
projectCreateInformation.ProjectName = outerProjectName;
}
}
void RunCreateActions(IProject project)
{
foreach (Action<IProject> action in createActions) {
action(project);
}
}
#endregion
}
}

39
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -144,7 +144,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -144,7 +144,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
bool newProjectDialogVisible = true;
List<Action<ProjectCreateInformation>> actions = new List<Action<ProjectCreateInformation>>();
List<Action<ProjectCreateInformation>> openActions = new List<Action<ProjectCreateInformation>>();
SolutionDescriptor solutionDescriptor = null;
ProjectDescriptor projectDescriptor = null;
@ -305,39 +305,39 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -305,39 +305,39 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
// Read Actions;
if (templateElement["Actions"] != null) {
foreach (XmlElement el in templateElement["Actions"]) {
ReadAction(el);
Action<ProjectCreateInformation> action = ReadAction(el);
if (action != null)
openActions.Add(action);
}
}
}
void ReadAction(XmlElement el)
static Action<ProjectCreateInformation> ReadAction(XmlElement el)
{
switch (el.Name) {
case "Open":
if (el.HasAttribute("filename")) {
string fileName = el.GetAttribute("filename");
actions.Add(
projectCreateInformation => {
string parsedFileName = StringParser.Parse(fileName, new string[,] { {"ProjectName", projectCreateInformation.ProjectName} });
string path = FileUtility.Combine(projectCreateInformation.ProjectBasePath, parsedFileName);
FileService.OpenFile(path);
});
return projectCreateInformation => {
string parsedFileName = StringParser.Parse(fileName, new string[,] { {"ProjectName", projectCreateInformation.ProjectName} });
string path = FileUtility.Combine(projectCreateInformation.ProjectBasePath, parsedFileName);
FileService.OpenFile(path);
};
} else {
WarnAttributeMissing(el, "filename");
return null;
}
break;
case "RunCommand":
if (el.HasAttribute("path")) {
ICommand command = (ICommand)AddInTree.BuildItem(el.GetAttribute("path"), null);
actions.Add(
projectCreateInformation => {
command.Owner = projectCreateInformation;
command.Run();
});
return projectCreateInformation => {
command.Owner = projectCreateInformation;
command.Run();
};
} else {
WarnAttributeMissing(el, "path");
return null;
}
break;
default:
WarnObsoleteNode(el, "Unknown action element is interpreted as <Open>");
goto case "Open";
@ -391,11 +391,14 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -391,11 +391,14 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
IProject project = projectDescriptor.CreateProject(projectCreateInformation, this.languagename);
if (project != null) {
string solutionLocation = projectCreateInformation.Solution.FileName;
if (createNewSolution) {
projectCreateInformation.Solution.AddFolder(project);
projectCreateInformation.Solution.Save();
ProjectService.OnSolutionCreated(new SolutionEventArgs(projectCreateInformation.Solution));
projectCreateInformation.Solution.Dispose();
}
return projectCreateInformation.Solution.FileName;
return solutionLocation;
} else {
return null;
}
@ -406,7 +409,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -406,7 +409,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
public void RunOpenActions(ProjectCreateInformation projectCreateInformation)
{
foreach (Action<ProjectCreateInformation> action in actions) {
foreach (Action<ProjectCreateInformation> action in openActions) {
action(projectCreateInformation);
}
}

1
src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs

@ -135,6 +135,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -135,6 +135,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
} else {
newSolution.Save(solutionLocation);
}
ProjectService.OnSolutionCreated(new SolutionEventArgs(newSolution));
newSolution.Dispose();
return solutionLocation;
}

10
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -426,13 +426,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -426,13 +426,9 @@ namespace ICSharpCode.SharpDevelop.Project
{
public override void Run()
{
ProjectCreateInformation pci = (ProjectCreateInformation)Owner;
foreach (IProject p in pci.CreatedProjects) {
CompilableProject cp = p as CompilableProject;
if (cp != null && cp.TargetFrameworkVersion == "v3.5") {
cp.AddDotnet35References();
cp.Save();
}
CompilableProject project = (CompilableProject)Owner;
if (project.TargetFrameworkVersion == "v3.5") {
project.AddDotnet35References();
}
}
}

2
src/Main/Base/Project/Src/Project/CustomTool.cs

@ -145,7 +145,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -145,7 +145,7 @@ namespace ICSharpCode.SharpDevelop.Project
outputItem.FileName = outputFileName;
outputItem.DependentUpon = Path.GetFileName(baseItem.FileName);
ProjectService.AddProjectItem(project, outputItem);
FileService.FireFileCreated(outputFileName);
FileService.FireFileCreated(outputFileName, false);
project.Save();
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
}

4
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -476,10 +476,10 @@ namespace ICSharpCode.SharpDevelop @@ -476,10 +476,10 @@ namespace ICSharpCode.SharpDevelop
}
}
public static void FireFileCreated(string fileName)
public static void FireFileCreated(string fileName, bool isDirectory)
{
if (FileCreated != null) {
FileCreated(null, new FileEventArgs(fileName, false));
FileCreated(null, new FileEventArgs(fileName, isDirectory));
}
}

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

@ -232,7 +232,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -232,7 +232,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
internal static void BeforeLoadSolution()
static void BeforeLoadSolution()
{
if (openSolution != null) {
SaveSolutionPreferences();
@ -601,6 +601,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -601,6 +601,12 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectCreated(null, e);
}
}
internal static void OnSolutionCreated(SolutionEventArgs e)
{
if (SolutionCreated != null) {
SolutionCreated(null, e);
}
}
/// <summary>
/// Is raised when a new project is created.
@ -618,6 +624,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -618,6 +624,8 @@ namespace ICSharpCode.SharpDevelop.Project
public static event ProjectConfigurationEventHandler ProjectConfigurationChanged;
public static event SolutionConfigurationEventHandler SolutionConfigurationChanged;
public static event EventHandler<SolutionEventArgs> SolutionCreated;
public static event EventHandler SolutionLoading;
public static event EventHandler<SolutionEventArgs> SolutionLoaded;
public static event EventHandler<SolutionEventArgs> SolutionSaved;

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -187,7 +187,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -187,7 +187,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
FileProjectItem projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = newFileName;
ProjectService.AddProjectItem(project, projectItem);
FileService.FireFileCreated(newFileName);
FileService.FireFileCreated(newFileName, false);
project.Save();
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
}

Loading…
Cancel
Save