Browse Source

Merge branch 'newNR' of github.com:icsharpcode/SharpDevelop into newNR

pull/59/merge
Peter Forstmeier 13 years ago
parent
commit
e5beca6a84
  1. 68
      SharpDevelop.sln
  2. 50
      data/resources/StringResources.es.resx
  3. 139
      data/resources/StringResources.nl.resx
  4. 12
      data/resources/StringResources.resx
  5. 114
      data/resources/StringResources.ru.resx
  6. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  7. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  8. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs
  9. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/AbstractInlineRefactorDialog.cs
  10. 60
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs
  11. 20
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs
  12. 40
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml
  13. 290
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs
  14. 12
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs
  15. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs
  16. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs
  17. 3
      src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin
  18. 1
      src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
  19. 29
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs
  20. 4
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs
  21. 3
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs
  22. 45
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs
  23. 46
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
  24. 31
      src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs

68
SharpDevelop.sln

@ -1,10 +1,8 @@
 
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
# SharpDevelop 4.3 # SharpDevelop 5.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}"
EndProject EndProject
@ -23,8 +21,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelop", "src\Main\SharpDevelop\SharpDevelop.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelop", "src\Main\SharpDevelop\SharpDevelop.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "src\Libraries\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "src\Libraries\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"
EndProject EndProject
@ -50,20 +46,14 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Decompiler", "src\Libraries\ICSharpCode.Decompiler\ICSharpCode.Decompiler.csproj", "{984CC812-9470-4A13-AFF9-CC44068D666C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Decompiler", "src\Libraries\ICSharpCode.Decompiler\ICSharpCode.Decompiler.csproj", "{984CC812-9470-4A13-AFF9-CC44068D666C}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{39327899-ED91-4F7F-988C-4FE4E17C014D}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{39327899-ED91-4F7F-988C-4FE4E17C014D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{F208FF4F-E5D8-41D5-A7C7-B463976F156E}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{F208FF4F-E5D8-41D5-A7C7-B463976F156E}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitAddIn", "src\AddIns\VersionControl\GitAddIn\GitAddIn.csproj", "{83F15BA7-8478-4664-81BB-A82F146D88B3}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitAddIn", "src\AddIns\VersionControl\GitAddIn\GitAddIn.csproj", "{83F15BA7-8478-4664-81BB-A82F146D88B3}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\VersionControl\SubversionAddIn\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\VersionControl\SubversionAddIn\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject EndProject
@ -82,8 +72,6 @@ EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "VBBinding", "src\AddIns\BackendBindings\VBBinding\Project\VBBinding.vbproj", "{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}" Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "VBBinding", "src\AddIns\BackendBindings\VBBinding\Project\VBBinding.vbproj", "{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject EndProject
@ -92,8 +80,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{59A30AA6-D600-41AB-B7A1-9543469DBE36}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{59A30AA6-D600-41AB-B7A1-9543469DBE36}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
EndProject EndProject
@ -110,8 +96,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextTemplating", "src\AddIns\Misc\TextTemplating\Project\TextTemplating.csproj", "{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextTemplating", "src\AddIns\Misc\TextTemplating\Project\TextTemplating.csproj", "{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PackageManagement", "PackageManagement", "{87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PackageManagement", "PackageManagement", "{87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "src\AddIns\Misc\PackageManagement\Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "src\AddIns\Misc\PackageManagement\Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}"
EndProject EndProject
@ -124,8 +108,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager2", "src\AddIns\Misc\AddInManager2\Project\AddInManager2.csproj", "{60480C2F-F228-4D86-B98F-AF75A7DCEC34}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager2", "src\AddIns\Misc\AddInManager2\Project\AddInManager2.csproj", "{60480C2F-F228-4D86-B98F-AF75A7DCEC34}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Addin", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Addin\ICSharpCode.Reports.Addin.csproj", "{6FB2FE2F-4E8C-4403-99AE-0474721FFD2E}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Addin", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Addin\ICSharpCode.Reports.Addin.csproj", "{6FB2FE2F-4E8C-4403-99AE-0474721FFD2E}"
EndProject EndProject
@ -134,8 +116,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Irony", "src\AddIns\Misc\Reports\Irony\Irony.csproj", "{9F0355DD-A394-4626-A2D9-112EBD1D36A9}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Irony", "src\AddIns\Misc\Reports\Irony\Irony.csproj", "{9F0355DD-A394-4626-A2D9-112EBD1D36A9}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
EndProject EndProject
@ -150,8 +130,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{5FB020B2-B64B-4016-999A-CB8FD9274D72}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{5FB020B2-B64B-4016-999A-CB8FD9274D72}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
EndProject EndProject
@ -166,8 +144,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{D54BEB89-8CBE-475C-8BB9-836D2FD71260}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{D54BEB89-8CBE-475C-8BB9-836D2FD71260}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
EndProject EndProject
@ -182,8 +158,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{E378E217-0C0C-473F-88A2-BF9748207511}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{E378E217-0C0C-473F-88A2-BF9748207511}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{7019F43E-DFD7-4D1C-8C96-E75D55646DE7}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{7019F43E-DFD7-4D1C-8C96-E75D55646DE7}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject EndProject
@ -198,8 +172,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQuality", "src\AddIns\Analysis\CodeQuality\CodeQuality.csproj", "{D1DF9C2D-3A5E-4985-ACA4-648C604DB562}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQuality", "src\AddIns\Analysis\CodeQuality\CodeQuality.csproj", "{D1DF9C2D-3A5E-4985-ACA4-648C604DB562}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject EndProject
@ -317,6 +289,10 @@ Global
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Any CPU.Build.0 = Debug|Any CPU {7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.ActiveCfg = Release|Any CPU {7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.Build.0 = Release|Any CPU {7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.Build.0 = Release|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Release|Any CPU.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.Build.0 = Debug|Any CPU {9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -497,10 +473,6 @@ Global
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.Build.0 = Debug|Any CPU {3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.ActiveCfg = Release|Any CPU {3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.Build.0 = Release|Any CPU {3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.Build.0 = Release|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Release|Any CPU.Build.0 = Release|Any CPU
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -516,22 +488,18 @@ Global
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01} {1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{53DCA265-3C3C-42F9-B647-F72BA678122B} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{DC393B66-92ED-4CAD-AB25-CFEF23F3D7C6} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{984CC812-9470-4A13-AFF9-CC44068D666C} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C} {984CC812-9470-4A13-AFF9-CC44068D666C} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{53DCA265-3C3C-42F9-B647-F72BA678122B} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{DC393B66-92ED-4CAD-AB25-CFEF23F3D7C6} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F208FF4F-E5D8-41D5-A7C7-B463976F156E} = {39327899-ED91-4F7F-988C-4FE4E17C014D} {F208FF4F-E5D8-41D5-A7C7-B463976F156E} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{7019F43E-DFD7-4D1C-8C96-E75D55646DE7} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{83F15BA7-8478-4664-81BB-A82F146D88B3} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E} {83F15BA7-8478-4664-81BB-A82F146D88B3} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E} {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94} {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E954F3CB-A446-492F-A664-2B376EBC86E8} = {E0646C25-36F2-4524-969F-FA621353AB94} {E954F3CB-A446-492F-A664-2B376EBC86E8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{70966F84-74C9-4067-A379-0C674A929233} = {E0646C25-36F2-4524-969F-FA621353AB94} {70966F84-74C9-4067-A379-0C674A929233} = {E0646C25-36F2-4524-969F-FA621353AB94}
@ -540,27 +508,29 @@ Global
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94} {E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {E0646C25-36F2-4524-969F-FA621353AB94} {7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6D209CBB-D8C1-478A-BC30-D3FC87B7858F} = {E0646C25-36F2-4524-969F-FA621353AB94} {6D209CBB-D8C1-478A-BC30-D3FC87B7858F} = {E0646C25-36F2-4524-969F-FA621353AB94}
{F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{59A30AA6-D600-41AB-B7A1-9543469DBE36} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {59A30AA6-D600-41AB-B7A1-9543469DBE36} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {59A30AA6-D600-41AB-B7A1-9543469DBE36}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {59A30AA6-D600-41AB-B7A1-9543469DBE36}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{E2FD63DA-8478-4066-934C-DA82A852C83A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {E2FD63DA-8478-4066-934C-DA82A852C83A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {B5D8C3E6-42EC-4D4B-AD05-3644B32563EF} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} = {F3662720-9EA2-4591-BBC6-97361DCE50A9} {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{60480C2F-F228-4D86-B98F-AF75A7DCEC34} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {59A30AA6-D600-41AB-B7A1-9543469DBE36}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {59A30AA6-D600-41AB-B7A1-9543469DBE36}
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} {AE4AB0FA-6087-4480-AF37-0FA1452B3DA1} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}
{A406803B-C584-43A3-BCEE-A0BB3132CB5F} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} {A406803B-C584-43A3-BCEE-A0BB3132CB5F} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}
{752BD058-5517-48A1-BB27-5ED186FA052B} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} {752BD058-5517-48A1-BB27-5ED186FA052B} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D} {E0A5E80A-003B-4335-A9DC-A76E2E46D38D} = {87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}
{60480C2F-F228-4D86-B98F-AF75A7DCEC34} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6FB2FE2F-4E8C-4403-99AE-0474721FFD2E} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3} {6FB2FE2F-4E8C-4403-99AE-0474721FFD2E} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}
{7C3579BC-2A64-4108-82B5-3D07ADA079E7} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3} {7C3579BC-2A64-4108-82B5-3D07ADA079E7} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}
{9F0355DD-A394-4626-A2D9-112EBD1D36A9} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3} {9F0355DD-A394-4626-A2D9-112EBD1D36A9} = {4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
@ -568,25 +538,27 @@ Global
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{5FB020B2-B64B-4016-999A-CB8FD9274D72} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} {5FB020B2-B64B-4016-999A-CB8FD9274D72} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{D54BEB89-8CBE-475C-8BB9-836D2FD71260} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0CD86A0B-73BB-4E7E-B476-AB84389164B1} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E378E217-0C0C-473F-88A2-BF9748207511} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {EEF5E054-4192-4A57-8FBF-E860D808A51D} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {5FB020B2-B64B-4016-999A-CB8FD9274D72} {AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {5FB020B2-B64B-4016-999A-CB8FD9274D72}
{D54BEB89-8CBE-475C-8BB9-836D2FD71260} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260} {66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260} {9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260} {88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260} {78CC29AC-CC79-4355-B1F2-97936DF198AC} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{0CD86A0B-73BB-4E7E-B476-AB84389164B1} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E378E217-0C0C-473F-88A2-BF9748207511} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7019F43E-DFD7-4D1C-8C96-E75D55646DE7} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {1F261725-6318-4434-A1B1-6C70CE4CD324} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{44FA68C9-DAD1-4C3C-90BB-3435F0D1D128} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {44FA68C9-DAD1-4C3C-90BB-3435F0D1D128} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{D1DA3B8F-7313-4BDA-8880-461C5F007751} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {D1DA3B8F-7313-4BDA-8880-461C5F007751} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{D1DF9C2D-3A5E-4985-ACA4-648C604DB562} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7} {D1DF9C2D-3A5E-4985-ACA4-648C604DB562} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E} {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E} {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}
EndGlobalSection EndGlobalSection

