Browse Source

Merge branch 'master' into newNR

Conflicts:
	src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin
	src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs
	src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
	src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs
	src/Main/Base/Project/Src/Services/IconService.cs
	src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
	src/Main/Base/Test/MimeDetectionTests.cs
pull/59/merge
Matt Ward 12 years ago
parent
commit
80984a870f
  1. 27
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs
  2. 62
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/AssignmentAfterFormClassTests.cs
  3. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
  4. 12
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs
  5. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs
  6. 10
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs
  7. 13
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RotateThumbExtension.cs
  8. 66
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs
  9. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs
  10. 208
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/DesignTimeProperties.cs
  11. 32
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupCompatibilityProperties.cs
  12. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/NameScopeHelper.cs
  13. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/CustomInstanceFactory.cs
  14. 5
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs
  15. 2
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  16. 24
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin
  17. 4
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  18. 13
      src/AddIns/Misc/PackageManagement/Project/PostBuildEvent.proj
  19. 8
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  20. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
  21. 14
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
  22. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs
  23. 3
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs
  24. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs
  25. 21
      src/AddIns/Misc/PackageManagement/Project/Src/NuGetExePath.cs
  26. 31
      src/AddIns/Misc/PackageManagement/Project/Src/NuGetPackageRestoreCommandLine.cs
  27. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs
  28. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs
  29. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  30. 4
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs
  31. 62
      src/AddIns/Misc/PackageManagement/Project/Src/RestorePackagesCommand.cs
  32. 26
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs
  33. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  34. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll
  35. 2
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml
  36. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll
  37. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll
  38. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe
  39. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  40. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs
  41. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs
  42. 4
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs
  43. 4
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  44. 37
      src/AddIns/Misc/PackageManagement/Test/Src/NuGetPackageRestoreCommandLineTests.cs
  45. 21
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs
  46. 19
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs
  47. 17
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs
  48. 6
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  49. 2
      src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs
  50. 12
      src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs
  51. 20
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs
  52. 2
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs
  53. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  54. 2
      src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs
  55. 50
      src/Main/Base/Project/Src/Services/FileIconService.cs
  56. 11
      src/Main/Base/Project/Src/Services/IconService.cs
  57. 1
      src/Main/Base/Project/Util/MimeTypeDetection.cs
  58. 3
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  59. 1
      src/Main/Base/Test/MimeDetectionTests.cs
  60. 1
      src/Main/Base/Test/mime_bug1.txt
  61. 3
      src/Setup/Files.wxs
  62. 1
      src/Setup/Setup.wxs

27
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs

