Browse Source

Merge Corsavy r1208:1227 to trunk.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1228 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
3abc3c3786
  1. 58
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 18
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
  3. 5
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
  4. 184
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Resources/BuildOptions.xfrm
  5. 57
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BuildOptions.cs
  6. 4
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs
  7. 7
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorTypeMembers.cs
  8. 2
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs
  9. 10
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs
  10. 5
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/TestHelper.cs
  11. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  12. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs
  13. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  14. 1
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs
  15. 20
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
  16. 3
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/AddComponentsDialog.cs
  17. 70
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/ComponentLibraryLoader.cs
  18. 9
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/SideTabItemDesigner.cs
  19. 37
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs
  20. 15
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs
  21. 52
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
  22. 9
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaCompletionData.cs
  23. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  24. 56
      src/AddIns/DisplayBindings/XmlEditor/Test/Schema/MissingSchemaElementTestFixture.cs
  25. 1
      src/AddIns/DisplayBindings/XmlEditor/Test/XmlEditor.Tests.csproj
  26. 5
      src/AddIns/Misc/CodeCoverage/Project/Src/NCoverRunner.cs
  27. 2
      src/AddIns/Misc/UnitTesting/Src/PadContent.cs
  28. 20
      src/Main/Base/Project/Src/Commands/SideBarCommands.cs
  29. 2
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
  30. 17
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
  31. 141
      src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTab.cs
  32. 20
      src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTabItem.cs
  33. 61
      src/Main/Base/Project/Src/Gui/Components/SideBar/SharpDevelopSideBar.cs
  34. 7
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
  35. 2
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/COMReferencePanel.cs
  36. 42
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  37. 11
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
  38. 20
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  39. 13
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
  40. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs
  41. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
  42. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  43. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs
  44. 18
      src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs
  45. 136
      src/Main/Base/Project/Src/Project/Items/TypeLibrary.cs
  46. 20
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

58
AddIns/ICSharpCode.SharpDevelop.addin

@ -631,11 +631,11 @@ @@ -631,11 +631,11 @@
</Path>
<Path name = "/SharpDevelop/Pads/CompilerMessageView/ContextMenu">
<Include id = "Cut" item = "/SharpDevelop/Workbench/MainMenu/Edit/Cut"/>
<Include id = "Copy" item = "/SharpDevelop/Workbench/MainMenu/Edit/Copy"/>
<Include id = "SelectAll" item = "/SharpDevelop/Workbench/MainMenu/Edit/SelectAll"/>
<MenuItem id = "Clear"
icon = "OutputPad.Toolbar.ClearOutputWindow"
label = "Clear All"
label = "${res:MainWindow.Windows.CompilerMessageView.ClearAllButton.ToolTip}"
class = "ICSharpCode.SharpDevelop.Gui.ClearOutputWindow"/>
</Path>
@ -1008,15 +1008,17 @@ @@ -1008,15 +1008,17 @@
class = "ICSharpCode.SharpDevelop.Commands.SideBarDeleteTabHeader"/>
</Condition>
<MenuItem id = "RenameTab"
label = "${res:SideBarComponent.ContextMenu.RenameTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabHeader"/>
<Condition name = "Ownerstate" ownerstate="CanBeRenamed" action="Disable">
<MenuItem id = "RenameTab"
label = "${res:SideBarComponent.ContextMenu.RenameTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabHeader"/>
</Condition>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "AddTab"
label = "${res:SideBarComponent.ContextMenu.AddTab}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarAddTabHeader"/>
<MenuItem id = "Separator2" type = "Separator" />
<Condition name = "Ownerstate" ownerstate="CanMoveUp" action="Disable">
<MenuItem id = "MoveTabUp"
@ -1034,25 +1036,29 @@ @@ -1034,25 +1036,29 @@
</Path>
<Path name = "/SharpDevelop/Workbench/SharpDevelopSideBar/SideTab/ContextMenu">
<MenuItem id = "RenameTabItem"
label = "${res:SideBarComponent.ContextMenu.RenameTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabItem" />
<MenuItem id = "DeleteTabItem"
label = "${res:SideBarComponent.ContextMenu.DeleteTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarDeleteTabItem"/>
<Condition name = "Ownerstate" ownerstate="TabCanBeDeleted">
<MenuItem id = "Separator1" type = "Separator" />
<Condition name = "Ownerstate" ownerstate="CanMoveItemUp" action="Disable">
<MenuItem id = "MoveItemUp"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemUp}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemUp"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="CanMoveItemDown" action="Disable">
<MenuItem id = "MoveItemDown"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemDown}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemDown"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="TabCanBeDeleted" action="Disable">
<MenuItem id = "DeleteTabItem"
label = "${res:SideBarComponent.ContextMenu.DeleteTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarDeleteTabItem"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="CanBeRenamed" action="Disable">
<MenuItem id = "RenameTabItem"
label = "${res:SideBarComponent.ContextMenu.RenameTabItem}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarRenameTabItem" />
</Condition>
<MenuItem id = "Separator1" type = "Separator" />
<Condition name = "Ownerstate" ownerstate="CanMoveItemUp" action="Disable">
<MenuItem id = "MoveItemUp"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemUp}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemUp"/>
</Condition>
<Condition name = "Ownerstate" ownerstate="CanMoveItemDown" action="Disable">
<MenuItem id = "MoveItemDown"
label = "${res:SideBarComponent.ContextMenu.MoveTabItemDown}"
class = "ICSharpCode.SharpDevelop.Commands.SideBarMoveActiveItemDown"/>
</Condition>
<Include id="CommonContextMenu" path="/SharpDevelop/Workbench/SharpDevelopSideBar/CommonContextMenu"/>

18
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin

@ -97,25 +97,25 @@ @@ -97,25 +97,25 @@
<Path path = "/SharpDevelop/BackendBindings/ProjectOptions/Boo">
<DialogPanel id = "Application"
label = "Application"
label = "${res:Dialog.ProjectOptions.ApplicationSettings}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.ApplicationSettings"/>
<!--<DialogPanel id = "ReferencePaths"
label = "Reference Paths"
label = "${res:Dialog.ProjectOptions.ReferencePaths}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.ReferencePaths"/>-->
<DialogPanel id = "Signing"
label = "Signing"
label = "${res:Dialog.ProjectOptions.Signing}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Signing"/>
<DialogPanel id = "BuildEvents"
label = "Build Events"
label = "${res:Dialog.ProjectOptions.BuildEvents}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.BuildEvents"/>
<!--<DialogPanel id = "BuildOptions"
label = "Build"
class = "ICSharpCode.ILAsmBinding.BuildOptions"/>-->
<DialogPanel id = "BuildOptions"
label = "${res:Dialog.ProjectOptions.BuildOptions}"
class = "Grunwald.BooBinding.BuildOptions"/>
<DialogPanel id = "DebugOptions"
label = "Debug"
label = "${res:Dialog.ProjectOptions.DebugOptions}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.DebugOptions"/>
<!--<DialogPanel id = "Publish"
label = "Publish"
label = "${res:Dialog.ProjectOptions.Publish}"
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Publish"/>-->
</Path>

5
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj

@ -84,6 +84,8 @@ @@ -84,6 +84,8 @@
<Compile Include="..\..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<EmbeddedResource Include="Resources\BuildOptions.xfrm" />
<Compile Include="Src\BuildOptions.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="BooBinding.addin">
@ -141,7 +143,8 @@ @@ -141,7 +143,8 @@
<Private>False</Private>
</ProjectReference>
<Folder Include="Configuration" />
<Folder Include="Resources" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
<Import Project="PostBuildEvent.proj" />
</Project>
</Project>

184
src/AddIns/BackendBindings/Boo/BooBinding/Project/Resources/BuildOptions.xfrm