50
data/resources/StringResources.es.resx

@ -229,6 +229,56 @@ Descargue un complemento de Internet, luego haga clic en 'Instalar Complemento'
<data name="AddInManager.UnknownFileFormat" xml:space="preserve"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Formato de archivo desconocido:</value> <value>Formato de archivo desconocido:</value>
</data> </data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Instalar desde archivo...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repositorio:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Buscar:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Mostrar Addins pre-instalados
</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Mostrar versión preliminar</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Versión instalada:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Remover</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Fuente:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Repositorios</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Los siguientes AddIns instalados dependen de "{0}":
{1}
Dejarán de funcionar al remover este AddIn! ¿Quiere continuar?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>AddIns de SharpDevelop |*.sdaddin;*.addin|Todos los archivos|*.*</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Disponibles</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Instalados</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Actualizaciones</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve"> <data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Este archivo contiene nuevas linea inconsistentes.</value> <value>Este archivo contiene nuevas linea inconsistentes.</value>
</data> </data>

139
data/resources/StringResources.nl.resx

@ -228,6 +228,145 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Onbekend bestandsformaat:</value> <value>Onbekend bestandsformaat:</value>
</data> </data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Installeer uit het archief...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repository:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Zoek:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Geef de voor geïnstalleerde AddIns weer</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Pre releases weergeven</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>De AddinManager kan niet verwijderd worden, omdat deze nodig is om invoegtoepassingen te her-installeren.</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>SharpDevelop AddIn Repository</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Ontworpen door:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Afhankelijkheden:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Downloads:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Bestandsnaam:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Geïnstalleerde versie:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Laatste update:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Meer informatie</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Nieuwe versie:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Waardering:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Rapporteer misbruik</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Versie:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Lezen van de licentie voorwaarden</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
{1}
Ze stoppen met werken als deze AddIn uitgeschakeld wordt. Wilt u doorgaan?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Package "{0}" heeft tenminste één toegevoegde package nodig:
{1}
De applicatie zal proberen ze te downloaden en te installeren. Wilt u doorgaan?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>De geselecteerde package bevat geen geldige SharpDevelop AddIn.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>Ik &amp;accepteer</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>Ik weiger</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Package" xml:space="preserve">
<value>Door de "Ik accepteer-accepteer-knop</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>Door de "Accepteren" knop aan te klikken gaat u akkoord met de licentie voorwaarden voor de hierboven vermelde packages.
Als u het niet eens bent met de licentie voorwaarden, klik dan de "Ik weiger" knop!</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Volgende package vereist een akkoord-klik licentie:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Packages" xml:space="preserve">
<value>De volgende packages vereisen een klik-om te-accepteren licentie:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Overeengekomen licentie voorwaarden</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Voeg toe</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Naar beneden</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Naar boven</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Naam:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Verwijderen</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Broncode:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Repositories</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
{1}
Deze stoppen met werken na verwijderen van deze AddIn.</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop AddIns|*.sdaddin;*.addin|Alle bestanden|*.*</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Beschikbaar</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Geïnstalleerd</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve"> <data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Dit bestand bevat afwijkende newlines.</value> <value>Dit bestand bevat afwijkende newlines.</value>
</data> </data>

12
data/resources/StringResources.resx