@ -31,6 +31,7 @@ namespace ICSharpCode.PythonBinding
string componentName = String.Empty; string componentName = String.Empty;
PythonCodeDeserializer deserializer; PythonCodeDeserializer deserializer;
ClassDefinition classDefinition; ClassDefinition classDefinition;
bool walkingInitializeComponentMethod;
public PythonComponentWalker(IComponentCreator componentCreator) public PythonComponentWalker(IComponentCreator componentCreator)
{ {
@ -42,13 +43,13 @@ namespace ICSharpCode.PythonBinding
/// Creates a control either a UserControl or Form from the python code. /// Creates a control either a UserControl or Form from the python code.
/// </summary> /// </summary>
public IComponent CreateComponent(string pythonCode) public IComponent CreateComponent(string pythonCode)
{ {
PythonParser parser = new PythonParser(); PythonParser parser = new PythonParser();
PythonAst ast = parser.CreateAst(@"Control.py", new StringTextBuffer(pythonCode)); PythonAst ast = parser.CreateAst(@"Control.py", new StringTextBuffer(pythonCode));
ast.Walk(this); ast.Walk(this);
// Did we find the InitializeComponent method? // Did we find the InitializeComponent method?
if (!FoundInitializeComponentMethod) { if (component == null) {
throw new PythonComponentWalkerException("Unable to find InitializeComponents method."); throw new PythonComponentWalkerException("Unable to find InitializeComponents method.");
} }
return component; return component;
@ -88,14 +89,16 @@ namespace ICSharpCode.PythonBinding
if (reader != null) { if (reader != null) {
reader.Dispose(); reader.Dispose();
} }
walkingInitializeComponentMethod = true;
node.Body.Walk(this); node.Body.Walk(this);
walkingInitializeComponentMethod = false;
} }
return false; return false;
} }
public override bool Walk(AssignmentStatement node) public override bool Walk(AssignmentStatement node)
{ {
if (!FoundInitializeComponentMethod) { if (!walkingInitializeComponentMethod) {
return false; return false;
} }
@ -120,7 +123,7 @@ namespace ICSharpCode.PythonBinding
public override bool Walk(ConstantExpression node) public override bool Walk(ConstantExpression node)
{ {
if (!FoundInitializeComponentMethod) { if (!walkingInitializeComponentMethod) {
return false; return false;
} }
@ -129,8 +132,8 @@ namespace ICSharpCode.PythonBinding
} }
public override bool Walk(CallExpression node) public override bool Walk(CallExpression node)
{ {
if (!FoundInitializeComponentMethod) { if (!walkingInitializeComponentMethod) {
return false; return false;
} }
@ -144,7 +147,7 @@ namespace ICSharpCode.PythonBinding
public override bool Walk(NameExpression node) public override bool Walk(NameExpression node)
{ {
if (!FoundInitializeComponentMethod) { if (!walkingInitializeComponentMethod) {
return false; return false;
} }
@ -159,7 +162,7 @@ namespace ICSharpCode.PythonBinding
/// </summary> /// </summary>
public override bool Walk(AugmentedAssignStatement node) public override bool Walk(AugmentedAssignStatement node)
{ {
if (!FoundInitializeComponentMethod) { if (!walkingInitializeComponentMethod) {
return false; return false;
} }
@ -176,7 +179,7 @@ namespace ICSharpCode.PythonBinding
PropertyDescriptor propertyDescriptor = componentCreator.GetEventProperty(eventDescriptor); PropertyDescriptor propertyDescriptor = componentCreator.GetEventProperty(eventDescriptor);
propertyDescriptor.SetValue(currentComponent, eventHandlerName); propertyDescriptor.SetValue(currentComponent, eventHandlerName);
return false; return false;
} }
/// <summary> /// <summary>
/// Walks the binary expression which is the right hand side of an assignment statement. /// Walks the binary expression which is the right hand side of an assignment statement.
@ -357,10 +360,6 @@ namespace ICSharpCode.PythonBinding
return null; return null;
} }
bool FoundInitializeComponentMethod {
get { return component != null; }
}
/// <summary> /// <summary>
/// Returns true if the expression is of the form: /// Returns true if the expression is of the form:
/// ///

62
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/AssignmentAfterFormClassTests.cs

@ -0,0 +1,62 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Resources;
using ICSharpCode.Core;
using NUnit.Framework;
namespace PythonBinding.Tests.Designer
{
/// <summary>
/// Tests that only the InitializeComponents method is processed
/// when walking the AST.
/// </summary>
[TestFixture]
public class AssignmentAfterFormClassTests : LoadFormTestFixtureBase
{
public override void BeforeSetUpFixture()
{
var rm = new ResourceManager("PythonBinding.Tests.Strings", GetType().Assembly);
ResourceService.RegisterNeutralStrings(rm);
}
public override string PythonCode {
get {
return
"import clr\r\n" +
"clr.AddReference('System.Windows.Forms')\r\n" +
"clr.AddReference('System.Drawing')\r\n" +
"\r\n" +
"import System.Drawing\r\n" +
"import System.Windows.Forms\r\n" +
"\r\n" +
"from System.Drawing import *\r\n" +
"from System.Windows.Forms import *\r\n" +
"\r\n" +
"class MainForm(System.Windows.Forms.Form):\r\n" +
" def __init__(self):\r\n" +
" self.InitializeComponent()\r\n" +
" \r\n" +
" def InitializeComponent(self):\r\n" +
" self.SuspendLayout()\r\n" +
" # \r\n" +
" # MainForm\r\n" +
" # \r\n" +
" self.ClientSize = System.Drawing.Size(300, 400)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.ResumeLayout(False)\r\n" +
"\r\n" +
"test = MainForm()\r\n" +
"Application.Run(test)\r\n" +
"\r\n";
}
}
[Test]
public void MainFormName()
{
Assert.AreEqual("MainForm", Form.Name);
}
}
}

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

@ -183,6 +183,7 @@
<Compile Include="Converter\VBStringConcatTestFixture.cs" /> <Compile Include="Converter\VBStringConcatTestFixture.cs" />
<Compile Include="Converter\WhileLoopConversionTestFixture.cs" /> <Compile Include="Converter\WhileLoopConversionTestFixture.cs" />
<Compile Include="Converter\XmlDocCommentConversionTestFixture.cs" /> <Compile Include="Converter\XmlDocCommentConversionTestFixture.cs" />
<Compile Include="Designer\AssignmentAfterFormClassTests.cs" />
<Compile Include="Designer\CallBeginInitOnLoadTestFixture.cs" /> <Compile Include="Designer\CallBeginInitOnLoadTestFixture.cs" />
<Compile Include="Designer\ConvertCustomClassUsingTypeConverterTestFixture.cs" /> <Compile Include="Designer\ConvertCustomClassUsingTypeConverterTestFixture.cs" />
<Compile Include="Designer\CursorTypeResolutionTestFixture.cs" /> <Compile Include="Designer\CursorTypeResolutionTestFixture.cs" />

12
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

@ -177,7 +177,7 @@ namespace ICSharpCode.FormsDesigner
LoggingService.Debug("Checking project reference: " + referenceItem.Include); LoggingService.Debug("Checking project reference: " + referenceItem.Include);
if (referenceItem.HintPath.Length > 0 && File.Exists(referenceItem.FileName)) { if (referenceItem.HintPath.Length > 0 && File.Exists(referenceItem.FileName)) {
LoggingService.Debug("Checking assembly reference"); LoggingService.Debug("Checking assembly reference");
AssemblyName assemblyName = AssemblyName.GetAssemblyName(referenceItem.FileName); AssemblyName assemblyName = GetAssemblyName(referenceItem.FileName);
if (assemblyName != null && assemblyName.FullName == referenceName.FullName) { if (assemblyName != null && assemblyName.FullName == referenceName.FullName) {
isAlreadyInRefFolder = true; isAlreadyInRefFolder = true;
break; break;
@ -196,6 +196,16 @@ namespace ICSharpCode.FormsDesigner
return isAlreadyInRefFolder; return isAlreadyInRefFolder;
} }
static AssemblyName GetAssemblyName(string fileName)
{
try {
return AssemblyName.GetAssemblyName(fileName);
} catch (Exception ex) {
LoggingService.Debug(ex.ToString());
}
return null;
}
static void AddReferenceToProject(IProject project, AssemblyName referenceName) static void AddReferenceToProject(IProject project, AssemblyName referenceName)
{ {
LoggingService.Warn("Adding reference to project: " + referenceName.FullName); LoggingService.Warn("Adding reference to project: " + referenceName.FullName);

1
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs

@ -21,6 +21,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
[ExtensionFor(typeof(ContentControl))] [ExtensionFor(typeof(ContentControl))]
[ExtensionFor(typeof(Border))] [ExtensionFor(typeof(Border))]
[ExtensionFor(typeof(Viewbox))] [ExtensionFor(typeof(Viewbox))]
[ExtensionFor(typeof(ItemsControl))]
public class DefaultPlacementBehavior : BehaviorExtension, IPlacementBehavior public class DefaultPlacementBehavior : BehaviorExtension, IPlacementBehavior
{ {
static List<Type> _contentControlsNotAllowedToAdd; static List<Type> _contentControlsNotAllowedToAdd;

10
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs

@ -47,16 +47,24 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
adornerPanel.Children.Add(renderTransformOriginThumb); adornerPanel.Children.Add(renderTransformOriginThumb);
renderTransformOriginThumb.DragDelta += new DragDeltaEventHandler(renderTransformOriginThumb_DragDelta); renderTransformOriginThumb.DragDelta += new DragDeltaEventHandler(renderTransformOriginThumb_DragDelta);
renderTransformOriginThumb.DragCompleted += new DragCompletedEventHandler(renderTransformOriginThumb_DragCompleted);
} }
void renderTransformOriginThumb_DragCompleted(object sender, DragCompletedEventArgs e)
{
this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(renderTransformOrigin.X, 4), Math.Round(renderTransformOrigin.Y, 4)));
}
void renderTransformOriginThumb_DragDelta(object sender, DragDeltaEventArgs e) void renderTransformOriginThumb_DragDelta(object sender, DragDeltaEventArgs e)
{ {
var p = AdornerPanel.GetPlacement(renderTransformOriginThumb) as RelativePlacement; var p = AdornerPanel.GetPlacement(renderTransformOriginThumb) as RelativePlacement;
var pointAbs = adornerPanel.RelativeToAbsolute(new Vector(p.XRelativeToContentWidth, p.YRelativeToContentHeight)); var pointAbs = adornerPanel.RelativeToAbsolute(new Vector(p.XRelativeToContentWidth, p.YRelativeToContentHeight));
var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange); var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange);
var pRel = adornerPanel.AbsoluteToRelative(pointAbsNew); var pRel = adornerPanel.AbsoluteToRelative(pointAbsNew);
renderTransformOrigin = new Point(pRel.X, pRel.Y);
this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4))); this.ExtendedItem.View.SetValue(FrameworkElement.RenderTransformOriginProperty, renderTransformOrigin);
//this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4)));
} }
Point renderTransformOrigin = new Point(0.5, 0.5); Point renderTransformOrigin = new Point(0.5, 0.5);

13
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RotateThumbExtension.cs

@ -26,16 +26,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
readonly DesignItem[] extendedItemArray = new DesignItem[1]; readonly DesignItem[] extendedItemArray = new DesignItem[1];
IPlacementBehavior resizeBehavior; IPlacementBehavior resizeBehavior;
PlacementOperation operation; PlacementOperation operation;
ChangeGroup changeGroup;
bool _isResizing;
/// <summary>
/// Gets whether this extension is resizing any element.
/// </summary>
public bool IsResizing{
get { return _isResizing; }
}
public RotateThumbExtension() public RotateThumbExtension()
{ {
@ -62,15 +52,12 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
return rotateThumb; return rotateThumb;
} }
Size oldSize;
#region Rotate #region Rotate
private Point centerPoint; private Point centerPoint;
private UIElement parent; private UIElement parent;
private Vector startVector; private Vector startVector;
private RotateTransform rotateTransform; private RotateTransform rotateTransform;
private Point renderTransformOrigin;
private double initialAngle; private double initialAngle;
private DesignItem rtTransform; private DesignItem rtTransform;
private double angle; private double angle;

66
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs

@ -114,38 +114,46 @@ namespace ICSharpCode.WpfDesign.Designer.ThumbnailView
private void InvalidateScale(out double scale, out double xOffset, out double yOffset) private void InvalidateScale(out double scale, out double xOffset, out double yOffset)
{ {
var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement; scale = 1;
xOffset = 0;
yOffset = 0;
var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth; if (this.DesignSurface.DesignContext != null)
var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight;
// zoom canvas size
double x = this.zoomCanvas.ActualWidth;
double y = this.zoomCanvas.ActualHeight;
if (fac1 < fac2)
{ {
x = designedElement.ActualWidth / fac2; var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement;
xOffset = (zoomCanvas.ActualWidth - x) / 2;
yOffset = 0;
} var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth;
else var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight;
{
y = designedElement.ActualHeight / fac1; // zoom canvas size
xOffset = 0; double x = this.zoomCanvas.ActualWidth;
yOffset = (zoomCanvas.ActualHeight - y) / 2; double y = this.zoomCanvas.ActualHeight;
}
if (fac1 < fac2)
double w = designedElement.ActualWidth; {
double h = designedElement.ActualHeight; x = designedElement.ActualWidth / fac2;
xOffset = (zoomCanvas.ActualWidth - x) / 2;
double scaleX = x / w; yOffset = 0;
double scaleY = y / h; }
else
{
y = designedElement.ActualHeight / fac1;
xOffset = 0;
yOffset = (zoomCanvas.ActualHeight - y) / 2;
}
double w = designedElement.ActualWidth;
double h = designedElement.ActualHeight;
double scaleX = x / w;
double scaleY = y / h;
scale = (scaleX < scaleY) ? scaleX : scaleY; scale = (scaleX < scaleY) ? scaleX : scaleY;
xOffset += (x - scale * w) / 2; xOffset += (x - scale * w) / 2;
yOffset += (y - scale * h) / 2; yOffset += (y - scale * h) / 2;
}
} }
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs

@ -70,7 +70,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
private DesignItem IntializePasteOperationsTest() private DesignItem IntializePasteOperationsTest()
{ {
var grid = CreateGridContextWithDesignSurface("<Button Name=\"TestElement\"/><Grid><Button/></Grid><Window/><ListBox/>"); var grid = CreateGridContextWithDesignSurface("<Button Name=\"TestElement\"/><Grid><Button/></Grid><Window/><Image/>");
Assert.IsNotNull(grid); Assert.IsNotNull(grid);
var xamlConxtext = grid.Context as XamlDesignContext; var xamlConxtext = grid.Context as XamlDesignContext;
if (xamlConxtext != null) { if (xamlConxtext != null) {

208
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/DesignTimeProperties.cs

@ -9,108 +9,108 @@ namespace ICSharpCode.WpfDesign.XamlDom
/// <summary> /// <summary>
/// Helper Class for the Design Time Properties used by VS and Blend /// Helper Class for the Design Time Properties used by VS and Blend
/// </summary> /// </summary>
public class DesignTimeProperties : FrameworkElement public class DesignTimeProperties : FrameworkElement
{ {
#region IsHidden #region IsHidden
public static bool GetIsHidden(DependencyObject obj) public static bool GetIsHidden(DependencyObject obj)
{ {
return (bool)obj.GetValue(IsHiddenProperty); return (bool)obj.GetValue(IsHiddenProperty);
} }
public static void SetIsHidden(DependencyObject obj, bool value) public static void SetIsHidden(DependencyObject obj, bool value)
{ {
obj.SetValue(IsHiddenProperty, value); obj.SetValue(IsHiddenProperty, value);
} }
public static readonly DependencyProperty IsHiddenProperty = public static readonly DependencyProperty IsHiddenProperty =
DependencyProperty.RegisterAttached("IsHidden", typeof(bool), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("IsHidden", typeof(bool), typeof(DesignTimeProperties));
#endregion #endregion
#region IsLocked #region IsLocked
public static bool GetIsLocked(DependencyObject obj) public static bool GetIsLocked(DependencyObject obj)
{ {
return (bool)obj.GetValue(IsLockedProperty); return (bool)obj.GetValue(IsLockedProperty);
} }
public static void SetIsLocked(DependencyObject obj, bool value) public static void SetIsLocked(DependencyObject obj, bool value)
{ {
obj.SetValue(IsLockedProperty, value); obj.SetValue(IsLockedProperty, value);
} }
public static readonly DependencyProperty IsLockedProperty = public static readonly DependencyProperty IsLockedProperty =
DependencyProperty.RegisterAttached("IsLocked", typeof(bool), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("IsLocked", typeof(bool), typeof(DesignTimeProperties));
#endregion #endregion
#region DataContext #region DataContext
public static object GetDataContext(DependencyObject obj) public static object GetDataContext(DependencyObject obj)
{ {
return (object)obj.GetValue(DataContextProperty); return (object)obj.GetValue(DataContextProperty);
} }
public static void SetDataContext(DependencyObject obj, bool value) public static void SetDataContext(DependencyObject obj, bool value)
{ {
obj.SetValue(DataContextProperty, value); obj.SetValue(DataContextProperty, value);
} }
public static readonly DependencyProperty DataContextProperty = public static readonly DependencyProperty DataContextProperty =
DependencyProperty.RegisterAttached("DataContext", typeof(object), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("DataContext", typeof(object), typeof(DesignTimeProperties));
#endregion #endregion
#region DesignSource #region DesignSource
public static object GetDesignSource(DependencyObject obj) public static object GetDesignSource(DependencyObject obj)
{ {
return (object)obj.GetValue(DesignSourceProperty); return (object)obj.GetValue(DesignSourceProperty);
} }
public static void SetDesignSource(DependencyObject obj, bool value) public static void SetDesignSource(DependencyObject obj, bool value)
{ {
obj.SetValue(DesignSourceProperty, value); obj.SetValue(DesignSourceProperty, value);
} }
public static readonly DependencyProperty DesignSourceProperty = public static readonly DependencyProperty DesignSourceProperty =
DependencyProperty.RegisterAttached("DesignSource", typeof(object), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("DesignSource", typeof(object), typeof(DesignTimeProperties));
#endregion #endregion
#region DesignWidth #region DesignWidth
public static double GetDesignWidth(DependencyObject obj) public static double GetDesignWidth(DependencyObject obj)
{ {
return (double)obj.GetValue(DesignWidthProperty); return (double)obj.GetValue(DesignWidthProperty);
} }
public static void SetDesignWidth(DependencyObject obj, double value) public static void SetDesignWidth(DependencyObject obj, double value)
{ {
obj.SetValue(DesignWidthProperty, value); obj.SetValue(DesignWidthProperty, value);
} }
public static readonly DependencyProperty DesignWidthProperty = public static readonly DependencyProperty DesignWidthProperty =
DependencyProperty.RegisterAttached("DesignWidth", typeof(double), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("DesignWidth", typeof(double), typeof(DesignTimeProperties));
#endregion #endregion
#region DesignHeight #region DesignHeight
public static double GetDesignHeight(DependencyObject obj) public static double GetDesignHeight(DependencyObject obj)
{ {
return (double)obj.GetValue(DesignHeightProperty); return (double)obj.GetValue(DesignHeightProperty);
} }
public static void SetDesignHeight(DependencyObject obj, double value) public static void SetDesignHeight(DependencyObject obj, double value)
{ {
obj.SetValue(DesignHeightProperty, value); obj.SetValue(DesignHeightProperty, value);
} }
public static readonly DependencyProperty DesignHeightProperty = public static readonly DependencyProperty DesignHeightProperty =
DependencyProperty.RegisterAttached("DesignHeight", typeof(double), typeof(DesignTimeProperties)); DependencyProperty.RegisterAttached("DesignHeight", typeof(double), typeof(DesignTimeProperties));
#endregion #endregion
} }
} }

32
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupCompatibilityProperties.cs

@ -9,23 +9,23 @@ namespace ICSharpCode.WpfDesign.XamlDom
/// <summary> /// <summary>
/// Helper Class for the Markup Compatibility Properties used by VS and Blend /// Helper Class for the Markup Compatibility Properties used by VS and Blend
/// </summary> /// </summary>
public class MarkupCompatibilityProperties : FrameworkElement public class MarkupCompatibilityProperties : FrameworkElement
{ {
#region Ignorable #region Ignorable
public static string GetIgnorable(DependencyObject obj) public static string GetIgnorable(DependencyObject obj)
{ {
return (string)obj.GetValue(IgnorableProperty); return (string)obj.GetValue(IgnorableProperty);
} }
public static void SetIgnorable(DependencyObject obj, string value) public static void SetIgnorable(DependencyObject obj, string value)
{ {
obj.SetValue(IgnorableProperty, value); obj.SetValue(IgnorableProperty, value);
} }
public static readonly DependencyProperty IgnorableProperty = public static readonly DependencyProperty IgnorableProperty =
DependencyProperty.RegisterAttached("Ignorable", typeof(string), typeof(MarkupCompatibilityProperties)); DependencyProperty.RegisterAttached("Ignorable", typeof(string), typeof(MarkupCompatibilityProperties));
#endregion #endregion
} }
} }

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/NameScopeHelper.cs

@ -38,6 +38,14 @@ namespace ICSharpCode.WpfDesign.XamlDom
} }
if (newName != null) { if (newName != null) {
nameScope.RegisterName(newName, namedObject.Instance); nameScope.RegisterName(newName, namedObject.Instance);
try{
var prp = namedObject.ElementType.GetProperty(namedObject.RuntimeNameProperty);
if (prp != null)
prp.SetValue(namedObject.Instance, newName, null);
} catch (Exception x) {
Debug.WriteLine(x.Message);
}
} }
break; break;
} }

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/CustomInstanceFactory.cs

@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.ComponentModel;
using System.Windows;
namespace ICSharpCode.WpfDesign.Extensions namespace ICSharpCode.WpfDesign.Extensions
{ {
@ -33,7 +35,11 @@ namespace ICSharpCode.WpfDesign.Extensions
/// </summary> /// </summary>
public virtual object CreateInstance(Type type, params object[] arguments) public virtual object CreateInstance(Type type, params object[] arguments)
{ {
return Activator.CreateInstance(type, arguments); var instance = Activator.CreateInstance(type, arguments);
var uiElement = instance as UIElement;
if (uiElement != null)
DesignerProperties.SetIsInDesignMode(uiElement, true);
return instance;
} }
} }

5
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs

@ -151,5 +151,10 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes
UninstallPackageWithVersionCallback(packageId, version, forceRemove, removeDependencies); UninstallPackageWithVersionCallback(packageId, version, forceRemove, removeDependencies);
} }
} }
public void InstallPackage(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions, bool ignoreWalkInfo)
{
throw new NotImplementedException();
}
} }
} }