@ -0,0 +1,184 @@ @@ -0,0 +1,184 @@
<Components version="1.0">
<System.Windows.Forms.UserControl>
<Name value="booBuildOptionsPanel" />
<ClientSize value="{Width=510, Height=396}" />
<AutoScroll value="True" />
<Controls>
<System.Windows.Forms.GroupBox>
<Name value="generalGroupBox" />
<Location value="{X=3,Y=3}" />
<Text value="${res:Dialog.ProjectOptions.BuildOptions.General}" />
<Anchor value="Top, Left, Right" />
<Size value="{Width=504, Height=146}" />
<TabIndex value="0" />
<Controls>
<System.Windows.Forms.TextBox>
<Name value="pipelineTextBox" />
<TabIndex value="7" />
<Size value="{Width=386, Height=21}" />
<Location value="{X=112,Y=87}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Label>
<Name value="pipelineLabel" />
<Location value="{X=6,Y=87}" />
<Text value="Pipeline:" />
<TextAlign value="MiddleRight" />
<Size value="{Width=100, Height=23}" />
<TabIndex value="6" />
</System.Windows.Forms.Label>
<System.Windows.Forms.Label>
<Name value="conditionalSymbolsLabel" />
<Location value="{X=6,Y=16}" />
<Text value="${res:Dialog.ProjectOptions.BuildOptions.ConditionalSymbols}" />
<Anchor value="Top, Left, Right" />
<Visible value="False" />
<TextAlign value="BottomLeft" />
<Size value="{Width=492, Height=16}" />
<TabIndex value="0" />
</System.Windows.Forms.Label>
<System.Windows.Forms.TextBox>
<Name value="conditionalSymbolsTextBox" />
<TabIndex value="1" />
<Size value="{Width=492, Height=21}" />
<Visible value="False" />
<Location value="{X=6,Y=36}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.CheckBox>
<Name value="noCorlibCheckBox" />
<Location value="{X=6,Y=63}" />
<Text value="${res:Dialog.ProjectOptions.BuildOptions.NoCorlib}" />
<TabIndex value="5" />
<Size value="{Width=480, Height=21}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.CheckBox>
</Controls>
</System.Windows.Forms.GroupBox>
<System.Windows.Forms.GroupBox>
<Name value="outputGroupBox" />
<Location value="{X=3,Y=152}" />
<Text value="${res:Dialog.ProjectOptions.Build.Output}" />
<Anchor value="Top, Left, Right" />
<Size value="{Width=504, Height=226}" />
<TabIndex value="1" />
<Controls>
<System.Windows.Forms.Label>
<Name value="outputPathLabel" />
<Location value="{X=12,Y=17}" />
<Text value="${res:Dialog.ProjectOptions.Build.OutputPath}" />
<Anchor value="Top, Left, Right" />
<TextAlign value="BottomLeft" />
<Size value="{Width=486, Height=16}" />
<TabIndex value="3" />
</System.Windows.Forms.Label>
<System.Windows.Forms.TextBox>
<Name value="outputPathTextBox" />
<TabIndex value="4" />
<Size value="{Width=448, Height=21}" />
<Location value="{X=12,Y=37}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Button>
<Name value="outputPathBrowseButton" />
<Location value="{X=463,Y=37}" />
<UseCompatibleTextRendering value="True" />
<Text value="..." />
<Anchor value="Top, Right" />
<Size value="{Width=40, Height=21}" />
<TabIndex value="5" />
</System.Windows.Forms.Button>
<System.Windows.Forms.CheckBox>
<Name value="xmlDocumentationCheckBox" />
<Visible value="False" />
<Location value="{X=12,Y=61}" />
<Text value="${res:Dialog.ProjectOptions.Build.XmlDocumentationFile}" />
<TabIndex value="6" />
<Size value="{Width=154, Height=21}" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.TextBox>
<Name value="xmlDocumentationTextBox" />
<TabIndex value="7" />
<Size value="{Width=333, Height=21}" />
<Visible value="False" />
<Location value="{X=170,Y=61}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Label>
<Name value="debugInfoLabel" />
<Location value="{X=12,Y=85}" />
<Text value="${res:Dialog.ProjectOptions.Build.DebugInfo}" />
<TextAlign value="MiddleRight" />
<Size value="{Width=154, Height=16}" />
<TabIndex value="8" />
</System.Windows.Forms.Label>
<System.Windows.Forms.ComboBox>
<Name value="debugInfoComboBox" />
<Size value="{Width=140, Height=21}" />
<TabIndex value="9" />
<DropDownStyle value="DropDownList" />
<Location value="{X=170,Y=85}" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.GroupBox>
<Name value="advancedOutputGroupBox" />
<Location value="{X=6,Y=112}" />
<Text value="${res:Dialog.ProjectOptions.Build.Advanced}" />
<Anchor value="Top, Left, Right" />
<Size value="{Width=492, Height=105}" />
<TabIndex value="9" />
<Controls>
<System.Windows.Forms.Label>
<Name value="baseIntermediateOutputPathLabel" />
<Location value="{X=6,Y=17}" />
<Text value="${res:Dialog.ProjectOptions.Build.BaseIntermediateOutputPath}" />
<Anchor value="Top, Left, Right" />
<TextAlign value="BottomLeft" />
<Size value="{Width=480, Height=16}" />
<TabIndex value="0" />
</System.Windows.Forms.Label>
<System.Windows.Forms.TextBox>
<Name value="baseIntermediateOutputPathTextBox" />
<TabIndex value="1" />
<Size value="{Width=429, Height=21}" />
<Location value="{X=6,Y=36}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Button>
<Name value="baseIntermediateOutputPathBrowseButton" />
<Location value="{X=446,Y=36}" />
<Text value="..." />
<Anchor value="Top, Right" />
<Size value="{Width=40, Height=21}" />
<TabIndex value="2" />
</System.Windows.Forms.Button>
<System.Windows.Forms.Label>
<Name value="intermediateOutputPathLabel" />
<Location value="{X=6,Y=60}" />
<Text value="${res:Dialog.ProjectOptions.Build.IntermediateOutputPath}" />
<Anchor value="Top, Left, Right" />
<TextAlign value="BottomLeft" />
<Size value="{Width=480, Height=16}" />
<TabIndex value="0" />
</System.Windows.Forms.Label>
<System.Windows.Forms.TextBox>
<Name value="intermediateOutputPathTextBox" />
<TabIndex value="1" />
<Size value="{Width=429, Height=21}" />
<Location value="{X=6,Y=76}" />
<Anchor value="Top, Left, Right" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Button>
<Name value="intermediateOutputPathBrowseButton" />
<Location value="{X=446,Y=75}" />
<Text value="..." />
<Anchor value="Top, Right" />
<Size value="{Width=40, Height=21}" />
<TabIndex value="2" />
</System.Windows.Forms.Button>
</Controls>
</System.Windows.Forms.GroupBox>
</Controls>
</System.Windows.Forms.GroupBox>
</Controls>
</System.Windows.Forms.UserControl>
</Components>

57
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BuildOptions.cs

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.XmlForms;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
using StringPair = System.Collections.Generic.KeyValuePair<string, string>;
namespace Grunwald.BooBinding
{
public sealed class BuildOptions : AbstractBuildOptions
{
public override void LoadPanelContents()
{
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream(GetType().Namespace + ".Resources.BuildOptions.xfrm"));
InitializeHelper();
InitOutputPath();
//InitXmlDoc();
InitDebugInfo();
ConfigurationGuiBinding b;
//b = helper.BindString("conditionalSymbolsTextBox", "DefineConstants");
//b.DefaultLocation = PropertyStorageLocations.ConfigurationSpecific;
//b.CreateLocationButton("conditionalSymbolsTextBox");
b = helper.BindBoolean("noCorlibCheckBox", "NoStdLib", false);
b.CreateLocationButton("noCorlibCheckBox");
helper.BindString("pipelineTextBox", "Pipeline").CreateLocationButton("pipelineLabel");
//InitWarnings();
//
helper.BindString("baseIntermediateOutputPathTextBox", "BaseIntermediateOutputPath").CreateLocationButton("baseIntermediateOutputPathTextBox");
ConnectBrowseFolder("baseIntermediateOutputPathBrowseButton", "baseIntermediateOutputPathTextBox", "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}");
helper.BindString("intermediateOutputPathTextBox", "IntermediateOutputPath").CreateLocationButton("intermediateOutputPathTextBox");
ConnectBrowseFolder("intermediateOutputPathBrowseButton", "intermediateOutputPathTextBox", "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}");
//
helper.AddConfigurationSelector(this);
}
}
}

4
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitor.cs