@ -4852,6 +4852,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework Extension</value> <value>.NET Framework Extension</value>
</data> </data>
<data name="ICSharpCode.WixBinding.WixNotInstalled" xml:space="preserve">
<value>WiX is not installed. Please download WiX from http://wixtoolset.org/</value>
</data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>No difference found.</value> <value>No difference found.</value>
<comment>Message displayed in the Wix diff control to indicate that no differences between the files specified in the Wix setup document and the files on the file system were found.</comment> <comment>Message displayed in the Wix diff control to indicate that no differences between the files specified in the Wix setup document and the files on the file system were found.</comment>
@ -6223,6 +6226,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve"> <data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve">
<value>Resource code generator: No resource property could be generated for resource '{0}'.</value> <value>Resource code generator: No resource property could be generated for resource '{0}'.</value>
</data> </data>
<data name="ResourceEditor.ResourceEdit.CommentColumn" xml:space="preserve">
<value>Comment</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve"> <data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve">
<value>Content</value> <value>Content</value>
</data> </data>
@ -6236,6 +6242,12 @@ Removed the end part of the original message ", reason '${Message}'" since this
<value>Copy resource name</value> <value>Copy resource name</value>
<comment>Context menu item; copies the name of the currently selcted resource item to the clipboard</comment> <comment>Context menu item; copies the name of the currently selcted resource item to the clipboard</comment>
</data> </data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditComment" xml:space="preserve">
<value>Edit comment</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditCommentText" xml:space="preserve">
<value>Enter the new text for the resource comment:</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.Rename" xml:space="preserve"> <data name="ResourceEditor.ResourceEdit.ContextMenu.Rename" xml:space="preserve">
<value>&amp;Rename</value> <value>&amp;Rename</value>
</data> </data>

114
data/resources/StringResources.ru.resx

@ -175,10 +175,10 @@
<value>Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения Плагинов!</value> <value>Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения Плагинов!</value>
</data> </data>
<data name="AddInManager.CannotInstallIntoApplicationDirectory" xml:space="preserve"> <data name="AddInManager.CannotInstallIntoApplicationDirectory" xml:space="preserve">
<value>Нельзя устанавливать плагины внутри папки ${ProductName}, так как они будут считаться предустановленными.</value> <value>Нельзя устанавливать плагины внутри папки ${ProductName},поскольку они являются предустановленными по умолчанию.</value>
</data> </data>
<data name="AddInManager.DescriptionCancelDeinstallation" xml:space="preserve"> <data name="AddInManager.DescriptionCancelDeinstallation" xml:space="preserve">
<value>Отменяет удаление выделеных плагинов.</value> <value>Отменяет деинсталляцию выделенных плагинов.</value>
</data> </data>
<data name="AddInManager.DescriptionCancelInstall" xml:space="preserve"> <data name="AddInManager.DescriptionCancelInstall" xml:space="preserve">
<value>Отменяет установку выделенных плагинов.</value> <value>Отменяет установку выделенных плагинов.</value>
@ -229,6 +229,100 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Неизвестный формат файла:</value> <value>Неизвестный формат файла:</value>
</data> </data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Установить из архива...</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Поиск:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Показать предустановленные плагины</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Вы не можете деинсталлировать Менеджер плагинов, поскольку он понадобится для инсталляции плагинов!</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Создатель:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Загрузки:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Имя файла:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Установленная версия:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Дата последнего обновления:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Подробнее:</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Новая версия:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Рейтинг:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Пожаловаться:</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Версия:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Прочитать Пользовательское соглашение</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>В выбранном объекте не содержится правильного SharpDevelop плагина.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>Принять</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>Отказаться</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Лицензионное соглашение</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Сместить вниз</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Сместить вверх</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Название:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Источник:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>Плагины</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Следующие установленные плагины зависят от "{0}":
{1}
Они перестанут работать, если удалить данный плагин! Вы уверены, что хотите продолжить?</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Доступно</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Установлено</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Обновления</value>
</data>
<data name="AddIns.ClassDiagram.ShowClassDiagram" xml:space="preserve"> <data name="AddIns.ClassDiagram.ShowClassDiagram" xml:space="preserve">
<value>Показать диаграмму классов</value> <value>Показать диаграмму классов</value>
</data> </data>
@ -1458,7 +1552,7 @@
<value>Шаблоны файлов</value> <value>Шаблоны файлов</value>
</data> </data>
<data name="Dialog.NewProject.SearchReplace.SearchStringNotFound" xml:space="preserve"> <data name="Dialog.NewProject.SearchReplace.SearchStringNotFound" xml:space="preserve">
<value>Строка не найдена</value> <value>Введенная последовательность символов не найдена</value>
</data> </data>
<data name="Dialog.NewProject.SearchReplace.SearchStringNotFound.Title" xml:space="preserve"> <data name="Dialog.NewProject.SearchReplace.SearchStringNotFound.Title" xml:space="preserve">
<value>Не найдено</value> <value>Не найдено</value>
@ -3053,6 +3147,9 @@
<data name="ICSharpCode.PythonBinding.SendSelectedTextToPythonConsole" xml:space="preserve"> <data name="ICSharpCode.PythonBinding.SendSelectedTextToPythonConsole" xml:space="preserve">
<value>Отправить в консоль Python</value> <value>Отправить в консоль Python</value>
</data> </data>
<data name="ICSharpCode.Refactoring.NoClassUnderCursorError" xml:space="preserve">
<value>В месте нахождения курсора не обнаружено определение типа.</value>
</data>
<data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve"> <data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve">
<value>Отправить строку в консоль Ruby</value> <value>Отправить строку в консоль Ruby</value>
</data> </data>
@ -3694,6 +3791,11 @@
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Обновление проекта</value> <value>Обновление проекта</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateOnLoadDueToMissingMSBuild" xml:space="preserve">
<value>Проект '${ProjectName}' ссылается на версию ${OldToolsVersion} MSBuild, но данная версия не установлена.
Хотите ли вы обновить проект до версии ${NewToolsVersion} MSBuild?
Данный проект не может бть открыт без процедуры ибновления.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Это решение было создано с помощью предыдущей версии SharpDevelop. <value>Это решение было создано с помощью предыдущей версии SharpDevelop.
Возможно, вы захотите, преобразовать его так, чтобы использовать новый язык или новые возможности framework'a.</value> Возможно, вы захотите, преобразовать его так, чтобы использовать новый язык или новые возможности framework'a.</value>
@ -4413,12 +4515,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve">
<value>Адрес</value> <value>Адрес</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.DynamicModule" xml:space="preserve">
<value>(динамический)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve">
<value>Нет загруженных символов.</value> <value>Нет загруженных символов.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve">
<value>Символы загружены.</value> <value>Символы загружены.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.InMemoryModule" xml:space="preserve">
<value>(в памяти)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve">
<value>Порядок</value> <value>Порядок</value>
</data> </data>

4
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -158,8 +158,8 @@
<Path name="/SharpDevelop/ViewContent/AvalonEdit/SnippetElementProviders"> <Path name="/SharpDevelop/ViewContent/AvalonEdit/SnippetElementProviders">
<Class id="ctor" class="CSharpBinding.Refactoring.InsertCtorSnippetRefactoring" /> <Class id="ctor" class="CSharpBinding.Refactoring.InsertCtorSnippetRefactoring" />
<!--<Class id="switch" class="CSharpBinding.Refactoring.SwitchSnippetProvider" /> <Class id="propall" class="CSharpBinding.Refactoring.CreateProperties" />
<Class id="propall" class="CSharpBinding.Refactoring.CreateProperties" />--> <!--<Class id="switch" class="CSharpBinding.Refactoring.SwitchSnippetProvider" /> -->
</Path> </Path>
<Path path = "/SharpDevelop/ViewContent/TextEditor/C#/IssueProviders"> <Path path = "/SharpDevelop/ViewContent/TextEditor/C#/IssueProviders">