2
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -189,7 +189,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
PackageReference CreatePackageReference() PackageReference CreatePackageReference()
{ {
return new PackageReference(Id, Version, null, null); return new PackageReference(Id, Version, null, null, false, false);
} }
} }
} }

24
src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin

@ -24,6 +24,12 @@
insertafter="AddWebReference" insertafter="AddWebReference"
insertbefore="ShowServiceInBrowser" insertbefore="ShowServiceInBrowser"
class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> class="ICSharpCode.PackageManagement.ManagePackagesCommand"/>
<MenuItem
id="RestorePackages"
label="Restore Packages"
insertafter="AddWebReference"
insertbefore="ShowServiceInBrowser"
class="ICSharpCode.PackageManagement.RestorePackagesCommand"/>
</Condition> </Condition>
</Path> </Path>
@ -36,6 +42,12 @@
insertafter="AddWebReference" insertafter="AddWebReference"
insertbefore="AddSeparator" insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> class="ICSharpCode.PackageManagement.ManagePackagesCommand"/>
<MenuItem
id="RestorePackages"
label="Restore Packages"
insertafter="AddWebReference"
insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.RestorePackagesCommand"/>
</Condition> </Condition>
</Path> </Path>
@ -48,6 +60,12 @@
insertafter="AddWebReference" insertafter="AddWebReference"
insertbefore="AddSeparator" insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> class="ICSharpCode.PackageManagement.ManagePackagesCommand"/>
<MenuItem
id="RestorePackages"
label="Restore Packages"
insertafter="AddWebReference"
insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.RestorePackagesCommand"/>
</Condition> </Condition>
</Path> </Path>
@ -60,6 +78,12 @@
insertafter="CombineAddMenu" insertafter="CombineAddMenu"
insertbefore="AddSeparator" insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> class="ICSharpCode.PackageManagement.ManagePackagesCommand"/>
<MenuItem
id="RestorePackagesForSolution"
label="Restore Packages"
insertafter="CombineAddMenu"
insertbefore="AddSeparator"
class="ICSharpCode.PackageManagement.RestorePackagesCommand"/>
</Condition> </Condition>
</Path> </Path>