@ -146,9 +146,7 @@ namespace NRefactoryToBooConverter @@ -146,9 +146,7 @@ namespace NRefactoryToBooConverter
if ((m & Modifier.Default) != 0) {
ParametrizedNode parametrizedNode = node as ParametrizedNode;
string name = null;
if (node is IndexerDeclaration) {
name = DefaultIndexerName;
} else if (parametrizedNode != null) {
if (parametrizedNode != null) {
name = parametrizedNode.Name;
} else {
AddError(node, "Default modifier is not supported on this member.");

7
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorTypeMembers.cs

@ -213,13 +213,10 @@ namespace NRefactoryToBooConverter @@ -213,13 +213,10 @@ namespace NRefactoryToBooConverter
return m;
}
public const string DefaultIndexerName = "Indexer";
public object Visit(IndexerDeclaration indexerDeclaration, object data)
{
indexerDeclaration.Modifier |= Modifier.Default;
B.Property m = new B.Property(GetLexicalInfo(indexerDeclaration));
m.Modifiers = ConvertModifier(indexerDeclaration, B.TypeMemberModifiers.Private);
ConvertAttributes(indexerDeclaration.Attributes, m.Attributes);
if (currentType != null) currentType.Members.Add(m);
@ -228,7 +225,7 @@ namespace NRefactoryToBooConverter @@ -228,7 +225,7 @@ namespace NRefactoryToBooConverter
m.Type = ConvertTypeReference(indexerDeclaration.TypeReference);
m.Name = "this";
m.ExplicitInfo = ConvertInterfaceImplementations(indexerDeclaration.InterfaceImplementations, indexerDeclaration, m);
m.Name = DefaultIndexerName;
m.Name = "self";
if (!indexerDeclaration.IsWriteOnly) {
m.Getter = new B.Method(GetLexicalInfo(indexerDeclaration.GetRegion));
if (indexerDeclaration.GetRegion != null) {

2
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/ExpressionTests.cs

@ -220,7 +220,7 @@ namespace NRefactoryToBooConverter.Tests @@ -220,7 +220,7 @@ namespace NRefactoryToBooConverter.Tests
[Test]
public void CreateArrayWithOneElement()
{
TestExpr("new int[] { 1 }", "(of System.Int32: 1,)");
TestExpr("new int[] { 1 }", "(of System.Int32: 1)");
}
[Test]

10
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/MemberTests.cs

@ -217,26 +217,26 @@ namespace NRefactoryToBooConverter.Tests @@ -217,26 +217,26 @@ namespace NRefactoryToBooConverter.Tests
[Test]
public void ReadOnlyIndexer()
{
TestInClassWithIndexer("public string this[int index] { get { } }", "public Indexer(index as System.Int32) as System.String:\n\tget:\n\t\tpass");
TestInClass("public string this[int index] { get { } }", "public self[index as System.Int32] as System.String:\n\tget:\n\t\tpass");
}
[Test]
public void WriteOnlyIndexer()
{
TestInClassWithIndexer("public string this[int index] { set { } }", "public Indexer(index as System.Int32) as System.String:\n\tset:\n\t\tpass");
TestInClass("public string this[int index] { set { } }", "public self[index as System.Int32] as System.String:\n\tset:\n\t\tpass");
}
[Test]
public void Indexer()
{
TestInClassWithIndexer("public string this[int index] { get {} set { } }", "public Indexer(index as System.Int32) as System.String:\n\tget:\n\t\tpass\n\tset:\n\t\tpass");
TestInClass("public string this[int index] { get {} set { } }", "public self[index as System.Int32] as System.String:\n\tget:\n\t\tpass\n\tset:\n\t\tpass");
}
[Test]
public void IndexerWithAttributes()
{
TestInClassWithIndexer("[AA] public string this[int index] { [BB] get {} [CC] set { } }",
"[AA]\npublic Indexer(index as System.Int32) as System.String:\n\t[BB]\n\tget:\n\t\tpass\n\t[CC]\n\tset:\n\t\tpass");
TestInClass("[AA] public string this[int index] { [BB] get {} [CC] set { } }",
"[AA]\npublic self[index as System.Int32] as System.String:\n\t[BB]\n\tget:\n\t\tpass\n\t[CC]\n\tset:\n\t\tpass");
}
[Test]

5
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Test/TestHelper.cs

@ -75,11 +75,6 @@ namespace NRefactoryToBooConverter.Tests @@ -75,11 +75,6 @@ namespace NRefactoryToBooConverter.Tests
TestVB("Public Class ClassName\n" + input + "\nEnd Class\n", "public class ClassName:\n\t" + output.Replace("\n", "\n\t"));
}
protected void TestInClassWithIndexer(string input, string output)
{
Test("public class ClassName {\n" + input + "\n}", "[System.Reflection.DefaultMember('Indexer')]\npublic class ClassName:\n\t" + output.Replace("\n", "\n\t"));
}
protected void TestStatement(string input, string output)
{
ConverterSettings dummySet = new ConverterSettings("dummy.cs");

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -347,7 +347,7 @@ namespace CSharpBinding.FormattingStrategy @@ -347,7 +347,7 @@ namespace CSharpBinding.FormattingStrategy
sb.Append("\"></param>");
}
}
if (method.ReturnType != null && method.ReturnType.FullyQualifiedName != "System.Void") {
if (method.ReturnType != null && !method.IsConstructor && method.ReturnType.FullyQualifiedName != "System.Void") {
sb.Append("\n");
sb.Append(indentation);
sb.Append("/// <returns></returns>");

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs

@ -54,6 +54,7 @@ namespace CSharpBinding.OptionPanels @@ -54,6 +54,7 @@ namespace CSharpBinding.OptionPanels
b = helper.BindBoolean("noCorlibCheckBox", "NoStdLib", false);
b.CreateLocationButton("noCorlibCheckBox");
InitDebugInfo();
InitAdvanced();
b = helper.BindStringEnum("fileAlignmentComboBox", "FileAlignment",
"4096",

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs

@ -289,7 +289,7 @@ namespace VBNetBinding.FormattingStrategy @@ -289,7 +289,7 @@ namespace VBNetBinding.FormattingStrategy
sb.Append("\"></param>");
}
}
if (method.ReturnType != null && method.ReturnType.FullyQualifiedName != "System.Void") {
if (method.ReturnType != null && !method.IsConstructor && method.ReturnType.FullyQualifiedName != "System.Void") {
sb.Append("\n");
sb.Append(indentation);
sb.Append("''' <returns></returns>");

1
src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs

@ -61,6 +61,7 @@ namespace VBNetBinding.OptionPanels @@ -61,6 +61,7 @@ namespace VBNetBinding.OptionPanels
InitTargetFramework(VBNetProject.DefaultTargetsFile,
@"$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets");
InitDebugInfo();
InitAdvanced();
InitWarnings();

20
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs

@ -57,6 +57,7 @@ namespace ICSharpCode.FormsDesigner @@ -57,6 +57,7 @@ namespace ICSharpCode.FormsDesigner
Panel p = new Panel();
DesignSurface designSurface;
bool disposing;
string activeTabName = String.Empty;
IDesignerLoaderProvider loaderProvider;
IDesignerGenerator generator;
@ -340,6 +341,7 @@ namespace ICSharpCode.FormsDesigner @@ -340,6 +341,7 @@ namespace ICSharpCode.FormsDesigner
Reload();
IsFormsDesignerVisible = true;
AddSideBars();
SetActiveSideTab();
UpdatePropertyPad();
}
@ -361,6 +363,10 @@ namespace ICSharpCode.FormsDesigner @@ -361,6 +363,10 @@ namespace ICSharpCode.FormsDesigner
PropertyPad.PropertyValueChanged -= PropertyValueChanged;
propertyContainer.Clear();
IsFormsDesignerVisible = false;
activeTabName = String.Empty;
if (SharpDevelopSideBar.SideBar.ActiveTab != null && ToolboxProvider.SideTabs.Contains(SharpDevelopSideBar.SideBar.ActiveTab)) {
activeTabName = SharpDevelopSideBar.SideBar.ActiveTab.Name;
}
foreach(AxSideTab tab in ToolboxProvider.SideTabs) {
if (!SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) {
return;
@ -601,5 +607,19 @@ namespace ICSharpCode.FormsDesigner @@ -601,5 +607,19 @@ namespace ICSharpCode.FormsDesigner
}
SharpDevelopSideBar.SideBar.Refresh();
}
void SetActiveSideTab()
{
if (activeTabName.Length == 0) {
return;
}
foreach(AxSideTab tab in ToolboxProvider.SideTabs) {
if (activeTabName == tab.Name) {
SharpDevelopSideBar.SideBar.ActiveTab = tab;
return;
}
}
}
}
}

3
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/AddComponentsDialog.cs

@ -132,8 +132,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -132,8 +132,7 @@ namespace ICSharpCode.FormsDesigner.Gui
newItem.ImageIndex = (int)images[t.FullName + ".bmp"];
}
newItem.Checked = true;
ToolComponent toolComponent = new ToolComponent(t.FullName, new ComponentAssembly(assembly.FullName, loadPath));
toolComponent.IsEnabled = true;
ToolComponent toolComponent = new ToolComponent(t.FullName, new ComponentAssembly(assembly.FullName, loadPath), true);
newItem.Tag = toolComponent;
componentListView.Items.Add(newItem);
ToolboxItem item = new ToolboxItem(t);

70
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/ComponentLibraryLoader.cs

@ -87,11 +87,12 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -87,11 +87,12 @@ namespace ICSharpCode.FormsDesigner.Gui
protected ToolComponent()
{
}
public ToolComponent(string fullName, ComponentAssembly assembly)
public ToolComponent(string fullName, ComponentAssembly assembly, bool enabled)
{
this.fullName = fullName;
this.assemblyName = assembly.Name;
this.hintPath = assembly.HintPath;
this.hintPath = assembly.HintPath;
this.isEnabled = enabled;
}
public string FileName {
get {
@ -239,6 +240,57 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -239,6 +240,57 @@ namespace ICSharpCode.FormsDesigner.Gui
return newCategories;
}
public void RemoveCategory(string name)
{
foreach (Category category in categories) {
if (category.Name == name) {
categories.Remove(category);
break;
}
}
}
public void DisableToolComponent(string categoryName, string fullName)
{
foreach (Category category in categories) {
if (category.Name == categoryName) {
foreach (ToolComponent component in category.ToolComponents) {
if (component.FullName == fullName) {
component.IsEnabled = false;
return;
}
}
}
}
}
/// <summary>
/// Swaps the order of the two specified tool components
/// </summary>
public void ExchangeToolComponents(string categoryName, string fullName1, string fullName2)
{
foreach (Category category in categories) {
if (category.Name == categoryName) {
int index1 = -1;
int index2 = -1;
for (int i = 0; i < category.ToolComponents.Count; ++i) {
ToolComponent component = (ToolComponent)category.ToolComponents[i];
if (component.FullName == fullName1) {
index1 = i;
} else if (component.FullName == fullName2) {
index2 = i;
}
if (index1 != -1 && index2 != -1) {
ToolComponent component1 = (ToolComponent)category.ToolComponents[index1];
category.ToolComponents[index1] = category.ToolComponents[index2];
category.ToolComponents[index2] = component1;
return;
}
}
}
}
}
public bool LoadToolComponentLibrary(string fileName)
{
@ -273,7 +325,8 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -273,7 +325,8 @@ namespace ICSharpCode.FormsDesigner.Gui
Category newCategory = new Category(name);
foreach (XmlNode componentNode in node.ChildNodes) {
ToolComponent newToolComponent = new ToolComponent(componentNode.Attributes["class"].InnerText,
(ComponentAssembly)assemblies[Int32.Parse(componentNode.Attributes["assembly"].InnerText)]);
(ComponentAssembly)assemblies[Int32.Parse(componentNode.Attributes["assembly"].InnerText)],
IsEnabled(componentNode.Attributes["enabled"]));
newCategory.ToolComponents.Add(newToolComponent);
}
categories.Add(newCategory);
@ -381,5 +434,16 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -381,5 +434,16 @@ namespace ICSharpCode.FormsDesigner.Gui
}
doc.Save(fileName);
}
bool IsEnabled(XmlAttribute attribute)
{
if (attribute != null && attribute.InnerText != null) {
bool enabled = true;
if (Boolean.TryParse(attribute.InnerText, out enabled)) {
return enabled;
}
}
return true;
}
}
}