6
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -87,6 +87,11 @@
<Compile Include="Src\FormsDesigner\SecondaryDisplayBinding.cs" /> <Compile Include="Src\FormsDesigner\SecondaryDisplayBinding.cs" />
<Compile Include="Src\Parser\FoldingVisitor.cs" /> <Compile Include="Src\Parser\FoldingVisitor.cs" />
<Compile Include="Src\Refactoring\AbstractInlineRefactorDialog.cs" /> <Compile Include="Src\Refactoring\AbstractInlineRefactorDialog.cs" />
<Compile Include="Src\Refactoring\CreateProperties.cs" />
<Compile Include="Src\Refactoring\CreatePropertiesCommand.cs" />
<Compile Include="Src\Refactoring\CreatePropertiesDialog.xaml.cs">
<DependentUpon>CreatePropertiesDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Refactoring\CSharpCodeGenerator.cs" /> <Compile Include="Src\Refactoring\CSharpCodeGenerator.cs" />
<Compile Include="Src\Refactoring\CSharpSyntaxIssue.cs" /> <Compile Include="Src\Refactoring\CSharpSyntaxIssue.cs" />
<Compile Include="Src\Refactoring\FieldWrapper.cs" /> <Compile Include="Src\Refactoring\FieldWrapper.cs" />
@ -212,6 +217,7 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Include="Src\Refactoring\CreatePropertiesDialog.xaml" />
<Page Include="Src\Refactoring\InsertCtorDialog.xaml" /> <Page Include="Src\Refactoring\InsertCtorDialog.xaml" />
<Page Include="Src\Refactoring\IssueOptions.xaml" /> <Page Include="Src\Refactoring\IssueOptions.xaml" />
<Page Include="Src\OptionPanels\BuildOptions.xaml" /> <Page Include="Src\OptionPanels\BuildOptions.xaml" />

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs

@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -10,15 +9,12 @@ using System.Threading;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.FormattingStrategy; using CSharpBinding.FormattingStrategy;
using CSharpBinding.Parser;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring; using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.CSharp.TypeSystem; using ICSharpCode.NRefactory.CSharp.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using CSharpBinding.Refactoring; using CSharpBinding.Refactoring;

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/AbstractInlineRefactorDialog.cs

@ -15,9 +15,7 @@ using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring; using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.Refactoring; using CSharpBinding.Refactoring;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring

60
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs

@ -3,17 +3,11 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Windows.Forms;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.SharpDevelop; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using SharpRefactoring.Gui;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring
{ {
@ -34,51 +28,27 @@ namespace CSharpBinding.Refactoring
if (textEditor == null) if (textEditor == null)
return null; return null;
IEditorUIService uiService = textEditor.GetService(typeof(IEditorUIService)) as IEditorUIService; using (textEditor.Document.OpenUndoGroup()) {
IEditorUIService uiService = textEditor.GetService(typeof(IEditorUIService)) as IEditorUIService;
if (uiService == null) if (uiService == null)
return null; return null;
ParseInformation parseInfo = ParserService.GetParseInformation(textEditor.FileName);
if (parseInfo == null)
return null;
CodeGenerator generator = parseInfo.CompilationUnit.Language.CodeGenerator;
// cannot use insertion position at this point, because it might not be
// valid, because we are still generating the elements.
// DOM is not updated
ICSharpCode.AvalonEdit.Document.TextLocation loc = context.Document.GetLocation(context.StartPosition);
IClass current = parseInfo.CompilationUnit.GetInnermostClass(loc.Line, loc.Column);
if (current == null) ITextAnchor anchor = textEditor.Document.CreateAnchor(context.InsertionPosition);
return null; anchor.MovementType = AnchorMovementType.AfterInsertion;
List<FieldWrapper> parameters = FindFields(current).Where(f => !current.Properties.Any(p => p.Name == f.PropertyName)).ToList();
if (!parameters.Any())
return null;
ITextAnchor anchor = textEditor.Document.CreateAnchor(context.InsertionPosition); // Since this snippet doesn't insert anything, fake insertion of 1 character to allow proper Ctrl+Z reaction
anchor.MovementType = AnchorMovementType.BeforeInsertion; if (context.StartPosition == context.InsertionPosition) {
textEditor.Document.Insert(context.InsertionPosition, " ");
context.InsertionPosition++;
}
CreatePropertiesDialog dialog = new CreatePropertiesDialog(context, textEditor, anchor, current, parameters); CreatePropertiesDialog dialog = new CreatePropertiesDialog(context, textEditor, anchor);
dialog.Element = uiService.CreateInlineUIElement(anchor, dialog); dialog.Element = uiService.CreateInlineUIElement(anchor, dialog);
return dialog; return dialog;
}
static IEnumerable<FieldWrapper> FindFields(IClass sourceClass)
{
int i = 0;
foreach (var f in sourceClass.Fields.Where(field => !field.IsConst
&& field.ReturnType != null)) {
yield return new FieldWrapper(f) { Index = i };
i++;
} }
} }
} }

20
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs

@ -4,23 +4,21 @@
using System; using System;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Refactoring; using ICSharpCode.SharpDevelop.Refactoring;
using SharpRefactoring.Gui;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring
{ {
public class CreatePropertiesCommand : AbstractRefactoringCommand public class CreatePropertiesCommand // : AbstractRefactoringCommand
{ {
protected override void Run(ITextEditor textEditor, RefactoringProvider provider) // protected override void Run(ITextEditor textEditor, RefactoringProvider provider)
{ // {
new Snippet { // new Snippet {
Elements = { // Elements = {
new InlineRefactorSnippetElement(context => CreateProperties.CreateDialog(context), "") // new InlineRefactorSnippetElement(context => CreateProperties.CreateDialog(context), "")
} // }
}.Insert((TextArea)textEditor.GetService(typeof(TextArea))); // }.Insert((TextArea)textEditor.GetService(typeof(TextArea)));
} // }
} }
} }

40
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml

@ -6,35 +6,6 @@
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets" xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Cursor="Arrow" KeyboardNavigation.TabNavigation="Cycle"> <Grid Cursor="Arrow" KeyboardNavigation.TabNavigation="Cycle">
<Grid.Resources>
<Style x:Key="ListViewItemFocusHighlight" TargetType="{x:Type ListViewItem}">
<!-- This style replaces the default ListViewItem template with one that highlights the focused item instead of the selected items -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<GridViewRowPresenter Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocusWithin"
Value="true">
<Setter TargetName="Bd"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@ -45,13 +16,20 @@
Text="{sd:Localize AddIns.SharpRefactoring.CreateProperties.Description}" Text="{sd:Localize AddIns.SharpRefactoring.CreateProperties.Description}"
TextWrapping="Wrap" /> TextWrapping="Wrap" />
<CheckBox x:Name="implementInterface" Margin="3" Grid.Row="1" Content="{sd:Localize AddIns.SharpRefactoring.CreateProperties.Description.ImplementINotifyPropertyChanged}" /> <CheckBox x:Name="implementInterface" Margin="3" Grid.Row="1" Content="{sd:Localize AddIns.SharpRefactoring.CreateProperties.Description.ImplementINotifyPropertyChanged}" />
<ListView x:Name="listBox" Grid.Row="2" SelectionMode="Multiple" KeyboardNavigation.TabNavigation="Cycle" ItemContainerStyle="{StaticResource ListViewItemFocusHighlight}" MaxHeight="300"> <ListView x:Name="listBox" Grid.Row="2" SelectionMode="Multiple" KeyboardNavigation.TabNavigation="Cycle" MaxHeight="300">
<ListView.View> <ListView.View>
<GridView> <GridView>
<GridViewColumn Header="{sd:Localize AddIns.SharpRefactoring.InsertCtor.VariableLabel}"> <GridViewColumn Header="{sd:Localize AddIns.SharpRefactoring.InsertCtor.VariableLabel}">
<GridViewColumn.CellTemplate> <GridViewColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<CheckBox Content="{Binding Text}" IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" /> <Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" IsChecked="{Binding IsIncluded}" VerticalAlignment="Center" Margin="0,0,3,0" />
<TextBlock Grid.Column="1" Text="{Binding Text}" />
</Grid>
</DataTemplate> </DataTemplate>
</GridViewColumn.CellTemplate> </GridViewColumn.CellTemplate>
</GridViewColumn> </GridViewColumn>

