Browse Source

Merge branch 'master' into newNR

Conflicts:
	src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
	src/AddIns/Misc/HelpViewer/Source/Commands.cs
	src/Main/GlobalAssemblyInfo.cs.template
	src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/XmlDoc.cs
	src/Setup/Files.wxs
	src/Setup/Setup.wxs
	src/Tools/NUnit/nunit-console-dotnet2-x86.exe
	src/Tools/NUnit/nunit-console-dotnet2.exe
	src/Tools/NUnit/nunit-console-x86.exe
	src/Tools/NUnit/nunit-console.exe
pull/59/merge
Matt Ward 12 years ago
parent
commit
5a39ad4d46
  1. 7
      data/resources/StringResources.de.resx
  2. 7
      data/resources/StringResources.resx
  3. 38
      doc/Dependencies.html
  4. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/Chiron.exe
  5. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/DLLs/IronPython.Wpf.dll
  6. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/IronPython.Modules.dll
  7. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/IronPython.dll
  8. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Dynamic.dll
  9. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Scripting.Metadata.dll
  10. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Scripting.dll
  11. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/ipy.exe
  12. BIN
      src/AddIns/BackendBindings/Python/RequiredLibraries/ipyw.exe
  13. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/Chiron.exe
  14. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.Libraries.Yaml.dll
  15. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.Libraries.dll
  16. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.dll
  17. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Dynamic.dll
  18. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Scripting.Metadata.dll
  19. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Scripting.dll
  20. BIN
      src/AddIns/BackendBindings/Ruby/IronRuby/bin/ir.exe
  21. 8
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  22. 6
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PanelMoveAdorner.cs
  23. 16
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
  24. 15
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignSurface.cs
  25. 92
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForInvisibleControl.cs
  26. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs
  27. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ResizeThumbExtension.cs
  28. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/license.txt
  29. BIN
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/lock.png
  30. 34
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/DragTreeView.cs
  31. 32
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/DragTreeViewItem.cs
  32. 59
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/Outline.xaml
  33. 59
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs
  34. 18
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineTreeView.cs
  35. 12
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineView.xaml
  36. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj
  37. 43
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlComponentService.cs
  38. 17
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignItem.cs
  39. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/AssemblyInfo.cs
  40. 53
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/EditOperationTests.cs
  41. 19
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs
  42. 40
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs
  43. 184
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/NamespaceTests.cs
  44. 60
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/SetPropertyTests.cs
  45. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj
  46. 17
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/DesignTimeProperties.cs
  47. 39
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/NameScopeHelper.cs
  48. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
  49. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlParser.cs
  50. 38
      src/AddIns/Misc/HelpViewer/HelpViewer.addin
  51. 8
      src/AddIns/Misc/HelpViewer/HelpViewer.csproj
  52. 44
      src/AddIns/Misc/HelpViewer/Source/Commands.cs
  53. 21
      src/AddIns/Misc/HelpViewer/Source/Controls/HelpLibraryManagerNotFound.cs
  54. 7
      src/AddIns/Misc/HelpViewer/Source/Controls/SearchPadControl.xaml
  55. 15
      src/AddIns/Misc/HelpViewer/Source/Controls/TocEntry.cs
  56. 6
      src/AddIns/Misc/HelpViewer/Source/Controls/TocPadControl.xaml
  57. 2
      src/AddIns/Misc/HelpViewer/Source/Controls/TocPadControl.xaml.cs
  58. 30
      src/AddIns/Misc/HelpViewer/Source/Core/DisplayHelp.cs
  59. 23
      src/AddIns/Misc/HelpViewer/Source/Core/Help3Environment.cs
  60. 30
      src/AddIns/Misc/HelpViewer/Source/Core/Help3Service.cs
  61. 42
      src/AddIns/Misc/HelpViewer/Source/Core/HelpLibraryAgent.cs
  62. 36
      src/AddIns/Misc/HelpViewer/Source/Core/HelpLibraryManager.cs
  63. 6
      src/AddIns/Misc/HelpViewer/Source/Help3OptionsPanel.xaml.cs
  64. 6
      src/AddIns/Misc/HelpViewer/Source/Helper/HelpClientWatcher.cs
  65. 36
      src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs
  66. 4
      src/AddIns/Misc/HelpViewer/Source/MSHelp3Provider.cs
  67. 8
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryExtensions.cs
  68. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/Microsoft.Web.XmlTransform.dll
  69. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Console.Types.dll
  70. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll
  71. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.exe
  72. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeOperationAwarePackageRepository.cs
  73. 75
      src/AddIns/VersionControl/SubversionAddIn/Src/Commands/AutostartCommands.cs
  74. 2
      src/Libraries/SharpSvn/Licenses/Putty-License.txt
  75. 2
      src/Libraries/SharpSvn/Licenses/SharpSvn-License.txt
  76. 8
      src/Libraries/SharpSvn/Licenses/Subversion-License.txt
  77. 24
      src/Libraries/SharpSvn/Licenses/ZLib-License.txt
  78. BIN
      src/Libraries/SharpSvn/SharpPlink-Win32.svnExe
  79. BIN
      src/Libraries/SharpSvn/SharpSvn-DB44-20-win32.svnDll
  80. BIN
      src/Libraries/SharpSvn/SharpSvn-Sasl21-23-win32.dll
  81. BIN
      src/Libraries/SharpSvn/SharpSvn.UI.dll
  82. 15
      src/Libraries/SharpSvn/SharpSvn.UI.xml
  83. BIN
      src/Libraries/SharpSvn/SharpSvn.dll
  84. 12
      src/Libraries/SharpSvn/SharpSvn.wxs
  85. 4935
      src/Libraries/SharpSvn/SharpSvn.xml
  86. 6
      src/Main/Core/Project/Src/AddInTree/AddIn/AddInReference.cs
  87. 2
      src/Setup/Chocolatey/Tools/chocolateyInstall.ps1
  88. 4
      src/Setup/Chocolatey/sharpdevelop.nuspec
  89. 5
      src/Setup/Files.wxs
  90. 20
      src/Setup/Setup.wxs
  91. 1
      src/Setup/SharpDevelop.Setup.wixproj
  92. BIN
      src/Tools/NUnit/lib/nunit-console-runner.dll
  93. BIN
      src/Tools/NUnit/lib/nunit.core.dll
  94. BIN
      src/Tools/NUnit/lib/nunit.core.interfaces.dll
  95. BIN
      src/Tools/NUnit/lib/nunit.util.dll
  96. 4
      src/Tools/NUnit/license.txt
  97. BIN
      src/Tools/NUnit/nunit-console-dotnet2-x86.exe
  98. BIN
      src/Tools/NUnit/nunit-console-dotnet2.exe
  99. BIN
      src/Tools/NUnit/nunit-console-x86.exe
  100. BIN
      src/Tools/NUnit/nunit-console.exe
  101. Some files were not shown because too many files have changed in this diff Show More

7
data/resources/StringResources.de.resx

@ -415,11 +415,14 @@ Sie werden nicht mehr funktionieren, nachdem dieses AddIn entfernt wurde! Sind S @@ -415,11 +415,14 @@ Sie werden nicht mehr funktionieren, nachdem dieses AddIn entfernt wurde! Sind S
<value>Hilfebibliothek</value>
</data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Hilfetyp</value>
<value>Hilfetyp wählen</value>
</data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve">
<value>Help Library Manager kann nicht gestartet werden, weil kein Hilfekatalog installiert oder ausgewählt wurde. Bitte überprüfen Sie die Hilfeeinstellungen (siehe Extras &gt; Optionen... &gt; Tools &gt; Microsoft Help Viewer).</value>
</data>
<data name="AddIns.HelpViewer.HLMNotAvailableDownloadWinSDK" xml:space="preserve">
<value>Der Help Library Manager wurde nicht gefunden. Um die Hilfe von SharpDevelop nutzen zu können, laden Sie bitte das Windows SDK 7.1 von Microsoft herunter und installieren Sie es.</value>
</data>
<data name="AddIns.HelpViewer.HLMNotFound" xml:space="preserve">
<value>Help Library Manager wurde nicht gefunden. Bitte stellen Sie sicher, dass es korrekt installiert wurde.</value>
</data>
@ -448,7 +451,7 @@ Sie werden nicht mehr funktionieren, nachdem dieses AddIn entfernt wurde! Sind S @@ -448,7 +451,7 @@ Sie werden nicht mehr funktionieren, nachdem dieses AddIn entfernt wurde! Sind S
<value>Hilfe anzeigen</value>
</data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve">
<value>Externe Hilfe verwenden</value>
<value>Externen Hilfebetrachter verwenden</value>
</data>
<data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve">
<value>Ich möchte die lokale Hilfe verwenden</value>

7
data/resources/StringResources.resx

@ -426,12 +426,15 @@ They will stop working after removing this AddIn! Are you sure you want to conti @@ -426,12 +426,15 @@ They will stop working after removing this AddIn! Are you sure you want to conti
<value>Help Library</value>
</data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Help Mode</value>
<value>Set Help Preference</value>
</data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve">
<value>Cannot launch Help Library Manager, because there is no help catalog installed/selected. Please check your help settings (see Tools &gt; Options &gt; Tools &gt; Microsoft Help Viewer).</value>
<comment>Error message when there is no help catalog active</comment>
</data>
<data name="AddIns.HelpViewer.HLMNotAvailableDownloadWinSDK" xml:space="preserve">
<value>The Help Library Manager was not found. In order to use SharpDevelop's help feature please download and install Microsoft's Windows SDK 7.1.</value>
</data>
<data name="AddIns.HelpViewer.HLMNotFound" xml:space="preserve">
<value>Help Library Manager was not found. Please check if it was installed correctly.</value>
</data>
@ -460,7 +463,7 @@ They will stop working after removing this AddIn! Are you sure you want to conti @@ -460,7 +463,7 @@ They will stop working after removing this AddIn! Are you sure you want to conti
<value>Show Help</value>
</data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve">
<value>Use external help</value>
<value>Use external help viewer</value>
</data>
<data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve">
<value>I want to use local help</value>

38
doc/Dependencies.html

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
<html>
<head>
<title>SharpDevelop Dependencies</title>
</head>
<body>
<p>
<strong>SharpDevelop can take advantage of the following software if you install it:</strong>
</p>
<ul>
<li>
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=40772">Microsoft .NET Framework 4.5.1 Developer Pack</a> for .NET 4.5 code completion documentation
</li>
<li>
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=6B6C21D2-2006-4AFA-9702-529FA782D63B&amp;displaylang=en">Microsoft Windows SDK for Windows 7 and .NET Framework 4</a> (strongly recommended!)
</li>
<li>
<a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=effc5bc4-c3df-4172-ad1c-bc62935861c5">Microsoft F#</a> for F# support
</li>
<li>
<a href="http://code.msdn.microsoft.com/sourceanalysis">StyleCop</a> for source analysis support.
</li>
<li>
<a href="https://code.google.com/p/tortoisegit/">TortoiseGit</a> for Git source control support.
</li>
<li>
<a href="http://tortoisesvn.net/">TortoiseSVN</a> for Subversion source control support.
</li>
<li>
<a href="http://shfb.codeplex.com/">SHFB</a> for documentation generation support.
</li>
<li>
<a href="http://wixtoolset.org/">WiX</a> for building installers.
</li>
</ul>
</body>
</html>

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/Chiron.exe

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/DLLs/IronPython.Wpf.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/IronPython.Modules.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/IronPython.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Dynamic.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Scripting.Metadata.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/Microsoft.Scripting.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/ipy.exe

Binary file not shown.

BIN
src/AddIns/BackendBindings/Python/RequiredLibraries/ipyw.exe

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/Chiron.exe

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.Libraries.Yaml.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.Libraries.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/IronRuby.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Dynamic.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Scripting.Metadata.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/Microsoft.Scripting.dll

Binary file not shown.

BIN
src/AddIns/BackendBindings/Ruby/IronRuby/bin/ir.exe

Binary file not shown.

8
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -27,6 +27,7 @@ using ICSharpCode.AvalonEdit.Highlighting; @@ -27,6 +27,7 @@ using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
@ -231,7 +232,12 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -231,7 +232,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
MemberResolveResult mrr = result as MemberResolveResult;
if (mrr != null) {
HelpProvider.ShowHelp(mrr.Member);
if ((mrr.Member.DeclaringType.Kind == TypeKind.Enum) &&
(mrr.Member.DeclaringType.GetDefinition() != null)) {
HelpProvider.ShowHelp(mrr.Member.DeclaringType.GetDefinition());
} else {
HelpProvider.ShowHelp(mrr.Member);
}
}
}
#endregion

6
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PanelMoveAdorner.cs