9
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/SideTabItemDesigner.cs

@ -38,6 +38,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -38,6 +38,7 @@ namespace ICSharpCode.FormsDesigner.Gui
///<summary>create a tabitem from a toolboxitem. It init Icon and name from the tag</summary>
public SideTabItemDesigner(ToolboxItem tag) : base(tag.DisplayName, tag)
{
CanBeRenamed = false;
this.Icon = tag.Bitmap;
ReloadToolBox();
}
@ -45,6 +46,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -45,6 +46,7 @@ namespace ICSharpCode.FormsDesigner.Gui
///<summary>create a tabitem from a toolboxitem. It init Icon from the tag</summary>
public SideTabItemDesigner(string name, ToolboxItem tag) : base(name, tag)
{
CanBeRenamed = false;
this.Icon = tag.Bitmap;
ReloadToolBox();
}
@ -52,15 +54,14 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -52,15 +54,14 @@ namespace ICSharpCode.FormsDesigner.Gui
///<summary>create a default tabitem : a pointer icon with an empty toolboxitem</summary>
public SideTabItemDesigner() : base("Pointer")
{
CanBeRenamed = false;
CanBeDeleted = false;
Bitmap pointerBitmap = new Bitmap(IconService.GetBitmap("Icons.16x16.FormsDesigner.PointerIcon"), 16, 16);
// ToolboxItem toolboxItemPointer = new ToolboxItem();
// toolboxItemPointer.Bitmap = pointerBitmap;
// toolboxItemPointer.DisplayName = "Pointer";
this.Icon = pointerBitmap;
this.Tag = null; //toolboxItemPointer;
this.Tag = null;
ReloadToolBox();
}

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

@ -55,6 +55,7 @@ namespace ICSharpCode.FormsDesigner @@ -55,6 +55,7 @@ namespace ICSharpCode.FormsDesigner
toolboxService = new ICSharpCode.FormsDesigner.Services.ToolboxService();
ReloadSideTabs(false);
toolboxService.SelectedItemUsed += new EventHandler(SelectedToolUsedHandler);
SharpDevelopSideBar.SideBar.SideTabDeleted += SideTabDeleted;
}
return toolboxService;
}
@ -101,6 +102,8 @@ namespace ICSharpCode.FormsDesigner @@ -101,6 +102,8 @@ namespace ICSharpCode.FormsDesigner
{
bool reInsertTabs = false;
foreach(AxSideTab tab in SideTabs) {
tab.ItemRemoved -= SideTabItemRemoved;
tab.ItemsExchanged -= SideTabItemsExchanged;
if (SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) {
SharpDevelopSideBar.SideBar.Tabs.Remove(tab);
reInsertTabs = true;;
@ -113,6 +116,8 @@ namespace ICSharpCode.FormsDesigner @@ -113,6 +116,8 @@ namespace ICSharpCode.FormsDesigner
if (category.IsEnabled) {
try {
SideTabDesigner newTab = new SideTabDesigner(SharpDevelopSideBar.SideBar, category, toolboxService);
newTab.ItemRemoved += SideTabItemRemoved;
newTab.ItemsExchanged += SideTabItemsExchanged;
SideTabs.Add(newTab);
} catch (Exception e) {
ICSharpCode.Core.LoggingService.Warn("Can't add tab : " + e);
@ -120,6 +125,8 @@ namespace ICSharpCode.FormsDesigner @@ -120,6 +125,8 @@ namespace ICSharpCode.FormsDesigner
}
}
SideTabDesigner customTab = new CustomComponentsSideTab(SharpDevelopSideBar.SideBar, "Custom Components", toolboxService);
customTab.ItemRemoved += SideTabItemRemoved;
customTab.ItemsExchanged += SideTabItemsExchanged;
SideTabs.Add(customTab);
if (reInsertTabs) {
foreach(AxSideTab tab in SideTabs) {
@ -247,5 +254,35 @@ namespace ICSharpCode.FormsDesigner @@ -247,5 +254,35 @@ namespace ICSharpCode.FormsDesigner
ProjectService.AddProjectItem(project, reference);
project.Save();
}
static void SideTabDeleted(object source, SideTabEventArgs e)
{
if (SideTabs.Contains(e.SideTab)) {
SideTabs.Remove(e.SideTab);
componentLibraryLoader.RemoveCategory(e.SideTab.Name);
SaveToolbox();
}
}
static void SideTabItemRemoved(object source, SideTabItemEventArgs e)
{
SideTabDesigner tab = source as SideTabDesigner;
ToolboxItem toolboxItem = e.Item.Tag as ToolboxItem;
if (tab != null && toolboxItem != null) {
componentLibraryLoader.DisableToolComponent(tab.Name, toolboxItem.TypeName);
SaveToolbox();
}
}
static void SideTabItemsExchanged(object source, SideTabItemExchangeEventArgs e)
{
SideTabDesigner tab = source as SideTabDesigner;
ToolboxItem toolboxItem1 = e.Item1.Tag as ToolboxItem;
ToolboxItem toolboxItem2 = e.Item2.Tag as ToolboxItem;
if (tab != null && toolboxItem1 != null && toolboxItem2 != null) {
componentLibraryLoader.ExchangeToolComponents(tab.Name, toolboxItem1.TypeName, toolboxItem2.TypeName);
SaveToolbox();
}
}
}
}

15
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs

@ -110,6 +110,9 @@ namespace ResourceEditor @@ -110,6 +110,9 @@ namespace ResourceEditor
public bool EnableCut
{
get {
if (resourceEditor.ResourceList.IsEditing || !resourceEditor.ResourceList.Focused) {
return false;
}
return resourceEditor.ResourceList.SelectedItems.Count > 0;
}
}
@ -117,6 +120,9 @@ namespace ResourceEditor @@ -117,6 +120,9 @@ namespace ResourceEditor
public bool EnableCopy
{
get {
if (resourceEditor.ResourceList.IsEditing || !resourceEditor.ResourceList.Focused) {
return false;
}
return resourceEditor.ResourceList.SelectedItems.Count > 0;
}
}
@ -124,6 +130,9 @@ namespace ResourceEditor @@ -124,6 +130,9 @@ namespace ResourceEditor
public bool EnablePaste
{
get {
if (resourceEditor.ResourceList.IsEditing || !resourceEditor.ResourceList.Focused) {
return false;
}
return true;
}
}
@ -131,6 +140,9 @@ namespace ResourceEditor @@ -131,6 +140,9 @@ namespace ResourceEditor
public bool EnableDelete
{
get {
if (resourceEditor.ResourceList.IsEditing || !resourceEditor.ResourceList.Focused) {
return false;
}
return resourceEditor.ResourceList.SelectedItems.Count > 0;
}
}
@ -138,6 +150,9 @@ namespace ResourceEditor @@ -138,6 +150,9 @@ namespace ResourceEditor
public bool EnableSelectAll
{
get {
if (resourceEditor.ResourceList.IsEditing || !resourceEditor.ResourceList.Focused) {
return false;
}
return true;
}
}

52
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs

@ -39,6 +39,7 @@ namespace ResourceEditor @@ -39,6 +39,7 @@ namespace ResourceEditor
UndoStack undoStack = null;
bool writeProtected = false;
int editListViewItemIndex = -1;
public event EventHandler Changed;
@ -73,12 +74,16 @@ namespace ResourceEditor @@ -73,12 +74,16 @@ namespace ResourceEditor
}
}
public bool IsEditing {
get {
return editListViewItemIndex != -1;
}
}
public ResourceList(ResourceEditorControl editor)
{
undoStack = new UndoStack();
name.Text = ResourceService.GetString("Global.Name");
name.Width = 250;
@ -110,9 +115,6 @@ namespace ResourceEditor @@ -110,9 +115,6 @@ namespace ResourceEditor
images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.obj"));
SmallImageList = images;
AfterLabelEdit += new LabelEditEventHandler(afterLabelEdit);
ContextMenuStrip = MenuService.CreateContextMenu(editor, "/SharpDevelop/ResourceEditor/ResourceList/ContextMenu");
}
@ -197,8 +199,27 @@ namespace ResourceEditor @@ -197,8 +199,27 @@ namespace ResourceEditor
}
}
void afterLabelEdit(object sender, LabelEditEventArgs e)
public void InitializeListView()
{
BeginUpdate();
Items.Clear();
foreach (KeyValuePair<string, ResourceItem> entry in resources) {
ResourceItem item = entry.Value;
string tmp = item.ToString();
string type = item.ResourceValue.GetType().FullName;
ListViewItem lv = new ListViewItem(new String[] {item.Name, type, tmp}, item.ImageIndex);
Items.Add(lv);
}
EndUpdate();
}
protected override void OnAfterLabelEdit(LabelEditEventArgs e)
{
editListViewItemIndex = -1;
if (writeProtected) {
e.CancelEdit = true;
return;
@ -226,21 +247,12 @@ namespace ResourceEditor @@ -226,21 +247,12 @@ namespace ResourceEditor
OnChanged();
}
public void InitializeListView()
protected override void OnBeforeLabelEdit(LabelEditEventArgs e)
{
BeginUpdate();
Items.Clear();
foreach (KeyValuePair<string, ResourceItem> entry in resources) {
ResourceItem item = entry.Value;
string tmp = item.ToString();
string type = item.ResourceValue.GetType().FullName;
ListViewItem lv = new ListViewItem(new String[] {item.Name, type, tmp}, item.ImageIndex);
Items.Add(lv);
base.OnBeforeLabelEdit(e);
if (!e.CancelEdit) {
editListViewItemIndex = e.Item;
}
EndUpdate();
}
}
}

