diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs index 56fea8db0d..38ba2f5129 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs @@ -31,6 +31,7 @@ namespace ICSharpCode.PythonBinding string componentName = String.Empty; PythonCodeDeserializer deserializer; ClassDefinition classDefinition; + bool walkingInitializeComponentMethod; public PythonComponentWalker(IComponentCreator componentCreator) { @@ -42,13 +43,13 @@ namespace ICSharpCode.PythonBinding /// Creates a control either a UserControl or Form from the python code. /// public IComponent CreateComponent(string pythonCode) - { + { PythonParser parser = new PythonParser(); PythonAst ast = parser.CreateAst(@"Control.py", new StringTextBuffer(pythonCode)); ast.Walk(this); // Did we find the InitializeComponent method? - if (!FoundInitializeComponentMethod) { + if (component == null) { throw new PythonComponentWalkerException("Unable to find InitializeComponents method."); } return component; @@ -88,14 +89,16 @@ namespace ICSharpCode.PythonBinding if (reader != null) { reader.Dispose(); } + walkingInitializeComponentMethod = true; node.Body.Walk(this); + walkingInitializeComponentMethod = false; } return false; } public override bool Walk(AssignmentStatement node) - { - if (!FoundInitializeComponentMethod) { + { + if (!walkingInitializeComponentMethod) { return false; } @@ -120,7 +123,7 @@ namespace ICSharpCode.PythonBinding public override bool Walk(ConstantExpression node) { - if (!FoundInitializeComponentMethod) { + if (!walkingInitializeComponentMethod) { return false; } @@ -129,8 +132,8 @@ namespace ICSharpCode.PythonBinding } public override bool Walk(CallExpression node) - { - if (!FoundInitializeComponentMethod) { + { + if (!walkingInitializeComponentMethod) { return false; } @@ -144,7 +147,7 @@ namespace ICSharpCode.PythonBinding public override bool Walk(NameExpression node) { - if (!FoundInitializeComponentMethod) { + if (!walkingInitializeComponentMethod) { return false; } @@ -159,7 +162,7 @@ namespace ICSharpCode.PythonBinding /// public override bool Walk(AugmentedAssignStatement node) { - if (!FoundInitializeComponentMethod) { + if (!walkingInitializeComponentMethod) { return false; } @@ -176,7 +179,7 @@ namespace ICSharpCode.PythonBinding PropertyDescriptor propertyDescriptor = componentCreator.GetEventProperty(eventDescriptor); propertyDescriptor.SetValue(currentComponent, eventHandlerName); return false; - } + } /// /// Walks the binary expression which is the right hand side of an assignment statement. @@ -357,10 +360,6 @@ namespace ICSharpCode.PythonBinding return null; } - bool FoundInitializeComponentMethod { - get { return component != null; } - } - /// /// Returns true if the expression is of the form: /// diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/AssignmentAfterFormClassTests.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/AssignmentAfterFormClassTests.cs new file mode 100644 index 0000000000..9b706477e3 --- /dev/null +++ b/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 +{ + /// + /// Tests that only the InitializeComponents method is processed + /// when walking the AST. + /// + [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); + } + } +} diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj index 7e52957187..2a94163f96 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj @@ -183,6 +183,7 @@ + diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs index 00297e1f24..7bc1db7d2a 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs @@ -177,7 +177,7 @@ namespace ICSharpCode.FormsDesigner LoggingService.Debug("Checking project reference: " + referenceItem.Include); if (referenceItem.HintPath.Length > 0 && File.Exists(referenceItem.FileName)) { LoggingService.Debug("Checking assembly reference"); - AssemblyName assemblyName = AssemblyName.GetAssemblyName(referenceItem.FileName); + AssemblyName assemblyName = GetAssemblyName(referenceItem.FileName); if (assemblyName != null && assemblyName.FullName == referenceName.FullName) { isAlreadyInRefFolder = true; break; @@ -196,6 +196,16 @@ namespace ICSharpCode.FormsDesigner 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) { LoggingService.Warn("Adding reference to project: " + referenceName.FullName); diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs index aab45ba352..1eaa1533f3 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs @@ -21,6 +21,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions [ExtensionFor(typeof(ContentControl))] [ExtensionFor(typeof(Border))] [ExtensionFor(typeof(Viewbox))] + [ExtensionFor(typeof(ItemsControl))] public class DefaultPlacementBehavior : BehaviorExtension, IPlacementBehavior { static List _contentControlsNotAllowedToAdd; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs index 3449810b53..d6060553ec 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs @@ -47,16 +47,24 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions adornerPanel.Children.Add(renderTransformOriginThumb); 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) { var p = AdornerPanel.GetPlacement(renderTransformOriginThumb) as RelativePlacement; var pointAbs = adornerPanel.RelativeToAbsolute(new Vector(p.XRelativeToContentWidth, p.YRelativeToContentHeight)); var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange); 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); diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RotateThumbExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RotateThumbExtension.cs index b352ab4e55..f75b408522 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RotateThumbExtension.cs +++ b/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]; IPlacementBehavior resizeBehavior; PlacementOperation operation; - ChangeGroup changeGroup; - - bool _isResizing; - - /// - /// Gets whether this extension is resizing any element. - /// - public bool IsResizing{ - get { return _isResizing; } - } public RotateThumbExtension() { @@ -62,15 +52,12 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions return rotateThumb; } - Size oldSize; - #region Rotate private Point centerPoint; private UIElement parent; private Vector startVector; private RotateTransform rotateTransform; - private Point renderTransformOrigin; private double initialAngle; private DesignItem rtTransform; private double angle; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs index 404d14de94..bbd9340b4e 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs +++ b/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) { - var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement; + scale = 1; + xOffset = 0; + yOffset = 0; - var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth; - var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight; - - // zoom canvas size - double x = this.zoomCanvas.ActualWidth; - double y = this.zoomCanvas.ActualHeight; - - if (fac1 < fac2) + if (this.DesignSurface.DesignContext != null) { - x = designedElement.ActualWidth / fac2; - xOffset = (zoomCanvas.ActualWidth - x) / 2; - yOffset = 0; - } - 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; + var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement; + + + var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth; + 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; + xOffset = (zoomCanvas.ActualWidth - x) / 2; + yOffset = 0; + } + 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; - - xOffset += (x - scale * w) / 2; - yOffset += (y - scale * h) / 2; + scale = (scaleX < scaleY) ? scaleX : scaleY; + + xOffset += (x - scale * w) / 2; + yOffset += (y - scale * h) / 2; + } } public event PropertyChangedEventHandler PropertyChanged; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs index 610ddf7592..f36c1744e7 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs @@ -70,7 +70,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer private DesignItem IntializePasteOperationsTest() { - var grid = CreateGridContextWithDesignSurface(" 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; } } diff --git a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs index 40fec605c6..f90901926f 100644 --- a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs +++ b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeNuGetCorePackageManager.cs @@ -151,5 +151,10 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes UninstallPackageWithVersionCallback(packageId, version, forceRemove, removeDependencies); } } + + public void InstallPackage(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions, bool ignoreWalkInfo) + { + throw new NotImplementedException(); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs index ae4167a5a1..941884aa32 100644 --- a/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs +++ b/src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs @@ -189,7 +189,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets PackageReference CreatePackageReference() { - return new PackageReference(Id, Version, null, null); + return new PackageReference(Id, Version, null, null, false, false); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin index 1975f4ed69..9143314be4 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin @@ -24,6 +24,12 @@ insertafter="AddWebReference" insertbefore="ShowServiceInBrowser" class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> + @@ -36,6 +42,12 @@ insertafter="AddWebReference" insertbefore="AddSeparator" class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> + @@ -48,6 +60,12 @@ insertafter="AddWebReference" insertbefore="AddSeparator" class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> + @@ -60,6 +78,12 @@ insertafter="CombineAddMenu" insertbefore="AddSeparator" class="ICSharpCode.PackageManagement.ManagePackagesCommand"/> + diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj index 4305301c8c..6947eb97a2 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj @@ -228,6 +228,8 @@ + + @@ -237,6 +239,7 @@ + @@ -596,4 +599,5 @@ + \ No newline at end of file diff --git a/src/AddIns/Misc/PackageManagement/Project/PostBuildEvent.proj b/src/AddIns/Misc/PackageManagement/Project/PostBuildEvent.proj new file mode 100644 index 0000000000..ce99545e28 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Project/PostBuildEvent.proj @@ -0,0 +1,13 @@ + + + $(PrepareForRunDependsOn);MyPostBuildTarget + + + + + + + + + + diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs index 80dd78f3ec..eb1d0f02a7 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs @@ -183,12 +183,12 @@ namespace ICSharpCode.PackageManagement.Design } } - public event EventHandler PackageReferenceRemoved; + public event EventHandler PackageReferenceRemoving; - public void FirePackageReferenceRemovedEvent(PackageOperationEventArgs e) + public void FirePackageReferenceRemovingEvent(PackageOperationEventArgs e) { - if (PackageReferenceRemoved != null) { - PackageReferenceRemoved(this, e); + if (PackageReferenceRemoving != null) { + PackageReferenceRemoving(this, e); } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs index e4e688853e..36b323c0f6 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs @@ -193,5 +193,10 @@ namespace ICSharpCode.PackageManagement.Design PackagePassedToUpdatePackageReference = package; SettingsPassedToUpdatePackageReference = settings; } + + public void InstallPackage(IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions, bool ignoreWalkInfo) + { + throw new NotImplementedException(); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs index b35be1821d..000c94a762 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs @@ -35,18 +35,18 @@ namespace ICSharpCode.PackageManagement.Design } } - public event EventHandler PackageReferenceRemoved; + public event EventHandler PackageReferenceRemoving; - protected virtual void OnPackageReferenceRemoved(IPackage package) + protected virtual void OnPackageReferenceRemoving(IPackage package) { - if (PackageReferenceRemoved != null) { - PackageReferenceRemoved(this, new PackageOperationEventArgs(package, null, String.Empty)); + if (PackageReferenceRemoving != null) { + PackageReferenceRemoving(this, new PackageOperationEventArgs(package, null, String.Empty)); } } #pragma warning disable 67 public event EventHandler PackageReferenceAdding; - public event EventHandler PackageReferenceRemoving; + public event EventHandler PackageReferenceRemoved; #pragma warning restore 67 public IPackageRepository LocalRepository { get; set; } @@ -87,9 +87,9 @@ namespace ICSharpCode.PackageManagement.Design 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) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs index 3cb0339f02..eb686d2c17 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/IMessageViewCategory.cs +++ b/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) using System; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.PackageManagement { @@ -9,5 +10,6 @@ namespace ICSharpCode.PackageManagement { void AppendLine(string text); void Clear(); + IOutputCategory OutputCategory { get; } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs index d943a85aac..928f7555b4 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementOutputMessagesView.cs +++ b/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) using System; +using ICSharpCode.SharpDevelop.Workbench; using NuGet; namespace ICSharpCode.PackageManagement @@ -9,5 +10,7 @@ namespace ICSharpCode.PackageManagement public interface IPackageManagementOutputMessagesView { void Clear(); + void AppendLine(string message); + IOutputCategory OutputCategory { get; } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs index 4450c7e528..e7afb6d74d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs @@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement event EventHandler PackageInstalled; event EventHandler PackageUninstalled; event EventHandler PackageReferenceAdded; - event EventHandler PackageReferenceRemoved; + event EventHandler PackageReferenceRemoving; string Name { get; } ILogger Logger { get; set; } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/NuGetExePath.cs b/src/AddIns/Misc/PackageManagement/Project/Src/NuGetExePath.cs new file mode 100644 index 0000000000..7c4ee83c44 --- /dev/null +++ b/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); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/NuGetPackageRestoreCommandLine.cs b/src/AddIns/Misc/PackageManagement/Project/Src/NuGetPackageRestoreCommandLine.cs new file mode 100644 index 0000000000..b51ac70978 --- /dev/null +++ b/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 arguments = new List(); + + 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); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs index 1d9ef34973..db5fa3fa4c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementMessageViewCategory.cs @@ -3,6 +3,7 @@ using System; using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Workbench; namespace ICSharpCode.PackageManagement { @@ -24,5 +25,9 @@ namespace ICSharpCode.PackageManagement { messageViewCategory.ClearText(); } + + public IOutputCategory OutputCategory { + get { return messageViewCategory; } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs index 9d94f599f7..5dcab40e5a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs +++ b/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) using System; +using ICSharpCode.SharpDevelop.Workbench; using NuGet; namespace ICSharpCode.PackageManagement @@ -41,12 +42,21 @@ namespace ICSharpCode.PackageManagement void PackageOperationMessageLogged(object sender, PackageOperationMessageLoggedEventArgs e) { string formattedMessage = e.Message.ToString(); - messageViewCategory.AppendLine(formattedMessage); + AppendLine(formattedMessage); } public void Clear() { messageViewCategory.Clear(); } + + public void AppendLine(string message) + { + messageViewCategory.AppendLine(message); + } + + public IOutputCategory OutputCategory { + get { return messageViewCategory.OutputCategory; } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs index 01fa702369..a4f266e25a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs @@ -64,9 +64,9 @@ namespace ICSharpCode.PackageManagement remove { projectManager.PackageReferenceAdded -= value; } } - public event EventHandler PackageReferenceRemoved { - add { projectManager.PackageReferenceRemoved += value; } - remove { projectManager.PackageReferenceRemoved -= value; } + public event EventHandler PackageReferenceRemoving { + add { projectManager.PackageReferenceRemoving += value; } + remove { projectManager.PackageReferenceRemoving -= value; } } public bool IsPackageInstalled(IPackage package) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs index dabec52ea3..bf41dd8e8e 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs @@ -11,8 +11,8 @@ namespace ICSharpCode.PackageManagement { public class RegisteredPackageSources : ObservableCollection { - public static readonly string DefaultPackageSourceUrl = "https://nuget.org/api/v2/"; - public static readonly string DefaultPackageSourceName = "NuGet Official Package Source"; + public static readonly string DefaultPackageSourceUrl = "https://www.nuget.org/api/v2/"; + public static readonly string DefaultPackageSourceName = "nuget.org"; public static readonly PackageSource DefaultPackageSource = new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName); diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RestorePackagesCommand.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RestorePackagesCommand.cs new file mode 100644 index 0000000000..7c3775791b --- /dev/null +++ b/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); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs index 8c47518c29..7ba100a699 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs @@ -22,7 +22,7 @@ namespace ICSharpCode.PackageManagement.Scripting List> packageReferenceAddedHandlers = new List>(); - List> packageReferenceRemovedHandlers = + List> packageReferenceRemovingHandlers = new List>(); public RunAllProjectPackageScriptsAction( @@ -68,7 +68,7 @@ namespace ICSharpCode.PackageManagement.Scripting foreach (IPackageManagementProject project in projects) { RegisterPackageInstalledEvent(project); RegisterPackageReferenceAddedEvent(project); - RegisterPackageReferenceRemovedEvent(project); + RegisterPackageReferenceRemovingEvent(project); } } @@ -88,12 +88,12 @@ namespace ICSharpCode.PackageManagement.Scripting project.PackageReferenceAdded += referenceAddedHandler; } - void RegisterPackageReferenceRemovedEvent(IPackageManagementProject project) + void RegisterPackageReferenceRemovingEvent(IPackageManagementProject project) { - EventHandler referenceRemovedHandler = - (_, e) => PackageReferenceRemoved(project, e); - packageReferenceRemovedHandlers.Add(referenceRemovedHandler); - project.PackageReferenceRemoved += referenceRemovedHandler; + EventHandler referenceRemovingHandler = + (_, e) => PackageReferenceRemoving(project, e); + packageReferenceRemovingHandlers.Add(referenceRemovingHandler); + project.PackageReferenceRemoving += referenceRemovingHandler; } void UnregisterEvents() @@ -101,7 +101,7 @@ namespace ICSharpCode.PackageManagement.Scripting foreach (IPackageManagementProject project in projects) { UnregisterPackageInstalledEvent(project); UnregisterPackageReferenceAddedEvent(project); - UnregisterPackageReferenceRemovedEvent(project); + UnregisterPackageReferenceRemovingEvent(project); } } @@ -119,11 +119,11 @@ namespace ICSharpCode.PackageManagement.Scripting project.PackageReferenceAdded -= handler; } - void UnregisterPackageReferenceRemovedEvent(IPackageManagementProject project) + void UnregisterPackageReferenceRemovingEvent(IPackageManagementProject project) { - EventHandler handler = packageReferenceRemovedHandlers.First(); - packageReferenceRemovedHandlers.Remove(handler); - project.PackageReferenceRemoved -= handler; + EventHandler handler = packageReferenceRemovingHandlers.First(); + packageReferenceRemovingHandlers.Remove(handler); + project.PackageReferenceRemoving -= handler; } void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e) @@ -136,7 +136,7 @@ namespace ICSharpCode.PackageManagement.Scripting RunInstallScript(project, e); } - void PackageReferenceRemoved(IPackageManagementProject project, PackageOperationEventArgs e) + void PackageReferenceRemoving(IPackageManagementProject project, PackageOperationEventArgs e) { RunUninstallScript(project, e); } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs index 7d3e1a8265..9dec7ede3a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs @@ -39,14 +39,14 @@ namespace ICSharpCode.PackageManagement.Scripting { project.PackageInstalled += PackageInstalled; project.PackageReferenceAdded += PackageReferenceAdded; - project.PackageReferenceRemoved += PackageReferenceRemoved; + project.PackageReferenceRemoving += PackageReferenceRemoving; } void UnregisterEvents() { project.PackageInstalled -= PackageInstalled; project.PackageReferenceAdded -= PackageReferenceAdded; - project.PackageReferenceRemoved -= PackageReferenceRemoved; + project.PackageReferenceRemoving -= PackageReferenceRemoving; } void PackageInstalled(object sender, PackageOperationEventArgs e) @@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement.Scripting RunInitScript(e); } - void PackageReferenceRemoved(object sender, PackageOperationEventArgs e) + void PackageReferenceRemoving(object sender, PackageOperationEventArgs e) { RunUninstallScript(e); } diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll b/src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll index 29cc96bad8..c2f8e2ec44 100644 Binary files a/src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll differ diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml index 9d93859f20..5b85044935 100644 --- a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml +++ b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Cmdlets.dll-Help.xml @@ -702,7 +702,7 @@ Description ------------------------------------------------------------------ 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. diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll index 12b82b9b6f..6af49f2159 100644 Binary files a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll differ diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll index 5f79f99f85..42f78f234b 100644 Binary files a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll differ diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe new file mode 100644 index 0000000000..7a59749d17 Binary files /dev/null and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe differ diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj index fe8331f44e..dc28f58fbd 100644 --- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj +++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj @@ -202,6 +202,7 @@ + diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs index d780364540..e44a299bec 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMessageCategoryView.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using ICSharpCode.PackageManagement; +using ICSharpCode.SharpDevelop.Workbench; namespace PackageManagement.Tests.Helpers { @@ -26,5 +27,7 @@ namespace PackageManagement.Tests.Helpers { IsClearCalled = true; } + + public IOutputCategory OutputCategory { get; set; } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs index 22c18d8384..cdabdbd991 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementOutputMessagesView.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using ICSharpCode.PackageManagement; +using ICSharpCode.SharpDevelop.Workbench; using NuGet; namespace PackageManagement.Tests.Helpers @@ -16,5 +17,11 @@ namespace PackageManagement.Tests.Helpers { IsClearCalled = true; } + + public void AppendLine(string message) + { + } + + public IOutputCategory OutputCategory { get; set; } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs index 9eecb6a019..a9d13c4792 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageReferenceFile.cs @@ -14,7 +14,7 @@ namespace PackageManagement.Tests.Helpers 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); } @@ -27,7 +27,7 @@ namespace PackageManagement.Tests.Helpers 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); } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs index 1042404fa4..c7018bc3a7 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs @@ -100,7 +100,7 @@ namespace PackageManagement.Tests } [Test] - public void PackageViewModels_PackageReferenceIsRemoved_PackageViewModelsIsUpdated() + public void PackageViewModels_PackageReferenceIsBeingRemoved_PackageViewModelsIsUpdated() { CreateViewModel(); FakePackage package = AddPackageToProjectLocalRepository(); @@ -159,7 +159,7 @@ namespace PackageManagement.Tests } [Test] - public void PackageViewModels_PackageReferenceIsRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated() + public void PackageViewModels_PackageReferenceIsBeingRemovedAfterViewModelIsDisposed_PackageViewModelsIsNotUpdated() { CreateViewModel(); FakePackage package = AddPackageToProjectLocalRepository(); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/NuGetPackageRestoreCommandLineTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/NuGetPackageRestoreCommandLineTests.cs new file mode 100644 index 0000000000..16fc9fbaaa --- /dev/null +++ b/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(); + 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); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs index 20f768514b..a2e3d9394f 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs @@ -407,13 +407,13 @@ // } // // [Test] -// public void IsPackageRestoreEnabled_PackageRestoreNotInSettings_ReturnsFalse() +// public void IsPackageRestoreEnabled_PackageRestoreNotInSettings_ReturnsTrue() // { // CreateOptions(); // // bool enabled = options.IsPackageRestoreEnabled; // -// Assert.IsFalse(enabled); +// Assert.IsTrue(enabled); // } // // [Test] @@ -430,7 +430,7 @@ // } // // [Test] -// public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreSectionDeletedFromSettings() +// public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreSectionIsNotDeletedFromSettings() // { // CreateSettings(); // EnablePackageRestoreInSettings(); @@ -439,7 +439,20 @@ // options.IsPackageRestoreEnabled = false; // // bool deleted = fakeSettings.IsPackageRestoreSectionDeleted; -// Assert.IsTrue(deleted); +// Assert.IsFalse(deleted); +// } +// +// [Test] +// public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreIsFalseInSettings() +// { +// CreateSettings(); +// EnablePackageRestoreInSettings(); +// CreateOptions(fakeSettings); +// +// options.IsPackageRestoreEnabled = false; +// +// KeyValuePair keyValuePair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection(); +// Assert.AreEqual("False", keyValuePair.Value); // } // } //} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs index a5e789ddae..521df654c1 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs @@ -24,7 +24,7 @@ namespace PackageManagement.Tests void CreateRecentRepository() { - fakeRecentRepository = new FakeRecentPackageRepository(); + fakeRecentRepository = new FakeRecentPackageRepository(); } void CreateMachineCache() @@ -44,6 +44,11 @@ namespace PackageManagement.Tests fakeSettings.SetPackageRestoreSetting(true); } + void DisablePackageRestoreInOptions() + { + fakeSettings.SetPackageRestoreSetting(false); + } + void CreateViewModelUsingCreatedMachineCache() { CreateRecentRepository(); @@ -312,10 +317,22 @@ namespace PackageManagement.Tests Assert.IsTrue(result); } + [Test] + public void IsPackageRestoreEnabled_NotSet_ReturnsTrue() + { + CreateOptions(); + CreateViewModel(options); + + bool result = viewModel.IsPackageRestoreEnabled; + + Assert.IsTrue(result); + } + [Test] public void IsPackageRestoreEnabled_FalseInOptions_ReturnsFalse() { CreateOptions(); + DisablePackageRestoreInOptions(); CreateViewModel(options); bool result = viewModel.IsPackageRestoreEnabled; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs index a9b3459861..9b939049d2 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs @@ -3,9 +3,11 @@ using System; using ICSharpCode.PackageManagement; +using ICSharpCode.SharpDevelop.Workbench; using NuGet; using NUnit.Framework; using PackageManagement.Tests.Helpers; +using Rhino.Mocks; namespace PackageManagement.Tests { @@ -102,5 +104,20 @@ namespace PackageManagement.Tests Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended); } + + [Test] + public void OutputCategory_MessageViewCategoryAlreadyCreated_ReturnsOutputCategoryFromMessageViewCategory() + { + CreateCompilerMessageView(); + var messageCategoryView = new FakeMessageCategoryView(); + IOutputCategory expectedCategory = MockRepository.GenerateStub(); + messageCategoryView.OutputCategory = expectedCategory; + fakeCompilerMessageView.GetExistingReturnValue = messageCategoryView; + CreateView(fakeCompilerMessageView); + + IOutputCategory outputCategory = view.OutputCategory; + + Assert.AreEqual(expectedCategory, outputCategory); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs index 8a71281566..b2068f05e0 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs @@ -486,14 +486,14 @@ namespace PackageManagement.Tests } [Test] - public void PackageReferenceRemoved_ProjectManagerPackageReferenceRemovedEventFired_EventFiresWithPackage() + public void PackageReferenceRemoving_ProjectManagerPackageReferenceRemovingEventFired_EventFiresWithPackage() { CreateProject(); PackageOperationEventArgs eventArgs = null; - project.PackageReferenceRemoved += (sender, e) => eventArgs = e; + project.PackageReferenceRemoving += (sender, e) => eventArgs = e; var expectedPackage = new FakePackage(); - fakeProjectManager.FirePackageReferenceRemoved(expectedPackage); + fakeProjectManager.FirePackageReferenceRemoving(expectedPackage); Assert.AreEqual(expectedPackage, eventArgs.Package); } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs index 3d8626a8e5..37e565c89a 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageReferenceInstallerTests.cs @@ -38,7 +38,7 @@ namespace PackageManagement.Tests 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); } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs index 254c9b842f..f8a18cdab6 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/RunAllProjectPackageScriptsActionTests.cs @@ -80,9 +80,9 @@ namespace PackageManagement.Tests 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() @@ -292,7 +292,7 @@ namespace PackageManagement.Tests string installPath = @"d:\projects\MyProject\packages\foo"; PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); - FirePackageReferenceRemovedEvent(project, eventArgs); + FirePackageReferenceRemovingEvent(project, eventArgs); scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath)); } @@ -307,7 +307,7 @@ namespace PackageManagement.Tests SetUninstallScriptToReturnFromScriptFactory(uninstallScript); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); - FirePackageReferenceRemovedEvent(project2, eventArgs); + FirePackageReferenceRemovingEvent(project2, eventArgs); scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript)); } @@ -322,7 +322,7 @@ namespace PackageManagement.Tests SetUninstallScriptToReturnFromScriptFactory(uninstallScript); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); - FirePackageReferenceRemovedEvent(project2, eventArgs); + FirePackageReferenceRemovingEvent(project2, eventArgs); Assert.AreEqual(project2, uninstallScript.Project); } @@ -337,7 +337,7 @@ namespace PackageManagement.Tests PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); action.Dispose(); - FirePackageReferenceRemovedEvent(project, eventArgs); + FirePackageReferenceRemovingEvent(project, eventArgs); scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript)); } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs index a03932aef0..0cd517e445 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/RunPackageScriptsActionTests.cs @@ -174,11 +174,11 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsRun() + public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsRun() { CreateAction(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); - fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + fakeProject.FirePackageReferenceRemovingEvent(eventArgs); IPackageScript actualScript = fakeScriptRunner.FirstScriptRun; FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated; @@ -187,11 +187,11 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void Constructor_PackageReferenceIsRemoved_PackageUninstallScriptIsCreated() + public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsCreated() { CreateAction(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test"); - fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + fakeProject.FirePackageReferenceRemovingEvent(eventArgs); string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed; @@ -199,13 +199,13 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void Dispose_PackageReferenceIsRemoved_PackageUninstallScriptIsNotRun() + public void Dispose_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsNotRun() { CreateAction(); action.Dispose(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); - fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + fakeProject.FirePackageReferenceRemovingEvent(eventArgs); int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count; @@ -213,11 +213,11 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedProject() + public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedProject() { CreateAction(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); - fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + fakeProject.FirePackageReferenceRemovingEvent(eventArgs); IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project; @@ -225,12 +225,12 @@ namespace PackageManagement.Tests.Scripting } [Test] - public void Constructor_PackageReferenceIsRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs() + public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs() { CreateAction(); var expectedPackage = new FakePackage(); PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage); - fakeProject.FirePackageReferenceRemovedEvent(eventArgs); + fakeProject.FirePackageReferenceRemovingEvent(eventArgs); IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs index 35cb6b62c8..275f6b5c6a 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackageInAllProjectsTests.cs @@ -31,7 +31,7 @@ namespace PackageManagement.Tests { fakeSolution = new FakePackageManagementSolution(); 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); } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index f5d67f44a9..26f21b39a8 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -558,6 +558,7 @@ + diff --git a/src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs b/src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs index 602ff22294..3ea7239e6e 100644 --- a/src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs +++ b/src/Main/Base/Project/Src/Project/Behaviors/DotNetStartBehavior.cs @@ -114,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.Project if (fx != null) UpdateAppConfig(fx); 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); } else { Project.SetProperty(null, Project.ActiveConfiguration.Platform, "PlatformTarget", "x86", PropertyStorageLocations.PlatformSpecific, true); diff --git a/src/Main/Base/Project/Src/Services/FileIconService.cs b/src/Main/Base/Project/Src/Services/FileIconService.cs new file mode 100644 index 0000000000..30283da0a9 --- /dev/null +++ b/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 +{ + /// + /// This Class handles bitmap resources + /// for the application which were loaded from the filesystem. + /// + public static class FileIconService + { + static Dictionary bitmapCache = new Dictionary(); + + /// + /// 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! + /// + /// + /// The bitmap loaded from the file system. + /// + /// + /// The name of the requested bitmap (prefix, path and filename). + /// + /// + /// Is thrown when the bitmap was not found in the file system. + /// + 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; + } + } +} + diff --git a/src/Main/Base/Project/Src/Services/IconService.cs b/src/Main/Base/Project/Src/Services/IconService.cs index e81c932292..c0ae41e25e 100644 --- a/src/Main/Base/Project/Src/Services/IconService.cs +++ b/src/Main/Base/Project/Src/Services/IconService.cs @@ -60,17 +60,20 @@ namespace ICSharpCode.SharpDevelop public static Bitmap GetBitmap(string name) { - Bitmap bmp; + Bitmap bmp = null; try { - bmp = SD.ResourceService.GetBitmap(name); + bmp = FileIconService.GetBitmap(name); + if (bmp == null) { + bmp = SD.ResourceService.GetBitmap(name); + } } catch (ResourceNotFoundException ex) { LoggingService.Warn(ex); - bmp = null; + } catch (FileNotFoundException ex) { + LoggingService.Warn(ex); } if (bmp != null) { return bmp; } - return SD.ResourceService.GetBitmap("Icons.16x16.MiscFiles"); } diff --git a/src/Main/Base/Project/Util/MimeTypeDetection.cs b/src/Main/Base/Project/Util/MimeTypeDetection.cs index e5a8684b3d..37e4a49da0 100644 --- a/src/Main/Base/Project/Util/MimeTypeDetection.cs +++ b/src/Main/Base/Project/Util/MimeTypeDetection.cs @@ -53,6 +53,7 @@ namespace ICSharpCode.SharpDevelop reader = new StreamReader(stream, Encoding.UTF8); break; } else { + stream.Position = 0; byte[] buffer = new byte[BUFFER_SIZE]; int length = stream.Read(buffer, 0, BUFFER_SIZE); return FindMimeType(buffer, 0, length); diff --git a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj index de83db4ea3..56bcc7b724 100644 --- a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj +++ b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj @@ -204,5 +204,8 @@ + + + \ No newline at end of file diff --git a/src/Main/Base/Test/MimeDetectionTests.cs b/src/Main/Base/Test/MimeDetectionTests.cs index f25d754fc6..bb0e1cc3b0 100644 --- a/src/Main/Base/Test/MimeDetectionTests.cs +++ b/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_le_test.txt"), "text/plain"); + TestMime(LoadFile("ICSharpCode.SharpDevelop.mime_bug1.txt"), "text/plain"); } byte[] LoadFile(string resourceName) diff --git a/src/Main/Base/Test/mime_bug1.txt b/src/Main/Base/Test/mime_bug1.txt new file mode 100644 index 0000000000..2887279105 --- /dev/null +++ b/src/Main/Base/Test/mime_bug1.txt @@ -0,0 +1 @@ +1° \ No newline at end of file diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs index ef1f1e6f1f..c33b1c91fd 100644 --- a/src/Setup/Files.wxs +++ b/src/Setup/Files.wxs @@ -1530,6 +1530,9 @@ + + + diff --git a/src/Setup/Setup.wxs b/src/Setup/Setup.wxs index 1769432410..98aa6e786d 100644 --- a/src/Setup/Setup.wxs +++ b/src/Setup/Setup.wxs @@ -451,6 +451,7 @@ +