Browse Source

Merge branch 'master' of github.com:icsharpcode/SharpDevelop

pull/503/head
Peter Forstmeier 11 years ago
parent
commit
dae26c35d3
  1. 41
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
  2. 48
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs
  3. 17
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
  4. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
  5. 4
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs
  7. 15
      src/AddIns/Misc/PackageManagement/Project/Src/SolutionPackageRepositoryPath.cs
  8. 24
      src/AddIns/Misc/PackageManagement/Test/Src/SolutionPackageRepositoryPathTests.cs

41
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs

@ -377,28 +377,35 @@ namespace ICSharpCode.WpfDesign.Designer @@ -377,28 +377,35 @@ namespace ICSharpCode.WpfDesign.Designer
placementOp = PlacementOperation.Start(Context.Services.Selection.SelectedItems, PlacementType.Move);
}
switch (e.Key) {
case Key.Left:
dx += Keyboard.IsKeyDown(Key.LeftShift) ? -10 : -1;
break;
case Key.Up:
dy += Keyboard.IsKeyDown(Key.LeftShift) ? -10 : -1;
break;
case Key.Right:
dx += Keyboard.IsKeyDown(Key.LeftShift) ? 10 : 1;
break;
case Key.Down:
dy += Keyboard.IsKeyDown(Key.LeftShift) ? 10 : 1;
break;
}
dx = (e.Key == Key.Left) ? Keyboard.IsKeyDown(Key.LeftShift) ? -10 : -1 : 0;
dy = (e.Key == Key.Up) ? Keyboard.IsKeyDown(Key.LeftShift) ? -10 : -1 : 0;
dx = (e.Key == Key.Right) ? Keyboard.IsKeyDown(Key.LeftShift) ? 10 : 1 : (dx != 0 ? dx : 0);
dy = (e.Key == Key.Down) ? Keyboard.IsKeyDown(Key.LeftShift) ? 10 : 1 : (dy != 0 ? dy : 0);
double left, top;
foreach (PlacementInformation info in placementOp.PlacedItems)
{
//Let canvas position preceed bounds definition since there can be a discrepancy between them.
left = IsPropertySet(info.Item.View,Canvas.LeftProperty)?(double)info.Item.Properties.GetAttachedProperty(Canvas.LeftProperty).ValueOnInstance: info.OriginalBounds.Left;
top = IsPropertySet(info.Item.View, Canvas.TopProperty) ? (double)info.Item.Properties.GetAttachedProperty(Canvas.TopProperty).ValueOnInstance : info.OriginalBounds.Top;
var bounds = info.OriginalBounds;
if (!Keyboard.IsKeyDown(Key.LeftCtrl)) {
info.Bounds = new Rect(left + dx,
top + dy,
info.OriginalBounds.Width,
info.OriginalBounds.Height);
info.Bounds = new Rect(bounds.Left + dx,
bounds.Top + dy,
bounds.Width,
bounds.Height);
} else {
info.Bounds = new Rect(left,
top,
info.OriginalBounds.Width + dx,
info.OriginalBounds.Height + dy);
info.Bounds = new Rect(bounds.Left,
bounds.Top,
bounds.Width + dx,
bounds.Height + dy);
}
placementOp.CurrentContainerBehavior.SetPosition(info);
}

48
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs

@ -58,6 +58,32 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -58,6 +58,32 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
extendedView = (FrameworkElement)this.ExtendedItem.View;
}
public override Rect GetPosition(PlacementOperation operation, DesignItem item)
{
UIElement child = item.View;
if (child == null)
return Rect.Empty;
double x, y;
if (IsPropertySet(child, Canvas.LeftProperty) || !IsPropertySet(child, Canvas.RightProperty)) {
x = GetCanvasProperty(child, Canvas.LeftProperty);
} else {
x = extendedComponent.ActualWidth - GetCanvasProperty(child, Canvas.RightProperty) - child.RenderSize.Width;
}
if (IsPropertySet(child, Canvas.TopProperty) || !IsPropertySet(child, Canvas.BottomProperty)) {
y = GetCanvasProperty(child, Canvas.TopProperty);
} else {
y = extendedComponent.ActualHeight - GetCanvasProperty(child, Canvas.BottomProperty) - child.RenderSize.Height;
}
var p = new Point(x, y);
return new Rect(p, child.RenderSize);
}
public override void SetPosition(PlacementInformation info)
{
base.SetPosition(info);
@ -66,28 +92,26 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -66,28 +92,26 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
UIElement child = info.Item.View;
Rect newPosition = info.Bounds;
if (IsPropertySet(child, Canvas.RightProperty))
{
if (IsPropertySet(child, Canvas.LeftProperty) || !IsPropertySet(child, Canvas.RightProperty)) {
if (newPosition.Left != GetCanvasProperty(child, Canvas.LeftProperty)) {
info.Item.Properties.GetAttachedProperty(Canvas.LeftProperty).SetValue(newPosition.Left);
}
} else {
var newR = extendedComponent.ActualWidth - newPosition.Right;
if (newR != GetCanvasProperty(child, Canvas.RightProperty))
info.Item.Properties.GetAttachedProperty(Canvas.RightProperty).SetValue(newR);
}
else if (newPosition.Left != GetCanvasProperty(child, Canvas.LeftProperty))
{
info.Item.Properties.GetAttachedProperty(Canvas.LeftProperty).SetValue(newPosition.Left);
}
if (IsPropertySet(child, Canvas.BottomProperty))
{
if (IsPropertySet(child, Canvas.TopProperty) || !IsPropertySet(child, Canvas.BottomProperty)) {
if (newPosition.Top != GetCanvasProperty(child, Canvas.TopProperty)) {
info.Item.Properties.GetAttachedProperty(Canvas.TopProperty).SetValue(newPosition.Top);
}
} else {
var newB = extendedComponent.ActualHeight - newPosition.Bottom;
if (newB != GetCanvasProperty(child, Canvas.BottomProperty))
info.Item.Properties.GetAttachedProperty(Canvas.BottomProperty).SetValue(newB);
}
else if (newPosition.Top != GetCanvasProperty(child, Canvas.TopProperty))
{
info.Item.Properties.GetAttachedProperty(Canvas.TopProperty).SetValue(newPosition.Top);
}
if (info.Item == Services.Selection.PrimarySelection)
{

17
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs

@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement.Design
@ -36,6 +38,8 @@ namespace ICSharpCode.PackageManagement.Design @@ -36,6 +38,8 @@ namespace ICSharpCode.PackageManagement.Design
public Dictionary<string, IList<KeyValuePair<string, string>>> Sections
= new Dictionary<string, IList<KeyValuePair<string, string>>>();
public const string ConfigSectionName = "config";
public FakeSettings()
{
Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, PackageSources);
@ -200,7 +204,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -200,7 +204,11 @@ namespace ICSharpCode.PackageManagement.Design
public string GetValue(string section, string key, bool isPath)
{
throw new NotImplementedException();
if (Sections.ContainsKey(section)) {
var matchedSection = Sections[section];
return matchedSection.FirstOrDefault(item => item.Key == key).Value;
}
return null;
}
public IList<KeyValuePair<string, string>> GetValues(string section, bool isPath)
@ -212,5 +220,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -212,5 +220,12 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public void SetRepositoryPathSetting(string fullPath)
{
var items = new List<KeyValuePair<string, string>> ();
items.Add (new KeyValuePair<string, string>("repositoryPath", fullPath));
Sections.Add(ConfigSectionName, items);
}
}
}

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

@ -95,5 +95,10 @@ namespace ICSharpCode.PackageManagement @@ -95,5 +95,10 @@ namespace ICSharpCode.PackageManagement
{
properties.SetList(RecentPackagesPropertyName, recentPackages);
}
public string GetCustomPackagesDirectory()
{
return registeredPackageSourceSettings.Settings.GetRepositoryPath();
}
}
}

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

