Browse Source

Merge 3.0 to trunk.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4223 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
fa147595b3
  1. 3
      data/templates/project/VBNet/CompactFormsProject.xpt
  2. 6
      data/templates/project/VBNet/ConsoleProject.xpt
  3. 6
      data/templates/project/VBNet/ControlLibrary.xpt
  4. 6
      data/templates/project/VBNet/Direct3DProject.xpt
  5. 4
      data/templates/project/VBNet/EmptyProject.xpt
  6. 6
      data/templates/project/VBNet/FormsProject.xpt
  7. 6
      data/templates/project/VBNet/Library.xpt
  8. 6
      data/templates/project/VBNet/Service.xpt
  9. 2
      data/templates/project/VBNet/SharedAddin.xpt
  10. 6
      data/templates/project/VBNet/SharpDevelopAddin.xpt
  11. 6
      data/templates/project/VBNet/SharpDevelopMacro.xpt
  12. 23
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs
  13. 43
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/SwitchStatementConversionTestFixture.cs
  14. 18
      src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm
  15. 4
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/BuildOptions.cs
  16. 74
      src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Commands/GoToDefinition.cs
  17. 12
      src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml.cs
  18. 10
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/OverlayIconManager.cs
  19. 22
      src/AddIns/Misc/SubversionAddIn/Project/Src/SvnClientWrapper.cs
  20. 3
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ProjectReferencePanel.cs
  21. 3
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
  22. 1
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/NodeBuilder/DefaultProjectNodeBuilder.cs
  23. 3
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs
  24. 44
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs
  25. 2
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/LayoutConfiguration.cs
  26. 33
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
  27. 11
      src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs
  28. 39
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
  29. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/XmlDoc.cs

3
data/templates/project/VBNet/CompactFormsProject.xpt

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
<Subcategory>Compact Framework</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>${res:Templates.Project.WindowsApplication.Description}</Description>
<SupportedTargetFrameworks>CF 2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -20,10 +21,10 @@ @@ -20,10 +21,10 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
<PlatformFamilyName>PocketPC</PlatformFamilyName>
<PlatformID>WinCE</PlatformID>
<TargetFrameworkVersion>CF 2.0</TargetFrameworkVersion>
<StartupObject>${StandardNamespace}.MainForm</StartupObject>
</PropertyGroup>

