diff --git a/SharpDevelop.sln b/SharpDevelop.sln
index 9fc782f856..d9a9fa8200 100644
--- a/SharpDevelop.sln
+++ b/SharpDevelop.sln
@@ -1,10 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
-# SharpDevelop 4.3
+# SharpDevelop 5.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}"
EndProject
@@ -23,8 +21,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDevelop", "src\Main\SharpDevelop\SharpDevelop.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "src\Libraries\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{39327899-ED91-4F7F-988C-4FE4E17C014D}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{F208FF4F-E5D8-41D5-A7C7-B463976F156E}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitAddIn", "src\AddIns\VersionControl\GitAddIn\GitAddIn.csproj", "{83F15BA7-8478-4664-81BB-A82F146D88B3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\VersionControl\SubversionAddIn\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{59A30AA6-D600-41AB-B7A1-9543469DBE36}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PackageManagement", "PackageManagement", "{87D549AF-8FCD-4E84-9C33-3DB6E42FEF6D}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "src\AddIns\Misc\PackageManagement\Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{4ABB8D1E-3439-44C8-ACCE-1FA678ABBFB3}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
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}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{5FB020B2-B64B-4016-999A-CB8FD9274D72}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
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}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{D54BEB89-8CBE-475C-8BB9-836D2FD71260}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
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}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{7019F43E-DFD7-4D1C-8C96-E75D55646DE7}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
@@ -198,8 +172,6 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQuality", "src\AddIns\Analysis\CodeQuality\CodeQuality.csproj", "{D1DF9C2D-3A5E-4985-ACA4-648C604DB562}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
@@ -317,6 +289,10 @@ Global
{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.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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -516,22 +488,18 @@ Global
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {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}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {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}
{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}
- {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}
{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}
{E954F3CB-A446-492F-A664-2B376EBC86E8} = {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}
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {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}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {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}
+ {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}
{80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {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}
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF} = {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}
{A406803B-C584-43A3-BCEE-A0BB3132CB5F} = {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}
+ {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}
{7C3579BC-2A64-4108-82B5-3D07ADA079E7} = {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}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {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}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {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}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {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}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {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}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {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}
+ {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}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {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}
{D1DA3B8F-7313-4BDA-8880-461C5F007751} = {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}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {49CE38B8-0460-46BF-9DFF-5B33A0F9EB5E}
EndGlobalSection
diff --git a/data/resources/StringResources.es.resx b/data/resources/StringResources.es.resx
index 30cbb7d1a6..f7825dc2bd 100644
--- a/data/resources/StringResources.es.resx
+++ b/data/resources/StringResources.es.resx
@@ -229,6 +229,56 @@ Descargue un complemento de Internet, luego haga clic en 'Instalar Complemento'
Formato de archivo desconocido:
+
+ Instalar desde archivo...
+
+
+ Repositorio:
+
+
+ Buscar:
+
+
+ Mostrar Addins pre-instalados
+
+
+
+ Mostrar versión preliminar
+
+
+ Versión instalada:
+
+
+ Remover
+
+
+ Fuente:
+
+
+ AddIns
+
+
+ Repositorios
+
+
+ Los siguientes AddIns instalados dependen de "{0}":
+
+{1}
+
+Dejarán de funcionar al remover este AddIn! ¿Quiere continuar?
+
+
+ AddIns de SharpDevelop |*.sdaddin;*.addin|Todos los archivos|*.*
+
+
+ Disponibles
+
+
+ Instalados
+
+
+ Actualizaciones
+
Este archivo contiene nuevas linea inconsistentes.
diff --git a/data/resources/StringResources.nl.resx b/data/resources/StringResources.nl.resx
index 4aa5a215cf..51d3770d28 100644
--- a/data/resources/StringResources.nl.resx
+++ b/data/resources/StringResources.nl.resx
@@ -228,6 +228,145 @@
Onbekend bestandsformaat:
+
+ Installeer uit het archief...
+
+
+ Repository:
+
+
+ Zoek:
+
+
+ Geef de voor geïnstalleerde AddIns weer
+
+
+ Pre releases weergeven
+
+
+ De AddinManager kan niet verwijderd worden, omdat deze nodig is om invoegtoepassingen te her-installeren.
+
+
+ SharpDevelop AddIn Repository
+
+
+ Ontworpen door:
+
+
+ Afhankelijkheden:
+
+
+ Downloads:
+
+
+ Bestandsnaam:
+
+
+ Geïnstalleerde versie:
+
+
+ Laatste update:
+
+
+ Meer informatie
+
+
+ Nieuwe versie:
+
+
+ Waardering:
+
+
+ Rapporteer misbruik
+
+
+ Versie:
+
+
+ Lezen van de licentie voorwaarden
+
+
+ Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
+
+{1}
+
+Ze stoppen met werken als deze AddIn uitgeschakeld wordt. Wilt u doorgaan?
+
+
+ Package "{0}" heeft tenminste één toegevoegde package nodig:
+
+{1}
+
+De applicatie zal proberen ze te downloaden en te installeren. Wilt u doorgaan?
+
+
+ De geselecteerde package bevat geen geldige SharpDevelop AddIn.
+
+
+ Ik &accepteer
+
+
+ Ik weiger
+
+
+ Door de "Ik accepteer-accepteer-knop
+
+
+ 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!
+
+
+ Volgende package vereist een akkoord-klik licentie:
+
+
+ De volgende packages vereisen een klik-om te-accepteren licentie:
+
+
+ Overeengekomen licentie voorwaarden
+
+
+ Voeg toe
+
+
+ Naar beneden
+
+
+ Naar boven
+
+
+ Naam:
+
+
+ Verwijderen
+
+
+ Broncode:
+
+
+ AddIns
+
+
+ Repositories
+
+
+ Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
+
+{1}
+
+Deze stoppen met werken na verwijderen van deze AddIn.
+
+
+ SharpDevelop AddIns|*.sdaddin;*.addin|Alle bestanden|*.*
+
+
+ Beschikbaar
+
+
+ Geïnstalleerd
+
+
+ Updates
+
Dit bestand bevat afwijkende newlines.
diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx
index 07467673eb..2285cd9498 100644
--- a/data/resources/StringResources.resx
+++ b/data/resources/StringResources.resx
@@ -4852,6 +4852,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs
.NET Framework Extension
+
+ WiX is not installed. Please download WiX from http://wixtoolset.org/
+
No difference found.
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.
@@ -6223,6 +6226,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
Resource code generator: No resource property could be generated for resource '{0}'.
+
+ Comment
+
Content
@@ -6236,6 +6242,12 @@ Removed the end part of the original message ", reason '${Message}'" since this
Copy resource name
Context menu item; copies the name of the currently selcted resource item to the clipboard
+
+ Edit comment
+
+
+ Enter the new text for the resource comment:
+
&Rename
diff --git a/data/resources/StringResources.ru.resx b/data/resources/StringResources.ru.resx
index 9aa6cd15b1..f1c6cc4f82 100644
--- a/data/resources/StringResources.ru.resx
+++ b/data/resources/StringResources.ru.resx
@@ -175,10 +175,10 @@
Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения Плагинов!
- Нельзя устанавливать плагины внутри папки ${ProductName}, так как они будут считаться предустановленными.
+ Нельзя устанавливать плагины внутри папки ${ProductName},поскольку они являются предустановленными по умолчанию.
- Отменяет удаление выделеных плагинов.
+ Отменяет деинсталляцию выделенных плагинов.
Отменяет установку выделенных плагинов.
@@ -229,6 +229,100 @@
Неизвестный формат файла:
+
+ Установить из архива...
+
+
+ Поиск:
+
+
+ Показать предустановленные плагины
+
+
+ Вы не можете деинсталлировать Менеджер плагинов, поскольку он понадобится для инсталляции плагинов!
+
+
+ Создатель:
+
+
+ Загрузки:
+
+
+ Имя файла:
+
+
+ Установленная версия:
+
+
+ Дата последнего обновления:
+
+
+ Подробнее:
+
+
+ Новая версия:
+
+
+ Рейтинг:
+
+
+ Пожаловаться:
+
+
+ Версия:
+
+
+ Прочитать Пользовательское соглашение
+
+
+ В выбранном объекте не содержится правильного SharpDevelop плагина.
+
+
+ Принять
+
+
+ Отказаться
+
+
+ Лицензионное соглашение
+
+
+ Добавить
+
+
+ Сместить вниз
+
+
+ Сместить вверх
+
+
+ Название:
+
+
+ Удалить
+
+
+ Источник:
+
+
+ Плагины
+
+
+ Следующие установленные плагины зависят от "{0}":
+
+{1}
+
+Они перестанут работать, если удалить данный плагин! Вы уверены, что хотите продолжить?
+
+
+ Доступно
+
+
+ Установлено
+
+
+ Обновления
+
Показать диаграмму классов
@@ -1458,7 +1552,7 @@
Шаблоны файлов
- Строка не найдена
+ Введенная последовательность символов не найдена
Не найдено
@@ -3053,6 +3147,9 @@
Отправить в консоль Python
+
+ В месте нахождения курсора не обнаружено определение типа.
+
Отправить строку в консоль Ruby
@@ -3694,6 +3791,11 @@
Обновление проекта
+
+ Проект '${ProjectName}' ссылается на версию ${OldToolsVersion} MSBuild, но данная версия не установлена.
+Хотите ли вы обновить проект до версии ${NewToolsVersion} MSBuild?
+Данный проект не может бть открыт без процедуры ибновления.
+
Это решение было создано с помощью предыдущей версии SharpDevelop.
Возможно, вы захотите, преобразовать его так, чтобы использовать новый язык или новые возможности framework'a.
@@ -4413,12 +4515,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
Адрес
+
+ (динамический)
+
Нет загруженных символов.
Символы загружены.
+
+ (в памяти)
+
Порядок
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
index f64999b4d9..1a4bca94bf 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
@@ -158,8 +158,8 @@
-
+
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
index 00e4af1efb..900f465122 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
@@ -87,6 +87,11 @@
+
+
+
+ CreatePropertiesDialog.xaml
+
@@ -212,6 +217,7 @@
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs
index c49d86eac3..1d0d94b96f 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs
+++ b/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)
using System;
-using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -10,15 +9,12 @@ using System.Threading;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.NRefactory.Editor;
-using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.FormattingStrategy;
-using CSharpBinding.Parser;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.CSharp.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem;
-using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using CSharpBinding.Refactoring;
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/AbstractInlineRefactorDialog.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/AbstractInlineRefactorDialog.cs
index 2431cfe6d4..624570233c 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/AbstractInlineRefactorDialog.cs
+++ b/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.Editor;
using ICSharpCode.NRefactory.TypeSystem;
-using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.Refactoring;
-using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
namespace CSharpBinding.Refactoring
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs
index 91f9b03df0..7a35a6aba5 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreateProperties.cs
@@ -3,17 +3,11 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Linq;
-using System.Windows.Forms;
using ICSharpCode.AvalonEdit.Snippets;
-using ICSharpCode.SharpDevelop;
-using ICSharpCode.SharpDevelop.Dom;
-using ICSharpCode.SharpDevelop.Dom.Refactoring;
+using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
-using SharpRefactoring.Gui;
namespace CSharpBinding.Refactoring
{
@@ -34,51 +28,27 @@ namespace CSharpBinding.Refactoring
if (textEditor == null)
return null;
- IEditorUIService uiService = textEditor.GetService(typeof(IEditorUIService)) as IEditorUIService;
-
- if (uiService == 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)
- return null;
-
- List 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);
- anchor.MovementType = AnchorMovementType.BeforeInsertion;
-
- CreatePropertiesDialog dialog = new CreatePropertiesDialog(context, textEditor, anchor, current, parameters);
-
- dialog.Element = uiService.CreateInlineUIElement(anchor, dialog);
-
- return dialog;
- }
-
- static IEnumerable 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++;
+ using (textEditor.Document.OpenUndoGroup()) {
+ IEditorUIService uiService = textEditor.GetService(typeof(IEditorUIService)) as IEditorUIService;
+
+ if (uiService == null)
+ return null;
+
+ ITextAnchor anchor = textEditor.Document.CreateAnchor(context.InsertionPosition);
+ anchor.MovementType = AnchorMovementType.AfterInsertion;
+
+ // Since this snippet doesn't insert anything, fake insertion of 1 character to allow proper Ctrl+Z reaction
+ if (context.StartPosition == context.InsertionPosition) {
+ textEditor.Document.Insert(context.InsertionPosition, " ");
+ context.InsertionPosition++;
+ }
+
+ CreatePropertiesDialog dialog = new CreatePropertiesDialog(context, textEditor, anchor);
+
+ dialog.Element = uiService.CreateInlineUIElement(anchor, dialog);
+
+ return dialog;
+
}
}
}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs
index c3aa3e8423..35f9bcb4d2 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesCommand.cs
@@ -4,23 +4,21 @@
using System;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets;
-using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Refactoring;
-using SharpRefactoring.Gui;
namespace CSharpBinding.Refactoring
{
- public class CreatePropertiesCommand : AbstractRefactoringCommand
+ public class CreatePropertiesCommand // : AbstractRefactoringCommand
{
- protected override void Run(ITextEditor textEditor, RefactoringProvider provider)
- {
- new Snippet {
- Elements = {
- new InlineRefactorSnippetElement(context => CreateProperties.CreateDialog(context), "")
- }
- }.Insert((TextArea)textEditor.GetService(typeof(TextArea)));
- }
+// protected override void Run(ITextEditor textEditor, RefactoringProvider provider)
+// {
+// new Snippet {
+// Elements = {
+// new InlineRefactorSnippetElement(context => CreateProperties.CreateDialog(context), "")
+// }
+// }.Insert((TextArea)textEditor.GetService(typeof(TextArea)));
+// }
}
}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml
index cb0462c44d..029fcd76bc 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml
@@ -6,35 +6,6 @@
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-
-
-
@@ -45,13 +16,20 @@
Text="{sd:Localize AddIns.SharpRefactoring.CreateProperties.Description}"
TextWrapping="Wrap" />
-
+
-
+
+
+
+
+
+
+
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs
index 36a68cea11..48f41480fb 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs
@@ -4,13 +4,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Windows.Input;
using ICSharpCode.AvalonEdit.Snippets;
-using ICSharpCode.NRefactory.Ast;
-using ICSharpCode.SharpDevelop.Dom;
+using ICSharpCode.NRefactory.CSharp;
+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.Refactoring;
+using CSharpBinding.Parser;
namespace CSharpBinding.Refactoring
{
@@ -21,75 +27,231 @@ namespace CSharpBinding.Refactoring
{
IList fields;
- public CreatePropertiesDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor, IClass current, IList availableFields)
+ public CreatePropertiesDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor)
: base(context, editor, anchor)
{
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())
- Visibility = System.Windows.Visibility.Collapsed;
+ if (fields.Any())
+ Visibility = System.Windows.Visibility.Visible;
- implementInterface.IsChecked = !current.IsStatic && HasOnPropertyChanged(current);
- if (current.IsStatic)
+ implementInterface.IsChecked = !resolvedCurrent.IsStatic && HasOnPropertyChanged(resolvedCurrent);
+ if (resolvedCurrent.IsStatic)
implementInterface.Visibility = System.Windows.Visibility.Collapsed;
- listBox.UnselectAll();
+ SelectAllUnchecked();
}
- protected override string GenerateCode(LanguageProperties language, IClass currentClass)
+ static IEnumerable 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(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 hasOnPropertyChanged = HasOnPropertyChanged(currentClass);
bool useEventArgs = false;
- if (implementInterface && !currentClass.IsStatic) {
- if (!hasOnPropertyChanged) {
- var nodes = new List();
- var rt = new GetClassReturnType(currentClass.ProjectContent, "System.ComponentModel.INotifyPropertyChanged", 0);
- if (!currentClass.ClassInheritanceTree.Any(bt => bt.FullyQualifiedName == "System.ComponentModel.INotifyPropertyChanged")) {
- int insertion = editor.Document.PositionToOffset(currentClass.BodyRegion.BeginLine, currentClass.BodyRegion.BeginColumn);
- if (currentClass.BaseTypes.Count > 0)
- editor.Document.Insert(insertion, ", INotifyPropertyChanged");
- else
- editor.Document.Insert(insertion, " : INotifyPropertyChanged");
+ AstNode insertionAnchorElement = refactoringContext.GetNode();
+ if ((insertionAnchorElement == null) || !(insertionAnchorElement.Parent is TypeDeclaration)) {
+ return null;
+ }
+ NewLineNode newLineNode = insertionAnchorElement as NewLineNode;
+ while (insertionAnchorElement.PrevSibling is NewLineNode)
+ insertionAnchorElement = insertionAnchorElement.PrevSibling ?? insertionAnchorElement;
+
+ using (Script script = refactoringContext.StartScript()) {
+ TypeDeclaration currentClassDeclaration = insertionAnchorElement.Parent as TypeDeclaration;
+
+ if (implementInterface && !currentClass.IsStatic) {
+ if (!hasOnPropertyChanged) {
+ var nodes = new List();
+ 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";
+ }
+ }
+
+ foreach (FieldWrapper field in fields.Where(f => f.IsIncluded)) {
+ var prop = CreateProperty(field.Field, true, field.AddSetter);
+ if (!field.Field.IsStatic && !currentClass.IsStatic && field.AddSetter && implementInterface) {
+ var invocation = new ExpressionStatement(CreateInvocation(field.PropertyName, useEventArgs));
+ var assignment = prop.Setter.Body.Children.ElementAt(0) as Statement;
+ prop.Setter.Body = new BlockStatement();
+ BlockStatement elseBlock = new BlockStatement();
+ elseBlock.Add(assignment.Clone());
+ elseBlock.Add(invocation);
+ prop.Setter.Body.Add(
+ new IfElseStatement(
+ new BinaryOperatorExpression(new IdentifierExpression(field.MemberName), BinaryOperatorType.InEquality, new IdentifierExpression("value")),
+ elseBlock
+ )
+ );
}
- 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 { 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";
+
+ script.InsertAfter(insertionAnchorElement, prop);
+ AppendNewLine(script, insertionAnchorElement, newLineNode);
}
}
- foreach (FieldWrapper field in listBox.SelectedItems) {
- var prop = language.CodeGenerator.CreateProperty(field.Field, true, field.AddSetter);
- if (!field.Field.IsStatic && !currentClass.IsStatic && field.AddSetter && implementInterface) {
- var invocation = new ExpressionStatement(CreateInvocation(field.PropertyName, useEventArgs));
- var assignment = prop.SetRegion.Block.Children[0];
- prop.SetRegion.Block.Children.Clear();
- prop.SetRegion.Block.AddChild(
- new IfElseStatement(
- new BinaryOperatorExpression(new IdentifierExpression(field.MemberName), BinaryOperatorType.InEquality, new IdentifierExpression("value")),
- new BlockStatement { Children = { assignment, invocation } }
- )
- );
- }
- builder.AppendLine(language.CodeGenerator.GenerateCode(prop, indent));
+ return null;
+ }
+
+ MethodDeclaration CreateOnEventMethod(IEvent e, ITypeDefinition currentClass)
+ {
+ List parameters = new List();
+// 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 arguments = new List();
+// 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 { 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")));
}
- return builder.ToString().Trim();
+ 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)
@@ -99,31 +261,45 @@ namespace CSharpBinding.Refactoring
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)
{
Expression arg = useEventArgs
- ? (Expression)new ObjectCreateExpression(new TypeReference("PropertyChangedEventArgs"), new List { new PrimitiveExpression(name) })
+ ? (Expression)new ObjectCreateExpression(refactoringContext.CreateShortType("System.ComponentModel", "PropertyChangedEventArgs", 0), new List { new PrimitiveExpression(name) })
: (Expression)new PrimitiveExpression(name);
return new InvocationExpression(new IdentifierExpression("OnPropertyChanged"), new List { arg });
}
+ void SelectAllChecked()
+ {
+ foreach (var param in fields) {
+ param.IsIncluded = true;
+ }
+ }
+
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)
{
- listBox.UnselectAll();
+ SelectAllUnchecked();
}
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)
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs
index 95202b1d5c..b1fcdbd8c6 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/FieldWrapper.cs
@@ -17,6 +17,7 @@ namespace CSharpBinding.Refactoring
///
readonly IField field;
private string text;
+ bool isIncluded;
public IField Field {
get { return field; }
@@ -38,6 +39,17 @@ namespace CSharpBinding.Refactoring
this.text = ambience.ConvertEntity(member);
}
+ public bool IsIncluded
+ {
+ get {
+ return isIncluded;
+ }
+ set {
+ isIncluded = value;
+ OnPropertyChanged("IsIncluded");
+ }
+ }
+
public string MemberName {
get { return field.Name; }
}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs
index 089bc89741..f16b0b30eb 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs
+++ b/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)
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Threading;
using ICSharpCode.AvalonEdit.Snippets;
-using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
-using ICSharpCode.NRefactory.TypeSystem;
-using ICSharpCode.SharpDevelop;
-using ICSharpCode.SharpDevelop.Parser;
using CSharpBinding.Refactoring;
using ICSharpCode.SharpDevelop.Editor;
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs
index c1577d3fd3..8285933a0d 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideToStringMethodDialog.xaml.cs
@@ -5,7 +5,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using System.Threading;
using System.Windows.Input;
using ICSharpCode.AvalonEdit.Snippets;
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin
index 1768c2799d..1d3c34c203 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin
@@ -50,6 +50,9 @@
+
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
index 5d221b8110..6b2f2acc10 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
@@ -51,6 +51,7 @@
+
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs
new file mode 100644
index 0000000000..6be6bc0fdf
--- /dev/null
+++ b/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);
+ }
+ }
+ }
+ }
+}
+
+
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs
index 54e1886a49..f4d65e6056 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs
@@ -3,7 +3,7 @@
using System;
using ICSharpCode.Core;
-using ICSharpCode.SharpDevelop.Gui;
+using ICSharpCode.SharpDevelop;
namespace ResourceEditor
{
@@ -11,7 +11,7 @@ namespace ResourceEditor
{
public override void Run()
{
- ResourceEditorControl editor = ((ResourceEditWrapper)WorkbenchSingleton.Workbench.ActiveViewContent).ResourceEditor;
+ ResourceEditorControl editor = ((ResourceEditWrapper)SD.Workbench.ActiveViewContent).ResourceEditor;
if(editor.ResourceList.SelectedItems.Count != 0) {
editor.ResourceList.SelectedItems[0].BeginEdit();
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs
index 8bc5f327d0..01c9af0083 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs
@@ -106,9 +106,6 @@ namespace ResourceEditor
void viewResourceChanged(object sender, ResourceEventArgs e)
{
resourceList.SetResourceValue(e.ResourceName, e.ResourceValue);
-
-
-
}
void showResource(ResourceItem item)
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs
index 16ddb0f4bf..3faabcebfd 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs
@@ -3,48 +3,39 @@
using System;
using System.Drawing;
+using System.Resources;
using System.Windows.Forms;
namespace ResourceEditor
{
public class ResourceItem
{
- string name;
- object resourceValue;
-
public ResourceItem(string name, object resourceValue)
{
- this.name = name;
- this.resourceValue = resourceValue;
+ this.Name = name;
+ this.ResourceValue = resourceValue;
}
- public string Name
+ public ResourceItem(string name, object resourceValue, string comment)
{
- get {
- return name;
- }
- set {
- name = value;
- }
+ this.Name = name;
+ this.ResourceValue = resourceValue;
+ this.Comment = comment;
}
- public object ResourceValue
- {
- get {
- return resourceValue;
- }
- set {
- resourceValue = value;
- }
- }
+ public string Name { get; set; }
+
+ public object ResourceValue { get; set; }
+
+ public string Comment { get; set; }
public int ImageIndex
{
get {
- if (this.resourceValue == null) {
+ if (this.ResourceValue == null) {
return -1;
}
- switch(this.resourceValue.GetType().ToString()) {
+ switch(this.ResourceValue.GetType().ToString()) {
case "System.String":
return 0;
case "System.Drawing.Bitmap":
@@ -98,5 +89,13 @@ namespace ResourceEditor
}
return tmp;
}
+
+ public ResXDataNode ToResXDataNode(Func typeNameConverter = null)
+ {
+ var node = new ResXDataNode(Name, ResourceValue, typeNameConverter) {
+ Comment = Comment
+ };
+ return node;
+ }
}
}
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
index 2381741816..633da411f4 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.ComponentModel.Design;
using System.Drawing.Printing;
using System.IO;
using System.Resources;
@@ -24,6 +25,7 @@ namespace ResourceEditor
ColumnHeader name = new ColumnHeader();
ColumnHeader type = new ColumnHeader();
ColumnHeader content = new ColumnHeader();
+ ColumnHeader comment = new ColumnHeader();
Dictionary resources = new Dictionary();
Dictionary metadata = new Dictionary();
@@ -77,7 +79,10 @@ namespace ResourceEditor
content.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.ContentColumn");
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;
AutoArrange = true;
@@ -107,6 +112,7 @@ namespace ResourceEditor
new IListViewItemComparer[] {
textComparer,
typeNameComparer,
+ null,
null
});
sorter.SortColumnIndex = 0;
@@ -136,16 +142,24 @@ namespace ResourceEditor
switch (Path.GetExtension(filename).ToLowerInvariant()) {
case ".resx":
ResXResourceReader rx = new ResXResourceReader(stream);
+ ITypeResolutionService typeResolver = null;
rx.BasePath = Path.GetDirectoryName(filename);
+ rx.UseResXDataNodes = true;
IDictionaryEnumerator n = rx.GetEnumerator();
- while (n.MoveNext())
- if (!resources.ContainsKey(n.Key.ToString()))
- resources.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value));
+ while (n.MoveNext()) {
+ if (!resources.ContainsKey(n.Key.ToString())) {
+ ResXDataNode node = (ResXDataNode)n.Value;
+ resources.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver), node.Comment));
+ }
+ }
n = rx.GetMetadataEnumerator();
- while (n.MoveNext())
- if (!metadata.ContainsKey(n.Key.ToString()))
- metadata.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value));
+ while (n.MoveNext()) {
+ if (!metadata.ContainsKey(n.Key.ToString())) {
+ ResXDataNode node = (ResXDataNode)n.Value;
+ metadata.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver)));
+ }
+ }
rx.Close();
break;
@@ -171,14 +185,13 @@ namespace ResourceEditor
public void SaveFile(FileName filename, Stream stream)
{
switch (Path.GetExtension(filename).ToLowerInvariant()) {
-
- // write XML resource
case ".resx":
+ // write XML resource
ResXResourceWriter rxw = new ResXResourceWriter(stream, t => ResXConverter.ConvertTypeName(t, filename));
foreach (KeyValuePair entry in resources) {
if (entry.Value != null) {
ResourceItem item = entry.Value;
- rxw.AddResource(item.Name, item.ResourceValue);
+ rxw.AddResource(item.ToResXDataNode(t => ResXConverter.ConvertTypeName(t, filename)));
}
}
foreach (KeyValuePair entry in metadata) {
@@ -190,9 +203,8 @@ namespace ResourceEditor
rxw.Generate();
rxw.Close();
break;
-
- // write default resource
default:
+ // write default resource
ResourceWriter rw = new ResourceWriter(stream);
foreach (KeyValuePair entry in resources) {
ResourceItem item = (ResourceItem)entry.Value;
@@ -212,6 +224,14 @@ namespace ResourceEditor
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()
{
if (Changed != null) {
@@ -232,7 +252,7 @@ namespace ResourceEditor
string tmp = item.ToString();
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);
}
diff --git a/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs b/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs
index f6712ab668..24c1df605b 100644
--- a/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs
+++ b/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs
@@ -26,6 +26,7 @@ namespace ICSharpCode.SharpDevelop.Project
FileSystemWatcher watcher;
string fileName;
bool enabled = true;
+ DateTime lastWriteTime;
public ProjectChangeWatcher(string fileName)
{
@@ -33,6 +34,7 @@ namespace ICSharpCode.SharpDevelop.Project
SD.MainThread.VerifyAccess();
activeWatchers.Add(this);
+ UpdateLastWriteTime();
SD.Workbench.MainWindow.Activated += MainFormActivated;
}
@@ -53,6 +55,26 @@ namespace ICSharpCode.SharpDevelop.Project
{
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()
{
@@ -107,7 +129,14 @@ namespace ICSharpCode.SharpDevelop.Project
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) {
wasChangedExternally = true;
if (SD.Workbench.IsActiveWindow) {