290
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs

@ -4,13 +4,19 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.NRefactory.Ast; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Refactoring;
using CSharpBinding.Parser;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring
{ {
@ -21,75 +27,231 @@ namespace CSharpBinding.Refactoring
{ {
IList<FieldWrapper> fields; IList<FieldWrapper> fields;
public CreatePropertiesDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor, IClass current, IList<FieldWrapper> availableFields) public CreatePropertiesDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor)
: base(context, editor, anchor) : base(context, editor, anchor)
{ {
InitializeComponent(); InitializeComponent();
}
protected override void Initialize()
{
base.Initialize();
this.listBox.ItemsSource = fields = availableFields; var typeResolveContext = refactoringContext.GetTypeResolveContext();
if (typeResolveContext == null) {
return;
}
var resolvedCurrent = typeResolveContext.CurrentTypeDefinition;
fields = FindFields(resolvedCurrent).ToList();
this.listBox.ItemsSource = fields;
if (!fields.Any()) if (fields.Any())
Visibility = System.Windows.Visibility.Collapsed; Visibility = System.Windows.Visibility.Visible;
implementInterface.IsChecked = !current.IsStatic && HasOnPropertyChanged(current); implementInterface.IsChecked = !resolvedCurrent.IsStatic && HasOnPropertyChanged(resolvedCurrent);
if (current.IsStatic) if (resolvedCurrent.IsStatic)
implementInterface.Visibility = System.Windows.Visibility.Collapsed; implementInterface.Visibility = System.Windows.Visibility.Collapsed;
listBox.UnselectAll(); SelectAllUnchecked();
}
static IEnumerable<FieldWrapper> FindFields(IType sourceClass)
{
int i = 0;
foreach (var f in sourceClass.GetFields().Where(field => !field.IsConst
&& field.ReturnType != null)) {
yield return new FieldWrapper(f) { Index = i };
i++;
}
} }
protected override string GenerateCode(LanguageProperties language, IClass currentClass)
protected override string GenerateCode(ITypeDefinition currentClass)
{ {
StringBuilder builder = new StringBuilder();
IDocumentLine line = editor.Document.GetLineForOffset(anchor.Offset);
string indent = DocumentUtilitites.GetWhitespaceAfter(editor.Document, line.Offset);
bool implementInterface = this.implementInterface.IsChecked == true; bool implementInterface = this.implementInterface.IsChecked == true;
bool hasOnPropertyChanged = HasOnPropertyChanged(currentClass); bool hasOnPropertyChanged = HasOnPropertyChanged(currentClass);
bool useEventArgs = false; bool useEventArgs = false;
if (implementInterface && !currentClass.IsStatic) { AstNode insertionAnchorElement = refactoringContext.GetNode();
if (!hasOnPropertyChanged) { if ((insertionAnchorElement == null) || !(insertionAnchorElement.Parent is TypeDeclaration)) {
var nodes = new List<AbstractNode>(); return null;
var rt = new GetClassReturnType(currentClass.ProjectContent, "System.ComponentModel.INotifyPropertyChanged", 0); }
if (!currentClass.ClassInheritanceTree.Any(bt => bt.FullyQualifiedName == "System.ComponentModel.INotifyPropertyChanged")) { NewLineNode newLineNode = insertionAnchorElement as NewLineNode;
int insertion = editor.Document.PositionToOffset(currentClass.BodyRegion.BeginLine, currentClass.BodyRegion.BeginColumn); while (insertionAnchorElement.PrevSibling is NewLineNode)
if (currentClass.BaseTypes.Count > 0) insertionAnchorElement = insertionAnchorElement.PrevSibling ?? insertionAnchorElement;
editor.Document.Insert(insertion, ", INotifyPropertyChanged");
else using (Script script = refactoringContext.StartScript()) {
editor.Document.Insert(insertion, " : INotifyPropertyChanged"); TypeDeclaration currentClassDeclaration = insertionAnchorElement.Parent as TypeDeclaration;
if (implementInterface && !currentClass.IsStatic) {
if (!hasOnPropertyChanged) {
var nodes = new List<AstNode>();
if (!currentClass.GetAllBaseTypeDefinitions().Any(bt => bt.FullName == "System.ComponentModel.INotifyPropertyChanged")) {
// int insertion = editor.Document.GetOffset(currentClass.BodyRegion.BeginLine, currentClass.BodyRegion.BeginColumn);
AstNode nodeBeforeClassBlock = currentClassDeclaration.LBraceToken;
if (nodeBeforeClassBlock.PrevSibling is NewLineNode) {
// There's a new line before the brace, insert before it!
nodeBeforeClassBlock = nodeBeforeClassBlock.PrevSibling;
}
int insertion = editor.Document.GetOffset(nodeBeforeClassBlock.StartLocation);
AstType interfaceTypeNode = refactoringContext.CreateShortType("System.ComponentModel", "INotifyPropertyChanged", 0);
var directBaseTypes = currentClass.DirectBaseTypes.Where(t => t.FullName != "System.Object");
// if ((directBaseTypes != null) && (directBaseTypes.Count() > 0)) {
if (currentClassDeclaration.BaseTypes.Count > 0) {
script.InsertText(insertion, ", " + interfaceTypeNode.GetText() + " ");
} else {
script.InsertText(insertion, " : " + interfaceTypeNode.GetText() + " ");
}
}
var rt = new GetClassTypeReference("System.ComponentModel", "INotifyPropertyChanged", 0);
var rtResolved = rt.Resolve(refactoringContext.Compilation);
var ev = rtResolved.GetEvents().First(e => e.Name == "PropertyChanged");
EventDeclaration propertyChangedEvent = new EventDeclaration();
propertyChangedEvent.Variables.Add(new VariableInitializer(ev.Name));
propertyChangedEvent.Modifiers = Modifiers.Public;
propertyChangedEvent.ReturnType = refactoringContext.CreateShortType(ev.ReturnType);
nodes.Add(propertyChangedEvent);
MethodDeclaration onEvent = CreateOnEventMethod(ev, currentClass);
nodes.Add(onEvent);
foreach (var node in nodes) {
script.InsertAfter(insertionAnchorElement, node);
AppendNewLine(script, insertionAnchorElement, newLineNode);
}
useEventArgs = false;
} else {
useEventArgs = currentClass.GetMethods().First(m => m.Name == "OnPropertyChanged").Parameters[0].Type.FullName != "System.String";
} }
language.CodeGenerator.ImplementInterface(nodes, rt, false, currentClass);
var ev = rt.GetEvents().First(e => e.Name == "PropertyChanged");
MethodDeclaration onEvent = language.CodeGenerator.CreateOnEventMethod(new DefaultEvent(ev.Name, ev.ReturnType, ev.Modifiers, ev.Region, ev.BodyRegion, currentClass));
nodes.Add(onEvent);
onEvent.Parameters[0].TypeReference = new TypeReference("string", true);
onEvent.Parameters[0].ParameterName = "propertyName";
((RaiseEventStatement)onEvent.Body.Children[0]).Arguments[1] = new ObjectCreateExpression(new TypeReference("PropertyChangedEventArgs"), new List<Expression> { new IdentifierExpression("propertyName") });
foreach (var node in nodes)
builder.AppendLine(language.CodeGenerator.GenerateCode(node, indent));
useEventArgs = false;
} else {
useEventArgs = currentClass.DefaultReturnType.GetMethods().First(m => m.Name == "OnPropertyChanged").Parameters[0].ReturnType.FullyQualifiedName != "System.String";
} }
}
foreach (FieldWrapper field in listBox.SelectedItems) { foreach (FieldWrapper field in fields.Where(f => f.IsIncluded)) {
var prop = language.CodeGenerator.CreateProperty(field.Field, true, field.AddSetter); var prop = CreateProperty(field.Field, true, field.AddSetter);
if (!field.Field.IsStatic && !currentClass.IsStatic && field.AddSetter && implementInterface) { if (!field.Field.IsStatic && !currentClass.IsStatic && field.AddSetter && implementInterface) {
var invocation = new ExpressionStatement(CreateInvocation(field.PropertyName, useEventArgs)); var invocation = new ExpressionStatement(CreateInvocation(field.PropertyName, useEventArgs));
var assignment = prop.SetRegion.Block.Children[0]; var assignment = prop.Setter.Body.Children.ElementAt(0) as Statement;
prop.SetRegion.Block.Children.Clear(); prop.Setter.Body = new BlockStatement();
prop.SetRegion.Block.AddChild( BlockStatement elseBlock = new BlockStatement();
new IfElseStatement( elseBlock.Add(assignment.Clone());
new BinaryOperatorExpression(new IdentifierExpression(field.MemberName), BinaryOperatorType.InEquality, new IdentifierExpression("value")), elseBlock.Add(invocation);
new BlockStatement { Children = { assignment, invocation } } prop.Setter.Body.Add(
) new IfElseStatement(
); new BinaryOperatorExpression(new IdentifierExpression(field.MemberName), BinaryOperatorType.InEquality, new IdentifierExpression("value")),
elseBlock
)
);
}
script.InsertAfter(insertionAnchorElement, prop);
AppendNewLine(script, insertionAnchorElement, newLineNode);
} }
builder.AppendLine(language.CodeGenerator.GenerateCode(prop, indent));
} }
return builder.ToString().Trim(); return null;
}
MethodDeclaration CreateOnEventMethod(IEvent e, ITypeDefinition currentClass)
{
List<ParameterDeclaration> parameters = new List<ParameterDeclaration>();
// bool sender = false;
// if (e.ReturnType != null) {
// IMethod invoke = e.ReturnType.GetMethods().SingleOrDefault(m => m.Name=="Invoke" );
// if (invoke != null) {
// foreach (IParameter param in invoke.Parameters) {
// parameters.Add(new ParameterDeclaration(ConvertType(param.Type), param.Name));
// }
// if (parameters.Count > 0 && string.Equals(parameters[0].Name, "sender", StringComparison.InvariantCultureIgnoreCase)) {
// sender = true;
// parameters.RemoveAt(0);
// }
// }
// }
parameters.Add(new ParameterDeclaration(ConvertType(KnownTypeCode.String), "propertyName"));
Modifiers modifier;
if (e.IsStatic)
modifier = Modifiers.Private | Modifiers.Static;
else if ((e.DeclaringType.GetDefinition() != null) && e.DeclaringType.GetDefinition().IsSealed)
modifier = Modifiers.Private;
else
modifier = Modifiers.Protected | Modifiers.Virtual;
MethodDeclaration method = new MethodDeclaration {
Name = "On" + e.Name,
Modifiers = ConvertModifier(modifier, currentClass),
ReturnType = ConvertType(KnownTypeCode.Void)
};
method.Parameters.AddRange(parameters);
List<Expression> arguments = new List<Expression>();
// if (sender) {
if (e.IsStatic)
arguments.Add(new PrimitiveExpression(null, "null"));
else
arguments.Add(new ThisReferenceExpression());
// }
// foreach (ParameterDeclaration param in parameters) {
// arguments.Add(new IdentifierExpression(param.Name));
// }
arguments.Add(new ObjectCreateExpression(refactoringContext.CreateShortType("System.ComponentModel", "PropertyChangedEventArgs", 0),
new List<Expression> { new IdentifierExpression("propertyName") }));
method.Body = new BlockStatement();
// method.Body.Add(new RaiseEventStatement(e.Name, arguments));
method.Body.Add(new ExpressionStatement(new InvocationExpression(new MemberReferenceExpression(new ThisReferenceExpression(), e.Name), arguments)));
return method;
}
PropertyDeclaration CreateProperty(IField field, bool createGetter, bool createSetter)
{
IProject project = field.Compilation.GetProject();
if (project == null)
return null;
CodeGenerator codeGenerator = project.LanguageBinding.CodeGenerator;
string name = codeGenerator.GetPropertyName(field.Name);
CSharpFullParseInformation tempParseInformation;
PropertyDeclaration property = new PropertyDeclaration()
{
Modifiers = ConvertModifier(field.GetDeclaration(out tempParseInformation).Modifiers, field.DeclaringTypeDefinition),
Name = name
};
property.ReturnType = ConvertType(field.ReturnType);
if (createGetter) {
property.Getter = new Accessor()
{
Body = new BlockStatement()
};
property.Getter.Body.Add(new ReturnStatement(new IdentifierExpression(field.Name)));
}
if (createSetter) {
property.Setter = new Accessor()
{
Body = new BlockStatement()
};
property.Setter.Body.Add(new AssignmentExpression(new IdentifierExpression(field.Name), new IdentifierExpression("value")));
}
property.Modifiers = Modifiers.Public | (property.Modifiers & Modifiers.Static);
return property;
}
public static Modifiers ConvertModifier(Modifiers modifiers, ITypeDefinition targetContext)
{
IProject project = targetContext.ParentAssembly.GetProject();
if (targetContext != null && project != null && targetContext.DeclaringType != null) {
// if (project.LanguageBinding.IsClassWithImplicitlyStaticMembers(targetContext.CallingClass)) {
return modifiers & ~Modifiers.Static;
// }
}
if (modifiers.HasFlag(Modifiers.Static))
modifiers &= ~(Modifiers.Abstract | Modifiers.Sealed);
return modifiers;
} }
string GetCodeFromRegion(DomRegion region) string GetCodeFromRegion(DomRegion region)
@ -99,31 +261,45 @@ namespace CSharpBinding.Refactoring
return editor.Document.GetText(startOffset, endOffset - startOffset); return editor.Document.GetText(startOffset, endOffset - startOffset);
} }
bool HasOnPropertyChanged(IClass currentClass) bool HasOnPropertyChanged(ITypeDefinition currentClass)
{ {
return currentClass.DefaultReturnType.GetMethods().Any(m => m.Name == "OnPropertyChanged"); return currentClass.GetMethods().Any(m => m.Name == "OnPropertyChanged");
} }
InvocationExpression CreateInvocation(string name, bool useEventArgs) InvocationExpression CreateInvocation(string name, bool useEventArgs)
{ {
Expression arg = useEventArgs Expression arg = useEventArgs
? (Expression)new ObjectCreateExpression(new TypeReference("PropertyChangedEventArgs"), new List<Expression> { new PrimitiveExpression(name) }) ? (Expression)new ObjectCreateExpression(refactoringContext.CreateShortType("System.ComponentModel", "PropertyChangedEventArgs", 0), new List<Expression> { new PrimitiveExpression(name) })
: (Expression)new PrimitiveExpression(name); : (Expression)new PrimitiveExpression(name);
return new InvocationExpression(new IdentifierExpression("OnPropertyChanged"), new List<Expression> { arg }); return new InvocationExpression(new IdentifierExpression("OnPropertyChanged"), new List<Expression> { arg });
} }
void SelectAllChecked()
{
foreach (var param in fields) {
param.IsIncluded = true;
}
}
void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e) void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e)
{ {
listBox.SelectAll(); SelectAllChecked();
}
void SelectAllUnchecked()
{
foreach (var param in fields) {
param.IsIncluded = false;
}
} }
void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e) void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e)
{ {
listBox.UnselectAll(); SelectAllUnchecked();
} }
bool AllSelected { bool AllSelected {
get { return listBox.SelectedItems.Count == listBox.Items.Count; } get { return fields.Count(p => p.IsIncluded) == fields.Count; }
} }
protected override void OnKeyDown(KeyEventArgs e) protected override void OnKeyDown(KeyEventArgs e)