@ -47,10 +47,14 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -47,10 +47,14 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
{
base.OnApplyTemplate();
var bnd = new Binding("IsVisible") {Source = item.Component};
bnd.Converter = CollapsedWhenFalse.Instance;
BindingOperations.SetBinding(this, UIElement.VisibilityProperty, bnd);
var surface = this.TryFindParent<DesignSurface>();
if (surface != null && surface.ZoomControl != null)
{
var bnd = new Binding("CurrentZoom") {Source = surface.ZoomControl};
bnd = new Binding("CurrentZoom") {Source = surface.ZoomControl};
bnd.Converter = InvertedZoomConverter.Instance;
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleXProperty, bnd);

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

@ -13,6 +13,7 @@ using System.Windows.Threading; @@ -13,6 +13,7 @@ using System.Windows.Threading;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Controls;
using ICSharpCode.WpfDesign.Designer.Xaml;
namespace ICSharpCode.WpfDesign.Designer
{
@ -35,20 +36,29 @@ namespace ICSharpCode.WpfDesign.Designer @@ -35,20 +36,29 @@ namespace ICSharpCode.WpfDesign.Designer
}
}
static void RunHitTest(Visual reference, Point point, HitTestFilterCallback filterCallback, HitTestResultCallback resultCallback)
void RunHitTest(Visual reference, Point point, HitTestFilterCallback filterCallback, HitTestResultCallback resultCallback)
{
VisualTreeHelper.HitTest(reference, filterCallback, resultCallback,
new PointHitTestParameters(point));
}
static HitTestFilterBehavior FilterHitTestInvisibleElements(DependencyObject potentialHitTestTarget)
HitTestFilterBehavior FilterHitTestInvisibleElements(DependencyObject potentialHitTestTarget)
{
UIElement element = potentialHitTestTarget as UIElement;
if (element != null) {
if (!(element.IsHitTestVisible && element.Visibility == Visibility.Visible)) {
return HitTestFilterBehavior.ContinueSkipSelfAndChildren;
}
var designItem = Context.Services.Component.GetDesignItem(element) as XamlDesignItem;
if (designItem != null && designItem.IsDesignTimeLocked) {
return HitTestFilterBehavior.ContinueSkipSelfAndChildren;
}
}
return HitTestFilterBehavior.Continue;
}
@ -103,7 +113,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -103,7 +113,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (continueHitTest && testDesignSurface) {
RunHitTest(
this.Child, mousePosition, delegate { return HitTestFilterBehavior.Continue; },
this.Child, mousePosition, FilterHitTestInvisibleElements,
delegate(HitTestResult result) {
if (result != null && result.VisualHit != null && result.VisualHit is Visual) {
DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit);

15
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignSurface.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -31,7 +31,7 @@ namespace ICSharpCode.WpfDesign.Designer
/// </summary>
[TemplatePart(Name = "PART_DesignContent", Type = typeof(ContentControl))]
[TemplatePart(Name = "PART_Zoom", Type = typeof(ZoomControl))]
public class DesignSurface : ContentControl
public partial class DesignSurface : ContentControl
{
private FocusNavigator _focusNav;
@ -73,10 +73,21 @@ namespace ICSharpCode.WpfDesign.Designer @@ -73,10 +73,21 @@ namespace ICSharpCode.WpfDesign.Designer
base.OnApplyTemplate();
}
private bool enableBringIntoView = false;
public void ScrollIntoView(DesignItem designItem)
{
enableBringIntoView = true;
LogicalTreeHelper.BringIntoView(designItem.View);
enableBringIntoView = false;
}
void _partDesignContent_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
if (!enableBringIntoView)
e.Handled = true;
enableBringIntoView = false;
}
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)

92
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForInvisibleControl.cs

@ -3,15 +3,17 @@ @@ -3,15 +3,17 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Extensions;
using System.Windows.Controls;
using System.Windows;
using ICSharpCode.WpfDesign.Designer.Controls;
using System.Windows.Controls;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Controls;
using ICSharpCode.WpfDesign.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Extensions
{
[ExtensionFor(typeof(Panel))]
@ -21,6 +23,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -21,6 +23,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public class BorderForInvisibleControl : PermanentAdornerProvider
{
AdornerPanel adornerPanel;
AdornerPanel cachedAdornerPanel;
protected override void OnInitialized()
{
@ -28,52 +31,79 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -28,52 +31,79 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (ExtendedItem.Component is Border)
{
ExtendedItem.PropertyChanged+= (s, e) => ExtendedItem_PropertyChanged();
ExtendedItem.PropertyChanged += (s, e) => UpdateAdorner();
}
// If component is a ContentControl it must be of type ContentControl specifically, and not derived types like Label and Button.
if (!(ExtendedItem.Component is ContentControl) || ExtendedItem.Component.GetType() == typeof(ContentControl)) {
UpdateAdorner();
ExtendedItem_PropertyChanged();
var element = ExtendedItem.Component as UIElement;
if (element != null) {
element.IsVisibleChanged += (s, e) => UpdateAdorner();
}
}
else if (ExtendedItem.Component is Panel || ExtendedItem.Component is Viewbox || ExtendedItem.Component is ContentControl)
{
CreateAdorner();
}
}
void ExtendedItem_PropertyChanged()
void UpdateAdorner()
{
if (ExtendedItem.Component is Border)
{
var border = ExtendedItem.Component as Border;
if (border.ReadLocalValue(Border.BorderBrushProperty) == DependencyProperty.UnsetValue || border.ReadLocalValue(Border.BorderThicknessProperty) == DependencyProperty.UnsetValue)
{
var element = ExtendedItem.Component as UIElement;
if (element != null) {
var border = element as Border;
if (element.IsVisible && (border == null || IsAnyBorderEdgeInvisible(border))) {
CreateAdorner();
if (border != null) {
var adornerBorder = (Border)adornerPanel.Children[0];
if (IsBorderBrushInvisible(border))
adornerBorder.BorderThickness = new Thickness(1);
else
adornerBorder.BorderThickness = new Thickness(border.BorderThickness.Left > 0 ? 0 : 1,
border.BorderThickness.Top > 0 ? 0 : 1,
border.BorderThickness.Right > 0 ? 0 : 1,
border.BorderThickness.Bottom > 0 ? 0 : 1);
}
}
else
{
else {
RemoveAdorner();
}
}
}
}
bool IsAnyBorderEdgeInvisible(Border border)
{
return IsBorderBrushInvisible(border) || border.BorderThickness.Left == 0 || border.BorderThickness.Top == 0 || border.BorderThickness.Right == 0 || border.BorderThickness.Bottom == 0;
}
bool IsBorderBrushInvisible(Border border)
{
return border.BorderBrush == null || border.BorderBrush == Brushes.Transparent;
}
private void CreateAdorner()
{
if (adornerPanel == null)
{
adornerPanel = new AdornerPanel();
adornerPanel.Order = AdornerOrder.Background;
var border = new Border();
border.BorderThickness = new Thickness(1);
border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
border.IsHitTestVisible = false;
AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
adornerPanel.Children.Add(border);
if (adornerPanel == null) {
if (cachedAdornerPanel == null) {
cachedAdornerPanel = new AdornerPanel();
cachedAdornerPanel.Order = AdornerOrder.Background;
var border = new Border();
border.BorderThickness = new Thickness(1);
border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
border.IsHitTestVisible = false;
AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
cachedAdornerPanel.Children.Add(border);
}
adornerPanel = cachedAdornerPanel;
Adorners.Add(adornerPanel);
}
}
private void RemoveAdorner()
{
if (adornerPanel != null)
{
if (adornerPanel != null) {
Adorners.Remove(adornerPanel);
adornerPanel = null;
}

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

@ -18,10 +18,9 @@ using System.Windows.Controls.Primitives; @@ -18,10 +18,9 @@ using System.Windows.Controls.Primitives;
namespace ICSharpCode.WpfDesign.Designer.Extensions
{
[ExtensionFor(typeof(Panel))]
[ExtensionFor(typeof(ContentControl))]
[ExtensionFor(typeof(Control))]
[ExtensionFor(typeof(Border))]
[ExtensionFor(typeof(Viewbox))]
[ExtensionFor(typeof(ItemsControl))]
public class DefaultPlacementBehavior : BehaviorExtension, IPlacementBehavior
{
static List<Type> _contentControlsNotAllowedToAdd;

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ResizeThumbExtension.cs

@ -147,6 +147,15 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -147,6 +147,15 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (alignment.Vertical == VerticalAlignment.Bottom) dy = drag.Delta.Y;
var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && alignment.Horizontal != HorizontalAlignment.Center && alignment.Vertical != VerticalAlignment.Center)
{
if (dx > dy)
dx = dy;
else
dy = dx;
}
if (zoom != null)
{
dx = dx * (1 / zoom.CurrentZoom);

1
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/license.txt

@ -14,6 +14,7 @@ Copied from the Fugue Icon Library and left unmodified: @@ -14,6 +14,7 @@ Copied from the Fugue Icon Library and left unmodified:
- Icons.16x16.WpfOutline.EyeClosed.png
- Icons.16x16.GuideSnap.png
- Icons.16x16.GridSnap.png
- lock.png
Copied from the Fugue Icon Library and modified or mashed up with other Fugue
Icons or parts taken from them:

BIN
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/lock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

34
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/DragTreeView.cs

@ -53,12 +53,34 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -53,12 +53,34 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
get { return (object)GetValue(RootProperty); }
set { SetValue(RootProperty, value); }
}
#region Filtering
public static readonly DependencyProperty FilterProperty =
DependencyProperty.Register("Filter", typeof(string), typeof(DragTreeView), new PropertyMetadata(OnFilterPropertyChanged));
public string Filter {
get { return (string)GetValue(FilterProperty); }
set { SetValue(FilterProperty, value); }
}
private static void OnFilterPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var ctl = d as DragTreeView;
var ev = ctl.FilterChanged;
if (ev != null)
ev(ctl.Filter);
}
public event Action<string> FilterChanged;
public virtual bool ShouldItemBeVisible(DragTreeViewItem dragTreeViewitem)
{
return true;
}
//public object[] SelectedItems
//{
// get { return Selection.Select(item => item.DataContext).ToArray(); }
//}
#endregion
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
@ -261,7 +283,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -261,7 +283,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
OnSelectionChanged();
}
void SelectOnly(DragTreeViewItem item)
protected virtual void SelectOnly(DragTreeViewItem item)
{
ClearSelection();
Select(item);

32
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/DragTreeViewItem.cs

@ -20,10 +20,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -20,10 +20,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
{
public class DragTreeViewItem : TreeViewItem
{
ContentPresenter part_header;
static DragTreeViewItem()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(DragTreeViewItem),
new FrameworkPropertyMetadata(typeof(DragTreeViewItem)));
new FrameworkPropertyMetadata(typeof(DragTreeViewItem)));
}
public DragTreeViewItem()
@ -37,24 +39,50 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -37,24 +39,50 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
ParentTree = this.GetVisualAncestors().OfType<DragTreeView>().FirstOrDefault();
if (ParentTree != null) {
ParentTree.ItemAttached(this);
ParentTree.FilterChanged += ParentTree_FilterChanged;
}
}
void ParentTree_FilterChanged(string obj)
{
var v = ParentTree.ShouldItemBeVisible(this);
if (v)
part_header.Visibility = Visibility.Visible;
else
part_header.Visibility = Visibility.Collapsed;
}
void DragTreeViewItem_Unloaded(object sender, RoutedEventArgs e)
{
if (ParentTree != null) {
ParentTree.ItemDetached(this);
ParentTree.FilterChanged -= ParentTree_FilterChanged;
}
ParentTree = null;
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
part_header = GetTemplateChild("PART_Header") as ContentPresenter;
}
public new static readonly DependencyProperty IsSelectedProperty =
Selector.IsSelectedProperty.AddOwner(typeof(DragTreeViewItem));
Selector.IsSelectedProperty.AddOwner(typeof(DragTreeViewItem), new FrameworkPropertyMetadata(OnIsSelectedChanged));
public new bool IsSelected {
get { return (bool)GetValue(IsSelectedProperty); }
set { SetValue(IsSelectedProperty, value); }
}
public static void OnIsSelectedChanged(DependencyObject s, DependencyPropertyChangedEventArgs e)
{
var el = s as FrameworkElement;
if (el != null)
el.BringIntoView();
}
public static readonly DependencyProperty IsDragHoverProperty =
DependencyProperty.Register("IsDragHover", typeof(bool), typeof(DragTreeViewItem));

59
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/Outline.xaml

@ -2,7 +2,8 @@ @@ -2,7 +2,8 @@
x:Name="root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Default="clr-namespace:ICSharpCode.WpfDesign.Designer.OutlineView">
xmlns:Default="clr-namespace:ICSharpCode.WpfDesign.Designer.OutlineView"
xmlns:Controls="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls">
<UserControl.Resources>
@ -34,9 +35,38 @@ @@ -34,9 +35,38 @@
</Setter>
</Style>
<Style TargetType="ToggleButton" x:Key="lockedStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Background="Transparent" IsHitTestVisible="True">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CheckStates">
<VisualState x:Name="Checked">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="locked" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="unlocked" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Unchecked"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Image Width="16" Height="16" x:Name="locked" Stretch="Uniform" Visibility="Hidden" Source="pack://application:,,,/ICSharpCode.WpfDesign.Designer;component/Images/lock.png" />
<Ellipse x:Name="unlocked" Width="6" Height="6" Stroke="Black" StrokeThickness="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<HierarchicalDataTemplate DataType="{x:Type Default:OutlineNode}"
ItemsSource="{Binding Children}">
ItemsSource="{Binding Children}">
<DockPanel>
<ToggleButton Style="{StaticResource lockedStyle}" DockPanel.Dock="Right" Width="20" Margin="0,0,5,0" IsChecked="{Binding IsDesignTimeLocked}" />
<ToggleButton Style="{StaticResource eyeStyle}" DockPanel.Dock="Right" Width="20" Margin="0,0,5,0" IsChecked="{Binding IsDesignTimeVisible}" />
<Default:IconItem Icon="../Images/Tag.png" Text="{Binding Name}" />
</DockPanel>
@ -44,15 +74,20 @@ @@ -44,15 +74,20 @@
</UserControl.Resources>
<Default:OutlineTreeView Root="{Binding Root, ElementName=root}">
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type Default:DragTreeViewItem}">
<Setter Property="IsSelected"
Value="{Binding IsSelected}" />
<Setter Property="IsExpanded"
Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</ItemsControl.ItemContainerStyle>
</Default:OutlineTreeView>
<DockPanel LastChildFill="True">
<Controls:ClearableTextBox DockPanel.Dock="Top" Height="20" Text="{Binding Filter, ElementName=OutlineTreeView}" />
<Default:OutlineTreeView x:Name="OutlineTreeView" Root="{Binding Root, ElementName=root}">
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type Default:DragTreeViewItem}">
<Setter Property="IsSelected"
Value="{Binding IsSelected}" />
<Setter Property="IsExpanded"
Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</ItemsControl.ItemContainerStyle>
</Default:OutlineTreeView>
</DockPanel>
</UserControl>

59
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs

@ -2,19 +2,21 @@ @@ -2,19 +2,21 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.ComponentModel;
using ICSharpCode.WpfDesign;
using System.Collections.ObjectModel;
using System.Collections;
using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.XamlDom;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.WpfDesign;
using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.WpfDesign.Designer.OutlineView
{
public class OutlineNode : INotifyPropertyChanged
@ -50,6 +52,11 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -50,6 +52,11 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
((FrameworkElement) this.DesignItem.Component).Visibility = Visibility.Hidden;
}
var locked = designItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).ValueOnInstance;
if (locked != null && (bool) locked == true) {
this._isDesignTimeLocked = true;
}
//TODO
DesignItem.NameChanged += new EventHandler(DesignItem_NameChanged);
DesignItem.PropertyChanged += new PropertyChangedEventHandler(DesignItem_PropertyChanged);
@ -90,13 +97,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -90,13 +97,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
}
}
bool _isDesignTimeVisible = true;
public bool IsDesignTimeVisible
{
get {
return _isDesignTimeVisible;
get {
return _isDesignTimeVisible;
}
set {
_isDesignTimeVisible = value;
@ -112,6 +118,26 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -112,6 +118,26 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
}
}
bool _isDesignTimeLocked = false;
public bool IsDesignTimeLocked
{
get {
return _isDesignTimeLocked;
}
set {
_isDesignTimeLocked = value;
((XamlDesignItem)DesignItem).IsDesignTimeLocked = _isDesignTimeLocked;
RaisePropertyChanged("IsDesignTimeLocked");
// if (value)
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).SetValue(true);
// else
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).Reset();
}
}
ObservableCollection<OutlineNode> children = new ObservableCollection<OutlineNode>();
public ObservableCollection<OutlineNode> Children {
@ -168,6 +194,21 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -168,6 +194,21 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
var node = OutlineNode.Create(item);
Children.Add(node);
}
else
{
var content = item.ContentProperty;
if (content != null)
{
if (content.IsCollection) {
UpdateChildrenCore(content.CollectionElements);
}
else {
if (content.Value != null) {
UpdateChildrenCore(new[] { content.Value });
}
}
}
}
}
}