4
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -228,6 +228,8 @@
<Compile Include="Src\ManagePackagesViewTitle.cs" /> <Compile Include="Src\ManagePackagesViewTitle.cs" />
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" /> <Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\IPackageFromRepositoryExtensions.cs" /> <Compile Include="Src\IPackageFromRepositoryExtensions.cs" />
<Compile Include="Src\NuGetExePath.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLine.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" /> <Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" /> <Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\IPackageRepositoryExtensions.cs" /> <Compile Include="Src\IPackageRepositoryExtensions.cs" />
@ -237,6 +239,7 @@
<Compile Include="Src\ProjectRootElementExtensions.cs" /> <Compile Include="Src\ProjectRootElementExtensions.cs" />
<Compile Include="Src\ReducedPackageOperations.cs" /> <Compile Include="Src\ReducedPackageOperations.cs" />
<Compile Include="Src\ResolveFileConflictEventArgs.cs" /> <Compile Include="Src\ResolveFileConflictEventArgs.cs" />
<Compile Include="Src\RestorePackagesCommand.cs" />
<Compile Include="Src\Scripting\ConsoleHostFileConflictResolver.cs" /> <Compile Include="Src\Scripting\ConsoleHostFileConflictResolver.cs" />
<Compile Include="Src\Scripting\FileConflictAction.cs" /> <Compile Include="Src\Scripting\FileConflictAction.cs" />
<Compile Include="Src\Scripting\GlobalMSBuildProjectCollection.cs" /> <Compile Include="Src\Scripting\GlobalMSBuildProjectCollection.cs" />
@ -596,4 +599,5 @@
<None Include="Resources\license.txt" /> <None Include="Resources\license.txt" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
<Import Project="PostBuildEvent.proj" />
</Project> </Project>

13
src/AddIns/Misc/PackageManagement/Project/PostBuildEvent.proj

@ -0,0 +1,13 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyPostBuildTarget</PrepareForRunDependsOn>
</PropertyGroup>
<ItemGroup>
<MyCopyItem Include="$(MSBuildProjectDirectory)\..\RequiredLibraries\NuGet.exe" />
</ItemGroup>
<Target Name="MyPostBuildTarget">
<!-- work around an MSBuild bug in CopyToOutputDirectory that causes this file to be copied -->
<!-- to projects referencing this project even if local copy on that reference is false -->
<Copy SourceFiles="@(MyCopyItem)" DestinationFolder="$(OutputPath)" />
</Target>
</Project>

8
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -183,12 +183,12 @@ namespace ICSharpCode.PackageManagement.Design
} }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
public void FirePackageReferenceRemovedEvent(PackageOperationEventArgs e) public void FirePackageReferenceRemovingEvent(PackageOperationEventArgs e)
{ {
if (PackageReferenceRemoved != null) { if (PackageReferenceRemoving != null) {
PackageReferenceRemoved(this, e); PackageReferenceRemoving(this, e);
} }
} }

5
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs

@ -193,5 +193,10 @@ namespace ICSharpCode.PackageManagement.Design
PackagePassedToUpdatePackageReference = package; PackagePassedToUpdatePackageReference = package;
SettingsPassedToUpdatePackageReference = settings; SettingsPassedToUpdatePackageReference = settings;
} }
public void InstallPackage(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions, bool ignoreWalkInfo)
{
throw new NotImplementedException();
}
} }
} }

14
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs

@ -35,18 +35,18 @@ namespace ICSharpCode.PackageManagement.Design
} }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
protected virtual void OnPackageReferenceRemoved(IPackage package) protected virtual void OnPackageReferenceRemoving(IPackage package)
{ {
if (PackageReferenceRemoved != null) { if (PackageReferenceRemoving != null) {
PackageReferenceRemoved(this, new PackageOperationEventArgs(package, null, String.Empty)); PackageReferenceRemoving(this, new PackageOperationEventArgs(package, null, String.Empty));
} }
} }
#pragma warning disable 67 #pragma warning disable 67
public event EventHandler<PackageOperationEventArgs> PackageReferenceAdding; public event EventHandler<PackageOperationEventArgs> PackageReferenceAdding;
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving; public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved;
#pragma warning restore 67 #pragma warning restore 67
public IPackageRepository LocalRepository { get; set; } public IPackageRepository LocalRepository { get; set; }
@ -87,9 +87,9 @@ namespace ICSharpCode.PackageManagement.Design
OnPackageReferenceAdded(package); OnPackageReferenceAdded(package);
} }
public void FirePackageReferenceRemoved(IPackage package) public void FirePackageReferenceRemoving(IPackage package)
{ {
OnPackageReferenceRemoved(package); OnPackageReferenceRemoving(package);
} }
public void AddPackageReference(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions) public void AddPackageReference(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions)

2
src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
@ -9,5 +10,6 @@ namespace ICSharpCode.PackageManagement
{ {
void AppendLine(string text); void AppendLine(string text);
void Clear(); void Clear();
IOutputCategory OutputCategory { get; }
} }
} }

3
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.SharpDevelop.Workbench;
using NuGet; using NuGet;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
@ -9,5 +10,7 @@ namespace ICSharpCode.PackageManagement
public interface IPackageManagementOutputMessagesView public interface IPackageManagementOutputMessagesView
{ {
void Clear(); void Clear();
void AppendLine(string message);
IOutputCategory OutputCategory { get; }
} }
} }

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement
event EventHandler<PackageOperationEventArgs> PackageInstalled; event EventHandler<PackageOperationEventArgs> PackageInstalled;
event EventHandler<PackageOperationEventArgs> PackageUninstalled; event EventHandler<PackageOperationEventArgs> PackageUninstalled;
event EventHandler<PackageOperationEventArgs> PackageReferenceAdded; event EventHandler<PackageOperationEventArgs> PackageReferenceAdded;
event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved; event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving;
string Name { get; } string Name { get; }
ILogger Logger { get; set; } ILogger Logger { get; set; }