12
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs

@ -17,6 +17,7 @@ namespace CSharpBinding.Refactoring
/// </summary> /// </summary>
readonly IField field; readonly IField field;
private string text; private string text;
bool isIncluded;
public IField Field { public IField Field {
get { return field; } get { return field; }
@ -38,6 +39,17 @@ namespace CSharpBinding.Refactoring
this.text = ambience.ConvertEntity(member); this.text = ambience.ConvertEntity(member);
} }
public bool IsIncluded
{
get {
return isIncluded;
}
set {
isIncluded = value;
OnPropertyChanged("IsIncluded");
}
}
public string MemberName { public string MemberName {
get { return field.Name; } get { return field.Name; }
} }

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs

@ -2,16 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.Refactoring; using CSharpBinding.Refactoring;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs

@ -5,7 +5,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Windows.Input; using System.Windows.Input;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;

3
src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin

@ -50,6 +50,9 @@
<MenuItem id="CopyResourceName" <MenuItem id="CopyResourceName"
label="${res:ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName}" label="${res:ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName}"
class="ResourceEditor.CopyResourceNameCommand" /> class="ResourceEditor.CopyResourceNameCommand" />
<MenuItem id="EditResourceComment"
label="${res:ResourceEditor.ResourceEdit.ContextMenu.EditComment}"
class="ResourceEditor.EditCommentCommand" />
</Condition> </Condition>
<Include id = "Delete" item = "/SharpDevelop/Workbench/MainMenu/Edit/Delete"/> <Include id = "Delete" item = "/SharpDevelop/Workbench/MainMenu/Edit/Delete"/>