18
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineTreeView.cs

@ -33,5 +33,23 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -33,5 +33,23 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
foreach (var item in items)
_customOutlineNodes.Add(item.DataContext as OutlineNode);
}
public override bool ShouldItemBeVisible(DragTreeViewItem dragTreeViewitem)
{
var node = dragTreeViewitem.DataContext as OutlineNode;
return string.IsNullOrEmpty(Filter) || node.Name.ToLower().Contains(Filter.ToLower());
}
protected override void SelectOnly(DragTreeViewItem item)
{
base.SelectOnly(item);
var node = item.DataContext as OutlineNode;
var surface = node.DesignItem.View.TryFindParent<DesignSurface>();
if (surface != null)
surface.ScrollIntoView(node.DesignItem);
}
}
}

12
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineView.xaml

@ -98,20 +98,20 @@ @@ -98,20 +98,20 @@
<ControlTemplate TargetType="{x:Type Default:DragTreeViewItem}">
<DockPanel Background="White">
<DockPanel x:Name="bg"
<Grid x:Name="bg"
Margin="{TemplateBinding Level, Converter={StaticResource LevelConverter}}"
DockPanel.Dock="Top"
Background="{TemplateBinding Background}">
<ToggleButton x:Name="expandButton"
<ToggleButton HorizontalAlignment="Left" x:Name="expandButton"
Style="{StaticResource ExpandButtonStyle}"
DockPanel.Dock="Left"
Margin="{TemplateBinding Level, Converter={StaticResource LevelConverter}}"
IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" />
<Border x:Name="contentBorder"
Margin="11,0,0,0"
HorizontalAlignment="Stretch">
<ContentPresenter x:Name="PART_Header"
ContentSource="Header" />
</Border>
</DockPanel>
</Grid>
<ItemsPresenter x:Name="itemsHost" />
<DockPanel.ContextMenu>
<ContextMenu>
@ -144,7 +144,7 @@ @@ -144,7 +144,7 @@
Value="False">
<Setter TargetName="expandButton"
Property="Visibility"
Value="Hidden" />
Value="Collapsed" />
</Trigger>
<Trigger Property="IsSelected"
Value="True">

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj

@ -361,4 +361,7 @@ @@ -361,4 +361,7 @@
<Resource Include="Images\Icons.16x16.GuideSnap.png" />
<Resource Include="Images\Icons.16x16.GridSnap.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\lock.png" />
</ItemGroup>
</Project>

43
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlComponentService.cs

@ -90,24 +90,37 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -90,24 +90,37 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
}
if (_context.RootItem != null && !string.IsNullOrEmpty(site.Name)) {
var nameScope = _context.RootItem.Component as INameScope;
nameScope = NameScope.GetNameScope((DependencyObject) _context.RootItem.Component);
var fnd = nameScope.FindName(site.Name);
if (fnd != null) {
string newNm = site.Name + "_Copy";
fnd = nameScope.FindName(newNm);
if (fnd == null)
site.Name = newNm;
else {
var nameScope = NameScopeHelper.GetNameScopeFromObject(_context.RootItem.Component);
if (nameScope != null) {
// The object will be a part of the RootItem namescope, remove local namescope if set
NameScopeHelper.ClearNameScopeProperty(obj.Instance);
string newName = site.Name;
if (nameScope.FindName(newName) != null) {
int copyIndex = newName.LastIndexOf("_Copy", StringComparison.Ordinal);
if (copyIndex < 0) {
newName += "_Copy";
}
else if (!newName.EndsWith("_Copy", StringComparison.Ordinal)) {
string copyEnd = newName.Substring(copyIndex + "_Copy".Length);
int copyEndValue;
if (Int32.TryParse(copyEnd, out copyEndValue))
newName = newName.Remove(copyIndex + "_Copy".Length);
else
newName += "_Copy";
}
int i = 1;
while (fnd != null) {
newNm = site.Name + "_Copy" + i;
fnd = nameScope.FindName(newNm);
i++;
string newNameTemplate = newName;
while (nameScope.FindName(newName) != null) {
newName = newNameTemplate + i++;
}
site.Name = newNm;
site.Name = newName;
}
nameScope.RegisterName(newName, obj.Instance);
}
}
return site;

17
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignItem.cs

@ -145,6 +145,23 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -145,6 +145,23 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
}
}
/// <summary>
/// Item is Locked at Design Time
/// </summary>
public bool IsDesignTimeLocked {
get {
var locked = Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).ValueOnInstance;
return (locked != null && (bool) locked == true);
}
set {
if (value)
Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).SetValue(true);
else
Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).Reset();
}
}
public override DesignItem Clone()
{
DesignItem item = null;

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/AssemblyInfo.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows.Markup;
using NUnit.Framework;
@ -20,4 +21,8 @@ using NUnit.Framework; @@ -20,4 +21,8 @@ using NUnit.Framework;
[assembly: AssemblyCulture("")]
// Run unit tests on STA thread.
[assembly: RequiresSTA]
[assembly: RequiresSTA]
[assembly: XmlnsPrefix("http://sharpdevelop.net/WpfDesign/Tests/Controls", "sdtcontrols")]
[assembly: XmlnsDefinition("http://sharpdevelop.net/WpfDesign/Tests/Controls", "ICSharpCode.WpfDesign.Tests.Controls")]

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

@ -151,5 +151,58 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -151,5 +151,58 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
Assert.AreEqual(_name, grid.ContentProperty.CollectionElements[3].Name);
Assert.AreEqual(grid.ContentProperty.CollectionElements[3], selection.PrimarySelection);
}
[Test]
public void PasteSameElementMultipleTimesCheckCopiesNames()
{
var grid = IntializePasteOperationsTest();
var xamlContext = grid.Context as XamlDesignContext;
Assert.IsNotNull(xamlContext);
var selection = grid.Services.Selection;
var innerGrid = grid.ContentProperty.CollectionElements[0];
selection.SetSelectedComponents(new[] {innerGrid});
xamlContext.XamlEditAction.Paste();
Assert.AreEqual(innerGrid.ContentProperty.CollectionElements[1], selection.PrimarySelection);
selection.SetSelectedComponents(new[] {innerGrid});
xamlContext.XamlEditAction.Paste();
Assert.AreEqual(innerGrid.ContentProperty.CollectionElements[2], selection.PrimarySelection);
selection.SetSelectedComponents(new[] {innerGrid});
xamlContext.XamlEditAction.Paste();
Assert.AreEqual(innerGrid.ContentProperty.CollectionElements[3], selection.PrimarySelection);
selection.SetSelectedComponents(new[] {innerGrid});
xamlContext.XamlEditAction.Paste();
Assert.AreEqual(innerGrid.ContentProperty.CollectionElements[4], selection.PrimarySelection);
Assert.IsNullOrEmpty(innerGrid.ContentProperty.CollectionElements[0].Name);
Assert.AreEqual(_name, innerGrid.ContentProperty.CollectionElements[1].Name);
Assert.AreEqual(_name + "_Copy", innerGrid.ContentProperty.CollectionElements[2].Name);
Assert.AreEqual(_name + "_Copy1", innerGrid.ContentProperty.CollectionElements[3].Name);
Assert.AreEqual(_name + "_Copy2", innerGrid.ContentProperty.CollectionElements[4].Name);
xamlContext.XamlEditAction.Copy(new[] {innerGrid.ContentProperty.CollectionElements[3]});
var cutXaml = Clipboard.GetText(TextDataFormat.Xaml);
Assert.That(cutXaml, Is.StringContaining(":Name=\"" + _name + "_Copy1\""));
selection.SetSelectedComponents(new[] {innerGrid});
xamlContext.XamlEditAction.Paste();
Assert.AreEqual(innerGrid.ContentProperty.CollectionElements[5], selection.PrimarySelection);
Assert.AreEqual(_name + "_Copy3", innerGrid.ContentProperty.CollectionElements[5].Name);
var gridDepObj = grid.Component as DependencyObject;
Assert.IsNotNull(gridDepObj);
var nameScope = NameScope.GetNameScope(gridDepObj);
Assert.IsNotNull(nameScope);
Assert.IsNotNull(nameScope.FindName(_name));
Assert.IsNotNull(nameScope.FindName(_name + "_Copy"));
Assert.IsNotNull(nameScope.FindName(_name + "_Copy1"));
Assert.IsNotNull(nameScope.FindName(_name + "_Copy2"));
Assert.IsNotNull(nameScope.FindName(_name + "_Copy3"));
Assert.IsNull(nameScope.FindName(_name + "_Copy4"));
}
}
}

19
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs

@ -59,14 +59,23 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -59,14 +59,23 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
return canvasChild;
}
protected void AssertCanvasDesignerOutput(string expectedXaml, DesignContext context)
protected void AssertCanvasDesignerOutput(string expectedXaml, DesignContext context, params String[] additionalXmlns)
{
string canvasStartTag =
"<Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" " +
"xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" " +
"xmlns:t=\"" + DesignerTestsNamespace + "\"";
foreach(string ns in additionalXmlns) {
canvasStartTag += " " + ns;
}
expectedXaml = canvasStartTag + ">\n" + expectedXaml.Trim();
expectedXaml =
"<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" +
("<Canvas xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" " +
"xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" " +
"xmlns:t=\"" + DesignerTestsNamespace + "\">\n" + expectedXaml.Trim())
.Replace("\r", "").Replace("\n", "\n ")
expectedXaml.Replace("\r", "").Replace("\n", "\n ")
+ "\n</Canvas>";
StringWriter stringWriter = new StringWriter();

40
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs

@ -2,17 +2,19 @@ @@ -2,17 +2,19 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Text;
using System.IO;
using System.Xml;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using NUnit.Framework;
using System.Windows.Media;
using System.Xml;
using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.Designer.Services;
using ICSharpCode.WpfDesign.Designer.Xaml;
using NUnit.Framework;
namespace ICSharpCode.WpfDesign.Tests.Designer
{
@ -368,6 +370,34 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -368,6 +370,34 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
{
AddBindingWithStaticResourceWhereResourceOnSameElement(true);
}
[Test]
public void AddBrushAsResource()
{
DesignItem checkBox = CreateCanvasContext("<CheckBox/>");
DesignItem canvas = checkBox.Parent;
DesignItemProperty canvasResources = canvas.Properties.GetProperty("Resources");
DesignItem brush = canvas.Services.Component.RegisterComponentForDesigner(new SolidColorBrush());
brush.Key = "testBrush";
brush.Properties[SolidColorBrush.ColorProperty].SetValue(Colors.Fuchsia);
Assert.IsTrue(canvasResources.IsCollection);
canvasResources.CollectionElements.Add(brush);
checkBox.Properties[CheckBox.ForegroundProperty].SetValue(new StaticResourceExtension());
DesignItemProperty prop = checkBox.Properties[CheckBox.ForegroundProperty];
prop.Value.Properties["ResourceKey"].SetValue("testBrush");
string expectedXaml = "<Canvas.Resources>\n" +
" <SolidColorBrush x:Key=\"testBrush\" Color=\"#FFFF00FF\" />\n" +
"</Canvas.Resources>\n" +
"<CheckBox Foreground=\"{StaticResource ResourceKey=testBrush}\" />";
AssertCanvasDesignerOutput(expectedXaml, checkBox.Context);
AssertLog("");
}
}
public class MyMultiConverter : IMultiValueConverter

184
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/NamespaceTests.cs

@ -0,0 +1,184 @@ @@ -0,0 +1,184 @@
// 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.Windows;
using System.Windows.Controls;
using NUnit.Framework;
namespace ICSharpCode.WpfDesign.Tests.Designer
{
[TestFixture]
public class NamespaceTests : ModelTestHelper
{
[Test]
public void AddControlFromTestNamespace()
{
DesignItem button = CreateCanvasContext("<Button />");
DesignItem canvas = button.Parent;
DesignItem customButton = canvas.Services.Component.RegisterComponentForDesigner(new CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customButton);
AssertCanvasDesignerOutput("<Button />\n" +
"<t:CustomButton />", canvas.Context);
}
[Test]
public void AddControlWithUndeclaredNamespace()
{
DesignItem button = CreateCanvasContext("<Button />");
DesignItem canvas = button.Parent;
DesignItem customButton = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.OtherControls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customButton);
AssertCanvasDesignerOutput("<Button />\n" +
"<Controls0:CustomButton />",
canvas.Context,
"xmlns:Controls0=\"clr-namespace:ICSharpCode.WpfDesign.Tests.OtherControls;assembly=ICSharpCode.WpfDesign.Tests\"");
}
[Test]
public void AddControlWithUndeclaredNamespaceThatUsesXmlnsPrefixAttribute()
{
DesignItem button = CreateCanvasContext("<Button />");
DesignItem canvas = button.Parent;
DesignItem customButton = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.Controls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customButton);
AssertCanvasDesignerOutput("<Button />\n" +
"<sdtcontrols:CustomButton />",
canvas.Context,
"xmlns:sdtcontrols=\"http://sharpdevelop.net/WpfDesign/Tests/Controls\"");
}
[Test]
public void AddMultipleControls()
{
DesignItem button = CreateCanvasContext("<Button />");
DesignItem canvas = button.Parent;
DesignItem customControl = canvas.Services.Component.RegisterComponentForDesigner(new CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.Controls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.OtherControls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.SpecialControls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new CustomCheckBox());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.Controls.CustomCheckBox());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.OtherControls.CustomCheckBox());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.SpecialControls.CustomCheckBox());
canvas.Properties["Children"].CollectionElements.Add(customControl);
AssertCanvasDesignerOutput("<Button />\n" +
"<t:CustomButton />\n" +
"<sdtcontrols:CustomButton />\n" +
"<Controls0:CustomButton />\n" +
"<Controls1:CustomButton />\n" +
"<t:CustomCheckBox />\n" +
"<sdtcontrols:CustomCheckBox />\n" +
"<Controls0:CustomCheckBox />\n" +
"<Controls1:CustomCheckBox />",
canvas.Context,
"xmlns:sdtcontrols=\"http://sharpdevelop.net/WpfDesign/Tests/Controls\"",
"xmlns:Controls0=\"clr-namespace:ICSharpCode.WpfDesign.Tests.OtherControls;assembly=ICSharpCode.WpfDesign.Tests\"",
"xmlns:Controls1=\"clr-namespace:ICSharpCode.WpfDesign.Tests.SpecialControls;assembly=ICSharpCode.WpfDesign.Tests\"");
}
}
public class CustomButton : Button
{
public static readonly DependencyProperty TestAttachedProperty = DependencyProperty.RegisterAttached("TestAttached", typeof(double), typeof(CustomButton),
new FrameworkPropertyMetadata(Double.NaN));
public static double GetTestAttached(UIElement element)
{
return (double)element.GetValue(TestAttachedProperty);
}
public static void SetTestAttached(UIElement element, double value)
{
element.SetValue(TestAttachedProperty, value);
}
}
public class CustomCheckBox : CheckBox
{
}
}
namespace ICSharpCode.WpfDesign.Tests.Controls
{
public class CustomButton : Button
{
public static readonly DependencyProperty TestAttachedProperty = DependencyProperty.RegisterAttached("TestAttached", typeof(double), typeof(CustomButton),
new FrameworkPropertyMetadata(Double.NaN));
public static double GetTestAttached(UIElement element)
{
return (double)element.GetValue(TestAttachedProperty);
}
public static void SetTestAttached(UIElement element, double value)
{
element.SetValue(TestAttachedProperty, value);
}
}
public class CustomCheckBox : CheckBox
{
}
}
namespace ICSharpCode.WpfDesign.Tests.OtherControls
{
public class CustomButton : Button
{
public static readonly DependencyProperty TestAttachedProperty = DependencyProperty.RegisterAttached("TestAttached", typeof(double), typeof(CustomButton),
new FrameworkPropertyMetadata(Double.NaN));
public static double GetTestAttached(UIElement element)
{
return (double)element.GetValue(TestAttachedProperty);
}
public static void SetTestAttached(UIElement element, double value)
{
element.SetValue(TestAttachedProperty, value);
}
}
public class CustomCheckBox : CheckBox
{
}
}
namespace ICSharpCode.WpfDesign.Tests.SpecialControls
{
public class CustomButton : Button
{
}
public class CustomCheckBox : CheckBox
{
}
}