@ -204,5 +204,9 @@ namespace ICSharpCode.PackageManagement @@ -204,5 +204,9 @@ namespace ICSharpCode.PackageManagement
packageSources = null;
}
}
public ISettings Settings {
get { return settings; }
}
}
}

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

@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement @@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement
: this(
new SharpDevelopPackageRepositoryFactory(),
new SharpDevelopProjectSystemFactory(),
new PackageManagementOptions())
PackageManagementServices.Options)
{
}

15
src/AddIns/Misc/PackageManagement/Project/Src/SolutionPackageRepositoryPath.cs

@ -25,12 +25,11 @@ namespace ICSharpCode.PackageManagement @@ -25,12 +25,11 @@ namespace ICSharpCode.PackageManagement
{
public class SolutionPackageRepositoryPath
{
string packagesRelativeDirectory;
ISolution solution;
DefaultPackagePathResolver pathResolver;
public SolutionPackageRepositoryPath(IProject project)
: this(project, new PackageManagementOptions())
: this(project, PackageManagementServices.Options)
{
}
@ -41,14 +40,18 @@ namespace ICSharpCode.PackageManagement @@ -41,14 +40,18 @@ namespace ICSharpCode.PackageManagement
public SolutionPackageRepositoryPath(ISolution solution, PackageManagementOptions options)
{
packagesRelativeDirectory = options.PackagesDirectory;
this.solution = solution;
GetSolutionPackageRepositoryPath();
PackageRepositoryPath = GetSolutionPackageRepositoryPath(options);
}
void GetSolutionPackageRepositoryPath()
string GetSolutionPackageRepositoryPath(PackageManagementOptions options)
{
PackageRepositoryPath = Path.Combine(solution.Directory, packagesRelativeDirectory);
string customPath = options.GetCustomPackagesDirectory ();
if (!String.IsNullOrEmpty (customPath)) {
return customPath;
}
return Path.Combine (solution.Directory, options.PackagesDirectory);
}
public string PackageRepositoryPath { get; private set; }

24
src/AddIns/Misc/PackageManagement/Test/Src/SolutionPackageRepositoryPathTests.cs

@ -32,8 +32,9 @@ namespace PackageManagement.Tests @@ -32,8 +32,9 @@ namespace PackageManagement.Tests
{
SolutionPackageRepositoryPath repositoryPath;
IProject testProject;
PackageManagementOptions options;
TestablePackageManagementOptions options;
ISolution solution;
FakeSettings settings;
void CreateSolutionPackageRepositoryPath()
{
@ -61,6 +62,12 @@ namespace PackageManagement.Tests @@ -61,6 +62,12 @@ namespace PackageManagement.Tests
void CreateOptions()
{
options = new TestablePackageManagementOptions();
settings = options.FakeSettings;
}
void SolutionNuGetConfigFileHasCustomPackagesPath(string fullPath)
{
settings.SetRepositoryPathSetting(fullPath);
}
[Test]
@ -109,5 +116,20 @@ namespace PackageManagement.Tests @@ -109,5 +116,20 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedInstallPath, installPath);
}
[Test]
public void PackageRepositoryPath_SolutionHasNuGetFileThatOverridesDefaultPackagesRepositoryPath_OverriddenPathReturned()
{
CreateOptions();
CreateSolution(@"d:\projects\MySolution\MySolution.sln");
options.PackagesDirectory = "Packages";
SolutionNuGetConfigFileHasCustomPackagesPath(@"d:\Team\MyPackages");
CreateSolutionPackageRepositoryPath(solution);
string expectedPath = @"d:\Team\MyPackages";
string path = repositoryPath.PackageRepositoryPath;
Assert.AreEqual(expectedPath, path);
}
}
}

Loading…
Cancel
Save