21
src/AddIns/Misc/PackageManagement/Project/Src/NuGetExePath.cs

@ -0,0 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
namespace ICSharpCode.PackageManagement
{
public static class NuGetExePath
{
public static string GetPath()
{
return Path.Combine(GetDirectory(), "NuGet.exe");
}
static string GetDirectory()
{
return Path.GetDirectoryName(typeof(NuGetExePath).Assembly.Location);
}
}
}

31
src/AddIns/Misc/PackageManagement/Project/Src/NuGetPackageRestoreCommandLine.cs

@ -0,0 +1,31 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement
{
public class NuGetPackageRestoreCommandLine
{
List<string> arguments = new List<string>();
public NuGetPackageRestoreCommandLine(IPackageManagementSolution solution)
{
GenerateCommandLine(solution);
}
public string Command { get; set; }
public string[] Arguments {
get { return arguments.ToArray(); }
}
void GenerateCommandLine(IPackageManagementSolution solution)
{
arguments.Add("restore");
arguments.Add(solution.FileName);
}
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
@ -24,5 +25,9 @@ namespace ICSharpCode.PackageManagement
{ {
messageViewCategory.ClearText(); messageViewCategory.ClearText();
} }
public IOutputCategory OutputCategory {
get { return messageViewCategory; }
}
} }
} }

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.SharpDevelop.Workbench;
using NuGet; using NuGet;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
@ -41,12 +42,21 @@ namespace ICSharpCode.PackageManagement
void PackageOperationMessageLogged(object sender, PackageOperationMessageLoggedEventArgs e) void PackageOperationMessageLogged(object sender, PackageOperationMessageLoggedEventArgs e)
{ {
string formattedMessage = e.Message.ToString(); string formattedMessage = e.Message.ToString();
messageViewCategory.AppendLine(formattedMessage); AppendLine(formattedMessage);
} }
public void Clear() public void Clear()
{ {
messageViewCategory.Clear(); messageViewCategory.Clear();
} }
public void AppendLine(string message)
{
messageViewCategory.AppendLine(message);
}
public IOutputCategory OutputCategory {
get { return messageViewCategory.OutputCategory; }
}
} }
} }

6
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -64,9 +64,9 @@ namespace ICSharpCode.PackageManagement
remove { projectManager.PackageReferenceAdded -= value; } remove { projectManager.PackageReferenceAdded -= value; }
} }
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved { public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoving {
add { projectManager.PackageReferenceRemoved += value; } add { projectManager.PackageReferenceRemoving += value; }
remove { projectManager.PackageReferenceRemoved -= value; } remove { projectManager.PackageReferenceRemoving -= value; }
} }
public bool IsPackageInstalled(IPackage package) public bool IsPackageInstalled(IPackage package)

4
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs

@ -11,8 +11,8 @@ namespace ICSharpCode.PackageManagement
{ {
public class RegisteredPackageSources : ObservableCollection<PackageSource> public class RegisteredPackageSources : ObservableCollection<PackageSource>
{ {
public static readonly string DefaultPackageSourceUrl = "https://nuget.org/api/v2/"; public static readonly string DefaultPackageSourceUrl = "https://www.nuget.org/api/v2/";
public static readonly string DefaultPackageSourceName = "NuGet Official Package Source"; public static readonly string DefaultPackageSourceName = "nuget.org";
public static readonly PackageSource DefaultPackageSource = public static readonly PackageSource DefaultPackageSource =
new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName); new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName);

62
src/AddIns/Misc/PackageManagement/Project/Src/RestorePackagesCommand.cs

@ -0,0 +1,62 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class RestorePackagesCommand : AbstractMenuCommand
{
IPackageManagementOutputMessagesView outputMessagesView;
IPackageManagementSolution solution;
public RestorePackagesCommand()
: this(PackageManagementServices.OutputMessagesView, PackageManagementServices.Solution)
{
}
public RestorePackagesCommand(
IPackageManagementOutputMessagesView outputMessagesView,
IPackageManagementSolution solution)
{
this.outputMessagesView = outputMessagesView;
this.solution = solution;
}
public override void Run()
{
try {
ClearOutputWindow();
BringOutputWindowToFront();
RunRestore();
} catch (Exception ex) {
LoggingService.Debug(ex.ToString());
outputMessagesView.AppendLine(ex.Message);
}
}
void ClearOutputWindow()
{
outputMessagesView.Clear();
}
void BringOutputWindowToFront()
{
CompilerMessageView.Instance.BringToFront();
}
void RunRestore()
{
var commandLine = new NuGetPackageRestoreCommandLine(solution);
commandLine.Command = NuGetExePath.GetPath();
var runner = new ProcessRunner();
runner.WorkingDirectory = Path.GetDirectoryName(solution.FileName);
runner.RunInOutputPadAsync(outputMessagesView.OutputCategory, commandLine.Command, commandLine.Arguments);
}
}
}

26
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.PackageManagement.Scripting
List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers = List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers =
new List<EventHandler<PackageOperationEventArgs>>(); new List<EventHandler<PackageOperationEventArgs>>();
List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovedHandlers = List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovingHandlers =
new List<EventHandler<PackageOperationEventArgs>>(); new List<EventHandler<PackageOperationEventArgs>>();
public RunAllProjectPackageScriptsAction( public RunAllProjectPackageScriptsAction(
@ -68,7 +68,7 @@ namespace ICSharpCode.PackageManagement.Scripting
foreach (IPackageManagementProject project in projects) { foreach (IPackageManagementProject project in projects) {
RegisterPackageInstalledEvent(project); RegisterPackageInstalledEvent(project);
RegisterPackageReferenceAddedEvent(project); RegisterPackageReferenceAddedEvent(project);
RegisterPackageReferenceRemovedEvent(project); RegisterPackageReferenceRemovingEvent(project);
} }
} }
@ -88,12 +88,12 @@ namespace ICSharpCode.PackageManagement.Scripting
project.PackageReferenceAdded += referenceAddedHandler; project.PackageReferenceAdded += referenceAddedHandler;
} }
void RegisterPackageReferenceRemovedEvent(IPackageManagementProject project) void RegisterPackageReferenceRemovingEvent(IPackageManagementProject project)
{ {
EventHandler<PackageOperationEventArgs> referenceRemovedHandler = EventHandler<PackageOperationEventArgs> referenceRemovingHandler =
(_, e) => PackageReferenceRemoved(project, e); (_, e) => PackageReferenceRemoving(project, e);
packageReferenceRemovedHandlers.Add(referenceRemovedHandler); packageReferenceRemovingHandlers.Add(referenceRemovingHandler);
project.PackageReferenceRemoved += referenceRemovedHandler; project.PackageReferenceRemoving += referenceRemovingHandler;
} }
void UnregisterEvents() void UnregisterEvents()
@ -101,7 +101,7 @@ namespace ICSharpCode.PackageManagement.Scripting
foreach (IPackageManagementProject project in projects) { foreach (IPackageManagementProject project in projects) {
UnregisterPackageInstalledEvent(project); UnregisterPackageInstalledEvent(project);
UnregisterPackageReferenceAddedEvent(project); UnregisterPackageReferenceAddedEvent(project);
UnregisterPackageReferenceRemovedEvent(project); UnregisterPackageReferenceRemovingEvent(project);
} }
} }
@ -119,11 +119,11 @@ namespace ICSharpCode.PackageManagement.Scripting
project.PackageReferenceAdded -= handler; project.PackageReferenceAdded -= handler;
} }
void UnregisterPackageReferenceRemovedEvent(IPackageManagementProject project) void UnregisterPackageReferenceRemovingEvent(IPackageManagementProject project)
{ {
EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovedHandlers.First(); EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovingHandlers.First();
packageReferenceRemovedHandlers.Remove(handler); packageReferenceRemovingHandlers.Remove(handler);
project.PackageReferenceRemoved -= handler; project.PackageReferenceRemoving -= handler;
} }
void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e) void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e)
@ -136,7 +136,7 @@ namespace ICSharpCode.PackageManagement.Scripting
RunInstallScript(project, e); RunInstallScript(project, e);
} }
void PackageReferenceRemoved(IPackageManagementProject project, PackageOperationEventArgs e) void PackageReferenceRemoving(IPackageManagementProject project, PackageOperationEventArgs e)
{ {
RunUninstallScript(project, e); RunUninstallScript(project, e);
} }