60
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/SetPropertyTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Markup;
@ -21,20 +22,22 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -21,20 +22,22 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
AssertCanvasDesignerOutput("<Button Width=\"100\" Height=\"200\" Content=\"{Binding}\" />", button.Context);
}
[Test, Ignore("Properties are not present in XAML DOM")]
[Test]
public void SetContentToStaticResource()
{
DesignItem button = CreateCanvasContext(@"<Button Width='100' Height='200'/>");
button.Properties.GetProperty("Content").SetValue(new StaticResourceExtension("MyBrush"));
button.Properties.GetProperty("Content").SetValue(new StaticResourceExtension());
button.Properties.GetProperty("Content").Value.Properties["ResourceKey"].SetValue("MyBrush");
// TODO : maybe we should support positional arguments from ctors as well => {StaticResource MyBrush}?
AssertCanvasDesignerOutput("<Button Width=\"100\" Height=\"200\" Content=\"{StaticResource ResourceKey=MyBrush}\" />", button.Context);
}
[Test, Ignore("Properties are not present in XAML DOM")]
[Test]
public void SetContentToXStatic()
{
DesignItem button = CreateCanvasContext("<Button Width='100' Height='200'/>");
button.Properties.GetProperty("Content").SetValue(new StaticExtension("Button.ClickModeProperty"));
button.Properties.GetProperty("Content").SetValue(new StaticExtension());
button.Properties.GetProperty("Content").Value.Properties["Member"].SetValue("Button.ClickModeProperty");
AssertCanvasDesignerOutput("<Button Width=\"100\" Height=\"200\" Content=\"{x:Static Member=Button.ClickModeProperty}\" />", button.Context);
}
@ -45,5 +48,54 @@ namespace ICSharpCode.WpfDesign.Tests.Designer @@ -45,5 +48,54 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
button.Properties.GetProperty("Content").SetValue("Hello World!");
AssertCanvasDesignerOutput("<Button Width=\"100\" Height=\"200\" Content=\"Hello World!\" />", button.Context);
}
[Test]
public void SetAttachedProperties()
{
DesignItem button = CreateCanvasContext("<Button />");
button.Properties.GetAttachedProperty(Grid.ColumnProperty).SetValue(0);
button.Properties.GetAttachedProperty(CustomButton.TestAttachedProperty).SetValue(0);
button.Properties.GetAttachedProperty(ICSharpCode.WpfDesign.Tests.Controls.CustomButton.TestAttachedProperty).SetValue(0);
button.Properties.GetAttachedProperty(ICSharpCode.WpfDesign.Tests.OtherControls.CustomButton.TestAttachedProperty).SetValue(0);
AssertCanvasDesignerOutput("<Button Grid.Column=\"0\" t:CustomButton.TestAttached=\"0\" sdtcontrols:CustomButton.TestAttached=\"0\" Controls0:CustomButton.TestAttached=\"0\" />",
button.Context,
"xmlns:sdtcontrols=\"http://sharpdevelop.net/WpfDesign/Tests/Controls\"",
"xmlns:Controls0=\"clr-namespace:ICSharpCode.WpfDesign.Tests.OtherControls;assembly=ICSharpCode.WpfDesign.Tests\"");
}
[Test]
public void SetInstanceProperty()
{
DesignItem button = CreateCanvasContext("<Button />");
button.Properties.GetProperty("Width").SetValue(10);
AssertCanvasDesignerOutput("<Button Width=\"10\" />", button.Context);
}
[Test]
public void SetInstancePropertyElement()
{
DesignItem button = CreateCanvasContext("<Button />");
DesignItem canvas = button.Parent;
canvas.Properties.GetProperty(Canvas.TagProperty).SetValue(new ExampleClass());
DesignItem customControl = canvas.Services.Component.RegisterComponentForDesigner(new ICSharpCode.WpfDesign.Tests.Controls.CustomButton());
canvas.Properties["Children"].CollectionElements.Add(customControl);
customControl.Properties.GetProperty(ICSharpCode.WpfDesign.Tests.Controls.CustomButton.TagProperty).SetValue(new ExampleClass());
AssertCanvasDesignerOutput("<Canvas.Tag>\n" +
" <t:ExampleClass />\n" +
"</Canvas.Tag>\n" +
"<Button />\n" +
"<sdtcontrols:CustomButton>\n" +
" <sdtcontrols:CustomButton.Tag>\n" +
" <t:ExampleClass />\n" +
" </sdtcontrols:CustomButton.Tag>\n" +
"</sdtcontrols:CustomButton>",
canvas.Context,
"xmlns:sdtcontrols=\"http://sharpdevelop.net/WpfDesign/Tests/Controls\"");
}
}
}

1
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj

@ -65,6 +65,7 @@ @@ -65,6 +65,7 @@
<Compile Include="Designer\MockFocusNavigator.cs" />
<Compile Include="Designer\ModelTestHelper.cs" />
<Compile Include="Designer\ModelTests.cs" />
<Compile Include="Designer\NamespaceTests.cs" />
<Compile Include="Designer\OutlineView\HierarchyTests.cs" />
<Compile Include="Designer\OutlineView\InsertTests.cs" />
<Compile Include="Designer\OutlineView\SelectionTests.cs" />

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

@ -112,5 +112,22 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -112,5 +112,22 @@ namespace ICSharpCode.WpfDesign.XamlDom
DependencyProperty.RegisterAttached("DesignHeight", typeof(double), typeof(DesignTimeProperties));
#endregion
#region LayoutRounding
public static bool GetLayoutRounding(DependencyObject obj)
{
return (bool)obj.GetValue(DesignHeightProperty);
}
public static void SetLayoutRounding(DependencyObject obj, bool value)
{
obj.SetValue(DesignHeightProperty, value);
}
public static readonly DependencyProperty DesignLayoutRounding =
DependencyProperty.RegisterAttached("LayoutRounding", typeof(bool), typeof(DesignTimeProperties));
#endregion
}
}

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