6
data/templates/project/VBNet/ConsoleProject.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.DOSProject</Icon>
<Description>${res:Templates.Project.ConsoleProject.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -20,6 +21,10 @@ @@ -20,6 +21,10 @@
<!-- Template Content -->
<Project language = "VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
@ -36,6 +41,7 @@ @@ -36,6 +41,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<Files>

6
data/templates/project/VBNet/ControlLibrary.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.ControlLibrary</Icon>
<Description>${res:Templates.Project.UserControlLibrary.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -18,6 +19,10 @@ @@ -18,6 +19,10 @@
</Actions>
<Project language = "VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
@ -38,6 +43,7 @@ @@ -38,6 +43,7 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<Files>

6
data/templates/project/VBNet/Direct3DProject.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.FullProject</Icon>
<Description>${res:Templates.Project.Direct3DApplication.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -19,6 +20,10 @@ @@ -19,6 +20,10 @@
<!-- Template Content -->
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
@ -43,6 +48,7 @@ @@ -43,6 +48,7 @@
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<StartupObject>${StandardNamespace}.MainClass</StartupObject>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<Files>

4
data/templates/project/VBNet/EmptyProject.xpt

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
<Category>VBNet</Category>
<Icon>VBNet.Project.EmptyProject</Icon>
<Description>${res:Templates.Project.EmptyProject.Description}</Description>
<SupportedTargetFrameworks>v2.0;CF</SupportedTargetFrameworks>
</TemplateConfiguration>
<Project language = "VBNet">
@ -20,5 +21,8 @@ @@ -20,5 +21,8 @@
<Import Include="System" />
<Import Include="Microsoft.VisualBasic" />
</ProjectItems>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
</Project>
</Template>

6
data/templates/project/VBNet/FormsProject.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>${res:Templates.Project.WindowsApplication.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -19,9 +20,14 @@ @@ -19,9 +20,14 @@
<!-- Template Content -->
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ProjectItems>

6
data/templates/project/VBNet/Library.xpt

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
<Category>VBNet</Category>
<Icon>VBNet.Project.Library</Icon>
<Description>${res:Templates.Project.ClassLibrary.Description}</Description>
<SupportedTargetFrameworks>v2.0;CF 2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -17,9 +18,14 @@ @@ -17,9 +18,14 @@
</Actions>
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ProjectItems>

6
data/templates/project/VBNet/Service.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.ServiceProject</Icon>
<Description>${res:Templates.Project.WindowsService.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -18,9 +19,14 @@ @@ -18,9 +19,14 @@
</Actions>
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ProjectItems>

2
data/templates/project/VBNet/SharedAddin.xpt

@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
<Category>VBNet</Category>
<Icon>VBNet.Project.Library</Icon>
<Description>${res:Templates.Project.SharedAddin.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -33,6 +34,7 @@ @@ -33,6 +34,7 @@
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RegisterForComInterop>true</RegisterForComInterop>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<Files>

6
data/templates/project/VBNet/SharpDevelopAddin.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>SharpDevelop</Subcategory>
<Icon>VBNet.Project.ControlLibrary</Icon>
<Description>${res:Templates.Project.SharpDevelopAddin.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -19,8 +20,13 @@ @@ -19,8 +20,13 @@
</Actions>
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>Library</OutputType>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ProjectItems>

6
data/templates/project/VBNet/SharpDevelopMacro.xpt

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
<Subcategory>SharpDevelop</Subcategory>
<Icon>VBNet.Project.ControlLibrary</Icon>
<Description>${res:Templates.Project.SharpDevelopMacro.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
@ -19,8 +20,13 @@ @@ -19,8 +20,13 @@
</Actions>
<Project language="VBNet">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<PropertyGroup>
<OutputType>Library</OutputType>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ProjectItems>

23
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs

@ -1003,7 +1003,7 @@ namespace ICSharpCode.PythonBinding @@ -1003,7 +1003,7 @@ namespace ICSharpCode.PythonBinding
// Create if/elif/else body.
IncreaseIndent();
section.AcceptChildren(this, data);
CreateSwitchCaseBody(section);
DecreaseIndent();
firstSection = false;
@ -1673,6 +1673,27 @@ namespace ICSharpCode.PythonBinding @@ -1673,6 +1673,27 @@ namespace ICSharpCode.PythonBinding
label.Label.AcceptVisitor(this, null);
}
/// <summary>
/// Creates the statements inside a switch case statement.
/// </summary>
void CreateSwitchCaseBody(SwitchSection section)
{
int statementsAdded = 0;
foreach (INode node in section.Children) {
if (node is BreakStatement) {
// ignore.
} else {
statementsAdded++;
node.AcceptVisitor(this, null);
}
}
// Check for empty body.
if (statementsAdded == 0) {
AppendIndentedLine("pass");
}
}
/// <summary>
/// Gets the supported language either C# or VB.NET
/// </summary>

43
src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/SwitchStatementConversionTestFixture.cs

@ -25,29 +25,41 @@ namespace PythonBinding.Tests.Converter @@ -25,29 +25,41 @@ namespace PythonBinding.Tests.Converter
" public int Run(int i)\r\n" +
" {\r\n" +
" switch (i) {\r\n" +
" case 7:\r\n" +
" i = 4;\r\n" +
" break;\r\n" +
" case 10:\r\n" +
" return 0;\r\n" +
" case 9:\r\n" +
" return 2;\r\n" +
" case 8:\r\n" +
" break;\r\n" +
" default:\r\n" +
" return -1;\r\n" +
" }\r\n" +
" return i;\r\n" +
" }\r\n" +
"}";
string expectedPython = "class Foo(object):\r\n" +
"\tdef Run(self, i):\r\n" +
"\t\tif i == 10:\r\n" +
"\t\t\treturn 0\r\n" +
"\t\telif i == 9:\r\n" +
"\t\t\treturn 2\r\n" +
"\t\telse:\r\n" +
"\t\t\treturn -1";
" def Run(self, i):\r\n" +
" if i == 7:\r\n" +
" i = 4\r\n" +
" elif i == 10:\r\n" +
" return 0\r\n" +
" elif i == 9:\r\n" +
" return 2\r\n" +
" elif i == 8:\r\n" +
" pass\r\n" +
" else:\r\n" +
" return -1\r\n" +
" return i";
NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp);
converter.IndentString = " ";
string code = converter.Convert(csharp);
Assert.AreEqual(expectedPython, code);
Assert.AreEqual(expectedPython, code, code);
}
[Test]
@ -70,15 +82,16 @@ namespace PythonBinding.Tests.Converter @@ -70,15 +82,16 @@ namespace PythonBinding.Tests.Converter
"}";
string expectedPython = "class Foo(object):\r\n" +
"\tdef Run(self, i):\r\n" +
"\t\tif i == 10 or i == 11:\r\n" +
"\t\t\treturn 0\r\n" +
"\t\telif i == 9:\r\n" +
"\t\t\treturn 2\r\n" +
"\t\telse:\r\n" +
"\t\t\treturn -1";
" def Run(self, i):\r\n" +
" if i == 10 or i == 11:\r\n" +
" return 0\r\n" +
" elif i == 9:\r\n" +
" return 2\r\n" +
" else:\r\n" +
" return -1";
NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp);
converter.IndentString = " ";
string code = converter.Convert(csharp);
Assert.AreEqual(expectedPython, code);

18
src/AddIns/BackendBindings/VBNetBinding/Project/Resources/BuildOptions.xfrm

@ -12,19 +12,27 @@ @@ -12,19 +12,27 @@
<Anchor value="Top, Left, Right" />
<TabIndex value="0" />
<Controls>
<System.Windows.Forms.ComboBox>
<Name value="optionInferComboBox" />
<TabIndex value="8" />
<Location value="394, 125" />
<Size value="121, 21" />
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.ComboBox>
<Name value="optionCompareComboBox" />
<TabIndex value="7" />
<Location value="317, 125" />
<Size value="132, 21" />
<Location value="267, 125" />
<Size value="121, 21" />
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
</System.Windows.Forms.ComboBox>
<System.Windows.Forms.ComboBox>
<Name value="optionStrictComboBox" />
<TabIndex value="6" />
<Location value="179, 125" />
<Size value="132, 21" />
<Location value="140, 125" />
<Size value="121, 21" />
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
</System.Windows.Forms.ComboBox>
@ -32,7 +40,7 @@ @@ -32,7 +40,7 @@
<Name value="optionExplicitComboBox" />
<TabIndex value="5" />
<Location value="13, 125" />
<Size value="160, 21" />
<Size value="121, 21" />
<FormattingEnabled value="True" />
<DropDownStyle value="DropDownList" />
</System.Windows.Forms.ComboBox>

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

@ -45,6 +45,10 @@ namespace VBNetBinding.OptionPanels @@ -45,6 +45,10 @@ namespace VBNetBinding.OptionPanels
new StringPair("Binary", "Compare Binary"),
new StringPair("Text", "Compare Text"));
b.RegisterLocationButton(locationButton);
b = helper.BindStringEnum("optionInferComboBox", "OptionInfer", "Off",
new StringPair("Off", "Infer Off"),
new StringPair("On", "Infer On"));
b.RegisterLocationButton(locationButton);
InitBaseIntermediateOutputPath();
InitIntermediateOutputPath();

74
src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Commands/GoToDefinition.cs

@ -5,11 +5,12 @@ @@ -5,11 +5,12 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Project;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Forms;
using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Profiler.Controls;
using ICSharpCode.SharpDevelop;
@ -35,11 +36,11 @@ namespace ICSharpCode.Profiler.AddIn.Commands @@ -35,11 +36,11 @@ namespace ICSharpCode.Profiler.AddIn.Commands
if (selectedItem != null) {
IClass c = GetClassFromName(selectedItem.FullyQualifiedClassName);
if (c != null)
{
IMember member = GetMemberFromName(c, selectedItem.MethodName, selectedItem.Parameters);
if (member != null) {
IViewContent view = FileService.JumpToFilePosition(c.CompilationUnit.FileName, member.BodyRegion.BeginLine - 1, member.BodyRegion.BeginColumn - 1);
if (c != null) {
IEntity member = GetMemberFromName(c, selectedItem.MethodName, selectedItem.Parameters);
FilePosition position = c.ProjectContent.GetPosition(member ?? c);
if (!position.IsEmpty && !string.IsNullOrEmpty(position.FileName)) {
FileService.JumpToFilePosition(position.FileName, position.Line - 1, position.Column - 1);
}
}
}
@ -53,59 +54,56 @@ namespace ICSharpCode.Profiler.AddIn.Commands @@ -53,59 +54,56 @@ namespace ICSharpCode.Profiler.AddIn.Commands
if (name == ".ctor" || name == ".cctor") // Constructor
name = name.Replace('.', '#');
if (name.StartsWith("get_") || name.StartsWith("set_")) // Property Getter or Setter
if (name.StartsWith("get_") || name.StartsWith("set_")) {
// Property Getter or Setter
name = name.Substring(4);
foreach (IMethodOrProperty member in c.Methods)
{
if (member.Name != name)
continue;
if (member.Parameters.Count != ((parameters == null) ? 0 : parameters.Count))
continue;
bool isCorrect = true;
for (int i = 0; i < member.Parameters.Count; i++) {
if (parameters[i] != ambience.Convert(member.Parameters[i])) {
isCorrect = false;
break;
}
}
if (isCorrect)
return member;
IProperty prop = c.Properties.FirstOrDefault(p => p.Name == name);
if (prop != null)
return prop;
} else if (name.StartsWith("add_") || name.StartsWith("remove_")) {
name = name.Substring(4);
IEvent ev = c.Events.FirstOrDefault(e => e.Name == name);
if (ev != null)
return ev;
}
foreach (IMethodOrProperty member in c.Properties)
{
if (member.Name != name)
ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedTypeNames | ConversionFlags.ShowParameterNames | ConversionFlags.StandardConversionFlags;
IMethod matchWithSameName = null;
IMethod matchWithSameParameterCount = null;
foreach (IMethod method in c.Methods) {
if (method.Name != name)
continue;
if (member.Parameters.Count != ((parameters == null) ? 0 : parameters.Count))
matchWithSameName = method;
if (method.Parameters.Count != ((parameters == null) ? 0 : parameters.Count))
continue;
matchWithSameParameterCount = method;
bool isCorrect = true;
for (int i = 0; i < member.Parameters.Count; i++) {
if (parameters[i] != ambience.Convert(member.Parameters[i])) {
for (int i = 0; i < method.Parameters.Count; i++) {
if (parameters[i] != ambience.Convert(method.Parameters[i])) {
isCorrect = false;
break;
}
}
if (isCorrect)
return member;
return method;
}
return null;
return matchWithSameParameterCount ?? matchWithSameName;
}
IClass GetClassFromName(string name)
{
if (name == null)
return null;
if (ProjectService.OpenSolution == null)
return null;
foreach (IProjectContent content in ParserService.AllProjectContents)
{
foreach (IClass c in content.Classes)
{
if (name == c.FullyQualifiedName)
foreach (IProject project in ProjectService.OpenSolution.Projects) {
IProjectContent content = ParserService.GetProjectContent(project);
if (content != null) {
IClass c = content.GetClassByReflectionName(name, false);
if (c != null)
return c;
}
}

12
src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/ProfilerView.xaml.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.Profiler.AddIn.Views @@ -29,7 +29,7 @@ namespace ICSharpCode.Profiler.AddIn.Views
this.timeLine.IsEnabled = true;
this.timeLine.ValuesList.Clear();
this.timeLine.ValuesList.AddRange(this.provider.DataSets.Select(i => i.CpuUsage));
this.timeLine.ValuesList.AddRange(this.provider.DataSets.Select(i => i.CpuUsage / 100));
this.timeLine.SelectedStartIndex = 0;
this.timeLine.SelectedEndIndex = this.timeLine.ValuesList.Count;
@ -131,7 +131,7 @@ namespace ICSharpCode.Profiler.AddIn.Views @@ -131,7 +131,7 @@ namespace ICSharpCode.Profiler.AddIn.Views
string tabs = provider.GetProperty("tabs");
if (tabs != null) {
foreach (string query in tabs.SplitSeparatedString()) {
CreateTab(query, query);
CreateTab(query, query, false);
}
}
}
@ -153,6 +153,11 @@ namespace ICSharpCode.Profiler.AddIn.Views @@ -153,6 +153,11 @@ namespace ICSharpCode.Profiler.AddIn.Views
}
public TabItem CreateTab(string title, string query)
{
return CreateTab(title, query, true);
}
TabItem CreateTab(string title, string query, bool switchToNewTab)
{
TabItem newTab = new TabItem();
Button closeButton = new Button { Style = this.Resources["CloseButton"] as Style };
@ -183,7 +188,8 @@ namespace ICSharpCode.Profiler.AddIn.Views @@ -183,7 +188,8 @@ namespace ICSharpCode.Profiler.AddIn.Views
header.TextTrimming = TextTrimming.CharacterEllipsis;
header.TextWrapping = TextWrapping.NoWrap;
tabView.Items.Insert(tabView.Items.Count - 1, newTab);
tabView.SelectedItem = newTab;
if (switchToNewTab)
tabView.SelectedItem = newTab;
return newTab;
}

10
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/OverlayIconManager.cs

@ -87,6 +87,7 @@ namespace ICSharpCode.Svn @@ -87,6 +87,7 @@ namespace ICSharpCode.Svn
}
static Queue<AbstractProjectBrowserTreeNode> queue = new Queue<AbstractProjectBrowserTreeNode>();
static bool threadRunning;
public static void Enqueue(AbstractProjectBrowserTreeNode node)
{
@ -94,7 +95,8 @@ namespace ICSharpCode.Svn @@ -94,7 +95,8 @@ namespace ICSharpCode.Svn
return;
lock (queue) {
queue.Enqueue(node);
if (queue.Count == 1) {
if (!threadRunning) {
threadRunning = true;
ThreadPool.QueueUserWorkItem(Run);
}
}
@ -105,8 +107,6 @@ namespace ICSharpCode.Svn @@ -105,8 +107,6 @@ namespace ICSharpCode.Svn
if (subversionDisabled)
return;
lock (queue) {
bool wasEmpty = queue.Count == 0;
queue.Enqueue(node);
// use breadth-first search
Queue<AbstractProjectBrowserTreeNode> q = new Queue<AbstractProjectBrowserTreeNode>();
@ -122,7 +122,8 @@ namespace ICSharpCode.Svn @@ -122,7 +122,8 @@ namespace ICSharpCode.Svn
}
}
if (wasEmpty) {
if (!threadRunning) {
threadRunning = true;
ThreadPool.QueueUserWorkItem(Run);
}
}
@ -150,6 +151,7 @@ namespace ICSharpCode.Svn @@ -150,6 +151,7 @@ namespace ICSharpCode.Svn
AbstractProjectBrowserTreeNode node;
lock (queue) {
if (queue.Count == 0) {
threadRunning = false;
ClearStatusCache();
LoggingService.Debug("SVN: OverlayIconManager Thread finished");
return;

22
src/AddIns/Misc/SubversionAddIn/Project/Src/SvnClientWrapper.cs

@ -113,7 +113,6 @@ namespace ICSharpCode.Svn @@ -113,7 +113,6 @@ namespace ICSharpCode.Svn
#endregion
SvnClient client;
Dictionary<string, Status> statusCache = new Dictionary<string, Status>(StringComparer.OrdinalIgnoreCase);
public SvnClientWrapper()
{
@ -129,7 +128,6 @@ namespace ICSharpCode.Svn @@ -129,7 +128,6 @@ namespace ICSharpCode.Svn
if (client != null)
client.Dispose();
client = null;
statusCache = null;
}
#region Authorization
@ -203,7 +201,6 @@ namespace ICSharpCode.Svn @@ -203,7 +201,6 @@ namespace ICSharpCode.Svn
public void ClearStatusCache()
{
CheckNotDisposed();
statusCache.Clear();
}
public Status SingleStatus(string filename)
@ -212,29 +209,22 @@ namespace ICSharpCode.Svn @@ -212,29 +209,22 @@ namespace ICSharpCode.Svn
BeforeOperation("stat");
try {
filename = FileUtility.NormalizePath(filename);
Status result;
if (statusCache.TryGetValue(filename, out result)) {
Debug("SVN: SingleStatus retrieved from cache " + result.TextStatus);
return result;
}
SvnStatusArgs args = new SvnStatusArgs {
Revision = SvnRevision.Working,
RetrieveAllEntries = true,
RetrieveIgnoredEntries = true
RetrieveIgnoredEntries = true,
Depth = SvnDepth.Empty
};
Status result = null;
client.Status(
filename, args,
delegate (object sender, SvnStatusEventArgs e) {
string dir = e.FullPath;
Debug("SVN: SingleStatus.callback(" + dir + "," + e.LocalContentStatus + ")");
Status s = new Status {
Debug("SVN: SingleStatus.callback(" + e.FullPath + "," + e.LocalContentStatus + ")");
System.Diagnostics.Debug.Assert(filename.Equals(e.FullPath, StringComparison.OrdinalIgnoreCase));
result = new Status {
Copied = e.LocalCopied,
TextStatus = ToStatusKind(e.LocalContentStatus)
};
statusCache[dir] = s;
if (StringComparer.OrdinalIgnoreCase.Equals(filename, dir)) {
result = s;
}
}
);
if (result != null) {

3
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ProjectReferencePanel.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
@ -57,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -57,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return;
}
foreach (IProject project in ProjectService.OpenSolution.Projects) {
foreach (IProject project in ProjectService.OpenSolution.Projects.OrderBy(p => p.Name, StringComparer.OrdinalIgnoreCase)) {
ListViewItem newItem = new ListViewItem(new string[] { project.Name, project.Directory });
newItem.Tag = project;
Items.Add(newItem);

3
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs

@ -280,6 +280,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser @@ -280,6 +280,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
void ProjectServiceSolutionChanged(object sender, EventArgs e)
{
classBrowserTreeView.BeginUpdate();
classBrowserTreeView.Nodes.Clear();
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
@ -288,7 +289,9 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser @@ -288,7 +289,9 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
}
ProjectNodeBuilders.AddProjectNode(classBrowserTreeView, project);
}
classBrowserTreeView.Sort();
}
classBrowserTreeView.EndUpdate();
}
void ProjectServiceSolutionClosed(object sender, EventArgs e)

1
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/NodeBuilder/DefaultProjectNodeBuilder.cs

@ -22,7 +22,6 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser @@ -22,7 +22,6 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
{
ProjectNode prjNode = new ProjectNode(project);
prjNode.AddTo(classBrowser);
classBrowser.Sort();
return prjNode;
}
}

3
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs

@ -36,6 +36,9 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser @@ -36,6 +36,9 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
public override void UpdateParseInformation(ICompilationUnit oldUnit, ICompilationUnit unit)
{
if (!isInitialized)
return;
Dictionary<string, IClass> classDictionary = new Dictionary<string, IClass>();
Dictionary<string, bool> wasUpdatedDictionary = new Dictionary<string, bool>();

44
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

@ -26,6 +26,21 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -26,6 +26,21 @@ namespace ICSharpCode.SharpDevelop.Gui
{
readonly static string contextMenuPath = "/SharpDevelop/Workbench/OpenFileTab/ContextMenu";
AvalonDockLayout dockLayout;
public AvalonWorkbenchWindow(AvalonDockLayout dockLayout)
{
if (dockLayout == null)
throw new ArgumentNullException("dockLayout");
FocusManager.SetIsFocusScope(this, true);
this.IsFloatingAllowed = true;
this.dockLayout = dockLayout;
viewContents = new ViewContentCollection(this);
OnTitleNameChanged(this, EventArgs.Empty);
}
public bool IsDisposed { get { return false; } }
#region IOwnerState
@ -202,21 +217,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -202,21 +217,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public void SelectWindow()
{
dockLayout.DockingManager.Show(this);
}
AvalonDockLayout dockLayout;
public AvalonWorkbenchWindow(AvalonDockLayout dockLayout)
{
if (dockLayout == null)
throw new ArgumentNullException("dockLayout");
this.IsFloatingAllowed = true;
this.dockLayout = dockLayout;
viewContents = new ViewContentCollection(this);
OnTitleNameChanged(this, EventArgs.Empty);
this.SetAsActive();
}
public override void OnApplyTemplate()
@ -422,16 +423,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -422,16 +423,11 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
// Forward focus to the content.
/// <inheritdoc/>
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
protected override void FocusContent()
{
base.OnGotKeyboardFocus(e);
UIElement content = this.Content as UIElement;
if (content != null && !content.IsKeyboardFocusWithin) {
Keyboard.Focus(content);
e.Handled = true;
}
LoggingService.Debug("Trying to set focus to: " + FocusManager.GetFocusedElement(this));
Keyboard.Focus(FocusManager.GetFocusedElement(this));
LoggingService.Debug("Focus was set to: " + Keyboard.FocusedElement);
}
public override string ToString()

2
src/Main/Base/Project/Src/Gui/Workbench/Layouts/LayoutConfiguration.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -33,7 +33,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary>
public static string ConfigLayoutPath {
get {
return Path.Combine(PropertyService.ConfigDirectory, "layouts");
return Path.Combine(PropertyService.ConfigDirectory, "layouts2");
}
}

33
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -64,6 +64,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -64,6 +64,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
this.SynchronizingObject = new WpfSynchronizeInvoke(this.Dispatcher);
InitializeComponent();
InitFocusTrackingEvents();
}
protected override void OnSourceInitialized(EventArgs e)
@ -477,11 +478,43 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -477,11 +478,43 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
void InitFocusTrackingEvents()
{
#if DEBUG
this.PreviewLostKeyboardFocus += new KeyboardFocusChangedEventHandler(WpfWorkbench_PreviewLostKeyboardFocus);
this.PreviewGotKeyboardFocus += new KeyboardFocusChangedEventHandler(WpfWorkbench_PreviewGotKeyboardFocus);
#endif
}
#if DEBUG
bool toggle;
void WpfWorkbench_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
if (toggle) {
LoggingService.Debug("GotKeyboardFocus: oldFocus=" + e.OldFocus + ", newFocus=" + e.NewFocus);
if (e.NewFocus is IWorkbenchWindow)
{
}
}
}
void WpfWorkbench_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
if (toggle) {
LoggingService.Debug("LostKeyboardFocus: oldFocus=" + e.OldFocus + ", newFocus=" + e.NewFocus);
if (e.NewFocus is IWorkbenchWindow)
{
}
}
}
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (!e.Handled && e.Key == Key.D && e.KeyboardDevice.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt)) {
toggle = !toggle;
StringWriter output = new StringWriter();
output.WriteLine("Keyboard.FocusedElement = " + GetElementName(Keyboard.FocusedElement));
output.WriteLine("ActiveContent = " + GetElementName(this.ActiveContent));

11
src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs

@ -214,7 +214,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -214,7 +214,8 @@ namespace ICSharpCode.SharpDevelop.Project
}
Dictionary<ProjectBuildOptions, ICollection<IBuildable>> cachedBuildDependencies = new Dictionary<ProjectBuildOptions, ICollection<IBuildable>>();
ICollection<IBuildable> cachedBuildDependenciesForNullOptions;
public ICollection<IBuildable> GetBuildDependencies(ProjectBuildOptions buildOptions)
{
List<IBuildable> result = new List<IBuildable>();
@ -222,7 +223,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -222,7 +223,10 @@ namespace ICSharpCode.SharpDevelop.Project
result.Add(factory.GetWrapper(b));
}
lock (cachedBuildDependencies) {
cachedBuildDependencies[buildOptions] = result;
if (buildOptions != null)
cachedBuildDependencies[buildOptions] = result;
else
cachedBuildDependenciesForNullOptions = result;
}
return result;
}
@ -254,7 +258,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -254,7 +258,8 @@ namespace ICSharpCode.SharpDevelop.Project
}
if (lastCompilationPass != null && Setting == BuildOnExecuteSetting.BuildModifiedAndDependent) {
lock (cachedBuildDependencies) {
if (cachedBuildDependencies[buildOptions].OfType<Wrapper>().Any(w=>w.WasRecompiledAfter(lastCompilationPass))) {
var dependencies = buildOptions != null ? cachedBuildDependencies[buildOptions] : cachedBuildDependenciesForNullOptions;
if (dependencies.OfType<Wrapper>().Any(w=>w.WasRecompiledAfter(lastCompilationPass))) {
lastCompilationPass = null;
}
}

39
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

@ -79,6 +79,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -79,6 +79,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
// NamespaceStruct behaves like a reference type because it only consists of readonly references!
protected struct NamespaceStruct
{
public readonly List<IClass> Classes;
@ -89,6 +90,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -89,6 +90,16 @@ namespace ICSharpCode.SharpDevelop.Dom
this.Classes = new List<IClass>();
this.SubNamespaces = new List<string>();
}
public NamespaceStruct MergeWith(NamespaceStruct other)
{
NamespaceStruct newStruct = new NamespaceStruct(null);
newStruct.Classes.AddRange(this.Classes);
newStruct.Classes.AddRange(other.Classes);
newStruct.SubNamespaces.AddRange(this.SubNamespaces);
newStruct.SubNamespaces.AddRange(other.SubNamespaces);
return newStruct;
}
}
/// <summary>
@ -130,7 +141,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -130,7 +141,15 @@ namespace ICSharpCode.SharpDevelop.Dom
Dictionary<string, NamespaceStruct> oldList = namespaces[0];
d = new Dictionary<string, NamespaceStruct>(oldList.Count, language.NameComparer);
foreach (KeyValuePair<string, NamespaceStruct> pair in oldList) {
d.Add(pair.Key, pair.Value);
NamespaceStruct ns;
if (d.TryGetValue(pair.Key, out ns)) {
// we got a name conflict due to the new NameComparer.
// This happens if a C# assembly contains the namespace "a" and "A",
// and now we're trying to get a dictionary for use in VB.
d[pair.Key] = ns.MergeWith(pair.Value);
} else {
d.Add(pair.Key, pair.Value);
}
}
} else {
d = new Dictionary<string, NamespaceStruct>(language.NameComparer);
@ -351,6 +370,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -351,6 +370,7 @@ namespace ICSharpCode.SharpDevelop.Dom
void AddClassToNamespaceListInternal2(IClass addClass)
{
bool isReplacingExistingClass = false;
string fullyQualifiedName = addClass.FullyQualifiedName;
IClass oldDictionaryClass;
if (GetClasses(language).TryGetValue(fullyQualifiedName, out oldDictionaryClass)) {
@ -363,6 +383,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -363,6 +383,7 @@ namespace ICSharpCode.SharpDevelop.Dom
gcc.Set(addClass);
gcc.Set(oldDictionaryClass);
addClass = gcc;
isReplacingExistingClass = true;
}
}
@ -375,10 +396,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -375,10 +396,12 @@ namespace ICSharpCode.SharpDevelop.Dom
}
CreateNamespace(nSpace);
List<IClass> classList = GetNamespaces(this.language)[nSpace].Classes;
for (int i = 0; i < classList.Count; i++) {
if (classList[i].FullyQualifiedName == fullyQualifiedName) {
classList[i] = addClass;
return;
if (isReplacingExistingClass) {
for (int i = 0; i < classList.Count; i++) {
if (classList[i].FullyQualifiedName == fullyQualifiedName) {
classList[i] = addClass;
return;
}
}
}
classList.Add(addClass);
@ -394,7 +417,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -394,7 +417,11 @@ namespace ICSharpCode.SharpDevelop.Dom
// use the same namespaceStruct for all dictionaries
foreach (Dictionary<string, NamespaceStruct> otherDict in namespaces) {
if (otherDict == dict) continue;
otherDict.Add(nSpace, namespaceStruct);
NamespaceStruct existingNamespaceStruct;
if (otherDict.TryGetValue(nSpace, out existingNamespaceStruct))
otherDict[nSpace] = existingNamespaceStruct.MergeWith(namespaceStruct);
else
otherDict.Add(nSpace, namespaceStruct);
}
if (nSpace.Length == 0)
return;

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/XmlDoc.cs

@ -146,7 +146,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -146,7 +146,7 @@ namespace ICSharpCode.SharpDevelop.Dom
bool LoadFromBinary(string fileName, DateTime fileDate)
{
keyCacheQueue = new Queue<string>(cacheLength);
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete);
int len = (int)fs.Length;
loader = new BinaryReader(fs);
try {
@ -164,7 +164,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -164,7 +164,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
int count = loader.ReadInt32();
int indexStartPosition = loader.ReadInt32(); // go to start of index
if (indexStartPosition >= len) {
if (indexStartPosition <= 0 || indexStartPosition >= len) {
LoggingService.Error("XmlDoc: Cannot find index, cache invalid!");
return false;
}

Loading…
Cancel
Save