9
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaCompletionData.cs

@ -234,15 +234,12 @@ namespace ICSharpCode.XmlEditor @@ -234,15 +234,12 @@ namespace ICSharpCode.XmlEditor
/// </summary>
void ReadSchema(XmlReader reader)
{
try
{
try {
schema = XmlSchema.Read(reader, new ValidationEventHandler(SchemaValidation));
schema.Compile(new ValidationEventHandler(SchemaValidation));
namespaceUri = schema.TargetNamespace;
}
finally
{
} finally {
reader.Close();
}
}
@ -882,7 +879,7 @@ namespace ICSharpCode.XmlEditor @@ -882,7 +879,7 @@ namespace ICSharpCode.XmlEditor
} else {
// Abstract element?
XmlSchemaElement abstractElement = FindElement(element.RefName);
if (abstractElement.IsAbstract) {
if (abstractElement != null && abstractElement.IsAbstract) {
matchedElement = FindSubstitutionGroupElement(abstractElement.QualifiedName, name);
}
}

2
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -126,4 +126,4 @@ @@ -126,4 +126,4 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>
</Project>

56
src/AddIns/DisplayBindings/XmlEditor/Test/Schema/MissingSchemaElementTestFixture.cs

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.TextEditor.Gui.CompletionWindow;
using ICSharpCode.XmlEditor;
using NUnit.Framework;
using System;
using System.IO;
namespace XmlEditor.Tests.Schema
{
[TestFixture]
public class MissingSchemaElementTestFixture : SchemaTestFixtureBase
{
ICompletionData[] barElementAttributes;
public override void FixtureInit()
{
XmlElementPath path = new XmlElementPath();
path.Elements.Add(new QualifiedName("root", "http://foo"));
path.Elements.Add(new QualifiedName("bar", "http://foo"));
barElementAttributes = SchemaCompletionData.GetAttributeCompletionData(path);
}
[Test]
public void BarHasOneAttribute()
{
Assert.AreEqual(1, barElementAttributes.Length, "Should have 1 attribute.");
}
protected override string GetSchema()
{
return "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\r\n" +
" targetNamespace=\"http://foo\"\r\n" +
" xmlns=\"http://foo\"\r\n" +
" elementFormDefault=\"qualified\">\r\n" +
"\t<xs:complexType name=\"root\">\r\n" +
"\t\t<xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\r\n" +
"\t\t\t<xs:element ref=\"foo\"/>\r\n" +
"\t\t\t<xs:element ref=\"bar\"/>\r\n" +
"\t\t</xs:choice>\r\n" +
"\t\t<xs:attribute name=\"id\" type=\"xs:string\" use=\"required\"/>\r\n" +
"\t</xs:complexType>\r\n" +
"\t<xs:element name=\"root\" type=\"root\"/>\r\n" +
"\t<xs:complexType name=\"bar\">\r\n" +
"\t\t<xs:attribute name=\"id\" type=\"xs:string\" use=\"required\"/>\r\n" +
"\t</xs:complexType>\r\n" +
"\t<xs:element name=\"bar\" type=\"bar\"/>\r\n" +
"</xs:schema>";
}
}
}

1
src/AddIns/DisplayBindings/XmlEditor/Test/XmlEditor.Tests.csproj

@ -89,6 +89,7 @@ @@ -89,6 +89,7 @@
<Compile Include="Schema.Uri\GetUriTestFixture.cs" />
<Compile Include="Schema\AbstractElementTestFixture.cs" />
<Compile Include="Utils\SchemaIncludeTestFixtureHelper.cs" />
<Compile Include="Schema\MissingSchemaElementTestFixture.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Schema\" />

5
src/AddIns/Misc/CodeCoverage/Project/Src/NCoverRunner.cs

@ -267,7 +267,10 @@ namespace ICSharpCode.CodeCoverage @@ -267,7 +267,10 @@ namespace ICSharpCode.CodeCoverage
}
ncoverArguments.AppendFormat("\"{0}\" ", profiledApplicationCommand);
ncoverArguments.Append(profiledApplicationCommandLineArguments);
//ncoverArguments.Append(profiledApplicationCommandLineArguments);
// HACK: Work around NCover bug: http://ncover.org/SITE/forums/thread/266.aspx
ncoverArguments.Append(profiledApplicationCommandLineArguments.Replace("\"", "\\\""));
return ncoverArguments.ToString();
}

2
src/AddIns/Misc/UnitTesting/Src/PadContent.cs