@ -10,7 +10,7 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -10,7 +10,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
/// <summary>
/// Static methods to help with <see cref="System.Windows.Markup.INameScope"/> operations on Xaml elements.
/// </summary>
internal static class NameScopeHelper
public static class NameScopeHelper
{
/// <summary>
/// Finds the XAML namescope for the specified object and uses it to unregister the old name and then register the new name.
@ -18,16 +18,11 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -18,16 +18,11 @@ namespace ICSharpCode.WpfDesign.XamlDom
/// <param name="namedObject">The object where the name was changed.</param>
/// <param name="oldName">The old name.</param>
/// <param name="newName">The new name.</param>
public static void NameChanged(XamlObject namedObject, string oldName, string newName)
internal static void NameChanged(XamlObject namedObject, string oldName, string newName)
{
var obj = namedObject;
while (obj != null) {
var nameScope = obj.Instance as INameScope;
if (nameScope == null) {
var depObj = obj.Instance as DependencyObject;
if (depObj != null)
nameScope = NameScope.GetNameScope(depObj);
}
var nameScope = GetNameScopeFromObject(obj.Instance);
if (nameScope != null) {
if (oldName != null) {
try {
@ -52,5 +47,33 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -52,5 +47,33 @@ namespace ICSharpCode.WpfDesign.XamlDom
obj = obj.ParentObject;
}
}
/// <summary>
/// Gets the XAML namescope for the specified object.
/// </summary>
/// <param name="obj">The object to get the XAML namescope for.</param>
/// <returns>A XAML namescope, as an <see cref="INameScope"/> instance.</returns>
public static INameScope GetNameScopeFromObject(object obj)
{
var nameScope = obj as INameScope;
if (nameScope == null) {
var depObj = obj as DependencyObject;
if (depObj != null)
nameScope = NameScope.GetNameScope(depObj);
}
return nameScope;
}
/// <summary>
/// Clears the <see cref="NameScope.NameScopeProperty"/> if the object is a <see cref="DependencyObject"/>.
/// </summary>
/// <param name="obj">The object to clear the <see cref="NameScope.NameScopeProperty"/> on.</param>
public static void ClearNameScopeProperty(object obj)
{
var depObj = obj as DependencyObject;
if (depObj != null)
depObj.ClearValue(NameScope.NameScopeProperty);
}
}
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs

@ -180,7 +180,7 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -180,7 +180,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
if (hasStringConverter && XamlObject.GetContentPropertyName(elementType) != null) {
xml.InnerText = c.ConvertToInvariantString(instance);
} else if (instance is Brush) { // TODO: this is a hacky fix, because Brush Editor doesn't
} else if (instance is Brush && forProperty != null) { // TODO: this is a hacky fix, because Brush Editor doesn't
// edit Design Items and so we have no XML, only the Brush
// object and we need to parse the Brush to XAML!
var s = new MemoryStream();

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlParser.cs

@ -469,6 +469,8 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -469,6 +469,8 @@ namespace ICSharpCode.WpfDesign.XamlDom
return FindAttachedProperty(typeof(DesignTimeProperties), attribute.LocalName);
} else if (attribute.LocalName == "IsHidden" && attribute.NamespaceURI == XamlConstants.DesignTimeNamespace) {
return FindAttachedProperty(typeof(DesignTimeProperties), attribute.LocalName);
} else if (attribute.LocalName == "IsLocked" && attribute.NamespaceURI == XamlConstants.DesignTimeNamespace) {
return FindAttachedProperty(typeof(DesignTimeProperties), attribute.LocalName);
}
return null;

38
src/AddIns/Misc/HelpViewer/HelpViewer.addin

@ -20,30 +20,34 @@ @@ -20,30 +20,34 @@
<BrowserSchemeExtension id = "http" class = "MSHelpSystem.BrowserScheme"/>
</Path>
<Path name="/SharpDevelop/Pads/ErrorList/TaskContextMenu">
<MenuItem id = "Help3ShowErrorHelp" label = "${res:AddIns.HelpViewer.ShowErrorHelpTitle}" class = "MSHelpSystem.Commands.ShowErrorHelpCommand" />
<Path name = "/SharpDevelop/Pads/ErrorList/TaskContextMenu">
<MenuItem id = "Help3ShowErrorHelp"
label = "${res:AddIns.HelpViewer.ShowErrorHelpTitle}"
class = "MSHelpSystem.Commands.ShowErrorHelpCommand" />
</Path>
<Path name = "/SharpDevelop/Dialogs/OptionsDialog/ToolsOptions">
<OptionPanel id = "Help3Options" label = "${res:AddIns.HelpViewer.MicrosoftHelpViewerTitle}" class = "MSHelpSystem.Help3OptionsPanel" />
<OptionPanel id = "Help3Options"
label = "${res:AddIns.HelpViewer.MicrosoftHelpViewerTitle}"
class = "MSHelpSystem.Help3OptionsPanel" />
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id = "Help3TocPad"
category = "Help3"
title = "${res:AddIns.HelpViewer.ContentsPadTitle}"
icon = "HtmlHelp2.16x16.Toc"
class = "MSHelpSystem.Controls.Help3TocPad"
defaultPosition = "Right, Hidden" />
<Pad id = "Help3TocPad"
category = "Help3"
title = "${res:AddIns.HelpViewer.SearchPadTitle}"
icon = "HtmlHelp2.16x16.Search"
class = "MSHelpSystem.Controls.Help3SearchPad"
defaultPosition = "Right, Hidden" />
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id = "Help3TocPad"
category = "Help3"
title = "${res:AddIns.HelpViewer.ContentsPadTitle}"
icon = "HtmlHelp2.16x16.Toc"
class = "MSHelpSystem.Controls.Help3TocPad"
defaultPosition = "Right, Hidden" />
<Pad id = "Help3SearchPad"
category = "Help3"
title = "${res:AddIns.HelpViewer.SearchPadTitle}"
icon = "HtmlHelp2.16x16.Search"
class = "MSHelpSystem.Controls.Help3SearchPad"
defaultPosition = "Right, Hidden" />
</Path>
<Path name = "/SharpDevelop/Workbench/MainMenu/Help">
<Path name = "/SharpDevelop/Workbench/MainMenu/Help">
<MenuItem id = "Help3DisplayContentCommand"
class = "MSHelpSystem.Commands.DisplayContent"
label = "${res:AddIns.HelpViewer.DisplayContentsCommand}"

8
src/AddIns/Misc/HelpViewer/HelpViewer.csproj

@ -67,6 +67,7 @@ @@ -67,6 +67,7 @@
</Compile>
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Source\BrowserScheme.cs" />
<Compile Include="Source\Controls\HelpLibraryManagerNotFound.cs" />
<Compile Include="Source\Controls\Pads.cs" />
<Compile Include="Source\Controls\SearchPadControl.xaml.cs">
<DependentUpon>SearchPadControl.xaml</DependentUpon>
@ -81,7 +82,7 @@ @@ -81,7 +82,7 @@
<Compile Include="Source\Core\Help3Catalog.cs" />
<Compile Include="Source\Core\Help3Environment.cs" />
<Compile Include="Source\Core\Help3Service.cs" />
<None Include="Source\Core\HelpLibraryManager.cs" />
<Compile Include="Source\Core\HelpLibraryManager.cs" />
<Compile Include="Source\Core\HelpLibraryAgent.cs" />
<Compile Include="Source\Help3OptionsPanel.xaml.cs">
<DependentUpon>Help3OptionsPanel.xaml</DependentUpon>
@ -121,6 +122,11 @@ @@ -121,6 +122,11 @@
<Name>ICSharpCode.Core.Presentation</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj">
<Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project>
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

44
src/AddIns/Misc/HelpViewer/Source/Commands.cs

@ -5,11 +5,12 @@ using System; @@ -5,11 +5,12 @@ using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Microsoft.Win32;
using MSHelpSystem.Core;
using MSHelpSystem.Controls;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using MSHelpSystem.Controls;
using MSHelpSystem.Core;
namespace MSHelpSystem.Commands
{
@ -27,13 +28,13 @@ namespace MSHelpSystem.Commands @@ -27,13 +28,13 @@ namespace MSHelpSystem.Commands
return;
if (Help3Environment.IsHelp3ProtocolRegistered) {
LoggingService.Debug(string.Format("Help 3.0: Getting description of \"{0}\"", code));
LoggingService.Debug(string.Format("HelpViewer: Getting description of \"{0}\"", code));
if (Help3Environment.IsLocalHelp)
DisplayHelp.Keywords(code);
else
DisplayHelp.ContextualHelp(code);
} else {
LoggingService.Error("Help 3.0: Help system ist not initialized");
LoggingService.Error("HelpViewer: Help system ist not initialized");
}
}
}
@ -43,6 +44,12 @@ namespace MSHelpSystem.Commands @@ -43,6 +44,12 @@ namespace MSHelpSystem.Commands
{
public override void Run()
{
if (!Help3Environment.IsHelp3ProtocolRegistered) {
using (HelpLibraryManagerNotFoundForm form = new HelpLibraryManagerNotFoundForm()) {
form.ShowDialog(WorkbenchSingleton.MainWin32Window);
}
return;
}
if (Help3Service.Config.ExternalHelp) DisplayHelp.Catalog();
else {
PadDescriptor toc = SD.Workbench.GetPad(typeof(Help3TocPad));
@ -55,6 +62,12 @@ namespace MSHelpSystem.Commands @@ -55,6 +62,12 @@ namespace MSHelpSystem.Commands
{
public override void Run()
{
if (!Help3Environment.IsHelp3ProtocolRegistered) {
using (HelpLibraryManagerNotFoundForm form = new HelpLibraryManagerNotFoundForm()) {
form.ShowDialog(WorkbenchSingleton.MainWin32Window);
}
return;
}
PadDescriptor search = SD.Workbench.GetPad(typeof(Help3SearchPad));
if (search != null) search.BringPadToFront();
}
@ -64,24 +77,13 @@ namespace MSHelpSystem.Commands @@ -64,24 +77,13 @@ namespace MSHelpSystem.Commands
{
public override void Run()
{
string path;
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Help\v1.0")) {
path = key != null ? key.GetValue("AppRoot") as string : null;
}
if (string.IsNullOrEmpty(path)) {
MessageService.ShowError("${res:AddIns.HelpViewer.HLMNotFound}");
return;
}
path = Path.Combine(path, "HelpLibManager.exe");
if (!File.Exists(path)) {
MessageService.ShowError("${res:AddIns.HelpViewer.HLMNotFound}");
return;
}
if (string.IsNullOrEmpty(Help3Service.Config.ActiveCatalogId)) {
MessageService.ShowError("${res:AddIns.HelpViewer.HLMNoActiveCatalogError}");
if (string.IsNullOrEmpty(HelpLibraryManager.Manager)) {
using (HelpLibraryManagerNotFoundForm form = new HelpLibraryManagerNotFoundForm()) {
form.ShowDialog(WorkbenchSingleton.MainWin32Window);
}
return;
}
Process.Start(path, string.Format("/product {0} /version {1} /locale {2}", Help3Service.Config.ActiveCatalogId.Split('/')));
HelpLibraryManager.Start();
}
}
}

21
src/AddIns/Misc/HelpViewer/Source/Controls/HelpLibraryManagerNotFound.cs

@ -0,0 +1,21 @@ @@ -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.Diagnostics;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop.Gui;
namespace MSHelpSystem.Controls
{
public class HelpLibraryManagerNotFoundForm : ToolNotFoundDialog
{
public HelpLibraryManagerNotFoundForm()
: base(StringParser.Parse("${res:AddIns.HelpViewer.HLMNotAvailableDownloadWinSDK}"),
"http://www.microsoft.com/en-us/download/details.aspx?id=8279", null)
{
}
}
}

7
src/AddIns/Misc/HelpViewer/Source/Controls/SearchPadControl.xaml

@ -1,7 +1,8 @@ @@ -1,7 +1,8 @@
<UserControl x:Class="MSHelpSystem.Controls.SearchPadControl"
<?xml version="1.0" encoding="utf-8"?>
<UserControl x:Class="MSHelpSystem.Controls.SearchPadControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core">
<StackPanel>
<TextBlock Text="{core:Localize AddIns.HelpViewer.SearchLookForLabel}" Margin="5,2,5,1" />
<ComboBox Name="searchCB" Margin="5,2,5,5" Padding="1" IsEnabled="False" IsEditable="True" PreviewKeyUp="SearchCBPreviewKeyUp" />

15
src/AddIns/Misc/HelpViewer/Source/Controls/TocEntry.cs

@ -9,6 +9,7 @@ using System.Linq; @@ -9,6 +9,7 @@ using System.Linq;
using System.Net;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
@ -35,14 +36,14 @@ namespace MSHelpSystem.Controls @@ -35,14 +36,14 @@ namespace MSHelpSystem.Controls
client.DownloadStringCompleted += (_, e) =>
{
try {
LoggingService.Debug(string.Format("Help 3.0: title \"{0}\"", Title));
LoggingService.Debug(string.Format("HelpViewer: TocEntry \"{0}\" found", Title));
var children = XElement.Parse(e.Result);
Children = children.Elements("topic")
.Select(link => new TocEntry(link.Attribute("id").Value) { Title = link.Element("title").Value })
.Select(link => new TocEntry(link.Attribute("id").Value) { Title = WebUtility.HtmlDecode(link.Element("title").Value) })
.ToArray();
} catch (TargetInvocationException ex) {
// Exception when fetching e.Result:
LoggingService.Warn(ex);
LoggingService.Error(ex.ToString());
this.children = defaultChild;
}
client.Dispose();
@ -58,8 +59,7 @@ namespace MSHelpSystem.Controls @@ -58,8 +59,7 @@ namespace MSHelpSystem.Controls
public IEnumerable Children
{
get
{
get {
if (Help3Service.ActiveCatalog != null) {
if (children == null && !client.IsBusy && HelpLibraryAgent.PortIsReady) {
client.DownloadStringAsync(new Uri(Help3Environment.GetHttpFromMsXHelp(string.Format(url, Help3Service.ActiveCatalog.AsMsXHelpParam, id))));
@ -67,8 +67,7 @@ namespace MSHelpSystem.Controls @@ -67,8 +67,7 @@ namespace MSHelpSystem.Controls
}
return children ?? defaultChild;
}
private set
{
private set {
children = value;
RaisePropertyChanged("Children");
}
@ -81,5 +80,5 @@ namespace MSHelpSystem.Controls @@ -81,5 +80,5 @@ namespace MSHelpSystem.Controls
System.ComponentModel.PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new System.ComponentModel.PropertyChangedEventArgs(name));
}
}
}
}

6
src/AddIns/Misc/HelpViewer/Source/Controls/TocPadControl.xaml

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="MSHelpSystem.Controls.TocPadControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl x:Class="MSHelpSystem.Controls.TocPadControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core">
<Grid>
<TreeView
Name="tocTreeView"

2
src/AddIns/Misc/HelpViewer/Source/Controls/TocPadControl.xaml.cs

@ -35,7 +35,7 @@ namespace MSHelpSystem.Controls @@ -35,7 +35,7 @@ namespace MSHelpSystem.Controls
{
string topicId = (string)tocTreeView.SelectedValue;
if (!string.IsNullOrEmpty(topicId)) {
LoggingService.Debug(string.Format("Help 3.0: [TOC] Calling page with Id \"{0}\"", topicId));
LoggingService.Debug(string.Format("HelpViewer: TocItemChanged to ID \"{0}\"", topicId));
DisplayHelp.Page(topicId);
}
}

30
src/AddIns/Misc/HelpViewer/Source/Core/DisplayHelp.cs

@ -35,8 +35,7 @@ namespace MSHelpSystem.Core @@ -35,8 +35,7 @@ namespace MSHelpSystem.Core
if (Help3Service.ActiveCatalog == null) {
return false;
}
string helpCatalogUrl = string.Format(@"ms-xhelp://?method=page&id=-1&{0}", Help3Service.ActiveCatalog.AsMsXHelpParam);
LoggingService.Debug(string.Format("Help 3.0: {0}", helpCatalogUrl));
string helpCatalogUrl = string.Concat("ms-xhelp://?method=page&id=-1&", Help3Service.ActiveCatalog.AsMsXHelpParam);
DisplayLocalHelp(helpCatalogUrl);
return true;
}
@ -56,8 +55,7 @@ namespace MSHelpSystem.Core @@ -56,8 +55,7 @@ namespace MSHelpSystem.Core
if (Help3Service.ActiveCatalog == null) {
return false;
}
string helpPageUrl = string.Format(@"ms-xhelp://?method=page&id={1}&{0}", Help3Service.ActiveCatalog.AsMsXHelpParam, pageId);
LoggingService.Debug(string.Format("Help 3.0: {0}", helpPageUrl));
string helpPageUrl = string.Concat("ms-xhelp://?method=page&id=", pageId, "&", Help3Service.ActiveCatalog.AsMsXHelpParam);
DisplayLocalHelp(helpPageUrl);
return true;
}
@ -74,8 +72,7 @@ namespace MSHelpSystem.Core @@ -74,8 +72,7 @@ namespace MSHelpSystem.Core
if (Help3Service.ActiveCatalog == null) {
return false;
}
string helpContextualUrl = string.Format(@"ms-xhelp://?method=f1&query={1}&{0}", Help3Service.ActiveCatalog.AsMsXHelpParam, contextual);
LoggingService.Debug(string.Format("Help 3.0: {0}", helpContextualUrl));
string helpContextualUrl = string.Concat("ms-xhelp://?method=f1&query=", contextual, "&", Help3Service.ActiveCatalog.AsMsXHelpParam);
DisplayLocalHelp(helpContextualUrl);
return true;
}
@ -92,8 +89,7 @@ namespace MSHelpSystem.Core @@ -92,8 +89,7 @@ namespace MSHelpSystem.Core
if (Help3Service.ActiveCatalog == null) {
return false;
}
string helpSearchUrl = string.Format(@"ms-xhelp://?method=search&query={1}&{0}", Help3Service.ActiveCatalog.AsMsXHelpParam, searchWords.Replace(" ", "+"));
LoggingService.Debug(string.Format("Help 3.0: {0}", helpSearchUrl));
string helpSearchUrl = string.Concat("ms-xhelp://?method=search&query=", searchWords.Replace(" ", "+"), "&", Help3Service.ActiveCatalog.AsMsXHelpParam);
DisplayLocalHelp(helpSearchUrl);
return true;
}
@ -113,8 +109,7 @@ namespace MSHelpSystem.Core @@ -113,8 +109,7 @@ namespace MSHelpSystem.Core
if (Help3Service.ActiveCatalog == null) {
return false;
}
string helpKeywordsUrl = string.Format(@"ms-xhelp://?method=keywords&query={1}&{0}", Help3Service.ActiveCatalog.AsMsXHelpParam, keywords.Replace(" ", "+"));
LoggingService.Debug(string.Format("Help 3.0: {0}", helpKeywordsUrl));
string helpKeywordsUrl = string.Concat("ms-xhelp://?method=keywords&query=", keywords.Replace(" ", "+"), "&", Help3Service.ActiveCatalog.AsMsXHelpParam);
DisplayLocalHelp(helpKeywordsUrl);
return true;
}
@ -135,8 +130,7 @@ namespace MSHelpSystem.Core @@ -135,8 +130,7 @@ namespace MSHelpSystem.Core
HelpLibraryAgent.Start();
Thread.Sleep(0x3e8);
}
string helpUrl = string.Format(@"{0}{1}{2}",
arguments, ProjectLanguages.GetCurrentLanguageAsHttpParam(), (embedded)?"&embedded=true":string.Empty);
string helpUrl = string.Concat(arguments, ProjectLanguages.CurrentLanguageAsHttpParam, (embedded)?"&embedded=true":string.Empty);
if (Help3Service.Config.ExternalHelp) {
DisplayHelpWithShellExecute(helpUrl);
@ -144,7 +138,7 @@ namespace MSHelpSystem.Core @@ -144,7 +138,7 @@ namespace MSHelpSystem.Core
}
BrowserPane browser = ActiveHelp3Browser();
if (browser != null) {
LoggingService.Info(string.Format("Help 3.0: Navigating to {0}", helpUrl));
LoggingService.Info(string.Format("HelpViewer: DisplayLocalHelp calls \"{0}\"", helpUrl));
browser.Navigate(Help3Environment.GetHttpFromMsXHelp(helpUrl));
browser.WorkbenchWindow.SelectWindow();
}
@ -164,7 +158,7 @@ namespace MSHelpSystem.Core @@ -164,7 +158,7 @@ namespace MSHelpSystem.Core
p.WaitForInputIdle();
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
}
@ -173,7 +167,7 @@ namespace MSHelpSystem.Core @@ -173,7 +167,7 @@ namespace MSHelpSystem.Core
if (string.IsNullOrEmpty(keyword)) {
throw new ArgumentNullException("keyword");
}
string msdnUrl = string.Format(@"http://msdn.microsoft.com/library/{0}.aspx", keyword);
string msdnUrl = string.Concat("http://msdn.microsoft.com/library/", keyword, ".aspx");
if (Help3Service.Config.ExternalHelp) {
DisplayHelpWithShellExecute(msdnUrl);
@ -181,7 +175,7 @@ namespace MSHelpSystem.Core @@ -181,7 +175,7 @@ namespace MSHelpSystem.Core
}
BrowserPane browser = ActiveHelp3Browser();
if (browser != null) {
LoggingService.Info(string.Format("Help 3.0: Navigating to {0}", msdnUrl));
LoggingService.Info(string.Format("HelpViewer: DisplayHelpOnMSDN calls \"{0}\"", msdnUrl));
browser.Navigate(msdnUrl);
browser.WorkbenchWindow.SelectWindow();
}
@ -192,10 +186,10 @@ namespace MSHelpSystem.Core @@ -192,10 +186,10 @@ namespace MSHelpSystem.Core
if (string.IsNullOrEmpty(searchWords)) {
throw new ArgumentNullException("searchWords");
}
string msdnUrl = string.Format(@"http://social.msdn.microsoft.com/Search/{0}/?query={1}&ac=3", CultureInfo.CurrentUICulture.ToString(), searchWords.Replace(" ", "+"));
string msdnUrl = string.Concat("http://social.msdn.microsoft.com/Search/", CultureInfo.CurrentUICulture.ToString(), "/?query=", searchWords.Replace(" ", "+"), "&ac=3");
BrowserPane browser = ActiveHelp3Browser();
if (browser != null) {
LoggingService.Info(string.Format("Help 3.0: Navigating to {0}", msdnUrl));
LoggingService.Info(string.Format("HelpViewer: DisplaySearchOnMSDN calls \"{0}\"", msdnUrl));
browser.Navigate(msdnUrl);
browser.WorkbenchWindow.SelectWindow();
}