6
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs

@ -39,14 +39,14 @@ namespace ICSharpCode.PackageManagement.Scripting
{ {
project.PackageInstalled += PackageInstalled; project.PackageInstalled += PackageInstalled;
project.PackageReferenceAdded += PackageReferenceAdded; project.PackageReferenceAdded += PackageReferenceAdded;
project.PackageReferenceRemoved += PackageReferenceRemoved; project.PackageReferenceRemoving += PackageReferenceRemoving;
} }
void UnregisterEvents() void UnregisterEvents()
{ {
project.PackageInstalled -= PackageInstalled; project.PackageInstalled -= PackageInstalled;
project.PackageReferenceAdded -= PackageReferenceAdded; project.PackageReferenceAdded -= PackageReferenceAdded;
project.PackageReferenceRemoved -= PackageReferenceRemoved; project.PackageReferenceRemoving -= PackageReferenceRemoving;
} }
void PackageInstalled(object sender, PackageOperationEventArgs e) void PackageInstalled(object sender, PackageOperationEventArgs e)
@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement.Scripting
RunInitScript(e); RunInitScript(e);
} }
void PackageReferenceRemoved(object sender, PackageOperationEventArgs e) void PackageReferenceRemoving(object sender, PackageOperationEventArgs e)
{ {
RunUninstallScript(e); RunUninstallScript(e);
} }

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll

Binary file not shown.

2
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml

@ -702,7 +702,7 @@
Description Description
------------------------------------------------------------------ ------------------------------------------------------------------
Updates every package in the project, MvcApplication1, to the latest "safe" version. For example, Updates every package in the project, MvcApplication1, to the latest "safe" version. For example,
For example, if version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, and 1.1 are if version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, and 1.1 are
available in the feed, the -Safe flag updates the package to 1.0.2. available in the feed, the -Safe flag updates the package to 1.0.2.
</maml:para> </maml:para>
<maml:para></maml:para> <maml:para></maml:para>

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll

Binary file not shown.

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll

Binary file not shown.

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe

Binary file not shown.

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -202,6 +202,7 @@
<Compile Include="Src\Helpers\TestablePowerShellMissingConsoleHost.cs" /> <Compile Include="Src\Helpers\TestablePowerShellMissingConsoleHost.cs" />
<Compile Include="Src\InstallProjectTemplatePackagesCommandTests.cs" /> <Compile Include="Src\InstallProjectTemplatePackagesCommandTests.cs" />
<Compile Include="Src\ManagePackagesUserPromptsTests.cs" /> <Compile Include="Src\ManagePackagesUserPromptsTests.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLineTests.cs" />
<Compile Include="Src\OpenMSBuildProjectsTests.cs" /> <Compile Include="Src\OpenMSBuildProjectsTests.cs" />
<Compile Include="Src\PackageManagementServiceProviderTests.cs" /> <Compile Include="Src\PackageManagementServiceProviderTests.cs" />
<Compile Include="Src\PackageViewModelOperationLoggerTests.cs" /> <Compile Include="Src\PackageViewModelOperationLoggerTests.cs" />

3
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop.Workbench;
namespace PackageManagement.Tests.Helpers namespace PackageManagement.Tests.Helpers
{ {
@ -26,5 +27,7 @@ namespace PackageManagement.Tests.Helpers
{ {
IsClearCalled = true; IsClearCalled = true;
} }
public IOutputCategory OutputCategory { get; set; }
} }
} }

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop.Workbench;
using NuGet; using NuGet;
namespace PackageManagement.Tests.Helpers namespace PackageManagement.Tests.Helpers
@ -16,5 +17,11 @@ namespace PackageManagement.Tests.Helpers
{ {
IsClearCalled = true; IsClearCalled = true;
} }
public void AppendLine(string message)
{
}
public IOutputCategory OutputCategory { get; set; }
} }
} }

4
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs

@ -14,7 +14,7 @@ namespace PackageManagement.Tests.Helpers
public void AddFakePackageReference(string packageId, string version) public void AddFakePackageReference(string packageId, string version)
{ {
var packageReference = new PackageReference(packageId, new SemanticVersion(version), null, null); var packageReference = new PackageReference(packageId, new SemanticVersion(version), null, null, false, false);
FakePackageReferences.Add(packageReference); FakePackageReferences.Add(packageReference);
} }
@ -27,7 +27,7 @@ namespace PackageManagement.Tests.Helpers
public void DeleteEntry(string id, SemanticVersion version) public void DeleteEntry(string id, SemanticVersion version)
{ {
var packageReference = new PackageReference(id, version, null, null); var packageReference = new PackageReference(id, version, null, null, false, false);
EntriesDeleted.Add(packageReference); EntriesDeleted.Add(packageReference);
} }

4
src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs

@ -100,7 +100,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageViewModels_PackageReferenceIsRemoved_PackageViewModelsIsUpdated() public void PackageViewModels_PackageReferenceIsBeingRemoved_PackageViewModelsIsUpdated()
{ {
CreateViewModel(); CreateViewModel();
FakePackage package = AddPackageToProjectLocalRepository(); FakePackage package = AddPackageToProjectLocalRepository();
@ -159,7 +159,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageViewModels_PackageReferenceIsRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated() public void PackageViewModels_PackageReferenceIsBeingRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated()
{ {
CreateViewModel(); CreateViewModel();
FakePackage package = AddPackageToProjectLocalRepository(); FakePackage package = AddPackageToProjectLocalRepository();

37
src/AddIns/Misc/PackageManagement/Test/Src/NuGetPackageRestoreCommandLineTests.cs

@ -0,0 +1,37 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using NUnit.Framework;
using Rhino.Mocks;
namespace PackageManagement.Tests
{
[TestFixture]
public class NuGetPackageRestoreCommandLineTests
{
NuGetPackageRestoreCommandLine commandLine;
void CreateCommandLineWithSolution(string fileName)
{
IPackageManagementSolution solution = MockRepository.GenerateStub<IPackageManagementSolution>();
solution.Stub(s => s.FileName).Return(fileName);
commandLine = new NuGetPackageRestoreCommandLine(solution);
}
[Test]
public void Arguments_RestoreSolution_SolutionFullFileNameUsed()
{
CreateCommandLineWithSolution(@"d:\projects\MySolution\MySolution.sln");
string[] arguments = commandLine.Arguments;
string[] expectedArguments = new string[] {
"restore",
@"d:\projects\MySolution\MySolution.sln"
};
CollectionAssert.AreEqual(expectedArguments, arguments);
}
}
}

21
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs

@ -407,13 +407,13 @@
// } // }
// //
// [Test] // [Test]
// public void IsPackageRestoreEnabled_PackageRestoreNotInSettings_ReturnsFalse() // public void IsPackageRestoreEnabled_PackageRestoreNotInSettings_ReturnsTrue()
// { // {
// CreateOptions(); // CreateOptions();
// //
// bool enabled = options.IsPackageRestoreEnabled; // bool enabled = options.IsPackageRestoreEnabled;
// //
// Assert.IsFalse(enabled); // Assert.IsTrue(enabled);
// } // }
// //
// [Test] // [Test]
@ -430,7 +430,7 @@
// } // }
// //
// [Test] // [Test]
// public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreSectionDeletedFromSettings() // public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreSectionIsNotDeletedFromSettings()
// { // {
// CreateSettings(); // CreateSettings();
// EnablePackageRestoreInSettings(); // EnablePackageRestoreInSettings();
@ -439,7 +439,20 @@
// options.IsPackageRestoreEnabled = false; // options.IsPackageRestoreEnabled = false;
// //
// bool deleted = fakeSettings.IsPackageRestoreSectionDeleted; // bool deleted = fakeSettings.IsPackageRestoreSectionDeleted;
// Assert.IsTrue(deleted); // Assert.IsFalse(deleted);
// }
//
// [Test]
// public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreIsFalseInSettings()
// {
// CreateSettings();
// EnablePackageRestoreInSettings();
// CreateOptions(fakeSettings);
//
// options.IsPackageRestoreEnabled = false;
//
// KeyValuePair<string, string> keyValuePair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection();
// Assert.AreEqual("False", keyValuePair.Value);
// } // }
// } // }
//} //}

19
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs

@ -24,7 +24,7 @@ namespace PackageManagement.Tests
void CreateRecentRepository() void CreateRecentRepository()
{ {
fakeRecentRepository = new FakeRecentPackageRepository(); fakeRecentRepository = new FakeRecentPackageRepository();
} }
void CreateMachineCache() void CreateMachineCache()
@ -44,6 +44,11 @@ namespace PackageManagement.Tests
fakeSettings.SetPackageRestoreSetting(true); fakeSettings.SetPackageRestoreSetting(true);
} }
void DisablePackageRestoreInOptions()
{
fakeSettings.SetPackageRestoreSetting(false);
}
void CreateViewModelUsingCreatedMachineCache() void CreateViewModelUsingCreatedMachineCache()
{ {
CreateRecentRepository(); CreateRecentRepository();
@ -312,10 +317,22 @@ namespace PackageManagement.Tests
Assert.IsTrue(result); Assert.IsTrue(result);
} }
[Test]
public void IsPackageRestoreEnabled_NotSet_ReturnsTrue()
{
CreateOptions();
CreateViewModel(options);
bool result = viewModel.IsPackageRestoreEnabled;
Assert.IsTrue(result);
}
[Test] [Test]
public void IsPackageRestoreEnabled_FalseInOptions_ReturnsFalse() public void IsPackageRestoreEnabled_FalseInOptions_ReturnsFalse()
{ {
CreateOptions(); CreateOptions();
DisablePackageRestoreInOptions();
CreateViewModel(options); CreateViewModel(options);
bool result = viewModel.IsPackageRestoreEnabled; bool result = viewModel.IsPackageRestoreEnabled;

17
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs

@ -3,9 +3,11 @@
using System; using System;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop.Workbench;
using NuGet; using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests namespace PackageManagement.Tests
{ {
@ -102,5 +104,20 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended); Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended);
} }
[Test]
public void OutputCategory_MessageViewCategoryAlreadyCreated_ReturnsOutputCategoryFromMessageViewCategory()
{
CreateCompilerMessageView();
var messageCategoryView = new FakeMessageCategoryView();
IOutputCategory expectedCategory = MockRepository.GenerateStub<IOutputCategory>();
messageCategoryView.OutputCategory = expectedCategory;
fakeCompilerMessageView.GetExistingReturnValue = messageCategoryView;
CreateView(fakeCompilerMessageView);
IOutputCategory outputCategory = view.OutputCategory;
Assert.AreEqual(expectedCategory, outputCategory);
}
} }
} }