@ -127,7 +127,7 @@ namespace ICSharpCode.UnitTesting @@ -127,7 +127,7 @@ namespace ICSharpCode.UnitTesting
{
if (autoLoadItems) {
if (callback != null)
callback();
WorkbenchSingleton.SafeThreadAsyncCall(callback);
} else {
ReloadAssemblyList(callback);
}

20
src/Main/Base/Project/Src/Commands/SideBarCommands.cs

@ -35,9 +35,6 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -35,9 +35,6 @@ namespace ICSharpCode.SharpDevelop.Commands
{
SharpDevelopSideBar sideBar = (SharpDevelopSideBar)Owner;
AxSideTabItem item = sideBar.ActiveTab.ChoosedItem;
if (item != null && MessageBox.Show(StringParser.Parse(ResourceService.GetString("SideBarComponent.ContextMenu.DeleteTabItemQuestion"), new string[,] { {"TabItem", item.Name}}),
ResourceService.GetString("Global.QuestionText"),
MessageBoxButtons.YesNo,
@ -128,15 +125,12 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -128,15 +125,12 @@ namespace ICSharpCode.SharpDevelop.Commands
{
SharpDevelopSideBar sideBar = (SharpDevelopSideBar)Owner;
AxSideTab selectedSideTab = sideBar.GetTabAt(sideBar.SideBarMousePosition.X, sideBar.SideBarMousePosition.Y);
if (MessageBox.Show(StringParser.Parse(ResourceService.GetString("SideBarComponent.ContextMenu.DeleteTabHeaderQuestion"), new string[,] { {"TabHeader", selectedSideTab.Name}}),
ResourceService.GetString("Global.QuestionText"),
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2) == DialogResult.Yes) {
sideBar.Tabs.Remove(selectedSideTab);
sideBar.DeleteSideTab(selectedSideTab);
sideBar.Refresh();
}
}
@ -156,11 +150,9 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -156,11 +150,9 @@ namespace ICSharpCode.SharpDevelop.Commands
public override void Run()
{
SharpDevelopSideBar sideBar = (SharpDevelopSideBar)Owner;
int index = sideBar.ActiveTab.Items.IndexOf(sideBar.ActiveTab.SelectedItem);
int index = sideBar.ActiveTab.Items.IndexOf(sideBar.ActiveTab.ChoosedItem);
if (index > 0) {
AxSideTabItem item = sideBar.ActiveTab.Items[index];
sideBar.ActiveTab.Items[index] = sideBar.ActiveTab.Items[index - 1];
sideBar.ActiveTab.Items[index - 1] = item;
sideBar.ActiveTab.Exchange(index -1, index);
sideBar.Refresh();
}
}
@ -171,11 +163,9 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -171,11 +163,9 @@ namespace ICSharpCode.SharpDevelop.Commands
public override void Run()
{
SharpDevelopSideBar sideBar = (SharpDevelopSideBar)Owner;
int index = sideBar.ActiveTab.Items.IndexOf(sideBar.ActiveTab.SelectedItem);
int index = sideBar.ActiveTab.Items.IndexOf(sideBar.ActiveTab.ChoosedItem);
if (index >= 0 && index < sideBar.ActiveTab.Items.Count - 1) {
AxSideTabItem item = sideBar.ActiveTab.Items[index];
sideBar.ActiveTab.Items[index] = sideBar.ActiveTab.Items[index + 1];
sideBar.ActiveTab.Items[index + 1] = item;
sideBar.ActiveTab.Exchange(index, index + 1);
sideBar.Refresh();
}
}

2
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs

@ -115,7 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -115,7 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
#region Label edit
protected bool canLabelEdit = true;
protected bool canLabelEdit = false;
public virtual bool CanLabelEdit {
get {
return canLabelEdit;

17
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs

@ -139,21 +139,24 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -139,21 +139,24 @@ namespace ICSharpCode.SharpDevelop.Gui
if (node == null) {
return;
}
node.EnsureVisible();
SelectedNode = node;
LabelEdit = true;
node.BeforeLabelEdit();
node.BeginEdit();
if (node.CanLabelEdit) {
node.EnsureVisible();
SelectedNode = node;
LabelEdit = true;
node.BeforeLabelEdit();
node.BeginEdit();
}
}
protected override bool ProcessDialogKey(Keys keyData)
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData) {
case Keys.F2:
StartLabelEdit(SelectedNode as ExtTreeNode);
break;
}
return base.ProcessDialogKey(keyData);
return base.ProcessCmdKey(ref msg, keyData);
}
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e)

141
src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTab.cs

@ -20,11 +20,74 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -20,11 +20,74 @@ namespace ICSharpCode.SharpDevelop.Gui
Dragged
}
public delegate void SideTabEventHandler(object source, SideTabEventArgs e);
public class SideTabEventArgs
{
AxSideTab tab;
public SideTabEventArgs(AxSideTab tab)
{
this.tab = tab;
}
public AxSideTab SideTab {
get {
return tab;
}
}
}
public delegate void SideTabItemEventHandler(object source, SideTabItemEventArgs e);
public class SideTabItemEventArgs
{
AxSideTabItem item;
public SideTabItemEventArgs(AxSideTabItem item)
{
this.item = item;
}
public AxSideTabItem Item {
get {
return item;
}
}
}
public delegate void SideTabItemExchangeEventHandler(object source, SideTabItemExchangeEventArgs e);
public class SideTabItemExchangeEventArgs
{
AxSideTabItem item1;
AxSideTabItem item2;
public SideTabItemExchangeEventArgs(AxSideTabItem item1, AxSideTabItem item2)
{
this.item1 = item1;
this.item2 = item2;
}
public AxSideTabItem Item1 {
get {
return item1;
}
}
public AxSideTabItem Item2 {
get {
return item2;
}
}
}
public class AxSideTab
{
string name;
bool canDragDrop = true;
bool canBeDeleted = true;
bool canBeRenamed = true;
bool isClipboardRing = false;
SideTabItemCollection items = new SideTabItemCollection();
SideTabStatus sideTabStatus;
@ -83,7 +146,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -83,7 +146,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public bool CanBeDeleted {
public bool CanBeDeleted {
get {
return canBeDeleted;
}
@ -92,6 +155,15 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -92,6 +155,15 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public bool CanBeRenamed {
get {
return canBeRenamed;
}
set {
canBeRenamed = value;
}
}
public string Name {
get {
return name;
@ -166,6 +238,16 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -166,6 +238,16 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
/// <summary>
/// A SideTabItem has been removed.
/// </summary>
public event SideTabItemEventHandler ItemRemoved;
/// <summary>
/// Two SideTabItems have exchanged locations.
/// </summary>
public event SideTabItemExchangeEventHandler ItemsExchanged;
public ISideTabItemFactory SideTabItemFactory {
get {
return items.SideTabItemFactory;
@ -187,14 +269,17 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -187,14 +269,17 @@ namespace ICSharpCode.SharpDevelop.Gui
public AxSideTab(AxSideBar sideBar, string name) : this(sideBar.SideTabItemFactory)
{
this.name = name;
SetCanRename();
items.ItemRemoved += OnSideTabItemRemoved;
}
public AxSideTab(string name)
{
this.name = name;
SetCanRename();
items.ItemRemoved += OnSideTabItemRemoved;
}
public bool ScrollDownButtonActivated {
get {
return scrollIndex > 0;
@ -261,11 +346,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -261,11 +346,13 @@ namespace ICSharpCode.SharpDevelop.Gui
{
return GetItemAt(pos.X, pos.Y);
}
public int ItemHeight {
get {
return 20;
}
}
public void DrawTabContent(Graphics g, Font f, Rectangle rectangle)
{
for (int i = 0; i + ScrollIndex < Items.Count; ++i) {
@ -280,11 +367,46 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -280,11 +367,46 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
/// <summary>
/// Swaps two side tab items with the given indexes.
/// </summary>
public void Exchange(int a, int b)
{
AxSideTabItem itemA = Items[a];
AxSideTabItem itemB = Items[b];
Items[a] = itemB;
Items[b] = itemA;
OnExchange(itemA, itemB);
}
void SetCanRename()
{
if (name != null && name.StartsWith("${res:")) {
canBeRenamed = false;
}
}
void OnSideTabItemRemoved(object source, SideTabItemEventArgs e)
{
if (ItemRemoved != null) {
ItemRemoved(this, e);
}
}
void OnExchange(AxSideTabItem item1, AxSideTabItem item2)
{
if (ItemsExchanged != null) {
ItemsExchanged(this, new SideTabItemExchangeEventArgs(item1, item2));
}
}
public class SideTabItemCollection : ICollection, IEnumerable
{
ArrayList list = new ArrayList();
ISideTabItemFactory sideTabItemFactory = new DefaultSideTabItemFactory();
public event SideTabItemEventHandler ItemRemoved;
public ISideTabItemFactory SideTabItemFactory {
get {
return sideTabItemFactory;
@ -399,11 +521,24 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -399,11 +521,24 @@ namespace ICSharpCode.SharpDevelop.Gui
public virtual void Remove(AxSideTabItem item)
{
list.Remove(item);
OnItemRemoved(item);
}
public virtual void RemoveAt(int index)
{
list.RemoveAt(index);
if (index < 0 || index >= list.Count) {
return;
}
AxSideTabItem item = this[index];
list.Remove(item);
OnItemRemoved(item);
}
void OnItemRemoved(AxSideTabItem item)
{
if (ItemRemoved != null) {
ItemRemoved(this, new SideTabItemEventArgs(item));
}
}
}
}

20
src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTabItem.cs

@ -27,6 +27,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -27,6 +27,8 @@ namespace ICSharpCode.SharpDevelop.Gui
object tag;
SideTabItemStatus sideTabItemStatus;
Bitmap icon;
bool canBeRenamed = true;
bool canBeDeleted = true;
public Bitmap Icon {
get {
@ -64,6 +66,24 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -64,6 +66,24 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public bool CanBeRenamed {
get {
return canBeRenamed;
}
set {
canBeRenamed = value;
}
}
public bool CanBeDeleted {
get {
return canBeDeleted;
}
set {
canBeDeleted = value;
}
}
public AxSideTabItem(string name)
{
int idx = name.IndexOf("\n");

61
src/Main/Base/Project/Src/Gui/Components/SideBar/SharpDevelopSideBar.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return new SharpDevelopSideTabItem(name, tag, bitmap);
}
}
public class SharpDevelopSideBar : AxSideBar, IOwnerState
{
readonly static string contextMenuPath = "/SharpDevelop/Workbench/SharpDevelopSideBar/ContextMenu";
@ -62,7 +62,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -62,7 +62,8 @@ namespace ICSharpCode.SharpDevelop.Gui
CanMoveDown = 2,
TabCanBeDeleted = 4,
CanMoveItemUp = 8,
CanMoveItemDown = 16
CanMoveItemDown = 16,
CanBeRenamed = 32
}
protected SidebarState internalState = SidebarState.TabCanBeDeleted;
@ -172,17 +173,55 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -172,17 +173,55 @@ namespace ICSharpCode.SharpDevelop.Gui
System.Diagnostics.Debug.Assert(false, "Can't find clipboard ring side tab category");
}
public void DeleteSideTab(AxSideTab tab)
{
if (tab == null) {
return;
}
Tabs.Remove(tab);
OnSideTabDeleted(tab);
}
////////////////////////////////////////////////////////////////////////////
// Tab Context Menu
void SetDeletedState(AxSideTab tab)
void SetDeletedState(AxSideTabItem item)
{
if (tab.CanBeDeleted) {
if (item != null) {
SetDeletedState(item.CanBeDeleted);
} else {
SetDeletedState(false);
}
}
void SetDeletedState(bool canBeDeleted)
{
if (canBeDeleted) {
internalState |= SidebarState.TabCanBeDeleted;
} else {
internalState = internalState & ~SidebarState.TabCanBeDeleted;
}
}
void SetRenameState(AxSideTabItem item)
{
if (item != null) {
SetRenameState(item.CanBeRenamed);
} else {
SetRenameState(false);
}
}
void SetRenameState(bool canBeRenamed)
{
if (canBeRenamed) {
internalState |= SidebarState.CanBeRenamed;
} else {
internalState = internalState & ~SidebarState.CanBeRenamed;
}
}
void SetContextMenu(object sender, MouseEventArgs e)
{
@ -192,7 +231,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -192,7 +231,8 @@ namespace ICSharpCode.SharpDevelop.Gui
if (index >= 0) {
AxSideTab tab = Tabs[index];
SetDeletedState(tab);
SetDeletedState(tab.CanBeDeleted);
SetRenameState(tab.CanBeRenamed);
if (index > 0) {
internalState |= SidebarState.CanMoveUp;
@ -240,7 +280,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -240,7 +280,8 @@ namespace ICSharpCode.SharpDevelop.Gui
if (e.Button == MouseButtons.Right) {
// set moveup/down states correctly
SetDeletedState(ActiveTab);
SetDeletedState(ActiveTab.SelectedItem);
SetRenameState(ActiveTab.SelectedItem);
int index = ActiveTab.Items.IndexOf(ActiveTab.SelectedItem);
if (index > 0) {
@ -329,5 +370,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -329,5 +370,13 @@ namespace ICSharpCode.SharpDevelop.Gui
return el;
}
void OnSideTabDeleted(AxSideTab tab)
{
if (SideTabDeleted != null) {
SideTabDeleted(this, new SideTabEventArgs(tab));
}
}
public event SideTabEventHandler SideTabDeleted;
}
}

7
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs

@ -149,14 +149,17 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -149,14 +149,17 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
ConfigurationGuiBinding debugInfoBinding;
protected ChooseStorageLocationButton advancedLocationButton;
protected void InitAdvanced()
protected void InitDebugInfo()
{
debugInfoBinding = helper.BindEnum<DebugSymbolType>("debugInfoComboBox", "DebugType");
debugInfoBinding.CreateLocationButton("debugInfoLabel");
DebugSymbolsLoaded(null, null);
helper.Loaded += DebugSymbolsLoaded;
helper.Saved += DebugSymbolsSave;
}
protected void InitAdvanced()
{
ConfigurationGuiBinding b;
b = helper.BindBoolean("registerCOMInteropCheckBox", "RegisterForComInterop", false);
b.DefaultLocation = PropertyStorageLocations.PlatformSpecific;

2
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/COMReferencePanel.cs

@ -74,7 +74,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -74,7 +74,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void PopulateListView()
{
foreach (TypeLibrary typeLib in TypeLibrary.Libraries) {
ListViewItem newItem = new ListViewItem(new string[] { typeLib.Name, typeLib.Path });
ListViewItem newItem = new ListViewItem(new string[] { typeLib.Description, typeLib.Path });
newItem.Tag = typeLib;
Items.Add(newItem);
}

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

@ -24,6 +24,13 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -24,6 +24,13 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public class AddExistingItemsToProject : AbstractMenuCommand
{
enum ReplaceExistingFile {
Yes = 0,
YesToAll = 1,
No = 2,
Cancel = 3
}
int GetFileFilterIndex(IProject project, string[] fileFilters)
{
if (project != null) {
@ -57,6 +64,9 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -57,6 +64,9 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
continue;
string virtualFullName = Path.Combine(project.Directory, fileItem.VirtualName);
if (FileUtility.IsBaseDirectory(directoryName, virtualFullName)) {
if (item.ItemType == ItemType.Folder && FileUtility.IsEqualFileName(directoryName, virtualFullName)) {
continue;
}
LoggingService.Debug("Found file " + virtualFullName);
FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType);
if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) {
@ -99,22 +109,21 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -99,22 +109,21 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(fileName));
if (!FileUtility.IsEqualFileName(fileName, copiedFileName)) {
File.Copy(fileName, copiedFileName, true);
FileNode newNode = new FileNode(copiedFileName);
newNode.AddTo(node);
if (includeInProject) {
return IncludeFileInProject.IncludeFileNode(newNode);
}
} else if (includeInProject) {
}
if (includeInProject) {
FileNode fileNode;
foreach (TreeNode childNode in node.AllNodes) {
if (childNode is FileNode) {
fileNode = (FileNode)childNode;
if (FileUtility.IsEqualFileName(fileNode.FileName, copiedFileName)) {
return IncludeFileInProject.IncludeFileNode(fileNode);
if (fileNode.FileNodeStatus == FileNodeStatus.Missing) {
fileNode.FileNodeStatus = FileNodeStatus.InProject;
}
return fileNode.ProjectItem as FileProjectItem;
}
}
}
fileNode = new FileNode(fileName);
fileNode = new FileNode(copiedFileName);
fileNode.AddTo(node);
return IncludeFileInProject.IncludeFileNode(fileNode);
}
@ -205,7 +214,24 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -205,7 +214,24 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
return;
}
}
bool replaceAll = false;
foreach (KeyValuePair<string, string> pair in fileNames) {
copiedFileName = Path.Combine(node.Directory, Path.GetFileName(pair.Key));
if (!replaceAll && File.Exists(copiedFileName) && !FileUtility.IsEqualFileName(pair.Key, copiedFileName)) {
ReplaceExistingFile res = (ReplaceExistingFile)MessageService.ShowCustomDialog(fdiag.Title, "A file with the name '" + Path.GetFileName(pair.Key) + "' already exists. Do you want to replace it?",
0, 3,
"${res:Global.Yes}",
"Yes to All",
"${res:Global.No}",
"${res:Global.CancelButtonText}");
if (res == ReplaceExistingFile.YesToAll) {
replaceAll = true;
} else if (res == ReplaceExistingFile.No) {
continue;
} else if (res == ReplaceExistingFile.Cancel) {
break;
}
}
FileProjectItem item = CopyFile(pair.Key, node, true);
if (item != null) {
item.DependentUpon = pair.Value;

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

@ -30,17 +30,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -30,17 +30,6 @@ namespace ICSharpCode.SharpDevelop.Project
string toolbarAddinTreePath = null;
protected bool autoClearNodes = true;
protected bool canLabelEdited = true;
/// <returns>
/// True, if this node can be label edited, false otherwise.
/// </returns>
public bool CanLabelEdited {
get {
return canLabelEdited;
}
}
public virtual string ToolbarAddinTreePath {
get {

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

@ -244,11 +244,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -244,11 +244,13 @@ namespace ICSharpCode.SharpDevelop.Project
{
sortOrder = 1;
SetIcon();
canLabelEdit = true;
}
public DirectoryNode(string directory) : this(directory, FileNodeStatus.None)
{
sortOrder = 1;
canLabelEdit = true;
}
CustomNode removeMe = null;
public DirectoryNode(string directory, FileNodeStatus fileNodeStatus)
@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project
removeMe.AddTo(this);
SetIcon();
canLabelEdit = true;
}
/// <summary>
@ -482,14 +485,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -482,14 +485,15 @@ namespace ICSharpCode.SharpDevelop.Project
if (!FileService.CheckDirectoryName(newName)) {
return;
}
if (String.Compare(Text, newName, true) == 0) {
return;
}
string oldText = Text;
Text = newName;
if (Directory != null) {
string newPath = Path.Combine(Path.GetDirectoryName(Directory), newName);
if (System.IO.Directory.Exists(newPath)) {
if (System.IO.Directory.GetFiles(Directory).Length == 0) {
System.IO.Directory.Delete(Directory);
} else if (System.IO.Directory.GetFiles(newPath).Length == 0) {
if (System.IO.Directory.GetFileSystemEntries(newPath).Length == 0) {
System.IO.Directory.Delete(newPath);
FileService.RenameFile(Directory, newPath, true);
} else {
@ -575,7 +579,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -575,7 +579,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (File.Exists(clipboardObject.FileName)) {
CopyFileHere(clipboardObject.FileName, clipboardObject.PerformMove);
if (clipboardObject.PerformMove) {
dataObject.SetData(null);
Clipboard.Clear();
}
}
} else if (dataObject.GetDataPresent(typeof(DirectoryNode))) {
@ -584,7 +588,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -584,7 +588,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (System.IO.Directory.Exists(clipboardObject.FileName)) {
CopyDirectoryHere(clipboardObject.FileName, clipboardObject.PerformMove);
if (clipboardObject.PerformMove) {
dataObject.SetData(null);
Clipboard.Clear();
}
}
}
@ -667,6 +671,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -667,6 +671,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnableCopy {
get {
if (IsEditing) {
return false;
}
return true;
}
}
@ -677,6 +684,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -677,6 +684,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnableCut {
get {
if (IsEditing) {
return false;
}
return true;
}
}

13
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project
string fileName = String.Empty;
FileNodeStatus fileNodeStatus = FileNodeStatus.None;
ProjectItem projectItem = null;
public override bool Visible {
get {
return ShowAll || fileNodeStatus != FileNodeStatus.None;
@ -112,11 +112,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -112,11 +112,13 @@ namespace ICSharpCode.SharpDevelop.Project
autoClearNodes = false;
SetIcon();
canLabelEdit = true;
}
public FileNode(string fileName) : this (fileName, FileNodeStatus.None)
{
sortOrder = 5;
canLabelEdit = true;
}
public override void ActivateItem()
@ -216,6 +218,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -216,6 +218,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnableCopy {
get {
if (base.IsEditing) {
return false;
}
return true;
}
}
@ -227,6 +232,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -227,6 +232,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnableCut {
get {
if (IsEditing) {
return false;
}
return true;
}
}
@ -240,6 +248,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -240,6 +248,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnablePaste {
get {
if (IsEditing) {
return false;
}
return ((ExtTreeNode)Parent).EnablePaste;
}
}

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs

@ -109,6 +109,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -109,6 +109,9 @@ namespace ICSharpCode.SharpDevelop.Project
public override bool EnableCut {
get {
if (IsEditing) {
return false;
}
return true;
}
}

1
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs

@ -60,6 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -60,6 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project
public SolutionFolderNode(Solution solution, SolutionFolder folder)
{
sortOrder = 0;
canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode";
this.solution = solution;

1
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs

@ -35,6 +35,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -35,6 +35,7 @@ namespace ICSharpCode.SharpDevelop.Project
public SolutionItemNode(Solution solution, SolutionItem item)
{
sortOrder = 2;
canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionItemNode";

1
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs

@ -39,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -39,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project
this.solution = solution;
Text = "Solution " + solution.Name;
autoClearNodes = false;
canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode";

18
src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs

@ -100,5 +100,23 @@ namespace ICSharpCode.SharpDevelop.Project @@ -100,5 +100,23 @@ namespace ICSharpCode.SharpDevelop.Project
Include,
Properties);
}
public override string FileName {
get {
try {
if (Project != null && Project.OutputAssemblyFullPath != null) {
string outputFolder = Path.GetDirectoryName(Project.OutputAssemblyFullPath);
string interopFileName = Path.Combine(outputFolder, String.Concat("Interop.", Include, ".dll"));
if (File.Exists(interopFileName)) {
return interopFileName;
}
}
}
catch (Exception) { }
return Include;
}
set {
}
}
}
}

136
src/Main/Base/Project/Src/Project/Items/TypeLibrary.cs

@ -7,16 +7,17 @@ @@ -7,16 +7,17 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using Microsoft.Win32;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Description of TypeLibrary.
/// </summary>
public class TypeLibrary
{
string name;
string description;
string path;
string guid;
string version;
@ -43,10 +44,19 @@ namespace ICSharpCode.SharpDevelop.Project @@ -43,10 +44,19 @@ namespace ICSharpCode.SharpDevelop.Project
public string Name {
get {
if (name == null) {
name = GetTypeLibName();
}
return name;
}
}
public string Description {
get {
return description;
}
}
public string Path {
get {
return path;
@ -90,40 +100,40 @@ namespace ICSharpCode.SharpDevelop.Project @@ -90,40 +100,40 @@ namespace ICSharpCode.SharpDevelop.Project
public static IEnumerable<TypeLibrary> Libraries {
get {
RegistryKey typelibsKey = Registry.ClassesRoot.OpenSubKey("TypeLib");
foreach (string typelibKeyName in typelibsKey.GetSubKeyNames()) {
RegistryKey typelibKey = typelibsKey.OpenSubKey(typelibKeyName);
if (typelibKey == null) {
RegistryKey typeLibsKey = Registry.ClassesRoot.OpenSubKey("TypeLib");
foreach (string typeLibKeyName in typeLibsKey.GetSubKeyNames()) {
RegistryKey typeLibKey = typeLibsKey.OpenSubKey(typeLibKeyName);
if (typeLibKey == null) {
continue;
}
TypeLibrary lib = Create(typelibKey);
if (lib != null && lib.Name != null && lib.Path != null && lib.Name.Length > 0 && lib.Path.Length > 0) {
TypeLibrary lib = Create(typeLibKey);
if (lib != null && lib.Description != null && lib.Path != null && lib.Description.Length > 0 && lib.Path.Length > 0) {
yield return lib;
}
}
}
}
static TypeLibrary Create(RegistryKey typelibKey)
static TypeLibrary Create(RegistryKey typeLibKey)
{
string[] versions = typelibKey.GetSubKeyNames();
string[] versions = typeLibKey.GetSubKeyNames();
if (versions.Length > 0) {
TypeLibrary lib = new TypeLibrary();
// Use the last version
lib.version = versions[versions.Length - 1];
RegistryKey versionKey = typelibKey.OpenSubKey(lib.version);
lib.name = (string)versionKey.GetValue(null);
lib.path = GetTypelibPath(versionKey, ref lib.lcid);
lib.guid = System.IO.Path.GetFileName(typelibKey.Name);
RegistryKey versionKey = typeLibKey.OpenSubKey(lib.version);
lib.description = (string)versionKey.GetValue(null);
lib.path = GetTypeLibPath(versionKey, ref lib.lcid);
lib.guid = System.IO.Path.GetFileName(typeLibKey.Name);
return lib;
}
return null;
}
static string GetTypelibPath(RegistryKey versionKey, ref string lcid)
static string GetTypeLibPath(RegistryKey versionKey, ref string lcid)
{
// Get the default value of the (typically) 0\win32 subkey:
string[] subkeys = versionKey.GetSubKeyNames();
@ -132,17 +142,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -132,17 +142,15 @@ namespace ICSharpCode.SharpDevelop.Project
return null;
}
for (int i = 0; i < subkeys.Length; i++) {
try {
int.Parse(subkeys[i]); // The right key is a number
int result;
if (Int32.TryParse(subkeys[i], out result)) {
lcid = subkeys[i];
RegistryKey NullKey = versionKey.OpenSubKey(subkeys[i]);
string[] subsubkeys = NullKey.GetSubKeyNames();
RegistryKey win32Key = NullKey.OpenSubKey("win32");
return win32Key == null || win32Key.GetValue(null) == null ? null : win32Key.GetValue(null).ToString();
} catch (FormatException) {
// Wrong keys don't parse til int
}
return win32Key == null || win32Key.GetValue(null) == null ? null : GetTypeLibPath(win32Key.GetValue(null).ToString());
}
}
return null;
}
@ -155,5 +163,89 @@ namespace ICSharpCode.SharpDevelop.Project @@ -155,5 +163,89 @@ namespace ICSharpCode.SharpDevelop.Project
}
return -1;
}
string GetTypeLibName()
{
string name = null;
int typeLibLcid;
if (guid != null && lcid != null && Int32.TryParse(lcid, out typeLibLcid)) {
Guid typeLibGuid = new Guid(this.guid);
name = GetTypeLibNameFromGuid(ref typeLibGuid, (short)VersionMajor, (short)VersionMinor, typeLibLcid);
}
if (name == null) {
name = GetTypeLibNameFromFile(path);
}
if (name != null) {
return name;
}
return description;
}
/// <summary>
/// Removes the trailing part of the type library filename if it
/// starts with a number.
/// </summary>
static string GetTypeLibPath(string fileName)
{
if (fileName != null) {
int index = fileName.LastIndexOf('\\');
if (index > 0 && index + 1 < fileName.Length) {
if (Char.IsDigit(fileName[index + 1])) {
return fileName.Substring(0, index);
}
}
}
return fileName;
}
static string GetTypeLibNameFromFile(string fileName)
{
if (fileName != null && fileName.Length > 0 && File.Exists(fileName)) {
ITypeLib typeLib;
if (LoadTypeLibEx(fileName, RegKind.None, out typeLib) == 0) {
try {
return Marshal.GetTypeLibName(typeLib);
} finally {
Marshal.ReleaseComObject(typeLib);
}
}
}
return null;
}
static string GetTypeLibNameFromGuid(ref Guid guid, short versionMajor, short versionMinor, int lcid)
{
ITypeLib typeLib;
if (LoadRegTypeLib(ref guid, versionMajor, versionMinor, lcid, out typeLib) == 0) {
try {
return Marshal.GetTypeLibName(typeLib);
} finally {
Marshal.ReleaseComObject(typeLib);
}
}
return null;
}
enum RegKind {
Default,
Register,
None
}
[DllImport("oleaut32.dll")]
static extern int LoadTypeLibEx([MarshalAs(UnmanagedType.BStr)] string szFile,
RegKind regkind,
out ITypeLib pptlib);
[DllImport("oleaut32.dll")]
static extern int LoadRegTypeLib(
ref Guid rguid,
short wVerMajor,
short wVerMinor,
int lcid,
out ITypeLib pptlib);
}
}

20
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
@ -54,12 +55,14 @@ namespace ICSharpCode.Core @@ -54,12 +55,14 @@ namespace ICSharpCode.Core
ProjectItem[] items = project.Items.ToArray();
ProjectService.ProjectItemAdded += OnProjectItemAdded;
ProjectService.ProjectItemRemoved += OnProjectItemRemoved;
ProjectService.EndBuild += OnEndBuild;
UpdateDefaultImports(items);
foreach (ProjectItem item in items) {
if (!initializing) return; // abort initialization
switch (item.ItemType) {
case ItemType.Reference:
case ItemType.ProjectReference:
case ItemType.COMReference:
AddReference(item as ReferenceProjectItem, false);
break;
}
@ -208,8 +211,25 @@ namespace ICSharpCode.Core @@ -208,8 +211,25 @@ namespace ICSharpCode.Core
{
ProjectService.ProjectItemAdded -= OnProjectItemAdded;
ProjectService.ProjectItemRemoved -= OnProjectItemRemoved;
ProjectService.EndBuild -= OnEndBuild;
initializing = false;
base.Dispose();
}
void OnEndBuild(object source, EventArgs e)
{
AddComReferences();
}
void AddComReferences()
{
if (project != null) {
foreach (ProjectItem item in project.Items) {
if (item.ItemType == ItemType.COMReference) {
System.Threading.ThreadPool.QueueUserWorkItem(AddReference, item as ReferenceProjectItem);
}
}
}
}
}
}

Loading…
Cancel
Save