1
src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj

@ -51,6 +51,7 @@
<Compile Include="Src\Commands\AddStringEntryCommand.cs" /> <Compile Include="Src\Commands\AddStringEntryCommand.cs" />
<Compile Include="Src\Commands\ClipboardCommands.cs" /> <Compile Include="Src\Commands\ClipboardCommands.cs" />
<Compile Include="Src\Commands\CopyResourceNameCommand.cs" /> <Compile Include="Src\Commands\CopyResourceNameCommand.cs" />
<Compile Include="Src\Commands\EditCommentCommand.cs" />
<Compile Include="Src\Commands\RenameEntryCommand.cs" /> <Compile Include="Src\Commands\RenameEntryCommand.cs" />
<Compile Include="Src\Commands\SaveEntryAsCommand.cs" /> <Compile Include="Src\Commands\SaveEntryAsCommand.cs" />
<Compile Include="Src\DisplayDefinition.cs" /> <Compile Include="Src\DisplayDefinition.cs" />

29
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs

@ -0,0 +1,29 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
namespace ResourceEditor
{
class EditCommentCommand : AbstractMenuCommand
{
public override void Run()
{
ResourceEditorControl editor = ((ResourceEditWrapper)SD.Workbench.ActiveViewContent).ResourceEditor;
if (editor.ResourceList.SelectedItems.Count != 0) {
var item = editor.ResourceList.SelectedItems[0].SubItems[3];
string resourceName = editor.ResourceList.SelectedItems[0].Text;
string newValue = SD.MessageService.ShowInputBox("${res:ResourceEditor.ResourceEdit.ContextMenu.EditComment}",
"${res:ResourceEditor.ResourceEdit.ContextMenu.EditCommentText}",
item.Text);
if (newValue != null && newValue != item.Text) {
editor.ResourceList.SetCommentValue(resourceName, newValue);
}
}
}
}
}

4
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs

@ -3,7 +3,7 @@
using System; using System;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop;
namespace ResourceEditor namespace ResourceEditor
{ {
@ -11,7 +11,7 @@ namespace ResourceEditor
{ {
public override void Run() public override void Run()
{ {
ResourceEditorControl editor = ((ResourceEditWrapper)WorkbenchSingleton.Workbench.ActiveViewContent).ResourceEditor; ResourceEditorControl editor = ((ResourceEditWrapper)SD.Workbench.ActiveViewContent).ResourceEditor;
if(editor.ResourceList.SelectedItems.Count != 0) { if(editor.ResourceList.SelectedItems.Count != 0) {
editor.ResourceList.SelectedItems[0].BeginEdit(); editor.ResourceList.SelectedItems[0].BeginEdit();

3
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs

@ -106,9 +106,6 @@ namespace ResourceEditor
void viewResourceChanged(object sender, ResourceEventArgs e) void viewResourceChanged(object sender, ResourceEventArgs e)
{ {
resourceList.SetResourceValue(e.ResourceName, e.ResourceValue); resourceList.SetResourceValue(e.ResourceName, e.ResourceValue);
} }
void showResource(ResourceItem item) void showResource(ResourceItem item)

45
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs

@ -3,48 +3,39 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Resources;
using System.Windows.Forms; using System.Windows.Forms;
namespace ResourceEditor namespace ResourceEditor
{ {
public class ResourceItem public class ResourceItem
{ {
string name;
object resourceValue;
public ResourceItem(string name, object resourceValue) public ResourceItem(string name, object resourceValue)
{ {
this.name = name; this.Name = name;
this.resourceValue = resourceValue; this.ResourceValue = resourceValue;
} }
public string Name public ResourceItem(string name, object resourceValue, string comment)
{ {
get { this.Name = name;
return name; this.ResourceValue = resourceValue;
} this.Comment = comment;
set {
name = value;
}
} }
public object ResourceValue public string Name { get; set; }
{
get { public object ResourceValue { get; set; }
return resourceValue;
} public string Comment { get; set; }
set {
resourceValue = value;
}
}
public int ImageIndex public int ImageIndex
{ {
get { get {
if (this.resourceValue == null) { if (this.ResourceValue == null) {
return -1; return -1;
} }
switch(this.resourceValue.GetType().ToString()) { switch(this.ResourceValue.GetType().ToString()) {
case "System.String": case "System.String":
return 0; return 0;
case "System.Drawing.Bitmap": case "System.Drawing.Bitmap":
@ -98,5 +89,13 @@ namespace ResourceEditor
} }
return tmp; return tmp;
} }
public ResXDataNode ToResXDataNode(Func<Type, string> typeNameConverter = null)
{
var node = new ResXDataNode(Name, ResourceValue, typeNameConverter) {
Comment = Comment
};
return node;
}
} }
} }

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

@ -4,6 +4,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Drawing.Printing; using System.Drawing.Printing;
using System.IO; using System.IO;
using System.Resources; using System.Resources;
@ -24,6 +25,7 @@ namespace ResourceEditor
ColumnHeader name = new ColumnHeader(); ColumnHeader name = new ColumnHeader();
ColumnHeader type = new ColumnHeader(); ColumnHeader type = new ColumnHeader();
ColumnHeader content = new ColumnHeader(); ColumnHeader content = new ColumnHeader();
ColumnHeader comment = new ColumnHeader();
Dictionary<string, ResourceItem> resources = new Dictionary<string, ResourceItem>(); Dictionary<string, ResourceItem> resources = new Dictionary<string, ResourceItem>();
Dictionary<string, ResourceItem> metadata = new Dictionary<string, ResourceItem>(); Dictionary<string, ResourceItem> metadata = new Dictionary<string, ResourceItem>();
@ -77,7 +79,10 @@ namespace ResourceEditor
content.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.ContentColumn"); content.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.ContentColumn");
content.Width = 300; content.Width = 300;
Columns.AddRange(new ColumnHeader[] {name, type, content}); comment.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.CommentColumn");
comment.Width = 300;
Columns.AddRange(new ColumnHeader[] {name, type, content, comment});
FullRowSelect = true; FullRowSelect = true;
AutoArrange = true; AutoArrange = true;
@ -107,6 +112,7 @@ namespace ResourceEditor
new IListViewItemComparer[] { new IListViewItemComparer[] {
textComparer, textComparer,
typeNameComparer, typeNameComparer,
null,
null null
}); });
sorter.SortColumnIndex = 0; sorter.SortColumnIndex = 0;
@ -136,16 +142,24 @@ namespace ResourceEditor
switch (Path.GetExtension(filename).ToLowerInvariant()) { switch (Path.GetExtension(filename).ToLowerInvariant()) {
case ".resx": case ".resx":
ResXResourceReader rx = new ResXResourceReader(stream); ResXResourceReader rx = new ResXResourceReader(stream);
ITypeResolutionService typeResolver = null;
rx.BasePath = Path.GetDirectoryName(filename); rx.BasePath = Path.GetDirectoryName(filename);
rx.UseResXDataNodes = true;
IDictionaryEnumerator n = rx.GetEnumerator(); IDictionaryEnumerator n = rx.GetEnumerator();
while (n.MoveNext()) while (n.MoveNext()) {
if (!resources.ContainsKey(n.Key.ToString())) if (!resources.ContainsKey(n.Key.ToString())) {
resources.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value)); ResXDataNode node = (ResXDataNode)n.Value;
resources.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver), node.Comment));
}
}
n = rx.GetMetadataEnumerator(); n = rx.GetMetadataEnumerator();
while (n.MoveNext()) while (n.MoveNext()) {
if (!metadata.ContainsKey(n.Key.ToString())) if (!metadata.ContainsKey(n.Key.ToString())) {
metadata.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value)); ResXDataNode node = (ResXDataNode)n.Value;
metadata.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver)));
}
}
rx.Close(); rx.Close();
break; break;
@ -171,14 +185,13 @@ namespace ResourceEditor
public void SaveFile(FileName filename, Stream stream) public void SaveFile(FileName filename, Stream stream)
{ {
switch (Path.GetExtension(filename).ToLowerInvariant()) { switch (Path.GetExtension(filename).ToLowerInvariant()) {
// write XML resource
case ".resx": case ".resx":
// write XML resource
ResXResourceWriter rxw = new ResXResourceWriter(stream, t => ResXConverter.ConvertTypeName(t, filename)); ResXResourceWriter rxw = new ResXResourceWriter(stream, t => ResXConverter.ConvertTypeName(t, filename));
foreach (KeyValuePair<string, ResourceItem> entry in resources) { foreach (KeyValuePair<string, ResourceItem> entry in resources) {
if (entry.Value != null) { if (entry.Value != null) {
ResourceItem item = entry.Value; ResourceItem item = entry.Value;
rxw.AddResource(item.Name, item.ResourceValue); rxw.AddResource(item.ToResXDataNode(t => ResXConverter.ConvertTypeName(t, filename)));
} }
} }
foreach (KeyValuePair<string, ResourceItem> entry in metadata) { foreach (KeyValuePair<string, ResourceItem> entry in metadata) {
@ -190,9 +203,8 @@ namespace ResourceEditor
rxw.Generate(); rxw.Generate();
rxw.Close(); rxw.Close();
break; break;
// write default resource
default: default:
// write default resource
ResourceWriter rw = new ResourceWriter(stream); ResourceWriter rw = new ResourceWriter(stream);
foreach (KeyValuePair<string, ResourceItem> entry in resources) { foreach (KeyValuePair<string, ResourceItem> entry in resources) {
ResourceItem item = (ResourceItem)entry.Value; ResourceItem item = (ResourceItem)entry.Value;
@ -212,6 +224,14 @@ namespace ResourceEditor
OnChanged(); OnChanged();
} }
public void SetCommentValue(string resourceName, string commentValue)
{
ResourceItem item = ((ResourceItem)Resources[resourceName]);
item.Comment = commentValue;
SelectedItems[0].SubItems[3].Text = item.Comment;
OnChanged();
}
public void OnChanged() public void OnChanged()
{ {
if (Changed != null) { if (Changed != null) {
@ -232,7 +252,7 @@ namespace ResourceEditor
string tmp = item.ToString(); string tmp = item.ToString();
string type = item.ResourceValue == null ? "(Nothing/null)" : item.ResourceValue.GetType().FullName; string type = item.ResourceValue == null ? "(Nothing/null)" : item.ResourceValue.GetType().FullName;
ListViewItem lv = new ListViewItem(new String[] {item.Name, type, tmp}, item.ImageIndex); ListViewItem lv = new ListViewItem(new String[] {item.Name, type, tmp, item.Comment}, item.ImageIndex);
Items.Add(lv); Items.Add(lv);
} }

31
src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs

@ -26,6 +26,7 @@ namespace ICSharpCode.SharpDevelop.Project
FileSystemWatcher watcher; FileSystemWatcher watcher;
string fileName; string fileName;
bool enabled = true; bool enabled = true;
DateTime lastWriteTime;
public ProjectChangeWatcher(string fileName) public ProjectChangeWatcher(string fileName)
{ {
@ -33,6 +34,7 @@ namespace ICSharpCode.SharpDevelop.Project
SD.MainThread.VerifyAccess(); SD.MainThread.VerifyAccess();
activeWatchers.Add(this); activeWatchers.Add(this);
UpdateLastWriteTime();
SD.Workbench.MainWindow.Activated += MainFormActivated; SD.Workbench.MainWindow.Activated += MainFormActivated;
} }
@ -54,6 +56,26 @@ namespace ICSharpCode.SharpDevelop.Project
fileName = newFileName; fileName = newFileName;
} }
void UpdateLastWriteTime()
{
// Save current last write time attribute
FileInfo fileInfo = new FileInfo(fileName);
if (fileInfo != null) {
lastWriteTime = fileInfo.LastWriteTimeUtc;
}
}
bool LastWriteTimeHasChanged()
{
// Save current last write time attribute
FileInfo fileInfo = new FileInfo(fileName);
if (fileInfo != null) {
return lastWriteTime != fileInfo.LastWriteTimeUtc;
}
return true; // File doesn't exist anymore?
}
void SetWatcher() void SetWatcher()
{ {
SD.MainThread.VerifyAccess(); SD.MainThread.VerifyAccess();
@ -107,7 +129,14 @@ namespace ICSharpCode.SharpDevelop.Project
void OnFileChangedEvent(object sender, FileSystemEventArgs e) void OnFileChangedEvent(object sender, FileSystemEventArgs e)
{ {
LoggingService.Debug("Project file " + e.Name + " was changed externally: {1}" + e.ChangeType); // Last write time really has changed?
if (!LastWriteTimeHasChanged()) {
LoggingService.DebugFormatted("Attributes of project file {0} have been set externally ({1}), but no relevant changes detected.", e.Name, e.ChangeType);
return;
}
LoggingService.DebugFormatted("Project file {0} was changed externally: {1}", e.Name, e.ChangeType);
UpdateLastWriteTime();
if (!wasChangedExternally) { if (!wasChangedExternally) {
wasChangedExternally = true; wasChangedExternally = true;
if (SD.Workbench.IsActiveWindow) { if (SD.Workbench.IsActiveWindow) {

Loading…
Cancel
Save