23
src/AddIns/Misc/HelpViewer/Source/Core/Help3Environment.cs

@ -18,8 +18,7 @@ namespace MSHelpSystem.Core @@ -18,8 +18,7 @@ namespace MSHelpSystem.Core
public static bool IsHelp3ProtocolRegistered
{
get
{
get {
try {
RegistryKey hkcr = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64).OpenSubKey(@"MS-XHelp\shell\open\command", false);
string helpLibAgent = (string)hkcr.GetValue("", string.Empty);
@ -27,7 +26,7 @@ namespace MSHelpSystem.Core @@ -27,7 +26,7 @@ namespace MSHelpSystem.Core
return (!string.IsNullOrEmpty(helpLibAgent));
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return false;
}
@ -35,8 +34,7 @@ namespace MSHelpSystem.Core @@ -35,8 +34,7 @@ namespace MSHelpSystem.Core
public static bool IsLocalStoreInitialized
{
get
{
get {
string localStore = LocalStore;
return (!string.IsNullOrEmpty(localStore) && Directory.Exists(localStore));
}
@ -44,8 +42,7 @@ namespace MSHelpSystem.Core @@ -44,8 +42,7 @@ namespace MSHelpSystem.Core
public static string LocalStore
{
get
{
get {
try {
RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Help\v1.0", false);
string localStore = (string)hklm.GetValue("LocalStore", string.Empty);
@ -53,7 +50,7 @@ namespace MSHelpSystem.Core @@ -53,7 +50,7 @@ namespace MSHelpSystem.Core
return localStore;
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return string.Empty;
}
@ -66,8 +63,7 @@ namespace MSHelpSystem.Core @@ -66,8 +63,7 @@ namespace MSHelpSystem.Core
public static string AppRoot
{
get
{
get {
try {
RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Help\v1.0", false);
string appRoot = (string)hklm.GetValue("AppRoot", string.Empty);
@ -75,7 +71,7 @@ namespace MSHelpSystem.Core @@ -75,7 +71,7 @@ namespace MSHelpSystem.Core
return appRoot;
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return string.Empty;
}
@ -83,8 +79,7 @@ namespace MSHelpSystem.Core @@ -83,8 +79,7 @@ namespace MSHelpSystem.Core
public static string ManifestFolder
{
get
{
get {
string manifestFolder = LocalStore;
if (string.IsNullOrEmpty(manifestFolder)) return string.Empty;
manifestFolder = System.IO.Path.Combine(manifestFolder, "manifest");
@ -95,7 +90,7 @@ namespace MSHelpSystem.Core @@ -95,7 +90,7 @@ namespace MSHelpSystem.Core
public static bool IsLocalHelp
{
get { return HelpClientWatcher.IsLocalHelp; }
get { return HelpClientWatcher.IsLocalHelp; }
}
public static string GetHttpFromMsXHelp(string helpUrl)

30
src/AddIns/Misc/HelpViewer/Source/Core/Help3Service.cs

@ -37,8 +37,7 @@ namespace MSHelpSystem.Core @@ -37,8 +37,7 @@ namespace MSHelpSystem.Core
static void UpdateCatalogs()
{
catalogs.Clear();
if (Help3Environment.IsHelp3ProtocolRegistered && !string.IsNullOrEmpty(Help3Environment.ManifestFolder))
{
if (Help3Environment.IsHelp3ProtocolRegistered && !string.IsNullOrEmpty(Help3Environment.ManifestFolder)) {
try {
DirectoryInfo folder = new DirectoryInfo(Help3Environment.ManifestFolder);
FileInfo[] files = folder.GetFiles(@"queryManifest*.xml");
@ -58,10 +57,10 @@ namespace MSHelpSystem.Core @@ -58,10 +57,10 @@ namespace MSHelpSystem.Core
);
}
}
LoggingService.Debug(string.Format("Help 3.0: {0} {1} loaded", catalogs.Count, (catalogs.Count == 1)?"catalog":"catalogs"));
LoggingService.Debug(string.Format("HelpViewer: {0} {1} loaded", catalogs.Count, (catalogs.Count == 1)?"catalog":"catalogs"));
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
}
OnCatalogsUpdated(EventArgs.Empty);
@ -94,8 +93,7 @@ namespace MSHelpSystem.Core @@ -94,8 +93,7 @@ namespace MSHelpSystem.Core
public static ReadOnlyCollection<Help3Catalog> Items
{
get
{
get {
ReadOnlyCollection<Help3Catalog> c = new ReadOnlyCollection<Help3Catalog>(catalogs);
return c;
}
@ -133,12 +131,10 @@ namespace MSHelpSystem.Core @@ -133,12 +131,10 @@ namespace MSHelpSystem.Core
public static string ActiveCatalogId
{
get
{
get {
return config.ActiveCatalogId;
}
set
{
set {
config.ActiveCatalogId = value;
OnCatalogChanged(EventArgs.Empty);
}
@ -167,10 +163,10 @@ namespace MSHelpSystem.Core @@ -167,10 +163,10 @@ namespace MSHelpSystem.Core
TextReader file = new StreamReader(configFile);
config = (Help3Configuration)serialize.Deserialize(file);
file.Close();
LoggingService.Info("Help 3.0: Configuration successfully loaded");
LoggingService.Info("HelpViewer: Configuration successfully loaded");
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
OnConfigurationUpdated(EventArgs.Empty);
}
@ -183,10 +179,10 @@ namespace MSHelpSystem.Core @@ -183,10 +179,10 @@ namespace MSHelpSystem.Core
TextWriter file = new StreamWriter(configFile);
serialize.Serialize(file, config);
file.Close();
LoggingService.Info("Help 3.0: Configuration successfully saved");
LoggingService.Info("HelpViewer: Configuration successfully saved");
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
OnConfigurationUpdated(EventArgs.Empty);
}
@ -201,19 +197,19 @@ namespace MSHelpSystem.Core @@ -201,19 +197,19 @@ namespace MSHelpSystem.Core
static void OnCatalogsUpdated(EventArgs e)
{
LoggingService.Debug("Help 3.0: \"OnCatalogsUpdated\" event raised");
LoggingService.Debug("HelpViewer: OnCatalogsUpdated event raised");
if (CatalogsUpdated != null) CatalogsUpdated(null, e);
}
static void OnCatalogChanged(EventArgs e)
{
LoggingService.Debug("Help 3.0: \"OnCatalogChanged\" event raised");
LoggingService.Debug("HelpViewer: OnCatalogChanged event raised");
if (CatalogChanged != null) CatalogChanged(null, e);
}
static void OnConfigurationUpdated(EventArgs e)
{
LoggingService.Debug("Help 3.0: \"OnConfigurationUpdated\" event raised");
LoggingService.Debug("HelpViewer: OnConfigurationUpdated event raised");
if (ConfigurationUpdated != null) ConfigurationUpdated(null, e);
}

42
src/AddIns/Misc/HelpViewer/Source/Core/HelpLibraryAgent.cs

@ -19,29 +19,26 @@ namespace MSHelpSystem.Core @@ -19,29 +19,26 @@ namespace MSHelpSystem.Core
public static bool IsRunning
{
get
{
get {
Process[] agents = Process.GetProcessesByName("HelpLibAgent");
LoggingService.Debug(string.Format("Help 3.0: {0} {1} of HelpLibraryAgent.exe found", agents.Length, (agents.Length == 1)?"process":"processes"));
LoggingService.Debug(string.Format("HelpViewer: {0} HelpLibraryAgent {1} found", agents.Length, (agents.Length == 1)?"process":"processes"));
return agents.Length > 0;
}
}
public static string Agent
{
get
{
get {
if (string.IsNullOrEmpty(Help3Environment.AppRoot)) return string.Empty;
string agent = Path.Combine(Help3Environment.AppRoot, "HelpLibAgent.exe");
LoggingService.Debug(string.Format("Help 3.0: Help library agent is \"{0}\"", agent));
LoggingService.Debug(string.Format("HelpViewer: HelpLibraryAgent is \"{0}\"", agent));
return (File.Exists(agent)) ? agent : string.Empty;
}
}
public static int PortNumber
{
get
{
get {
try {
RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Help\v1.0", false);
string port = (string)hklm.GetValue("AgentPort", "47873");
@ -49,7 +46,7 @@ namespace MSHelpSystem.Core @@ -49,7 +46,7 @@ namespace MSHelpSystem.Core
return Convert.ToInt32(port);
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return 47873; // This is the DEFAULT port number!
}
@ -57,8 +54,7 @@ namespace MSHelpSystem.Core @@ -57,8 +54,7 @@ namespace MSHelpSystem.Core
public static bool PortIsReady
{
get
{
get {
try {
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(IPAddress.Parse("127.0.0.1"), PortNumber);
@ -68,10 +64,10 @@ namespace MSHelpSystem.Core @@ -68,10 +64,10 @@ namespace MSHelpSystem.Core
}
catch (SocketException ex) {
if (ex.ErrorCode == 10061) {
LoggingService.Debug("Help 3.0: Port is available but not ready");
LoggingService.Debug("HelpViewer: Port is available but not ready");
return true;
}
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return false;
}
@ -79,19 +75,17 @@ namespace MSHelpSystem.Core @@ -79,19 +75,17 @@ namespace MSHelpSystem.Core
public static int ProcessId
{
get
{
get {
Process[] agents = Process.GetProcessesByName("HelpLibAgent");
int processId = (agents.Length > 0) ? agents[0].Id:0;
LoggingService.Debug(string.Format("Help 3.0: Help library agent has the process ID \"{0}\"", processId));
LoggingService.Debug(string.Format("HelpViewer: HelpLibraryAgent has process ID \"{0}\"", processId));
return processId;
}
}
public static string CurrentViewer
{
get
{
get {
string viewer = string.Empty;
try {
RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Help\v1.0", false);
@ -107,9 +101,9 @@ namespace MSHelpSystem.Core @@ -107,9 +101,9 @@ namespace MSHelpSystem.Core
}
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
LoggingService.Debug(string.Format("Help 3.0: Default viewer is \"{0}\"", viewer));
LoggingService.Debug(string.Format("HelpViewer: Default viewer is \"{0}\"", viewer));
return viewer;
}
}
@ -121,11 +115,11 @@ namespace MSHelpSystem.Core @@ -121,11 +115,11 @@ namespace MSHelpSystem.Core
try {
Process p = Process.Start(Agent);
p.WaitForInputIdle();
LoggingService.Info("Help 3.0: Help library agent started");
LoggingService.Info("HelpViewer: HelpLibraryAgent started");
return IsRunning;
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return false;
}
@ -144,10 +138,10 @@ namespace MSHelpSystem.Core @@ -144,10 +138,10 @@ namespace MSHelpSystem.Core
agent.Kill();
if (waitForExit) agent.WaitForExit();
}
LoggingService.Debug(string.Format("Help 3.0: {0} {1} of HelpLibraryAgent.exe stopped", agents.Length, (agents.Length == 1)?"process":"processes"));
LoggingService.Debug(string.Format("HelpViewer: {0} HelpLibraryAgent {1} stopped", agents.Length, (agents.Length == 1)?"process":"processes"));
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return true;
}

36
src/AddIns/Misc/HelpViewer/Source/Core/HelpLibraryManager.cs

@ -18,21 +18,19 @@ namespace MSHelpSystem.Core @@ -18,21 +18,19 @@ namespace MSHelpSystem.Core
public static bool IsRunning
{
get
{
get {
Process[] managers = Process.GetProcessesByName("HelpLibManager");
LoggingService.Debug(string.Format("Help 3.0: {0} {1} of HelpLibraryManager.exe found", managers.Length, (managers.Length == 1)?"process":"processes"));
LoggingService.Debug(string.Format("HelpViewer: {0} HelpLibraryManager {1} found", managers.Length, (managers.Length == 1)?"process":"processes"));
return managers.Length > 0;
}
}
public static string Manager
{
get
{
get {
if (string.IsNullOrEmpty(Help3Environment.AppRoot)) return string.Empty;
string manager = Path.Combine(Help3Environment.AppRoot, "HelpLibManager.exe");
LoggingService.Debug(string.Format("Help 3.0: Help library manager is \"{0}\"", manager));
LoggingService.Debug(string.Format("HelpViewer: HelpLibraryManager is \"{0}\"", manager));
return (File.Exists(manager)) ? manager : string.Empty;
}
}
@ -61,7 +59,7 @@ namespace MSHelpSystem.Core @@ -61,7 +59,7 @@ namespace MSHelpSystem.Core
string brandingSwitch = (!string.IsNullOrEmpty(brandingPackage)) ? string.Format("/brandingPackage \"{0}\"", brandingPackage):"";
string arguments = string.Format("/product {0} /version {1} /locale {2} /content \"{3}\" {4}", productCode, productVersion, locale, Help3Environment.BuildLocalStoreFolder, brandingSwitch);
LoggingService.Debug(string.Format("Help 3.0: Initializing local store with \"{0}\"", arguments));
LoggingService.Debug(string.Format("HelpViewer: Initializing local store with \"{0}\"", arguments));
HelpLibManagerProcessRunner(arguments);
}
@ -88,7 +86,7 @@ namespace MSHelpSystem.Core @@ -88,7 +86,7 @@ namespace MSHelpSystem.Core
string brandingSwitch = (!string.IsNullOrEmpty(brandingPackage)) ? string.Format("/brandingPackage \"{0}\"", brandingPackage):"";
string arguments = string.Format("/product {0} /version {1} /locale {2} /sourceMedia \"{3}\" {4} {5}", productCode, productVersion, locale, sourceMedia, initLS, brandingSwitch);
LoggingService.Debug(string.Format("Help 3.0: Installing local help documents with \"{0}\"", arguments));
LoggingService.Debug(string.Format("HelpViewer: Installing local help documents with \"{0}\"", arguments));
HelpLibManagerProcessRunner(arguments);
}
@ -114,7 +112,7 @@ namespace MSHelpSystem.Core @@ -114,7 +112,7 @@ namespace MSHelpSystem.Core
string brandingSwitch = (!string.IsNullOrEmpty(brandingPackage)) ? string.Format("/brandingPackage \"{0}\"", brandingPackage):"";
string arguments = string.Format("/product {0} /version {1} /locale {2} /sourceWeb \"{3}\" {4} {5}", productCode, productVersion, locale, sourceWeb, initLS, brandingSwitch);
LoggingService.Debug(string.Format("Help 3.0: Installing help documents from web with \"{0}\"", arguments));
LoggingService.Debug(string.Format("HelpViewer: Installing help documents from web with \"{0}\"", arguments));
HelpLibManagerProcessRunner(arguments);
}
@ -136,7 +134,7 @@ namespace MSHelpSystem.Core @@ -136,7 +134,7 @@ namespace MSHelpSystem.Core
string arguments = string.Format("/product {0} /version {1} /locale {2} /vendor \"{3}\" /productName \"{4}\" /mediaBookList {5} /uninstall", productCode, productVersion, locale, vendor, productName, mediaBookList);
LoggingService.Debug(string.Format("Help 3.0: Uninstalling help documents with \"{0}\"", arguments));
LoggingService.Debug(string.Format("HelpViewer: Uninstalling help documents with \"{0}\"", arguments));
HelpLibManagerProcessRunner(arguments);
}
@ -166,13 +164,17 @@ namespace MSHelpSystem.Core @@ -166,13 +164,17 @@ namespace MSHelpSystem.Core
return p.ExitCode;
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return -1;
}
public static bool Start()
{
return Start(false);
}
public static bool Start(bool runPrivileged)
{
if (IsRunning) return true;
if (string.IsNullOrEmpty(Manager)) {
@ -186,16 +188,16 @@ namespace MSHelpSystem.Core @@ -186,16 +188,16 @@ namespace MSHelpSystem.Core
psi.WorkingDirectory = Help3Environment.AppRoot;
psi.Arguments = Help3Service.ActiveCatalog.AsCmdLineParam;
psi.UseShellExecute = true;
psi.Verb = "runas";
if (runPrivileged) psi.Verb = "runas";
psi.WindowStyle = ProcessWindowStyle.Normal;
try {
Process p = Process.Start(psi);
p.WaitForInputIdle();
LoggingService.Info("Help 3.0: Help library manager started");
LoggingService.Info("HelpViewer: HelpLibraryManager started");
return IsRunning;
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return false;
}
@ -214,10 +216,10 @@ namespace MSHelpSystem.Core @@ -214,10 +216,10 @@ namespace MSHelpSystem.Core
manager.Kill();
if (waitForExit) manager.WaitForExit();
}
LoggingService.Debug(string.Format("Help 3.0: {0} {1} of HelpLibraryManager.exe stopped", managers.Length, (managers.Length == 1)?"process":"processes"));
LoggingService.Debug(string.Format("HelpViewer: {0} HelpLibraryManager {1} stopped", managers.Length, (managers.Length == 1)?"process":"processes"));
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return true;
}

6
src/AddIns/Misc/HelpViewer/Source/Help3OptionsPanel.xaml.cs

@ -49,22 +49,22 @@ namespace MSHelpSystem @@ -49,22 +49,22 @@ namespace MSHelpSystem
void Help3OfflineModeClicked(object sender, RoutedEventArgs e)
{
LoggingService.Info("Help 3.0: Setting help mode to \"offline\"");
Help3Service.Config.OfflineMode = true;
help3Catalogs.IsEnabled = (help3Catalogs.Items.Count > 1 && Help3Service.Config.OfflineMode);
LoggingService.Info("HelpViewer: Help mode set to \"offline\"");
}
void Help3OnlineModeClicked(object sender, RoutedEventArgs e)
{
LoggingService.Info("Help 3.0: Setting help mode to \"online\"");
Help3Service.Config.OfflineMode = false;
help3Catalogs.IsEnabled = false;
LoggingService.Info("HelpViewer: Help mode set to \"online\"");
}
void Help3UseExternalHelpClicked(object sender, RoutedEventArgs e)
{
Help3Service.Config.ExternalHelp = (bool)externalHelp.IsChecked;
LoggingService.Info(string.Format("Help 3.0: {0} external help", (Help3Service.Config.ExternalHelp)?"Enabling":"Disabling"));
LoggingService.Info(string.Format("HelpViewer: External help viewer {0}", (Help3Service.Config.ExternalHelp)?"enabled":"disabled"));
}
public override bool SaveOptions()

6
src/AddIns/Misc/HelpViewer/Source/Helper/HelpClientWatcher.cs

@ -97,7 +97,7 @@ namespace MSHelpSystem.Helper @@ -97,7 +97,7 @@ namespace MSHelpSystem.Helper
}
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
return "offline";
}
@ -105,7 +105,7 @@ namespace MSHelpSystem.Helper @@ -105,7 +105,7 @@ namespace MSHelpSystem.Helper
static void SetHelpMode()
{
clientFileChanged.EnableRaisingEvents = false;
LoggingService.Info(string.Format("Help 3.0: Trying to set Help mode to \"{0}\"", helpMode));
LoggingService.Info(string.Format("HelpViewer: Trying to set help mode to \"{0}\"", helpMode));
Configuration config = null;
try {
@ -136,7 +136,7 @@ namespace MSHelpSystem.Helper @@ -136,7 +136,7 @@ namespace MSHelpSystem.Helper
}
}
catch (Exception ex) {
LoggingService.Error(string.Format("Help 3.0: {0}", ex.ToString()));
LoggingService.Error(string.Format("HelpViewer: {0}", ex.ToString()));
}
clientFileChanged.EnableRaisingEvents = true;
}

36
src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs

@ -23,33 +23,39 @@ namespace MSHelpSystem.Helper @@ -23,33 +23,39 @@ namespace MSHelpSystem.Helper
Dictionary<string, string> result = new Dictionary<string, string>();
result.Add("C++", "C%2B%2B");
result.Add("C#", "CSharp");
result.Add("F#", "FSharp");
result.Add("VBNet", "VB");
return result;
}
#endregion
public static string GetCurrentLanguage()
public static string CurrentLanguage
{
string output = string.Empty;
if (ProjectService.CurrentProject != null) {
string devLang = ProjectService.CurrentProject.Language;
if (string.IsNullOrEmpty(devLang)) { throw new ArgumentNullException("devLang"); }
output = devLang;
if (!languages.ContainsKey(devLang) || !languages.TryGetValue(devLang, out output)) {
output = devLang;
get {
string output = string.Empty;
if (ProjectService.CurrentProject != null) {
string devLang = ProjectService.CurrentProject.Language;
if (string.IsNullOrEmpty(devLang)) {
throw new ArgumentNullException("devLang");
}
if (!languages.ContainsKey(devLang) || !languages.TryGetValue(devLang, out output)) {
output = devLang;
}
LoggingService.Debug(string.Format("HelpViewer: Project language \"{0}\" formatted to \"{1}\"", devLang, output));
}
LoggingService.Debug(string.Format("Help 3.0: Project language \"{0}\" formatted to \"{1}\"", devLang, output));
return output.ToLower();
}
return output.ToLower();
}
public static string GetCurrentLanguageAsHttpParam()
public static string CurrentLanguageAsHttpParam
{
string devLang = GetCurrentLanguage();
if (string.IsNullOrEmpty(devLang)) return string.Empty;
else return string.Format("&category=DevLang%3a{0}", devLang);
get {
string devLang = CurrentLanguage;
if (string.IsNullOrEmpty(devLang)) return string.Empty;
else return string.Format("&category=DevLang%3a{0}", devLang);
}
}
}
}

4
src/AddIns/Misc/HelpViewer/Source/MSHelp3Provider.cs

@ -15,7 +15,7 @@ namespace MSHelpSystem @@ -15,7 +15,7 @@ namespace MSHelpSystem
if (string.IsNullOrEmpty(fullTypeName)) {
throw new ArgumentNullException("fullTypeName");
}
LoggingService.Info(string.Format("Help 3.0: Calling \"TryShowHelp\" with {0}", fullTypeName));
LoggingService.Info(string.Format("HelpViewer: TryShowHelp calls \"{0}\"", fullTypeName));
return DisplayHelp.ContextualHelp(fullTypeName);
}
@ -24,7 +24,7 @@ namespace MSHelpSystem @@ -24,7 +24,7 @@ namespace MSHelpSystem
if (string.IsNullOrEmpty(keyword)) {
throw new ArgumentNullException("keyword");
}
LoggingService.Info(string.Format("Help 3.0: Calling \"TryShowHelpByKeyword\" with {0}", keyword));
LoggingService.Info(string.Format("HelpViewer: TryShowHelpByKeyword calls \"{0}\"", keyword));
DisplayHelp.Keywords(keyword);
return true;
}

8
src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryExtensions.cs

@ -8,14 +8,14 @@ namespace ICSharpCode.PackageManagement @@ -8,14 +8,14 @@ namespace ICSharpCode.PackageManagement
{
public static class IPackageRepositoryExtensions
{
public static IDisposable StartInstallOperation(this IPackageRepository repository, string mainPackageId = null)
public static IDisposable StartInstallOperation(this IPackageRepository repository, string mainPackageId = null, string mainPackageVersion = null)
{
return repository.StartOperation(RepositoryOperationNames.Install, mainPackageId);
return repository.StartOperation(RepositoryOperationNames.Install, mainPackageId, mainPackageVersion);
}
public static IDisposable StartUpdateOperation(this IPackageRepository repository, string mainPackageId = null)
public static IDisposable StartUpdateOperation(this IPackageRepository repository, string mainPackageId = null, string mainPackageVersion = null)
{
return repository.StartOperation(RepositoryOperationNames.Update, mainPackageId);
return repository.StartOperation(RepositoryOperationNames.Update, mainPackageId, mainPackageVersion);
}
}
}

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

Binary file not shown.

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.

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeOperationAwarePackageRepository.cs

@ -16,7 +16,7 @@ namespace PackageManagement.Tests.Helpers @@ -16,7 +16,7 @@ namespace PackageManagement.Tests.Helpers
IDisposable Operation = MockRepository.GenerateStub<IDisposable>();
public IDisposable StartOperation(string operationName, string mainPackageId)
public IDisposable StartOperation(string operationName, string mainPackageId, string mainPackageVersion)
{
OperationStarted = operationName;
MainPackageIdForOperationStarted = mainPackageId;

75
src/AddIns/VersionControl/SubversionAddIn/Src/Commands/AutostartCommands.cs

@ -232,48 +232,53 @@ namespace ICSharpCode.Svn.Commands @@ -232,48 +232,53 @@ namespace ICSharpCode.Svn.Commands
using (SvnClientWrapper client = new SvnClientWrapper()) {
SvnMessageView.HandleNotifications(client);
Status status = client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.None:
case StatusKind.Unversioned:
case StatusKind.Ignored:
break;
default:
// must be done using the subversion client, even if
// AutomaticallyDeleteFiles is off, because we don't want to corrupt the
// working copy
e.OperationAlreadyDone = true;
try {
client.Delete(new string[] { fullName }, false);
} catch (SvnClientException ex) {
LoggingService.Warn("SVN Error" + ex);
LoggingService.Warn(ex);
if (ex.IsKnownError(KnownError.CannotDeleteFileWithLocalModifications)
|| ex.IsKnownError(KnownError.CannotDeleteFileNotUnderVersionControl))
{
if (MessageService.ShowCustomDialog("${res:AddIns.Subversion.DeleteDirectory}",
StringParser.Parse("${res:AddIns.Subversion.ErrorDelete}:\n",
new StringTagPair("File", fullName)) +
ex.Message, 0, 1,
"${res:AddIns.Subversion.ForceDelete}", "${res:Global.CancelButtonText}")
== 0)
try {
Status status = client.SingleStatus(fullName);
switch (status.TextStatus) {
case StatusKind.None:
case StatusKind.Unversioned:
case StatusKind.Ignored:
break;
default:
// must be done using the subversion client, even if
// AutomaticallyDeleteFiles is off, because we don't want to corrupt the
// working copy
e.OperationAlreadyDone = true;
try {
client.Delete(new string[] { fullName }, false);
} catch (SvnClientException ex) {
LoggingService.Warn("SVN Error" + ex);
LoggingService.Warn(ex);
if (ex.IsKnownError(KnownError.CannotDeleteFileWithLocalModifications)
|| ex.IsKnownError(KnownError.CannotDeleteFileNotUnderVersionControl))
{
try {
client.Delete(new string[] { fullName }, true);
} catch (SvnClientException ex2) {
if (MessageService.ShowCustomDialog("${res:AddIns.Subversion.DeleteDirectory}",
StringParser.Parse("${res:AddIns.Subversion.ErrorDelete}:\n",
new StringTagPair("File", fullName)) +
ex.Message, 0, 1,
"${res:AddIns.Subversion.ForceDelete}", "${res:Global.CancelButtonText}")
== 0)
{
try {
client.Delete(new string[] { fullName }, true);
} catch (SvnClientException ex2) {
e.Cancel = true;
MessageService.ShowError(ex2.Message);
}
} else {
e.Cancel = true;
MessageService.ShowError(ex2.Message);
}
} else {
e.Cancel = true;
MessageService.ShowError(ex.Message);
}
} else {
e.Cancel = true;
MessageService.ShowError(ex.Message);
}
}
break;
break;
}
} catch (SvnClientException ex3) {
e.Cancel = true;
MessageService.ShowError(ex3.Message);
}
}
return;

2
src/Libraries/SharpSvn/Licenses/Putty-License.txt

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
PuTTY is copyright 1997-2011 Simon Tatham.
PuTTY is copyright 1997-2013 Simon Tatham.
Portions copyright Robert de Bath, Joris van Rantwijk, Delian
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,

2
src/Libraries/SharpSvn/Licenses/SharpSvn-License.txt

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
Copyright (c) 2007-2010 The SharpSvn Project
Copyright (c) 2007-2012 The SharpSvn Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

8
src/Libraries/SharpSvn/Licenses/Subversion-License.txt

@ -260,3 +260,11 @@ subversion/bindings/swig/python/tests/trac/: @@ -260,3 +260,11 @@ subversion/bindings/swig/python/tests/trac/:
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
For the file subversion/libsvn_subr/utf_width.c
* Markus Kuhn -- 2007-05-26 (Unicode 5.0)
*
* Permission to use, copy, modify, and distribute this software
* for any purpose and without fee is hereby granted. The author
* disclaims all warranties with regard to this software.

24
src/Libraries/SharpSvn/Licenses/ZLib-License.txt

@ -1,22 +1,22 @@ @@ -1,22 +1,22 @@
ZLIB DATA COMPRESSION LIBRARY
zlib 1.2.5 is a general purpose data compression library. All the code is
zlib 1.2.8 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
and rfc1952.txt (gzip format).
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
rfc1952 (gzip format).
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
of the library is given in the file example.c which also tests that the library
is working correctly. Another example is given in the file minigzip.c. The
compression library itself is composed of all source files except example.c and
minigzip.c.
of the library is given in the file test/example.c which also tests that
the library is working correctly. Another example is given in the file
test/minigzip.c. The compression library itself is composed of all source
files in the root directory.
To compile all files and run the test program, follow the instructions given at
the top of Makefile.in. In short "./configure; make test", and if that goes
well, "make install" should work for most flavors of Unix. For Windows, use one
of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use
well, "make install" should work for most flavors of Unix. For Windows, use
one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use
make_vms.com.
Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 @@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
The changes made in version 1.2.5 are documented in the file ChangeLog.
The changes made in version 1.2.8 are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
@ -44,7 +44,7 @@ http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . @@ -44,7 +44,7 @@ http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html .
http://docs.python.org/library/zlib.html .
zlib is built into tcl: http://wiki.tcl.tk/4610 .
@ -84,7 +84,7 @@ Acknowledgments: @@ -84,7 +84,7 @@ Acknowledgments:
Copyright notice:
(C) 1995-2010 Jean-loup Gailly and Mark Adler
(C) 1995-2013 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages

BIN
src/Libraries/SharpSvn/SharpPlink-Win32.svnExe

Binary file not shown.

BIN
src/Libraries/SharpSvn/SharpSvn-DB44-20-win32.dll → src/Libraries/SharpSvn/SharpSvn-DB44-20-win32.svnDll

Binary file not shown.

BIN
src/Libraries/SharpSvn/SharpSvn-Sasl21-23-win32.dll

Binary file not shown.

BIN
src/Libraries/SharpSvn/SharpSvn.UI.dll

Binary file not shown.

15
src/Libraries/SharpSvn/SharpSvn.UI.xml

@ -310,6 +310,21 @@ @@ -310,6 +310,21 @@
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:SharpSvn.UI.Properties.Resources.AuthenticationBanner">
<summary>
Looks up a localized resource of type System.Drawing.Bitmap.
</summary>
</member>
<member name="P:SharpSvn.UI.Properties.Resources.Error">
<summary>
Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
</summary>
</member>
<member name="P:SharpSvn.UI.Properties.Resources.Ok">
<summary>
Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
</summary>
</member>
<member name="T:SharpSvn.UI.SharpSvnUI">
<summary>
Helper methods to bind a user interface to an <see cref="T:SharpSvn.SvnClient"/>

BIN
src/Libraries/SharpSvn/SharpSvn.dll

Binary file not shown.

12
src/Libraries/SharpSvn/SharpSvn.wxs

@ -1,14 +1,13 @@ @@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/wix/2006/wi tools/wix.xsd">
<!-- $Id: SharpSvn.wxs 1296 2009-06-21 12:07:55Z rhuijben $ -->
<!-- $Id: SharpSvn.wxs 2199 2012-07-25 21:43:23Z rhuijben $ -->
<Fragment>
<!-- When referenced installs a Win32 SharpSvn into the directory DIR_SharpSvn -->
<ComponentGroup Id="LOCAL_SharpSvn_Win32">
<ComponentRef Id="C_LOCAL_SharpSvn.dll" />
<ComponentRef Id="C_LOCAL_SharpSvn_Sasl21_23_win32.dll" />
<ComponentRef Id="C_LOCAL_SharpPlink_Win32.svnExe" />
<?ifndef SharpSvn_NoDB?>
<ComponentRef Id="C_LOCAL_SharpSvn_DB44_20_win32.dll" />
<ComponentRef Id="C_LOCAL_SharpSvn_DB44_20_win32.svnDll" />
<?endif?>
<?ifdef SharpSvn_Pdb?>
<ComponentRef Id="C_LOCAL_SharpSvn.pdb" />
@ -50,9 +49,6 @@ @@ -50,9 +49,6 @@
<Component Id="C_LOCAL_SharpSvn.dll" Guid="32EB117A-B450-4137-B453-072D03DAECB1">
<File Id="CF_LOCAL_SharpSvn.dll" Name="SharpSvn.dll" Vital="yes" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="C_LOCAL_SharpSvn_Sasl21_23_win32.dll" Guid="CE42CB05-C393-4876-8F1A-10711D68ACF1">
<File Id="CF_LOCAL_SharpSvn_Sasl21_23_win32.dll" Name="SharpSvn-Sasl21-23-win32.dll" Vital="yes" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="C_LOCAL_SharpPlink_Win32.svnExe" Guid="34F616E9-637E-44F0-9416-F79325560FDE">
<File Id="CF_LOCAL_SharpPlink_Win32.svnExe" Name="SharpPlink-Win32.svnExe" Vital="yes" KeyPath="yes" Checksum="yes" />
</Component>
@ -61,8 +57,8 @@ @@ -61,8 +57,8 @@
<Fragment>
<!-- BDB is optional (BDB repository format support is disabled if not available) -->
<DirectoryRef Id="DIR_SharpSvn" FileSource="$(sys.SOURCEFILEDIR)">
<Component Id="C_LOCAL_SharpSvn_DB44_20_win32.dll" Guid="29EEA692-708D-499B-8543-E4B43D1293AE">
<File Id="CF_LOCAL_SharpSvn_DB44_20_win32.dll" Name="SharpSvn-DB44-20-win32.dll" Vital="yes" KeyPath="yes" Checksum="yes" />
<Component Id="C_LOCAL_SharpSvn_DB44_20_win32.svnDll" Guid="17EC4369-1FBD-4345-A865-AB08B99D33FF">
<File Id="CF_LOCAL_SharpSvn_DB44_20_win32.svnDll" Name="SharpSvn-DB44-20-win32.svnDll" Vital="yes" KeyPath="yes" Checksum="yes" />
</Component>
</DirectoryRef>
</Fragment>

4935
src/Libraries/SharpSvn/SharpSvn.xml

File diff suppressed because it is too large Load Diff

6
src/Main/Core/Project/Src/AddInTree/AddIn/AddInReference.cs

@ -96,11 +96,11 @@ namespace ICSharpCode.Core @@ -96,11 +96,11 @@ namespace ICSharpCode.Core
}
if (reference.Name == "SharpDevelop") {
// HACK: SD 4.1/4.2 AddIns work with SharpDevelop 4.3
// HACK: SD 4.1/4.2/4.3 AddIns work with SharpDevelop 4.4
// Because some 4.1 AddIns restrict themselves to SD 4.1, we extend the
// supported SD range.
if (reference.maximumVersion == new Version("4.1") || reference.maximumVersion == new Version("4.2")) {
reference.maximumVersion = new Version("4.3");
if (reference.maximumVersion == new Version("4.1") || reference.maximumVersion == new Version("4.2") || reference.maximumVersion == new Version("4.3")) {
reference.maximumVersion = new Version("4.4");
}
}
}

2
src/Setup/Chocolatey/Tools/chocolateyInstall.ps1

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
$packageName = 'sharpdevelop'
$installerType = 'msi'
$url = 'http://downloads.sourceforge.net/sharpdevelop/SharpDevelop_4.3.1.9430_Setup.msi?download'
$url = 'http://downloads.sourceforge.net/sharpdevelop/SharpDevelop_4.3.3.9663_Setup.msi?download'
$silentArgs = '/q'
$validExitCodes = @(0)

4
src/Setup/Chocolatey/sharpdevelop.nuspec

@ -4,14 +4,14 @@ @@ -4,14 +4,14 @@
<metadata>
<id>sharpdevelop</id>
<title>SharpDevelop</title>
<version>4.3.1</version>
<version>4.3.3</version>
<authors>IC#Code Team</authors>
<owners>SharpDevelop Team</owners>
<summary>sharpdevelop</summary>
<description>#develop (short for SharpDevelop) is a free IDE for C#, VB.NET, F#, IronPython and IronRuby projects on Microsoft's .NET platform. It has designers for WPF, Windows Forms and Entity Framework, and also supports ASP.NET MVC.</description>
<projectUrl>http://www.icsharpcode.net/opensource/sd/</projectUrl>
<tags>sharpdevelop ide .net developer web windows debugging editor tool productivity</tags>
<copyright>Copyright ©2001-2012 IC#Code.</copyright>
<copyright>Copyright ©2001-2013 IC#Code.</copyright>
<licenseUrl>http://www.icsharpcode.net/OpenSource/SD/</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!--<iconUrl>https://github.com/Your Repository/raw/master/sharpdevelop/sharpdevelop.gif</iconUrl>-->

5
src/Setup/Files.wxs

@ -321,6 +321,9 @@ @@ -321,6 +321,9 @@
<File Source="..\..\doc\readme.rtf" Name="readme.rtf" Id="readme.rtf" />
<File Source="..\..\doc\SharpDevelopInfoResources.txt" Id="SharpDevelopInfoResources.txt" Name="SharpDevelopInfoResources.txt" />
</Component>
<Component Id="DependenciesHtml" Guid="898AC4F4-9331-4C3C-A170-ECB09B890EDD" DiskId="1">
<File Id="Dependencies.html" Name="Dependencies.html" Source="..\..\doc\Dependencies.html" KeyPath="yes" />
</Component>
</Directory>
<Directory Id="DataFolder" Name="data">
<Directory Id="ConversionStyleSheetsFolder" Name="ConversionStyleSheets">
@ -1576,8 +1579,6 @@ @@ -1576,8 +1579,6 @@
<File Source="..\..\AddIns\VersionControl\SubversionAddin\SharpSvn.dll" Name="SharpSvn.dll" Id="SharpSvn.dll" />
<File Source="..\..\AddIns\VersionControl\SubversionAddin\SharpSvn.UI.dll" Name="SharpSvn.UI.dll" Id="SharpSvn.UI.dll" />
<File Source="..\..\AddIns\VersionControl\SubversionAddin\SharpPlink-Win32.svnExe" Name="SharpPlink-Win32.svnExe" Id="SharpPlink_Win32.svnExe" />
<File Source="..\..\AddIns\VersionControl\SubversionAddin\SharpSvn-DB44-20-Win32.dll" Name="SharpSvn-DB44-20-Win32.dll" Id="SharpSvn_DB44_20_Win32.dll" />
<File Source="..\..\AddIns\VersionControl\SubversionAddin\SharpSvn-SASL21-23-Win32.dll" Name="SharpSvn-SASL21-23-Win32.dll" Id="SharpSvn_SASL21_23_Win32.dll" />
</Component>
</Directory>
<Component Id="GitAddInDll" Guid="4AB2E967-7267-42F7-AED1-AB64809F0BC1" DiskId="1">

20
src/Setup/Setup.wxs

@ -176,6 +176,7 @@ @@ -176,6 +176,7 @@
<ComponentRef Id="SharpDevelopExe"/>
<ComponentRef Id="SharpDevelopExeFiles"/>
<ComponentRef Id="SharpDevelopDocFiles"/>
<ComponentRef Id="DependenciesHtml"/>
<ComponentRef Id="ICSharpCodeBuildTasksDll"/>
<ComponentRef Id="BuildTasksTargetFiles"/>
<ComponentRef Id="ICSharpCodeCoreDll"/>
@ -656,7 +657,24 @@ @@ -656,7 +657,24 @@
<!-- Using WixUI -->
<Property Id="WIXUI_INSTALLDIR">INSTALLDIR</Property>
<UIRef Id="WixUI_FeatureTree"/>
<UI>
<UIRef Id="WixUI_FeatureTree" />
<Publish
Dialog="ExitDialog"
Control="Finish"
Event="DoAction"
Value="ShowReadme">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Learn about dependencies you should install" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/>
<Property Id="WixShellExecTarget" Value="[#Dependencies.html]" />
<CustomAction
Id="ShowReadme"
BinaryKey="WixCA"
DllEntry="WixShellExec"
Impersonate="yes" />
<!--
If a newer version of SharpDevelop is installed, show an error message.

1
src/Setup/SharpDevelop.Setup.wixproj

@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
<ItemGroup>
<WixExtension Include="$(WixToolPath)\WixUIExtension.dll" />
<WixExtension Include="$(WixToolPath)\WixNetFxExtension.dll" />
<WixExtension Include="$(WixToolPath)\WixUtilExtension.dll" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" Condition="Exists('$(WixTargetsPath)')" />
</Project>

BIN
src/Tools/NUnit/lib/nunit-console-runner.dll

Binary file not shown.

BIN
src/Tools/NUnit/lib/nunit.core.dll

Binary file not shown.

BIN
src/Tools/NUnit/lib/nunit.core.interfaces.dll

Binary file not shown.

BIN
src/Tools/NUnit/lib/nunit.util.dll

Binary file not shown.

4
src/Tools/NUnit/license.txt

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
Copyright © 2002-2012 Charlie Poole
Copyright © 2002-2013 Charlie Poole
Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
Copyright © 2000-2002 Philip A. Craig
@ -8,7 +8,7 @@ Permission is granted to anyone to use this software for any purpose, including @@ -8,7 +8,7 @@ Permission is granted to anyone to use this software for any purpose, including
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required.
Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig
Portions Copyright © 2002-2013 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

BIN
src/Tools/NUnit/nunit-console-dotnet2-x86.exe

Binary file not shown.

BIN
src/Tools/NUnit/nunit-console-dotnet2.exe

Binary file not shown.

BIN
src/Tools/NUnit/nunit-console-x86.exe

Binary file not shown.

BIN
src/Tools/NUnit/nunit-console.exe

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save