6
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs

@ -486,14 +486,14 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageReferenceRemoved_ProjectManagerPackageReferenceRemovedEventFired_EventFiresWithPackage() public void PackageReferenceRemoving_ProjectManagerPackageReferenceRemovingEventFired_EventFiresWithPackage()
{ {
CreateProject(); CreateProject();
PackageOperationEventArgs eventArgs = null; PackageOperationEventArgs eventArgs = null;
project.PackageReferenceRemoved += (sender, e) => eventArgs = e; project.PackageReferenceRemoving += (sender, e) => eventArgs = e;
var expectedPackage = new FakePackage(); var expectedPackage = new FakePackage();
fakeProjectManager.FirePackageReferenceRemoved(expectedPackage); fakeProjectManager.FirePackageReferenceRemoving(expectedPackage);
Assert.AreEqual(expectedPackage, eventArgs.Package); Assert.AreEqual(expectedPackage, eventArgs.Package);
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs

@ -38,7 +38,7 @@ namespace PackageManagement.Tests
void AddPackageReference(string packageId, string version) void AddPackageReference(string packageId, string version)
{ {
var packageReference = new PackageReference(packageId, new SemanticVersion(version), null, null); var packageReference = new PackageReference(packageId, new SemanticVersion(version), null, null, false, false);
packageReferences.Add(packageReference); packageReferences.Add(packageReference);
} }

12
src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs

@ -80,9 +80,9 @@ namespace PackageManagement.Tests
project.Raise(p => p.PackageReferenceAdded += null, null, eventArgs); project.Raise(p => p.PackageReferenceAdded += null, null, eventArgs);
} }
void FirePackageReferenceRemovedEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs) void FirePackageReferenceRemovingEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs)
{ {
project.Raise(p => p.PackageReferenceRemoved += null, null, eventArgs); project.Raise(p => p.PackageReferenceRemoving += null, null, eventArgs);
} }
IPackageScript CreatePackageScript() IPackageScript CreatePackageScript()
@ -292,7 +292,7 @@ namespace PackageManagement.Tests
string installPath = @"d:\projects\MyProject\packages\foo"; string installPath = @"d:\projects\MyProject\packages\foo";
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath);
FirePackageReferenceRemovedEvent(project, eventArgs); FirePackageReferenceRemovingEvent(project, eventArgs);
scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath)); scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath));
} }
@ -307,7 +307,7 @@ namespace PackageManagement.Tests
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); SetUninstallScriptToReturnFromScriptFactory(uninstallScript);
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
FirePackageReferenceRemovedEvent(project2, eventArgs); FirePackageReferenceRemovingEvent(project2, eventArgs);
scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript)); scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript));
} }
@ -322,7 +322,7 @@ namespace PackageManagement.Tests
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); SetUninstallScriptToReturnFromScriptFactory(uninstallScript);
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
FirePackageReferenceRemovedEvent(project2, eventArgs); FirePackageReferenceRemovingEvent(project2, eventArgs);
Assert.AreEqual(project2, uninstallScript.Project); Assert.AreEqual(project2, uninstallScript.Project);
} }
@ -337,7 +337,7 @@ namespace PackageManagement.Tests
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
action.Dispose(); action.Dispose();
FirePackageReferenceRemovedEvent(project, eventArgs); FirePackageReferenceRemovingEvent(project, eventArgs);
scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript)); scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript));
} }

20
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs

@ -174,11 +174,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsRun() public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsRun()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated; FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated;
@ -187,11 +187,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsCreated() public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsCreated()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed; string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
@ -199,13 +199,13 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Dispose_PackageReferenceIsRemoved_PackageUninstallScriptIsNotRun() public void Dispose_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsNotRun()
{ {
CreateAction(); CreateAction();
action.Dispose(); action.Dispose();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count; int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count;
@ -213,11 +213,11 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedProject() public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedProject()
{ {
CreateAction(); CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project; IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project;
@ -225,12 +225,12 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs() public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs()
{ {
CreateAction(); CreateAction();
var expectedPackage = new FakePackage(); var expectedPackage = new FakePackage();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage);
fakeProject.FirePackageReferenceRemovedEvent(eventArgs); fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package; IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package;

2
src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs

@ -31,7 +31,7 @@ namespace PackageManagement.Tests
{ {
fakeSolution = new FakePackageManagementSolution(); fakeSolution = new FakePackageManagementSolution();
fakeSourceRepository = new FakePackageRepository(); fakeSourceRepository = new FakePackageRepository();
var packageReference = new PackageReference(packageId, version, null, null); var packageReference = new PackageReference(packageId, version, null, null, false, false);
updatePackageInAllProjects = new UpdatePackageInAllProjects(packageReference, fakeSolution, fakeSourceRepository); updatePackageInAllProjects = new UpdatePackageInAllProjects(packageReference, fakeSolution, fakeSourceRepository);
} }

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

@ -558,6 +558,7 @@
<Compile Include="Src\Services\Debugger\BreakpointBookmarkEventArgs.cs" /> <Compile Include="Src\Services\Debugger\BreakpointBookmarkEventArgs.cs" />
<Compile Include="Workbench\File\IFileService.cs" /> <Compile Include="Workbench\File\IFileService.cs" />
<Compile Include="Workbench\File\OpenedFile.cs" /> <Compile Include="Workbench\File\OpenedFile.cs" />
<Compile Include="Src\Services\FileIconService.cs" />
<Compile Include="Src\Services\LanguageBinding\DefaultLanguageBinding.cs" /> <Compile Include="Src\Services\LanguageBinding\DefaultLanguageBinding.cs" />
<Compile Include="Src\Services\LanguageBinding\ILanguageBinding.cs" /> <Compile Include="Src\Services\LanguageBinding\ILanguageBinding.cs" />
<Compile Include="Src\Services\LanguageBinding\LanguageBindingDoozer.cs" /> <Compile Include="Src\Services\LanguageBinding\LanguageBindingDoozer.cs" />

2
src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs

@ -114,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (fx != null) if (fx != null)
UpdateAppConfig(fx); UpdateAppConfig(fx);
if (Project.OutputType != OutputType.Library) { if (Project.OutputType != OutputType.Library) {
if (DotnetDetection.IsDotnet45Installed() && fx.IsBasedOn(TargetFramework.Net45)) { if (fx != null && DotnetDetection.IsDotnet45Installed() && fx.IsBasedOn(TargetFramework.Net45)) {
Project.SetProperty(null, Project.ActiveConfiguration.Platform, "Prefer32Bit", "True", PropertyStorageLocations.PlatformSpecific, true); Project.SetProperty(null, Project.ActiveConfiguration.Platform, "Prefer32Bit", "True", PropertyStorageLocations.PlatformSpecific, true);
} else { } else {
Project.SetProperty(null, Project.ActiveConfiguration.Platform, "PlatformTarget", "x86", PropertyStorageLocations.PlatformSpecific, true); Project.SetProperty(null, Project.ActiveConfiguration.Platform, "PlatformTarget", "x86", PropertyStorageLocations.PlatformSpecific, true);

50
src/Main/Base/Project/Src/Services/FileIconService.cs

@ -0,0 +1,50 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.Core;
using System;
using System.Collections.Generic;
using System.Drawing;
namespace ICSharpCode.SharpDevelop
{
/// <summary>
/// This Class handles bitmap resources
/// for the application which were loaded from the filesystem.
/// </summary>
public static class FileIconService
{
static Dictionary<string, Bitmap> bitmapCache = new Dictionary<string, Bitmap>();
/// <summary>
/// Returns a bitmap from the file system. Placeholders like ${SharpDevelopBinPath}
/// and AddinPath (e. g. ${AddInPath:ICSharpCode.FiletypeRegisterer}) are resolved
/// through the StringParser.
/// The bitmaps are reused, you must not dispose the Bitmap!
/// </summary>
/// <returns>
/// The bitmap loaded from the file system.
/// </returns>
/// <param name="name">
/// The name of the requested bitmap (prefix, path and filename).
/// </param>
/// <exception cref="FileNotFoundException">
/// Is thrown when the bitmap was not found in the file system.
/// </exception>
public static Bitmap GetBitmap(string name)
{
Bitmap bmp = null;
if (name.ToUpper().StartsWith("FILE:")) {
lock (bitmapCache) {
if (bitmapCache.TryGetValue(name, out bmp))
return bmp;
string fileName = StringParser.Parse(name.Substring(5, name.Length - 5));
bmp = (Bitmap)Image.FromFile(fileName);
bitmapCache[name] = bmp;
}
}
return bmp;
}
}
}

11
src/Main/Base/Project/Src/Services/IconService.cs

@ -60,17 +60,20 @@ namespace ICSharpCode.SharpDevelop
public static Bitmap GetBitmap(string name) public static Bitmap GetBitmap(string name)
{ {
Bitmap bmp; Bitmap bmp = null;
try { try {
bmp = SD.ResourceService.GetBitmap(name); bmp = FileIconService.GetBitmap(name);
if (bmp == null) {
bmp = SD.ResourceService.GetBitmap(name);
}
} catch (ResourceNotFoundException ex) { } catch (ResourceNotFoundException ex) {
LoggingService.Warn(ex); LoggingService.Warn(ex);
bmp = null; } catch (FileNotFoundException ex) {
LoggingService.Warn(ex);
} }
if (bmp != null) { if (bmp != null) {
return bmp; return bmp;
} }
return SD.ResourceService.GetBitmap("Icons.16x16.MiscFiles"); return SD.ResourceService.GetBitmap("Icons.16x16.MiscFiles");
} }

1
src/Main/Base/Project/Util/MimeTypeDetection.cs

@ -53,6 +53,7 @@ namespace ICSharpCode.SharpDevelop
reader = new StreamReader(stream, Encoding.UTF8); reader = new StreamReader(stream, Encoding.UTF8);
break; break;
} else { } else {
stream.Position = 0;
byte[] buffer = new byte[BUFFER_SIZE]; byte[] buffer = new byte[BUFFER_SIZE];
int length = stream.Read(buffer, 0, BUFFER_SIZE); int length = stream.Read(buffer, 0, BUFFER_SIZE);
return FindMimeType(buffer, 0, length); return FindMimeType(buffer, 0, length);

3
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -204,5 +204,8 @@
<ItemGroup> <ItemGroup>
<Folder Include="ProcessRunner" /> <Folder Include="ProcessRunner" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="mime_bug1.txt" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project> </Project>

1
src/Main/Base/Test/MimeDetectionTests.cs

@ -54,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{ {
TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_utf-16_be_test.txt"), "text/plain"); TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_utf-16_be_test.txt"), "text/plain");
TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_utf-16_le_test.txt"), "text/plain"); TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_utf-16_le_test.txt"), "text/plain");
TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_bug1.txt"), "text/plain");
} }
byte[] LoadFile(string resourceName) byte[] LoadFile(string resourceName)

1
src/Main/Base/Test/mime_bug1.txt

@ -0,0 +1 @@
1<EFBFBD>

3
src/Setup/Files.wxs

@ -1530,6 +1530,9 @@
<Component Id="MicrosoftWebXmlTransformDll" Guid="0A82C51B-E2D1-4817-8704-2CB390B4E833" DiskId="1"> <Component Id="MicrosoftWebXmlTransformDll" Guid="0A82C51B-E2D1-4817-8704-2CB390B4E833" DiskId="1">
<File Id="Microsoft.Web.XmlTransform.dll" Name="Microsoft.Web.XmlTransform.dll" Source="..\..\AddIns\Misc\PackageManagement\Microsoft.Web.XmlTransform.dll" KeyPath="yes" Assembly=".net" AssemblyApplication="Microsoft.Web.XmlTransform.dll" AssemblyManifest="Microsoft.Web.XmlTransform.dll" /> <File Id="Microsoft.Web.XmlTransform.dll" Name="Microsoft.Web.XmlTransform.dll" Source="..\..\AddIns\Misc\PackageManagement\Microsoft.Web.XmlTransform.dll" KeyPath="yes" Assembly=".net" AssemblyApplication="Microsoft.Web.XmlTransform.dll" AssemblyManifest="Microsoft.Web.XmlTransform.dll" />
</Component> </Component>
<Component Id="NuGetExe" Guid="47FD372D-7F53-4466-B648-F674C64ED98B" DiskId="1">
<File Id="NuGet.exe" Name="NuGet.exe" Source="..\..\AddIns\Misc\PackageManagement\NuGet.exe" KeyPath="yes" Assembly=".net" AssemblyApplication="NuGet.exe" AssemblyManifest="NuGet.exe" />
</Component>
</Directory> </Directory>
<Directory Id="TextTemplating" Name="TextTemplating"> <Directory Id="TextTemplating" Name="TextTemplating">
<Component Id="MonoTextTemplatingDll" Guid="07BFBED7-FC7B-4CF3-BD00-DCA8E8E7C17B" DiskId="1"> <Component Id="MonoTextTemplatingDll" Guid="07BFBED7-FC7B-4CF3-BD00-DCA8E8E7C17B" DiskId="1">

1
src/Setup/Setup.wxs

@ -451,6 +451,7 @@
<ComponentRef Id="AboutNuGetCmdletsHelpTxt"/> <ComponentRef Id="AboutNuGetCmdletsHelpTxt"/>
<ComponentRef Id="NuGetConsoleTypesDll"/> <ComponentRef Id="NuGetConsoleTypesDll"/>
<ComponentRef Id="NuGetCoreDll"/> <ComponentRef Id="NuGetCoreDll"/>
<ComponentRef Id="NuGetExe"/>
<ComponentRef Id="NuGetNuspecSchema"/> <ComponentRef Id="NuGetNuspecSchema"/>
<ComponentRef Id="NuGetLicenseTxt"/> <ComponentRef Id="NuGetLicenseTxt"/>
<ComponentRef Id="PackageFormatPs1Xml"/> <ComponentRef Id="PackageFormatPs1Xml"/>

Loading…
Cancel
Save