Browse Source

Merge branch 'master' of github.com:icsharpcode/SharpDevelop

pull/520/merge
Peter Forstmeier 11 years ago
parent
commit
2f519daa66
  1. 1
      .gitignore
  2. 6
      data/resources/StringResources.cz.resx
  3. 6
      data/resources/StringResources.de.resx
  4. 74
      data/resources/StringResources.es-mx.resx
  5. 74
      data/resources/StringResources.es.resx
  6. 6
      data/resources/StringResources.fi.resx
  7. 60
      data/resources/StringResources.fr.resx
  8. 8
      data/resources/StringResources.hu.resx
  9. 8
      data/resources/StringResources.it.resx
  10. 6
      data/resources/StringResources.kr.resx
  11. 15
      data/resources/StringResources.nl.resx
  12. 8
      data/resources/StringResources.no.resx
  13. 8
      data/resources/StringResources.pl.resx
  14. 33
      data/resources/StringResources.pt-br.resx
  15. 6
      data/resources/StringResources.pt.resx
  16. 8
      data/resources/StringResources.ro.resx
  17. 8
      data/resources/StringResources.ru.resx
  18. 361
      data/resources/StringResources.se.resx
  19. 299
      data/resources/StringResources.tr.resx
  20. 6
      data/resources/StringResources.zh.resx
  21. 4
      samples/XamlDesigner/Document.cs
  22. 2
      samples/XamlDesigner/Shell.cs
  23. 6
      src/AddIns/Analysis/UnitTesting/TestRunner/TestResultsReader.cs
  24. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  25. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  26. 362
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs
  27. 253
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpTextEditorExtension.cs
  28. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionBinding.cs
  29. 49
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs
  30. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs
  31. 8
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormatter.cs
  32. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpSymbolSearch.cs
  33. 5
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs
  34. 10
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs
  35. 19
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs
  36. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesCommand.cs
  37. 48
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml.cs
  38. 3
      src/AddIns/Debugger/Debugger.AddIn/Breakpoints/BreakpointEditorPopup.xaml.cs
  39. 18
      src/AddIns/Debugger/Debugger.AddIn/Pads/AutoCompleteTextBox.cs
  40. 5
      src/AddIns/Debugger/Debugger.AddIn/Pads/ConsolePad.cs
  41. 156
      src/AddIns/Debugger/Debugger.AddIn/Pads/DebuggerDotCompletion.cs
  42. 2
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  43. 12
      src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs
  44. 6
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs
  45. 1
      src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesigner.csproj
  46. 2
      src/AddIns/DisplayBindings/HexEditor/Project/Src/Util/BufferManager.cs
  47. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
  48. 27
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridPlacementSupport.cs
  49. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs
  50. 6
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/StackPanelPlacementSupport.cs
  51. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/Outline.xaml.cs
  52. 220
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs
  53. 225
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNodeBase.cs
  54. 18
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineTreeView.cs
  55. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/CollectionEditor.xaml.cs
  56. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs
  57. 20
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs
  58. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGridView.cs
  59. 19
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs
  60. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ToolService.cs
  61. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj
  62. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlEditOperations.cs
  63. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/HierarchyTests.cs
  64. 16
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/InsertTests.cs
  65. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/SelectionTests.cs
  66. 91
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/XamlDom/MarkupExtensionTests.cs
  67. 34
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs
  68. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlParser.cs
  69. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementInformation.cs
  70. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Tools.cs
  71. 17
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeViewContainerControl.cs
  72. 22
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeViewControl.cs
  73. 2
      src/AddIns/DisplayBindings/XmlEditor/Test/Tree/DeleteTreeNodeWithDeleteKeyTestFixture.cs
  74. 4
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/DerivedXmlTreeViewContainerControl.cs
  75. 3
      src/AddIns/VersionControl/GitAddIn/Src/Git.cs
  76. 8
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/UseOfMemberOfNullReference.cs
  77. 1
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Refactoring/IssueAttribute.cs
  78. 8
      src/Libraries/NRefactory/ICSharpCode.NRefactory.Cecil/CecilLoader.cs
  79. 2
      src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/Analysis/SymbolCollectorTests.cs
  80. 2
      src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Resolver/FindReferencesTest.cs
  81. 16
      src/Libraries/NRefactory/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs
  82. 3
      src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs
  83. 13
      src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs
  84. 7
      src/Main/Base/Project/Editor/Bookmarks/BookmarkPadToolbarCommands.cs
  85. 2
      src/Main/Base/Project/Editor/IEditorUIService.cs
  86. 12
      src/Main/Base/Project/Parser/ProjectContentContainer.cs
  87. 5
      src/Main/Base/Project/Refactoring/CodeGenerator.cs
  88. 53
      src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs
  89. 18
      src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs
  90. 19
      src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/OutputTextLineParser.cs
  91. 74
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs
  92. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
  93. 2
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  94. 2
      src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs
  95. 5
      src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs
  96. 8
      src/Main/SharpDevelop/Parser/ParserService.cs
  97. 96
      src/Main/SharpDevelop/Parser/ParserServiceEntry.cs
  98. 1
      src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs
  99. 1
      src/Main/SharpDevelop/Workbench/DisplayBinding/OpenWithDialog.Designer.cs
  100. 5
      src/Main/SharpDevelop/Workbench/DisplayBinding/OpenWithDialog.cs
  101. Some files were not shown because too many files have changed in this diff Show More

1
.gitignore vendored

@ -22,3 +22,4 @@ bin/ @@ -22,3 +22,4 @@ bin/
/src/AddIns/Misc/PackageManagement/Packages/AvalonEdit/lib
/packages/
/src/Tools/ResGet/*.log

6
data/resources/StringResources.cz.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Tento zdroj není používán. Jeho účelem je testování kvality překladu a konce řádku</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>O pluginu</value>
</data>
@ -6155,7 +6158,4 @@ Došlo k chybě při spuštění:</value> @@ -6155,7 +6158,4 @@ Došlo k chybě při spuštění:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Odkomentovat oblast</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Tento zdroj není používán. Jeho účelem je testování kvality překladu a konce řádku</value>
</data>
</root>

6
data/resources/StringResources.de.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>6e61ff43-0241-47da-95bd-2ab6cd6d60f7</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Über...</value>
</data>
@ -7721,7 +7724,4 @@ Fehler beim Starten: @@ -7721,7 +7724,4 @@ Fehler beim Starten:
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Kommentar entfernen</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>6e61ff43-0241-47da-95bd-2ab6cd6d60f7</value>
</data>
</root>

74
data/resources/StringResources.es-mx.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso no es utilizado. Su propósito es probar la base de datos de traducción y tiene
un retorno de línea.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Acerca de</value>
</data>
@ -1538,6 +1542,30 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib @@ -1538,6 +1542,30 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib
<data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Análisis de Calidad de Código</value>
</data>
<data name="CSharpBinding.Formatting.AutoFormat" xml:space="preserve">
<value>Formatear código automáticamente</value>
</data>
<data name="CSharpBinding.Formatting.DefaultOptionReference" xml:space="preserve">
<value>(predeterminado)</value>
</data>
<data name="CSharpBinding.Formatting.GlobalOptionReference" xml:space="preserve">
<value>(global)</value>
</data>
<data name="CSharpBinding.Formatting.NoPresetSelectedMessage" xml:space="preserve">
<value>No se seleccionó un formato preestablecido!</value>
</data>
<data name="CSharpBinding.Formatting.PresetOverwriteQuestion" xml:space="preserve">
<value>¿Esta seguro/a que quiere restablecer todas las opciones de formato previamente definidas?</value>
</data>
<data name="CSharpBinding.Formatting.ProjectOptionReference" xml:space="preserve">
<value>(proyecto)</value>
</data>
<data name="CSharpBinding.Formatting.ResetTo" xml:space="preserve">
<value>Restablecer a:</value>
</data>
<data name="CSharpBinding.Formatting.SolutionOptionReference" xml:space="preserve">
<value>(solución)</value>
</data>
<data name="CSharpBinding.GenerateNewHandlerInstructions" xml:space="preserve">
<value>Inserta una referencia a un método explicito; presione tabulador o enter otra vez para insertar una nueva porción de método.</value>
</data>
@ -1980,6 +2008,15 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value> @@ -1980,6 +2008,15 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Guardar</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget" xml:space="preserve">
<value>Enlaces en tooltips deben ir en</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDefinition" xml:space="preserve">
<value>Definición en código</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation" xml:space="preserve">
<value>Documentación (si esta disponible)</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Pre-seleccionar miembros usados recientemente</value>
</data>
@ -2352,6 +2389,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value> @@ -2352,6 +2389,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Resaltar &amp;corchetes</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightCurrentLineCheckBox" xml:space="preserve">
<value>Resaltar la línea actual</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Resaltar símbolos</value>
</data>
@ -2613,6 +2653,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value> @@ -2613,6 +2653,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valores predeterminados de VB:</value>
</data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formato de Código</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuración</value>
</data>
@ -3317,9 +3360,15 @@ También puede elegir guardar la opción en el archivo .user en lugar de en el a @@ -3317,9 +3360,15 @@ También puede elegir guardar la opción en el archivo .user en lugar de en el a
<data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Código No Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Código Parcialmente Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Columna</value>
</data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Contenido</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Opciones de Vista</value>
</data>
@ -4298,6 +4347,9 @@ Utilice solamente letras, dígitos, espacio, '.' ó '_'.</value> @@ -4298,6 +4347,9 @@ Utilice solamente letras, dígitos, espacio, '.' ó '_'.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>La solución ha sido cambiada externamente.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.SolutionFormattingOptions.Title" xml:space="preserve">
<value>Opciones de Formato de Soluciones</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Convertir &amp;proyectos seleccionados a:</value>
</data>
@ -5689,6 +5741,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5689,6 +5741,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Agregar referencia</value>
</data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Agregar Referencia a Servicio</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Agregar Referencia Web</value>
</data>
@ -6097,6 +6152,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -6097,6 +6152,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>Clases derivadas de ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingCommand" xml:space="preserve">
<value>Pegar desde el anillo del portapapeles...</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingEmpty" xml:space="preserve">
<value>El anillo del portapapeles esta vacío</value>
</data>
<data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Convertir a propiedad automática</value>
</data>
@ -6560,6 +6621,9 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value> @@ -6560,6 +6621,9 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Abrir solución</value>
</data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Quitar de la lista de proyectos recientes</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Página de Inicio</value>
</data>
@ -6572,6 +6636,12 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value> @@ -6572,6 +6636,12 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value>
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>ln ${Line} col ${Column} car ${Character}</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextMulti" xml:space="preserve">
<value>len ${Rows} * ${Cols} (${Total})</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextSingle" xml:space="preserve">
<value>len ${Length}</value>
</data>
<data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Varios</value>
</data>
@ -7719,8 +7789,4 @@ Error al iniciar:</value> @@ -7719,8 +7789,4 @@ Error al iniciar:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Descomentar región</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso no es utilizado. Su propósito es probar la base de datos de traducción y tiene
un retorno de línea.</value>
</data>
</root>

74
data/resources/StringResources.es.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso no se está usando. Su propósito es probar la base de datos de traducción y tiene
un salto de línea</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Acerca de...</value>
</data>
@ -1537,6 +1541,30 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib @@ -1537,6 +1541,30 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib
<data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Análisis de Calidad de Código</value>
</data>
<data name="CSharpBinding.Formatting.AutoFormat" xml:space="preserve">
<value>Formatear código automáticamente</value>
</data>
<data name="CSharpBinding.Formatting.DefaultOptionReference" xml:space="preserve">
<value>(predeterminado)</value>
</data>
<data name="CSharpBinding.Formatting.GlobalOptionReference" xml:space="preserve">
<value>(global)</value>
</data>
<data name="CSharpBinding.Formatting.NoPresetSelectedMessage" xml:space="preserve">
<value>No se seleccionó un formato preestablecido!</value>
</data>
<data name="CSharpBinding.Formatting.PresetOverwriteQuestion" xml:space="preserve">
<value>¿Esta seguro/a que quiere restablecer todas las opciones de formato previamente definidas?</value>
</data>
<data name="CSharpBinding.Formatting.ProjectOptionReference" xml:space="preserve">
<value>(proyecto)</value>
</data>
<data name="CSharpBinding.Formatting.ResetTo" xml:space="preserve">
<value>Restablecer a:</value>
</data>
<data name="CSharpBinding.Formatting.SolutionOptionReference" xml:space="preserve">
<value>(solución)</value>
</data>
<data name="CSharpBinding.GenerateNewHandlerInstructions" xml:space="preserve">
<value>Inserta una referencia a un método explicito; presione tabulador o enter otra vez para insertar un nuevo trozo de método.</value>
</data>
@ -1977,6 +2005,15 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib @@ -1977,6 +2005,15 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Guardar</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget" xml:space="preserve">
<value>Enlaces en tooltips deben ir a</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDefinition" xml:space="preserve">
<value>Definición en código</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation" xml:space="preserve">
<value>Documentación (si esta disponible)</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Pre-seleccionar miembros utilizados recientemente</value>
</data>
@ -2349,6 +2386,9 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib @@ -2349,6 +2386,9 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Resaltar &amp;corchetes</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightCurrentLineCheckBox" xml:space="preserve">
<value>Resaltar la línea actual</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Resaltar símbolos</value>
</data>
@ -2610,6 +2650,9 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib @@ -2610,6 +2650,9 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valores por defecto para Opciones de VB:</value>
</data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formato de Código</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuración</value>
</data>
@ -3319,9 +3362,15 @@ También puede escoger almacenar el parámetro de configuración en el archivo . @@ -3319,9 +3362,15 @@ También puede escoger almacenar el parámetro de configuración en el archivo .
<data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Código No Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Código Parcialmente Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Columna</value>
</data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Contenido</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Opciones de Vista</value>
</data>
@ -4303,6 +4352,9 @@ Solamente letras, dígitos, espacio, '.' o '_' son permitidos.</value> @@ -4303,6 +4352,9 @@ Solamente letras, dígitos, espacio, '.' o '_' son permitidos.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>La solución ha sido cambiada externamente.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.SolutionFormattingOptions.Title" xml:space="preserve">
<value>Opciones de Formato de Soluciones</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Convertir &amp;proyectos seleccionados a:</value>
</data>
@ -5695,6 +5747,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5695,6 +5747,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Agregar Referencia</value>
</data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Agregar Referencia a Servicio</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Agregar Referencia Web</value>
</data>
@ -6103,6 +6158,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -6103,6 +6158,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>Clases derivadas de ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingCommand" xml:space="preserve">
<value>Pegar desde el anillo del portapapeles...</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingEmpty" xml:space="preserve">
<value>El anillo del portapapeles esta vacío</value>
</data>
<data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Convertir a propiedad automática</value>
</data>
@ -6567,6 +6628,9 @@ Los archivos de recursos han sido renombrados o cambiados de ubicación de acuer @@ -6567,6 +6628,9 @@ Los archivos de recursos han sido renombrados o cambiados de ubicación de acuer
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Abrir solución</value>
</data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Quitar de la lista de proyectos recientes</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Página de inicio</value>
</data>
@ -6579,6 +6643,12 @@ Los archivos de recursos han sido renombrados o cambiados de ubicación de acuer @@ -6579,6 +6643,12 @@ Los archivos de recursos han sido renombrados o cambiados de ubicación de acuer
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>ln ${Line} col ${Column} car ${Character}</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextMulti" xml:space="preserve">
<value>len ${Rows} * ${Cols} (${Total})</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextSingle" xml:space="preserve">
<value>len ${Length}</value>
</data>
<data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Misceláneo</value>
</data>
@ -7726,8 +7796,4 @@ Error mientras se iniciaba:</value> @@ -7726,8 +7796,4 @@ Error mientras se iniciaba:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Descomentar Región</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso no se está usando. Su propósito es probar la base de datos de traducción y tiene
un salto de línea</value>
</data>
</root>

6
data/resources/StringResources.fi.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Resurssia ei käytetä. Sen tarkoituksena on testata suomennosta ja rivinvaihtoa.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>About SharpDevelop, finnish lang dev: Pekka Herala domain: sivustot.net</value>
</data>
@ -5654,7 +5657,4 @@ Työkalusarja, joka rakentaa Windows asennuspaketteja XML-lähdekoodilla. Sarja @@ -5654,7 +5657,4 @@ Työkalusarja, joka rakentaa Windows asennuspaketteja XML-lähdekoodilla. Sarja
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Kommentti valinta</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Resurssia ei käytetä. Sen tarkoituksena on testata suomennosta ja rivinvaihtoa.</value>
</data>
</root>

60
data/resources/StringResources.fr.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Cette ressource n'est pas utilisée. Son but est de tester la base de données de traduction.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>A propos</value>
</data>
@ -206,7 +209,7 @@ @@ -206,7 +209,7 @@
</data>
<data name="AddInManager.NoAddInsInstalled" xml:space="preserve">
<value>Vous n'avez aucun AddIn installé.
Téléchargez un AddIn depuis l'Internet, cliquez ensuite sur 'Installer un AddIn' et choisissez le fichier téléchargé pour l'installer.</value>
Téléchargez un AddIn depuis Internet, cliquez ensuite sur 'Installer un AddIn' et choisissez le fichier téléchargé pour l'installer.</value>
</data>
<data name="AddInManager.OpenWebsite" xml:space="preserve">
<value>Ouvrir le site Web</value>
@ -287,17 +290,11 @@ Téléchargez un AddIn depuis l'Internet, cliquez ensuite sur 'Installer un AddI @@ -287,17 +290,11 @@ Téléchargez un AddIn depuis l'Internet, cliquez ensuite sur 'Installer un AddI
<value>Voir le contrat de license</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Les Add-Ins installés suivant sont dépendant de "{0}":
{1}
<value>Les Add-Ins installés suivant sont dépendant de "{0}": {1}
Ils ne fonctionneront plus si vous désactivez cet Add-In! Souhaitez-vous continuer?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Package "{0}" nécessite au moins une dépendance:
{1}
<value>Package "{0}" nécessite au moins une dépendance: {1}
L'application va essayer de les télécharger et de les installer. Souhaitez-vous continuer?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
@ -314,8 +311,8 @@ L'application va essayer de les télécharger et de les installer. Souhaitez-vou @@ -314,8 +311,8 @@ L'application va essayer de les télécharger et de les installer. Souhaitez-vou
Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>En cliquant "J'accepte", vous êtes d'accord pour la license des packages suivant.
Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value>
<value>En cliquant sur "J'accepte", vous êtes d'accord pour la license des packages suivant.
Si vous ne le souhaitez pas, veuillez cliquer sur "Je décline".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Le package suivant nécessite que vous acceptiez sa license:</value>
@ -357,10 +354,7 @@ Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value> @@ -357,10 +354,7 @@ Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value>
<value>Dépots</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Les Add-Ins installés suivant sont dépendants de "{0}":
{1}
<value>Les Add-Ins installés suivant sont dépendants de "{0}": {1}
Ils ne fonctionneront plus si vous désinstallez cet Add-In! Souhaitez-vous continuer?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
@ -538,7 +532,7 @@ Ils ne fonctionneront plus si vous désinstallez cet Add-In! Souhaitez-vous cont @@ -538,7 +532,7 @@ Ils ne fonctionneront plus si vous désinstallez cet Add-In! Souhaitez-vous cont
<value>Session de profilage SharpDevelop</value>
</data>
<data name="AddIns.Profiler.Messages.FileNotFound" xml:space="preserve">
<value>Ce projet ne peut pas démarrer, exécutable introuvable, assurez-vous que le projet et toutes ses dépendances sont construites.</value>
<value>Ce projet ne peut pas démarrer, l'exécutable est introuvable. Assurez-vous que le projet et toutes ses dépendances sont compilées correctement!</value>
</data>
<data name="AddIns.Profiler.Messages.NoStartableProjectFound" xml:space="preserve">
<value>Aucun projet n'est démarrable. Arrêt...</value>
@ -1026,7 +1020,7 @@ Sauvegardez ces fichiers avant de déclencher l'opération.</value> @@ -1026,7 +1020,7 @@ Sauvegardez ces fichiers avant de déclencher l'opération.</value>
<value>Sauvegarder en UTF-8</value>
</data>
<data name="BackendBindings.ExecutionManager.CantExecuteDLLError" xml:space="preserve">
<value>Le projet est configuré comme dll et aucune commande a exécuter n'a été spécifiée. Vous pouvez spécifier une commande a exécuter dans les options du projet.</value>
<value>Le projet est configuré comme DLL et aucune commande a exécuter n'a été spécifiée. Vous pouvez spécifier une commande a exécuter dans les options du projet.</value>
</data>
<data name="BackendBindings.ExecutionManager.NoSingleFileCompilation" xml:space="preserve">
<value>Compiler un fichier seul n'est pas possible, veuillez créer un projet!</value>
@ -1660,7 +1654,8 @@ Pour créer ou manipuler un objet ActiveX/COM, déplcaer une classe depuis TypeL @@ -1660,7 +1654,8 @@ Pour créer ou manipuler un objet ActiveX/COM, déplcaer une classe depuis TypeL
<value>Aller à la ligne</value>
</data>
<data name="Dialog.Goto.IntroText" xml:space="preserve">
<value>Veuillez entrer une expression à atteindre. Vous pouvez donner un numéro de ligne, un nom de classe ou de fichier ("120", "MainClass" "Main.cs, 120" par exemple).</value>
<value>Veuillez entrer une expression à atteindre. Vous pouvez donner un numéro de ligne, un nom de classe ou de fichier.
Exemples: "120", "MainClass" "Main.cs, 120".</value>
</data>
<data name="Dialog.HighlightingEditor.ColorDlg.Background" xml:space="preserve">
<value>Couleur de l'arrière-plan</value>
@ -2645,6 +2640,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value> @@ -2645,6 +2640,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valeurs par défaut des options VB:</value>
</data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formatage du code</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuration</value>
</data>
@ -2794,7 +2792,7 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value> @@ -2794,7 +2792,7 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
</data>
<data name="Dialog.ProjectOptions.StorageLocationHelp" xml:space="preserve">
<value>Le petit button devant chaque option de configuration vous permet de choisir l'endroit où est enregistré la configuration.
'Configuration-specific' signigie que la configuration est appliqué au type de Projet (Debug/Release).
'Configuration-specific' signifie que la configuration est appliquée au type de Projet (Debug/Release).
'Platform-specific' signifie que la configuration peut avoir une valeur différente par plateforme.
Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file au lieu du projet, permettant à chaque développeur d'utiliser une valeur différente sans entrer en conflit avec le système de gestion du code source.</value>
</data>
@ -3484,7 +3482,6 @@ Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file @@ -3484,7 +3482,6 @@ Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file
</data>
<data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntExeNotFoundMessage" xml:space="preserve">
<value>Impossible de trouver NAnt '{0}'.
Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
</data>
<data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntStoppedMessage" xml:space="preserve">
@ -3638,10 +3635,10 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value> @@ -3638,10 +3635,10 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<value>Envoyer vers la console Ruby</value>
</data>
<data name="ICSharpCode.Services.FileUtilityService.CantLoadFileStandardText" xml:space="preserve">
<value>Chargement du fichier ${FileNameWithoutPath} depuis ${Path}. Controler les droits et l'existence du fichier.</value>
<value>Chargement du fichier ${FileNameWithoutPath} depuis ${Path}. Controlez les droits et l'existence du fichier.</value>
</data>
<data name="ICSharpCode.Services.FileUtilityService.CantSaveFileStandardText" xml:space="preserve">
<value>Enregistrement impossible du fichier ${FileNameWithoutPath} sous ${Path}. Choisir un autre nom de fichier ou controler si le répertoire existe ainsi que les droits d'écriture pour le chemin et le fichier. (Peut être un problème de protection en écriture)</value>
<value>Enregistrement impossible du fichier ${FileNameWithoutPath} sous ${Path}. Choisissez un autre nom de fichier ou controlez si le répertoire existe ainsi que les droits d'écriture pour le chemin et le fichier.</value>
</data>
<data name="ICSharpCode.SharpDevelop.BrowserDisplayBinding.Browser" xml:space="preserve">
<value>Navigateur</value>
@ -3674,7 +3671,7 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value> @@ -3674,7 +3671,7 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<value>&lt;Par défaut&gt;</value>
</data>
<data name="ICSharpCode.SharpDevelop.Commands.ChooseLayoutCommand.ResetToDefaultsQuestion" xml:space="preserve">
<value>Etes-vous sûr de vouloir charger la configuration par défaut de l'espace de travail? Note: Ceci n'affectera pas vos layouts personnalisés.</value>
<value>Etes-vous sûr de vouloir charger la configuration par défaut de l'espace de travail ? Note: Ceci n'affectera pas vos layouts personnalisés.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Commands.Convert" xml:space="preserve">
<value>Conversion</value>
@ -3755,7 +3752,7 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value> @@ -3755,7 +3752,7 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<value>Le fichier est introuvable.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Commands.ReloadFile.ReloadFileQuestion" xml:space="preserve">
<value>Etes vous sûr que vous voulez recharger le fichier ?
<value>Etes-vous sûr que vous voulez recharger le fichier ?
Toutes les modifications seront perdues.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Commands.RunCompile.LanguageBindingCantCompileFileError" xml:space="preserve">
@ -4027,7 +4024,7 @@ Toutes les modifications seront perdues.</value> @@ -4027,7 +4024,7 @@ Toutes les modifications seront perdues.</value>
<value>L'ajout de ce composant conduirait à une dépendance cyclique.</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Hosts.DefaultDesignerHost.ExceptionDuringComponentCreationError" xml:space="preserve">
<value>Exception lors de la création d'un composant pour le Form Designer (un composant a levé une exception dans son constructeur). CELA N'AFFECTE EN RIEN VOTRE CODE SOURCE.</value>
<value>Exception lors de la création d'un composant pour le Form Designer (un composant a levé une exception dans son constructeur). CELA N'AFFECTE PAS VOTRE CODE SOURCE.</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors" xml:space="preserve">
<value>Impossible de charger le concepteur. Vérifier les erreurs de syntaxe du code source et si toutes les références sont disponibles.</value>
@ -4521,7 +4518,7 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v @@ -4521,7 +4518,7 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v
<value>Impossible de trouver le dialogue id '{0}' dans le document.</value>
</data>
<data name="ICSharpCode.WixBinding.ExtensionBinding.InvalidExtension" xml:space="preserve">
<value>Une extension doit être de la forme: Classe, Assembly
<value>Une extension doit être de la forme: Classe, Nom d'Assembly
Par exemple: Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension</value>
</data>
@ -5729,6 +5726,9 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace @@ -5729,6 +5726,9 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Ajouter une référence</value>
</data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Ajouter une référence de Service</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Ajouter une référence web</value>
</data>
@ -6606,6 +6606,9 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.</value @@ -6606,6 +6606,9 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.</value
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Ouvre une solution</value>
</data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Supprimer de la liste des projets récents</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Page de démarrage</value>
</data>
@ -7597,7 +7600,7 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.</value @@ -7597,7 +7600,7 @@ Les fichiers de resources ont été renommés/déplacés en conséquence.</value
<value>Compiler projet actif ou buffer (si pas de projet ouvert) (Sauvegarde auto.)</value>
</data>
<data name="XML.MainMenu.RunMenu.Compile.StopDebuggingQuestion" xml:space="preserve">
<value>Une session de déboguage est en cours, voulez vous l'arrêter pour reconstruire le projet?</value>
<value>Une session de déboguage est en cours, voulez-vous l'arrêter pour reconstruire le projet?</value>
</data>
<data name="XML.MainMenu.RunMenu.Compile.StopDebuggingTitle" xml:space="preserve">
<value>Arrêter le déboguage</value>
@ -7771,7 +7774,4 @@ Erreur lors du démarrage:</value> @@ -7771,7 +7774,4 @@ Erreur lors du démarrage:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Partie non commentée</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Cette ressource n'est pas utilisée. Son but est de tester la base de donnée de traduction.</value>
</data>
</root>

8
data/resources/StringResources.hu.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Ez az erőforrás nincs használva. Célja a fordító adatbázis tesztelése.
Valamint soremelést tartalmaz.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>About</value>
</data>
@ -5079,8 +5083,4 @@ Hiba az indításkor:</value> @@ -5079,8 +5083,4 @@ Hiba az indításkor:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Megjegyzésből ki</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Ez az erőforrás nincs használva. Célja a fordító adatbázis tesztelése.
Valamint soremelést tartalmaz.</value>
</data>
</root>

8
data/resources/StringResources.it.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Questa risorsa non viene utilizzata. Il suo scopo è di testare il database di traduzione ed ha
una riga a capo</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Informazioni su...</value>
</data>
@ -7710,8 +7714,4 @@ Errore durante esecuzione:</value> @@ -7710,8 +7714,4 @@ Errore durante esecuzione:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Rimuovi commento regione</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Questa risorsa non viene utilizzata. Il suo scopo è di testare il database di traduzione ed ha
una riga a capo</value>
</data>
</root>

6
data/resources/StringResources.kr.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>ちょっとくらいのわがままは、大目に見てね。</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>정보</value>
</data>
@ -6263,7 +6266,4 @@ SharpDevelop 2는 리소스를 다른 방법으로 컴파일합니다: 리소스 @@ -6263,7 +6266,4 @@ SharpDevelop 2는 리소스를 다른 방법으로 컴파일합니다: 리소스
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>이 부분의 주석 해제</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>ちょっとくらいのわがままは、大目に見てね。</value>
</data>
</root>

15
data/resources/StringResources.nl.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Deze bron is niet in gebruik. Het doel is om vertalingsdatabase te testen en heeft een 'line break'</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Info...</value>
</data>
@ -2650,6 +2653,9 @@ Wilt u het nieuwe bestand toevoegen aan project ${CurrentProjectName}?</value> @@ -2650,6 +2653,9 @@ Wilt u het nieuwe bestand toevoegen aan project ${CurrentProjectName}?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Standaard waarden voor VB Opties:</value>
</data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Code formatteren</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>Instellingen</value>
</data>
@ -5730,6 +5736,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -5730,6 +5736,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Voeg referentie toe</value>
</data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Service referentie toevoegen</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Web referentie toevoegen</value>
</data>
@ -6608,6 +6617,9 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value> @@ -6608,6 +6617,9 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Oplossing openen</value>
</data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Verwijder van de lijst met recente projecten</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Startpagina</value>
</data>
@ -7774,7 +7786,4 @@ Startfout:</value> @@ -7774,7 +7786,4 @@ Startfout:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Regiocommentaar verwijderen</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Deze bron is niet in gebruik. Het doel is om vertalingsdatabase te testen en heeft een 'line break'</value>
</data>
</root>

8
data/resources/StringResources.no.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Denne ressursen er ikke i bruk. Formålet er å teste oversettingsdatabasen, og har
et linjeskift</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Om</value>
</data>
@ -7047,8 +7051,4 @@ SharpDevelop 2 kompilerer ressurser annerledes: ressursnavnet er ikke bare filna @@ -7047,8 +7051,4 @@ SharpDevelop 2 kompilerer ressurser annerledes: ressursnavnet er ikke bare filna
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Fjern kommentarer</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Denne ressursen er ikke i bruk. Formålet er å teste oversettingsdatabasen, og har
et linjeskift</value>
</data>
</root>

8
data/resources/StringResources.pl.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Ten zasób nie jest używany. Jego przeznaczeniem jest testowanie bazy tłumaczeń i posiada
łamanie wiersza</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>O Menadżerze Dodatków</value>
</data>
@ -5661,8 +5665,4 @@ Błąd podczas uruchamiania:</value> @@ -5661,8 +5665,4 @@ Błąd podczas uruchamiania:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Odkomentuj region</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Ten zasób nie jest używany. Jego przeznaczeniem jest testowanie bazy tłumaczeń i posiada
łamanie wiersza</value>
</data>
</root>

33
data/resources/StringResources.pt-br.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso não está sendo utilizado. O seu proposito é testar o banco de dados de traduções e tem uma quebra de linha</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Sobre</value>
</data>
@ -228,6 +231,33 @@ @@ -228,6 +231,33 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Formato de arquivo desconhecido.</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Instalar do arquivo...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repositorio:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Pesquisar:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Mostrar adicionais instalados</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Você não pode desinstalar o Gerenciador de Adicionais porque você precisa dele para reinstalar os adicionais!</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>Repositório de adicionais do SharpDevelop</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Criado por:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Dependências:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Baixados:</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Esse arquivo contem novas linhas inconsistentes.</value>
</data>
@ -6199,7 +6229,4 @@ Use somente letras, dígitos, espaço, "." ou "_" são permitidos.</value> @@ -6199,7 +6229,4 @@ Use somente letras, dígitos, espaço, "." ou "_" são permitidos.</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Desfazer comentário</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso não está sendo utilizado. O seu proposito é testar o banco de dados de traduções e tem uma quebra de linha</value>
</data>
</root>

6
data/resources/StringResources.pt.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso não é utilizado. A sua finalidade é testar a base de dados de traduções</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Sobre</value>
</data>
@ -5846,7 +5849,4 @@ O erro no início foi:</value> @@ -5846,7 +5849,4 @@ O erro no início foi:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Desfazer comentário</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Este recurso não é utilizado. A sua finalidade é testar a base de dados de traduções</value>
</data>
</root>

8
data/resources/StringResources.ro.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Această resursă nu este utilzată. Scopul ei este de a testa traducerile şi conţine un retur de car
</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Despre</value>
</data>
@ -3794,8 +3798,4 @@ Eroare la pornire:</value> @@ -3794,8 +3798,4 @@ Eroare la pornire:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Regiune necomentată</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Această resursă nu este utilzată. Scopul ei este de a testa traducerile şi conţine un retur de car
</value>
</data>
</root>

8
data/resources/StringResources.ru.resx

@ -117,6 +117,10 @@ @@ -117,6 +117,10 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Эта строка нигде не используется. Она нужна для тестирования базы данных переводов, а также в ней есть
перенос строки</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>О Менеджере Плагинов</value>
</data>
@ -6648,8 +6652,4 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес @@ -6648,8 +6652,4 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Раскомментировать</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Эта строка нигде не используется. Она нужна для тестирования базы данных переводов, а также в ней есть
перенос строки</value>
</data>
</root>

361
data/resources/StringResources.se.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Den här resursen används inte. Dess syfte är att testa översättningsdatabasen och har en linjebrytning.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Om SharpDevelop</value>
</data>
@ -229,6 +232,122 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -229,6 +232,122 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Okänt filformat:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Installera från arkivfil...</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Sök:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Visa förinstallerade AddIns</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Du kan inte avinstallera AddInManager eftersom denna behövs för att på nytt installera AddIns!</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Skapad av:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Beroenden:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Nerladdningar:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Filens namn:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Installerad version:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Senast uppdaterad:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Mer information:</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Senaste version:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Omdöme:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Rapportera missbruk</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Version:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Visa licensavtal</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Följande AddIns är beroende av "{0}":
{1}
Dessa kommer att sluta fungera om detta AddIn avaktiveras! Är du säker på att du vill fortsätta?</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>Jag &amp;Accepterar</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>Jag av&amp;böjer</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Licensavtal</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Lägg till</value>
</data>
<data name="AddInManager2.OptionPanel.AutoCheckForUpdates" xml:space="preserve">
<value>Kontrollera automatiskt om det finns uppdateringar</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Flytta ner</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Flytta upp</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Namn:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Ta bort</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Källa:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.General" xml:space="preserve">
<value>Allmänt</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Följande AddIns är beroende av "{0}":
{1}
Dessa kommer att sluta fungera om detta AddIn tas bort! Är du säker på att du vill fortsätta?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop AddIns|*.sdaddin;*.addin|Alla filer|*.*</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleText" xml:space="preserve">
<value>Klicka här för att se uppdateringarna.</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleTitle" xml:space="preserve">
<value>Uppdateringar till SharpDevelop finns tillgängliga</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Tillgängliga</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Installerade</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Uppdateringar</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Den här filen innehåller inkonsekvent information (newlines).</value>
</data>
@ -269,7 +388,7 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -269,7 +388,7 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<value>Hjälp bibliotek</value>
</data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Hjälpläge</value>
<value>Välj hjälpinställningar</value>
</data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve">
<value>Kunde inte starta Hjälp bibliotekshanteraren på grund av att katalog inte är installerad eller vald. Vänligen kontrollera dina inställningar (se Verktyg&gt;Inställningar&gt;Microsoft Help Viewer)</value>
@ -299,7 +418,13 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -299,7 +418,13 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<value>Visa hjälp</value>
</data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve">
<value>Använd extern hjälp</value>
<value>Använd extern hjälpvisare</value>
</data>
<data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve">
<value>Jag vill använda lokal hjälp</value>
</data>
<data name="AddIns.HelpViewer.UseOnlineHelpLabel" xml:space="preserve">
<value>Jag vill använda online-baserad hjälp</value>
</data>
<data name="AddIns.HexEditor.DefaultBytesPerLine" xml:space="preserve">
<value>Antal bytes per rad</value>
@ -310,6 +435,9 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -310,6 +435,9 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.HexEditor.Display.Elements.Data" xml:space="preserve">
<value>Data</value>
</data>
<data name="AddIns.HexEditor.Display.Elements.Offset" xml:space="preserve">
<value>Förskjutning</value>
</data>
<data name="AddIns.HexEditor.NumeralSystem" xml:space="preserve">
<value>Numeriskt system</value>
</data>
@ -364,9 +492,39 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -364,9 +492,39 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.Profiler.Commands.ShowFunctions.TabTitle" xml:space="preserve">
<value>Alla funktioner för {0}</value>
</data>
<data name="AddIns.Profiler.DatabaseTooNewError" xml:space="preserve">
<value>Den valda SharpDevelop-profileringssessionen skapades av en nyare version av SharpDevelop och kan därför inte öppnas.</value>
</data>
<data name="AddIns.Profiler.FileExtensionDescription" xml:space="preserve">
<value>SharpDevelop-profileringssession</value>
</data>
<data name="AddIns.Profiler.Messages.FileNotFound" xml:space="preserve">
<value>Detta projekt kunde inte startas eftersom den exekverbara filen inte kunde hittas. Kontrollera att projektet och dess beroenden är korrekt byggda!</value>
</data>
<data name="AddIns.Profiler.Messages.NoStartableProjectFound" xml:space="preserve">
<value>Hittade inget projekt som kan startas. Avbryter...</value>
</data>
<data name="AddIns.Profiler.Messages.PreparingForAnalysis" xml:space="preserve">
<value>Förbereder för analys...</value>
</data>
<data name="AddIns.Profiler.Messages.RegisterFailed" xml:space="preserve">
<value>Kunde inte registrera profileraren i COM-registret. Profileringen kan inte påbörjas!</value>
</data>
<data name="AddIns.Profiler.Messages.UnregisterFailed" xml:space="preserve">
<value>Kunde inte avregistrera profileraren från COM-registret!</value>
</data>
<data name="AddIns.Profiler.MessageViewCategory" xml:space="preserve">
<value>Profil</value>
</data>
<data name="AddIns.Profiler.Options.General.DataCollection.CombineRecursiveCalls" xml:space="preserve">
<value>Kombinera rekursiva anrop.</value>
</data>
<data name="AddIns.Profiler.Options.General.DataCollection.DoNotProfileNetInternals" xml:space="preserve">
<value>Profilera inte interna anropa hos .NET.</value>
</data>
<data name="AddIns.Profiler.Options.General.DataCollection.EnableDC" xml:space="preserve">
<value>Samla data endast vid sessionens slut.</value>
</data>
<data name="AddIns.Profiler.Options.General.DataCollection.EnableDCAtStartup" xml:space="preserve">
<value>Börja insamling av data direkt efter att sessionen har startat.</value>
</data>
@ -376,9 +534,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -376,9 +534,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.Profiler.Options.General.DataCollection.SizeOfStorageDescription" xml:space="preserve">
<value>Storlek av temporär data fil.</value>
</data>
<data name="AddIns.Profiler.Options.General.DataCollection.TrackEvents" xml:space="preserve">
<value>Spåra händelser</value>
</data>
<data name="AddIns.Profiler.Options.Title" xml:space="preserve">
<value>Profilering</value>
</data>
<data name="AddIns.Profiler.ProfileCurrentProject" xml:space="preserve">
<value>Profilera nuvarande projekt</value>
</data>
<data name="AddIns.Profiler.ProfileExecutable" xml:space="preserve">
<value>Välj en exekverbar att profilera</value>
</data>
<data name="AddIns.Profiler.ProfileExecutable.ErrorMessage" xml:space="preserve">
<value>Ogiltigt data, vänligen försök igen!</value>
</data>
@ -388,12 +555,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -388,12 +555,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.Profiler.ProfileExecutableForm.StartText" xml:space="preserve">
<value>Starta profilering</value>
</data>
<data name="AddIns.Profiler.ProfileExecutableForm.Title" xml:space="preserve">
<value>Profilera exekverbar</value>
</data>
<data name="AddIns.Profiler.ProfilerControlWindow.CollectData" xml:space="preserve">
<value>Samla data</value>
</data>
<data name="AddIns.Profiler.ProfilerControlWindow.Shutdown" xml:space="preserve">
<value>Stäng ner</value>
</data>
<data name="AddIns.Profiler.ProfilerControlWindow.Title" xml:space="preserve">
<value>Kontrollfönster för profileraren</value>
</data>
<data name="AddIns.Profiler.ProfilingView.CallCountColumnText" xml:space="preserve">
<value>Antal anrop</value>
</data>
@ -403,9 +576,15 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -403,9 +576,15 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.Profiler.ProfilingView.ContextMenu.CopySelectedData" xml:space="preserve">
<value>Kopiera markerat</value>
</data>
<data name="AddIns.Profiler.ProfilingView.ContextMenu.FindCallsOfSelected" xml:space="preserve">
<value>Hitta anrop för valda funktioner</value>
</data>
<data name="AddIns.Profiler.ProfilingView.ContextMenu.GoToDefinition" xml:space="preserve">
<value>Gå till definition</value>
</data>
<data name="AddIns.Profiler.ProfilingView.ContextMenu.SetAsRoot" xml:space="preserve">
<value>Ange som rot/Slå ihop</value>
</data>
<data name="AddIns.Profiler.ProfilingView.ContextMenu.ShowFunctions" xml:space="preserve">
<value>Visa funktioner</value>
</data>
@ -439,15 +618,33 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -439,15 +618,33 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.Profiler.ProfilingView.TimeText" xml:space="preserve">
<value>Tid:</value>
</data>
<data name="AddIns.Profiler.ProfilingView.Title" xml:space="preserve">
<value>Analyserare av profileringssession</value>
</data>
<data name="AddIns.Profiler.ProfilingView.Top20TabText" xml:space="preserve">
<value>Topp 20</value>
</data>
<data name="AddIns.Profiler.ProfilingView.WaitBarText" xml:space="preserve">
<value>Uppdaterar vy, vänligen vänta...</value>
</data>
<data name="AddIns.Profiler.UnitTests.RunWithProfiler" xml:space="preserve">
<value>Kör med profilerare</value>
</data>
<data name="AddIns.SearchReplace.SearchProgressTitle" xml:space="preserve">
<value>Söker...</value>
</data>
<data name="AddIns.SharpRefactoring.CreateProperties.AddSetterLabel" xml:space="preserve">
<value>Lägg till Setter</value>
</data>
<data name="AddIns.SharpRefactoring.CreateProperties.Description" xml:space="preserve">
<value>Välj de fält som du vill skapa egenskaper för:</value>
</data>
<data name="AddIns.SharpRefactoring.CreateProperties.Description.ImplementINotifyPropertyChanged" xml:space="preserve">
<value>Implementera INotifyPropertyChanged</value>
</data>
<data name="AddIns.SharpRefactoring.CreateProperties.Title" xml:space="preserve">
<value>Skapa egenskaper</value>
</data>
<data name="AddIns.SharpRefactoring.ExtractMethod" xml:space="preserve">
<value>Extrahera funktion</value>
</data>
@ -469,9 +666,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -469,9 +666,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.SharpRefactoring.IntroduceMethod" xml:space="preserve">
<value>Introducera funktion {0} i {1}</value>
</data>
<data name="AddIns.SharpRefactoring.OverrideEqualsGetHashCodeMethods" xml:space="preserve">
<value>Åsidosätt Equals() och GetHashCode()</value>
</data>
<data name="AddIns.SharpRefactoring.OverrideEqualsGetHashCodeMethods.AddInterface" xml:space="preserve">
<value>Lägg till interface {0}</value>
</data>
<data name="AddIns.SharpRefactoring.OverrideEqualsGetHashCodeMethods.AddOtherMethod" xml:space="preserve">
<value>Lägg till åsidosättande av ${otherMethod}</value>
</data>
<data name="AddIns.SharpRefactoring.OverrideToStringMethod" xml:space="preserve">
<value>Åsidosätt ToString()</value>
</data>
<data name="AddIns.SourceAnalysis.CheckProjectWithStyleCop" xml:space="preserve">
<value>Kontrollera nuvarande projekt med StyleCop</value>
</data>
@ -583,9 +789,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg' @@ -583,9 +789,18 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<data name="AddIns.UsageDataCollector.AcceptConfirmation" xml:space="preserve">
<value>Tack för din medverkan! Du kan alltid gå ur genom att ändra inställningarna.i SharpDevelop.</value>
</data>
<data name="AddIns.UsageDataCollector.AcceptRadioButton" xml:space="preserve">
<value>Jag vill delta - samla och skicka användningsdata</value>
</data>
<data name="AddIns.UsageDataCollector.DeclineRadioButton" xml:space="preserve">
<value>Jag vill inte delta</value>
</data>
<data name="AddIns.UsageDataCollector.ShowCollectedData" xml:space="preserve">
<value>Visa insamlad data</value>
</data>
<data name="AddIns.XamlBinding.Menu.RemoveMargin" xml:space="preserve">
<value>Ta bort marginal</value>
</data>
<data name="AddIns.XamlBinding.Options.EventColor" xml:space="preserve">
<value>Händelsefärg:</value>
</data>
@ -644,9 +859,15 @@ Du kan specificera ett startcommando i projektinställningarna.</value> @@ -644,9 +859,15 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.ActionMenu.UnregisterTypeLibMenuItem" xml:space="preserve">
<value>Avregistrera TypeLib</value>
</data>
<data name="ComponentInspector.AttachDialog.AttachFailedMessage" xml:space="preserve">
<value>Misslyckades med att bifoga till processen {0}.</value>
</data>
<data name="ComponentInspector.AttachDialog.ProcessLabel" xml:space="preserve">
<value>Process</value>
</data>
<data name="ComponentInspector.AttachDialog.Title" xml:space="preserve">
<value>Bifoga</value>
</data>
<data name="ComponentInspector.CastDialog.CannotFindType" xml:space="preserve">
<value>Kan inte hitta typen</value>
</data>
@ -767,6 +988,9 @@ Du kan specificera ett startcommando i projektinställningarna.</value> @@ -767,6 +988,9 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.GacList.OpenMenuItem" xml:space="preserve">
<value>&amp;Öppna</value>
</data>
<data name="ComponentInspector.GacList.PublicKeyTokenColumn" xml:space="preserve">
<value>Token för publik nyckel</value>
</data>
<data name="ComponentInspector.GacList.VersionColumn" xml:space="preserve">
<value>Version</value>
</data>
@ -869,6 +1093,12 @@ Du kan specificera ett startcommando i projektinställningarna.</value> @@ -869,6 +1093,12 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.WaitingForAppDialog.Information" xml:space="preserve">
<value>Väntar på att applikationen skall starta. Ifall applikationen inte startar (eller om du tröttnar på att vänta) så kan du avbryta genom att klicka på Avbryt.</value>
</data>
<data name="CSharpBinding.Formatting.PresetOverwriteQuestion" xml:space="preserve">
<value>Är du säker på att du vill återställa alla tidigare angivna formateringsinställningar?</value>
</data>
<data name="CSharpBinding.Formatting.ResetTo" xml:space="preserve">
<value>Återställ till:</value>
</data>
<data name="CSharpBinding.InsertAnonymousMethod" xml:space="preserve">
<value>Infoga anonyma metoder utan parametrar.</value>
</data>
@ -1227,7 +1457,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1227,7 +1457,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Detaljinställningar för kodkomplettering</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend" xml:space="preserve">
<value>Följande inställningar är programspråksberoende, varför inställningarna kan variera mellan resp. språk.</value>
<value>Följande inställningar är språkberoende, vissa inställningar är inte tillgängliga för vissa språk.</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.MainOption" xml:space="preserve">
<value>Använd följande inställning för att avaktivera kodkomplettering:</value>
@ -1238,6 +1468,9 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1238,6 +1468,9 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Spara</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation" xml:space="preserve">
<value>Dokumentation (om tillgänglig)</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Förhandsvälj nyligen använda medlemmar</value>
</data>
@ -1302,7 +1535,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1302,7 +1535,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Redigera Standardrubriker</value>
</data>
<data name="Dialog.Options.IDEOptions.General" xml:space="preserve">
<value>Generella</value>
<value>Allmänt</value>
</data>
<data name="Dialog.Options.IDEOptions.LoadSaveOptions.CreateBackupCopyCheckBox" xml:space="preserve">
<value>Skapa &amp;alltid säkerhetskopia</value>
@ -1548,11 +1781,14 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1548,11 +1781,14 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Ingen</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve">
<value>Markörer och linjaler</value>
<value>Markörer</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve">
<value>Markörer och linjaler</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.RulersGroupBox" xml:space="preserve">
<value>Linjaler</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.SpacesCheckBox" xml:space="preserve">
<value>Visa &amp;blanksteg</value>
</data>
@ -1638,7 +1874,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1638,7 +1874,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Projektinformation</value>
</data>
<data name="Dialog.ProjectOptions.ApplicationSettings.RootNamespace" xml:space="preserve">
<value>&amp;Rot namespace:</value>
<value>&amp;Rotnamnrymd:</value>
</data>
<data name="Dialog.ProjectOptions.ApplicationSettings.StartupObject" xml:space="preserve">
<value>&amp;Startobjekt:</value>
@ -1737,7 +1973,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1737,7 +1973,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Tillåt &amp;osäker kod</value>
</data>
<data name="Dialog.ProjectOptions.BuildOptions.General" xml:space="preserve">
<value>Generell</value>
<value>Allmänt</value>
</data>
<data name="Dialog.ProjectOptions.BuildOptions.NoCorlib" xml:space="preserve">
<value>Referera inte till &amp;mscorlib.dll</value>
@ -1806,7 +2042,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value> @@ -1806,7 +2042,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>&amp;Lägg till importering</value>
</data>
<data name="Dialog.ProjectOptions.ProjectImports.Namespace" xml:space="preserve">
<value>&amp;Namespace:</value>
<value>&amp;Namnrymd:</value>
</data>
<data name="Dialog.ProjectOptions.Publish" xml:space="preserve">
<value>Publicera</value>
@ -1997,6 +2233,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -1997,6 +2233,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Lägg till</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avancerad</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Tillbaka</value>
</data>
@ -2090,6 +2329,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2090,6 +2329,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="Global.MoveUp" xml:space="preserve">
<value>Flytta &amp;Upp</value>
</data>
<data name="Global.NA" xml:space="preserve">
<value>Ej tillämpbar</value>
</data>
<data name="Global.Name" xml:space="preserve">
<value>Namn</value>
</data>
@ -2207,6 +2449,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2207,6 +2449,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="Gui.ProjectBrowser.OpenWith.Bindings.XmlEditor" xml:space="preserve">
<value>XML redigerare</value>
</data>
<data name="Gui.ProjectBrowser.OpenWith.ChooseProgram" xml:space="preserve">
<value>Välj vilket program som du vill öppna denna fil med:</value>
</data>
<data name="Gui.ProjectBrowser.OpenWith.Default" xml:space="preserve">
<value>Standard</value>
</data>
@ -2264,9 +2509,21 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2264,9 +2509,21 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="ICSharpCode.BooInterpreter" xml:space="preserve">
<value>Boo tolkare</value>
</data>
<data name="ICSharpCode.Build.CannotFindFxCop" xml:space="preserve">
<value>SharpDevelop kan inte hitta FxCop. Välj installationsmapp för FxCop i SharpDevelops inställningar.</value>
</data>
<data name="ICSharpCode.Build.CannotReadFxCopLogFile" xml:space="preserve">
<value>Kan inte läsa loggfilen för FxCop:</value>
</data>
<data name="ICSharpCode.Build.MonoIsNotInstalled" xml:space="preserve">
<value>Mono är inte installerad.</value>
</data>
<data name="ICSharpCode.Build.RunningCodeAnalysis" xml:space="preserve">
<value>Kör kodanalys...</value>
</data>
<data name="ICSharpCode.Build.UnknownTargetMonoFrameworkVersion" xml:space="preserve">
<value>Okänd version av vald Mono Framework</value>
</data>
<data name="ICSharpCode.CodeAnalysis" xml:space="preserve">
<value>Kodanalys</value>
</data>
@ -2291,6 +2548,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2291,6 +2548,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="ICSharpCode.CodeAnalysis.ProjectOptions.CannotFindFxCop" xml:space="preserve">
<value>Kunde inte hitta FxCop - kontrollera att FxCop finns installerad.</value>
</data>
<data name="ICSharpCode.CodeAnalysis.ProjectOptions.LoadingRules" xml:space="preserve">
<value>Laddar tillgängliga regler...</value>
</data>
<data name="ICSharpCode.CodeAnalysis.ProjectOptions.SpecifyFxCopPath" xml:space="preserve">
<value>Du kan specificera sökvägen till FxCop under inställningarna för SharpDevelop.</value>
</data>
@ -2306,6 +2566,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2306,6 +2566,9 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="ICSharpCode.CodeAnalysis.RunningFxCopOn" xml:space="preserve">
<value>Kör FxCop på</value>
</data>
<data name="ICSharpCode.CodeAnalysis.SuppressMessage" xml:space="preserve">
<value>Visa inte meddelande</value>
</data>
<data name="ICSharpCode.CodeCoverage.CodeCovered" xml:space="preserve">
<value>Kodtäckning</value>
</data>
@ -2315,9 +2578,15 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2315,9 +2578,15 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Kolumn</value>
</data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Innehåll</value>
</data>
<data name="ICSharpCode.CodeCoverage.EndColumn" xml:space="preserve">
<value>Slutkolumn</value>
</data>
<data name="ICSharpCode.CodeCoverage.EndLine" xml:space="preserve">
<value>Radslut</value>
</data>
<data name="ICSharpCode.CodeCoverage.NoCodeCoverageResultsGenerated" xml:space="preserve">
<value>Ingen resultatfil för kodtäckning genererades:</value>
</data>
@ -2369,6 +2638,21 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek @@ -2369,6 +2638,21 @@ Du kan även välja att lagra inställningen i .user-filen istället för projek
<data name="ICSharpCode.CppBinding.ProjectOptions.AdditionalOptions" xml:space="preserve">
<value>Ytterligare inställningar</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Linker" xml:space="preserve">
<value>Länkskapare</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Linker.AdditionalLibs" xml:space="preserve">
<value>Länka ytterligare filer</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Linker.AddModule" xml:space="preserve">
<value>Länka specifika .NET-moduler</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Linker.Library" xml:space="preserve">
<value>Biblioteksfilernas placeringar</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Linker.ManagedResourceFile" xml:space="preserve">
<value>Bädda in .NET-resursfil</value>
</data>
<data name="ICSharpCode.CppBinding.ProjectOptions.Preprocessor" xml:space="preserve">
<value>Preprocessor</value>
</data>
@ -2666,6 +2950,9 @@ Alla ändringar kommer att förloras.</value> @@ -2666,6 +2950,9 @@ Alla ändringar kommer att förloras.</value>
<data name="ICSharpCode.SharpDevelop.ExceptionBox.QuitWarning" xml:space="preserve">
<value>Vill du verkligen avsluta SharpDevelop? Alla ändringar som inte sparats kommer att förloras!</value>
</data>
<data name="ICSharpCode.SharpDevelop.ExceptionBox.ReportError" xml:space="preserve">
<value>Rapportera fel till SharpDevelop-teamet</value>
</data>
<data name="ICSharpCode.SharpDevelop.ExceptionBox.ThankYouMsg" xml:space="preserve">
<value>Tack för att du hjälper oss att göra SharpDevelop till ett bättre program.</value>
</data>
@ -2685,7 +2972,7 @@ Alla ändringar kommer att förloras.</value> @@ -2685,7 +2972,7 @@ Alla ändringar kommer att förloras.</value>
<value>Sökväg</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.Components.Namespace" xml:space="preserve">
<value>Namespace</value>
<value>Namnrymd</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.ComponentsToAddLabel" xml:space="preserve">
<value>K&amp;omponenter att lägga till</value>
@ -2721,7 +3008,7 @@ Alla ändringar kommer att förloras.</value> @@ -2721,7 +3008,7 @@ Alla ändringar kommer att förloras.</value>
<value>Konfigurera Verktygsfält</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.Namespace" xml:space="preserve">
<value>Namespace</value>
<value>Namnrymd</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.NewButton" xml:space="preserve">
<value>&amp;Ny</value>
@ -2763,7 +3050,7 @@ Alla ändringar kommer att förloras.</value> @@ -2763,7 +3050,7 @@ Alla ändringar kommer att förloras.</value>
<value>markera metoden InitializeComponents i kodvyn som endast läsbar</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GeneralOptionsPanel.PanelName" xml:space="preserve">
<value>Generell</value>
<value>Allmänt</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.GridPropertiesGroupBox" xml:space="preserve">
<value>Rutsystemets egenskaper</value>
@ -2771,6 +3058,9 @@ Alla ändringar kommer att förloras.</value> @@ -2771,6 +3058,9 @@ Alla ändringar kommer att förloras.</value>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.HeightLabel" xml:space="preserve">
<value>&amp;Höjd</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.OptimizedCodeGenerationCheckBox" xml:space="preserve">
<value>Använd optimerad kodgenerering</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.PanelName" xml:space="preserve">
<value>Rutsystemets Inställningar</value>
</data>
@ -2844,13 +3134,13 @@ Inga komponenter för WindowsFormer kommer att vara tillgängliga, var god konfi @@ -2844,13 +3134,13 @@ Inga komponenter för WindowsFormer kommer att vara tillgängliga, var god konfi
<value>Gå till</value>
</data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidNamespaceError" xml:space="preserve">
<value>Namespace innehåller ogiltiga tecken. Ett namespace kan endast innehålla bokstäver, siffror eller underscore tecken.</value>
<value>Namnrymden innehåller ogiltiga tecken. En namnrymd kan endast innehålla tecken som består av bokstäver, siffror eller understreck.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidReferenceNameError" xml:space="preserve">
<value>Referensnamnet innehåller ogiltiga tecken.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.NamespaceLabel" xml:space="preserve">
<value>&amp;Namespace:</value>
<value>&amp;Namnrymd:</value>
</data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ParametersProperty" xml:space="preserve">
<value>Parametrar</value>
@ -2972,13 +3262,16 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value> @@ -2972,13 +3262,16 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value>
<value>Specificerar om filen skall kopieras till utdatamappen</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool" xml:space="preserve">
<value>Anpassa verktyg</value>
<value>Anpassningsverktyg</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool.Description" xml:space="preserve">
<value>Specificerar verktyget som konverterar filen till utdatat.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomToolNamespace" xml:space="preserve">
<value>Namespace för anpassa verktyg</value>
<value>Namnrymd för anpassningsverktyget</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomToolNamespace.Description" xml:space="preserve">
<value>Specificerar namnrymden som anpassningsverktyget placerar utdata i.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.FileName.Description" xml:space="preserve">
<value>Fullständig sökväg till filen.</value>
@ -3043,6 +3336,9 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value> @@ -3043,6 +3336,9 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Konvertera valda &amp;projekt till:</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.CompilerVersion" xml:space="preserve">
<value>Kompilatorversion</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ConvertButton" xml:space="preserve">
<value>&amp;Konvertera</value>
</data>
@ -3149,6 +3445,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3149,6 +3445,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="ICSharpCode.WixBinding.PackagesFilesView.ContextMenu.AddFiles" xml:space="preserve">
<value>Lägg till filer...</value>
</data>
<data name="ICSharpCode.WixBinding.ProjectOptions.OutputType.Installer" xml:space="preserve">
<value>Installationspaket</value>
</data>
<data name="ICSharpCode.WixBinding.ViewDialogXml.DialogIdNotFoundMessage" xml:space="preserve">
<value>Kunde inte hitta '{0}' i {1}</value>
</data>
@ -3218,6 +3517,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3218,6 +3517,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="ICSharpCode.WixBinding.WixLibraryFolderNode.Text" xml:space="preserve">
<value>WiX bibliotek</value>
</data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>Inga skillnader upptäckta.</value>
</data>
<data name="ICSharpCode.WixBinding.WixProjectFileAssociation" xml:space="preserve">
<value>WIX projekt</value>
</data>
@ -3303,10 +3605,10 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3303,10 +3605,10 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>Schemata</value>
</data>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.NamespaceExists" xml:space="preserve">
<value>Det gick inte att lägga till schemat. Namespace '{0}' existerar redan.</value>
<value>Det gick inte att lägga till schemat. Namnrymden '{0}' existerar redan.</value>
</data>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.NoTargetNamespace" xml:space="preserve">
<value>Schema '{0}' saknar ett namespace (mål).</value>
<value>Schema '{0}' saknar en namnrymd som mål.</value>
</data>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.Title" xml:space="preserve">
<value>XML Schemata</value>
@ -3344,6 +3646,12 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3344,6 +3646,12 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="ICSharpCode.XmlEditor.XmlTreeView.Title" xml:space="preserve">
<value>XML träd</value>
</data>
<data name="ICSharpCode.XmlEditor.XPathQueryPad.NamespaceColumnHeaderTitle" xml:space="preserve">
<value>Namnrymd</value>
</data>
<data name="ICSharpCode.XmlEditor.XPathQueryPad.NamespacesTab" xml:space="preserve">
<value>Namnrymd</value>
</data>
<data name="ICSharpCode.XmlEditor.XPathQueryPad.PrefixColumnHeaderTitle" xml:space="preserve">
<value>Prefix</value>
</data>
@ -3392,6 +3700,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3392,6 +3700,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="MainWindow.DiscardChangesMessage" xml:space="preserve">
<value>Vill du verkligen kassera dina ändringar?</value>
</data>
<data name="MainWindow.Editor.Tooltip.Namespace" xml:space="preserve">
<value>namnrymd</value>
</data>
<data name="MainWindow.SaveChangesMessage" xml:space="preserve">
<value>Vill du spara ändringarna?</value>
</data>
@ -3968,6 +4279,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -3968,6 +4279,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="ProjectComponent.ContextMenu.GenerateDocumentation.ProjectNeedsToBeCompiled2" xml:space="preserve">
<value>XML dokumentationsfilen existerar inte, du måste kompilera projektet först.</value>
</data>
<data name="ProjectComponent.ContextMenu.GenerateDocumentation.SHFBNotFound" xml:space="preserve">
<value>För att skapa dokumentation från XML-kommentarer så krävs att 'Sandcastle Help File Builder' är installerad.</value>
</data>
<data name="ProjectComponent.ContextMenu.HtmlExport" xml:space="preserve">
<value>HTML-e&amp;xport</value>
</data>
@ -4062,7 +4376,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -4062,7 +4376,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>Multilinje</value>
</data>
<data name="RegExpTk.MainDialog.Namespace" xml:space="preserve">
<value>Namespace</value>
<value>Namnrymd</value>
</data>
<data name="RegExpTk.MainDialog.PublicVisible" xml:space="preserve">
<value>Publik synlig</value>
@ -4235,6 +4549,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -4235,6 +4549,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="SharpDevelop.Refactoring.CannotPerformOperationBecauseOfSyntaxErrors" xml:space="preserve">
<value>Operationen kunde inte utföras på grund av att källkoden innehåller fel:</value>
</data>
<data name="SharpDevelop.Refactoring.CreateGetter" xml:space="preserve">
<value>Skapa &amp;Getter</value>
</data>
<data name="SharpDevelop.Refactoring.CreateOnEventMethod" xml:space="preserve">
<value>Skapa OnEvent-metod</value>
</data>
@ -4298,6 +4615,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -4298,6 +4615,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="SharpDevelop.Refactoring.MoveClassToFile" xml:space="preserve">
<value>Flytta klassen till filen '${FileName}'</value>
</data>
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>Åsidosättanden av ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>Referenser till ${Name}</value>
</data>
@ -4329,7 +4649,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö @@ -4329,7 +4649,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>C# Dokumentations Taggar</value>
</data>
<data name="SharpDevelop.SideBar.GeneralCategory" xml:space="preserve">
<value>Generell</value>
<value>Allmänt</value>
</data>
<data name="SharpDevelop.SideBar.LicensesTags" xml:space="preserve">
<value>Licenser</value>
@ -5660,7 +5980,4 @@ Resursfilerna har därför bytt namn/flyttats enligt ovan.</value> @@ -5660,7 +5980,4 @@ Resursfilerna har därför bytt namn/flyttats enligt ovan.</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Avkommentera region</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Den här resursen används inte. Dess syfte är att testa översättningsdatabasen och har en linjebrytning.</value>
</data>
</root>

299
data/resources/StringResources.tr.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Bu kaynak kullanılamıyor. Amacı, çeviri veritabanını test etmek ve bir satır kesmesi var.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>Hakkında</value>
</data>
@ -160,7 +163,7 @@ @@ -160,7 +163,7 @@
<value>Bu eklenti iki kez kurulmuş. Lütfen birini kaldırın.</value>
</data>
<data name="AddInManager.AddInMustHaveIdentity" xml:space="preserve">
<value>Eklentinin Eklenti Yöneticisi tarafindan kullanılmasi için bir kimliği olmalıdır.</value>
<value>Eklenti Eklenti Yöneticisi tarafından kullanılabilmesi için bir &lt;kimlik&gt; sahibi olmalıdır.</value>
</data>
<data name="AddInManager.AddInRemoved" xml:space="preserve">
<value>Eklenti SharpDevelop yeniden başlatıldığında kaldırılacak.</value>
@ -229,6 +232,158 @@ @@ -229,6 +232,158 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Bilinmeyen dosya biçimi:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Arşivden yükle...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Depo:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Ara:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Önyüklü eklentileri göster</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Önsürümleri göster</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Eklentileri yeniden yüklemeden, eklenti yöneticisini kaldıramazsınız!</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>SharpDevelop Eklenti Arşivi</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Düzenleyen:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Bağımlılıklar:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>İndirilenler:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Dosya adı:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Yüklü sürüm:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Son güncelleme:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Daha fazla bilgi</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Yeni sürüm:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Değerlendirme:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Uygunsuzluğu bildir</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Sürüm:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Lisans Koşulları:</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Kurulu Eklenti, "{0}"'a bağlıdır:
{1}
Eklenti devre dışı olduktan sonra durabilir! Devam etmek istediğinizden emin misiniz?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Paket "{0}", ilave pakete ihtiyaç duymaktadır:
{1}
Uygulama, onları da indirip yüklemek için çalışacak. Devam etmek istiyor musunuz?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>Seçili paket geçerli SharpDevelop Eklentisi içermiyor.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>&amp;Kabul et</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>&amp;Reddet</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Package" xml:space="preserve">
<value>"Kabul et" butonuna tıklayarak paket için lisans şartlarını kabul ediyorsunuz.
Eğer lisans şartlarını kabul etmiyorsanız "Reddet" butonuna tıklayın.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>"Kabul et" butonuna tıklayarak yukarıda listelenen paketler için lisans şartlarını kabul ediyorsunuz.
Eğer lisans şartlarını kabul etmiyorsanız "Reddet" tıklayın.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Aşağıdaki paket için bir lisans koşulunu kabul gerekiyor:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Packages" xml:space="preserve">
<value>Aşağıdaki paketler için lisans koşullarını kabul etmeniz gerekli:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Lisans Koşulları</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Ekle</value>
</data>
<data name="AddInManager2.OptionPanel.AutoCheckForUpdates" xml:space="preserve">
<value>Güncellemeleri otomatik kontrol et</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Aşağı Taşı</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Yukarı Taşı</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Ad:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Kaldır</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Kaynak:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>Eklenti</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.General" xml:space="preserve">
<value>Genel</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Depolar</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>"{0}", aşağıdaki yüklü Eklentiye bağlı:
{1}
Eklenti kaldırıldıktan sonra çalışması durabilir! Devam etmek istediğinizden emin misiniz?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop Eklentileri|*.sdaddin;*.addin|All files|*.*</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleText" xml:space="preserve">
<value>Güncellemeleri görmek için buraya tıklayın.</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleTitle" xml:space="preserve">
<value>SharpDevelop için yararlanılabilir güncelleştirmeler</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Yararlanılabilir</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Yüklü</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Güncellemeler</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Bu dosya tutarsız satırlar içeriyor.</value>
</data>
@ -269,11 +424,14 @@ @@ -269,11 +424,14 @@
<value>Yardım Kitaplığı</value>
</data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Yardım Modu</value>
<value>Yardım Tercihi Ayarı</value>
</data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve">
<value>Seçili veya yüklü bir yardım kataloğu olmadığından, Kütüphane Yöneticisi Yardımı başlatılamıyor. Yardım ayarlarınızı kontrol ediniz(Araçlar&gt; Seçenekler&gt; Araçlar&gt; Microsoft Yardım Görüntüleyici).</value>
</data>
<data name="AddIns.HelpViewer.HLMNotAvailableDownloadWinSDK" xml:space="preserve">
<value>Yardım Kitaplığı Yöneticisi bulunamadı. SharpDevelop yardım özelliğini kullanmak için Microsoft Windows SDK 7.1 indirin ve kurun.</value>
</data>
<data name="AddIns.HelpViewer.HLMNotFound" xml:space="preserve">
<value>Kütüphane Yöneticisi Yardımı bulunamadı. Yüklemeyi kontrol edin.</value>
</data>
@ -302,7 +460,7 @@ @@ -302,7 +460,7 @@
<value>Yardımı Göster</value>
</data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve">
<value>Harici yardımı kullan</value>
<value>Harici yardım görüntüleyici kullan</value>
</data>
<data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve">
<value>Yerel yardımı kullanmak istiyorum</value>
@ -1382,6 +1540,30 @@ Bir ActiveX / COM nesnesi oluşturmak / değiştirmek için, nesne ağacı veya @@ -1382,6 +1540,30 @@ Bir ActiveX / COM nesnesi oluşturmak / değiştirmek için, nesne ağacı veya
<data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Kod Kalite Analizi</value>
</data>
<data name="CSharpBinding.Formatting.AutoFormat" xml:space="preserve">
<value>Kodu otomatik biçimlendir</value>
</data>
<data name="CSharpBinding.Formatting.DefaultOptionReference" xml:space="preserve">
<value>(varsayılan)</value>
</data>
<data name="CSharpBinding.Formatting.GlobalOptionReference" xml:space="preserve">
<value>(global)</value>
</data>
<data name="CSharpBinding.Formatting.NoPresetSelectedMessage" xml:space="preserve">
<value>Ön ayarlı seçim biçimlendirilmemiş!</value>
</data>
<data name="CSharpBinding.Formatting.PresetOverwriteQuestion" xml:space="preserve">
<value>Tüm öntanımlı biçimlendirme seçeneklerini sıfırlamak istediğinizden emin misiniz?</value>
</data>
<data name="CSharpBinding.Formatting.ProjectOptionReference" xml:space="preserve">
<value>(proje)</value>
</data>
<data name="CSharpBinding.Formatting.ResetTo" xml:space="preserve">
<value>Sıfırla:</value>
</data>
<data name="CSharpBinding.Formatting.SolutionOptionReference" xml:space="preserve">
<value>(Çözüm)</value>
</data>
<data name="CSharpBinding.GenerateNewHandlerInstructions" xml:space="preserve">
<value>Açık yönteme referans ekleyin; yeni yöntem eklemek için tab veya enter tuşuna tekrar basın.</value>
</data>
@ -1823,6 +2005,15 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -1823,6 +2005,15 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Kaydet</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTarget" xml:space="preserve">
<value>Araçipuçları linkler gitmeli</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDefinition" xml:space="preserve">
<value>Kod tanımı</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.TooltipLinkTargetDocumentation" xml:space="preserve">
<value>Belgeler (varsa)</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Son kullanılan üyeleri öncelikli seç</value>
</data>
@ -1871,6 +2062,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -1871,6 +2062,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve">
<value>Hata ayıklama</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.AskForArguments" xml:space="preserve">
<value>Bağımsız değişkenleri ve yürütülebilir lansman üzerinde çalışan dizini iste.</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.BreakAtBeginning" xml:space="preserve">
<value>Yürütmenin ilk satırında ara ver.</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableDecompiler" xml:space="preserve">
<value>Tekrar derlemeyi etkinleştir</value>
</data>
@ -1919,6 +2116,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -1919,6 +2116,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Symbols.ListCaption" xml:space="preserve">
<value>Sembol ve kaynak kodu yolları:</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.WithoutSource" xml:space="preserve">
<value>Kaynak Ayıklama Olmadan</value>
</data>
<data name="Dialog.Options.IDEOptions.EditStandardHeaderPanel.HeaderLabel" xml:space="preserve">
<value>Başlık</value>
</data>
@ -2186,6 +2386,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -2186,6 +2386,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Eşleşen parantezleri vurgula</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightCurrentLineCheckBox" xml:space="preserve">
<value>Geçerli satırı vurgulayın</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Sembolleri vurgula</value>
</data>
@ -2447,6 +2650,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -2447,6 +2650,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>VB Seçenekleri için varsayılan değerler:</value>
</data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Kod biçimlendirme</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>Yapılandırma</value>
</data>
@ -3152,9 +3358,15 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind @@ -3152,9 +3358,15 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind
<data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Kapsanmamış Kod</value>
</data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Kod Kısmen Kapalı</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Kolon</value>
</data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>İçerik</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Gösterim Seçenekleri</value>
</data>
@ -3596,6 +3808,12 @@ Not: Bu işlem özel düzenlemelerinizi etkilemez.</value> @@ -3596,6 +3808,12 @@ Not: Bu işlem özel düzenlemelerinizi etkilemez.</value>
<data name="ICSharpCode.SharpDevelop.DefaultEditor.IncrementalSearch.ReverseSearchStatusBarMessage" xml:space="preserve">
<value>Artan Ters Arama:</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyInvalid" xml:space="preserve">
<value>{0} geçerli bir .NET derlemesi değil.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyNotAccessible" xml:space="preserve">
<value>{0} erişilebilir değil ya da artık yok.</value>
</data>
<data name="ICSharpCode.SharpDevelop.ErrorLoadingCodeCompletionInformation" xml:space="preserve">
<value>${Filename} dosyasından ${Assembly} için kod tamamlama bilgisi yükleme hatası:</value>
</data>
@ -4128,6 +4346,9 @@ Sadece harf,rakam, boşluk, '.' yada '_' kullanabilirsiniz.</value> @@ -4128,6 +4346,9 @@ Sadece harf,rakam, boşluk, '.' yada '_' kullanabilirsiniz.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>Bu çözüm dışarıdan değiştirildi.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.SolutionFormattingOptions.Title" xml:space="preserve">
<value>Çözüm Biçimlendirme Seçenekleri</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Seçilen projeleri dönüştür:</value>
</data>
@ -4472,6 +4693,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4472,6 +4693,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework Uzantısı</value>
</data>
<data name="ICSharpCode.WixBinding.WixNotInstalled" xml:space="preserve">
<value>WİX yüklü değil. Lütfen http://wixtoolset.org/ adresinden indirin.</value>
</data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>Fark bulunamadı</value>
</data>
@ -4493,6 +4717,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4493,6 +4717,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve">
<value>Visual Studio Uzantısı</value>
</data>
<data name="ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad" xml:space="preserve">
<value>WPF Tasarımcısı Küçük Resim Görünümü</value>
</data>
<data name="ICSharpCode.WPFDesigner.ContextMenu.Copy" xml:space="preserve">
<value>Kopyala</value>
</data>
@ -4793,6 +5020,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4793,6 +5020,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Sık Kullanılanlar</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.AddToWorkspace" xml:space="preserve">
<value>Çalışma alanına ekle</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Geri</value>
</data>
@ -4832,9 +5062,24 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4832,9 +5062,24 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve">
<value>Arama sonucu olumsuz.</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyButton.ToolTip" xml:space="preserve">
<value>Derleme aç</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromFile" xml:space="preserve">
<value>Dosyadan derleme aç...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromGAC" xml:space="preserve">
<value>GAC'dan derleme aç...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenInClassBrowser" xml:space="preserve">
<value>Sınıf Tarayıcıda Aç</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.SearchButton.ToolTip" xml:space="preserve">
<value>Sınıf Görünümü Arama</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.Workspace" xml:space="preserve">
<value>{0} Çalışma alanı</value>
</data>
<data name="MainWindow.Windows.ClassScoutLabel" xml:space="preserve">
<value>Sınıflar</value>
</data>
@ -4847,6 +5092,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4847,6 +5092,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.CompilerMessageView.ToggleWordWrapButton.ToolTip" xml:space="preserve">
<value>Sözcük Kaydırmaya Geç</value>
</data>
<data name="MainWindow.Windows.Debug.AddWatchExpression" xml:space="preserve">
<value>İzleme ifadesi ekle</value>
</data>
<data name="MainWindow.Windows.Debug.Breakpoints" xml:space="preserve">
<value>DuraksamaNoktaları</value>
</data>
@ -4943,6 +5191,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -4943,6 +5191,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Console" xml:space="preserve">
<value>Konsol</value>
</data>
<data name="MainWindow.Windows.Debug.DebugExecutable" xml:space="preserve">
<value>Çalıştırılabilir ayıkla</value>
</data>
<data name="MainWindow.Windows.Debug.ExceptionForm.Break" xml:space="preserve">
<value>Kesme</value>
</data>
@ -5300,6 +5551,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5300,6 +5551,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.In" xml:space="preserve">
<value>deki</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.NoProject" xml:space="preserve">
<value>&lt;proje yok&gt;</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.OccurrencesCount" xml:space="preserve">
<value>${Count} tane bulundu</value>
</data>
@ -5315,6 +5569,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5315,6 +5569,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.PerFile" xml:space="preserve">
<value>Dosya başına</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProject" xml:space="preserve">
<value>Proje başına</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProjectAndFile" xml:space="preserve">
<value>Proje ve dosya başına</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.SelectViewMode.ToolTip" xml:space="preserve">
<value>Liste modu aramayı seç</value>
</data>
@ -5480,6 +5740,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5480,6 +5740,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Referans Ekle</value>
</data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Servis Referansı Ekle</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Web Referansı Ekle</value>
</data>
@ -5750,6 +6013,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5750,6 +6013,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve">
<value>Kaynak kod üreteci: '{0}' kaynağı için hiçbir kaynak özelliği oluşturamıyor.</value>
</data>
<data name="ResourceEditor.ResourceEdit.CommentColumn" xml:space="preserve">
<value>Yorum</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve">
<value>İçerik</value>
</data>
@ -5762,6 +6028,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5762,6 +6028,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName" xml:space="preserve">
<value>Kaynak adı kopyala</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditComment" xml:space="preserve">
<value>Yorumu düzenle</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditCommentText" xml:space="preserve">
<value>Kaynak yorumunuz için yeni metin giriniz:</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.Rename" xml:space="preserve">
<value>Yeniden adlandır</value>
</data>
@ -5879,6 +6151,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5879,6 +6151,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>${Name} 'den türeme sınıflar</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingCommand" xml:space="preserve">
<value>Pano halkasından yapıştır...</value>
</data>
<data name="SharpDevelop.Refactoring.ClipboardRingEmpty" xml:space="preserve">
<value>Pano halkası boş</value>
</data>
<data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Otomatik özelliği dönüştür</value>
</data>
@ -5963,6 +6241,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5963,6 +6241,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>${Name} geçersiz kıl</value>
</data>
<data name="SharpDevelop.Refactoring.PartsOfClass" xml:space="preserve">
<value>${Name} parçaları</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>${Name} referansları</value>
</data>
@ -6339,6 +6620,9 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value> @@ -6339,6 +6620,9 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Çözüm Aç</value>
</data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Son projeler listesinden kaldır</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Başlangıç Sayfası</value>
</data>
@ -6351,6 +6635,12 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value> @@ -6351,6 +6635,12 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value>
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>satır ${Line} sütun ${Column} ${Character}</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextMulti" xml:space="preserve">
<value>Uzunluk ${Rows} * ${Cols}(${Total})</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextSingle" xml:space="preserve">
<value>Uzunluk ${Length}</value>
</data>
<data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Çeşitli</value>
</data>
@ -7498,7 +7788,4 @@ Başlatma hatası:</value> @@ -7498,7 +7788,4 @@ Başlatma hatası:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Bölgeyi yorumlama</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>Bu kaynak kullanılamıyor. Amacı, çeviri veritabanını test etmek ve bir satır kesmesi var.</value>
</data>
</root>

6
data/resources/StringResources.zh.resx

@ -117,6 +117,9 @@ @@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>该资源不被使用.它仅仅用来测试翻译数据库.</value>
</data>
<data name="AddInManager.About" xml:space="preserve">
<value>关于</value>
</data>
@ -7241,7 +7244,4 @@ SharpDevelop 编译资源时发现不对应:资源名称不是文件名,而 @@ -7241,7 +7244,4 @@ SharpDevelop 编译资源时发现不对应:资源名称不是文件名,而
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>设为非注释区</value>
</data>
<data name="_Internal.Bogus.Translation.Test1" xml:space="preserve">
<value>该资源不被使用.它仅仅用来测试翻译数据库.</value>
</data>
</root>

4
samples/XamlDesigner/Document.cs

@ -153,9 +153,9 @@ namespace ICSharpCode.XamlDesigner @@ -153,9 +153,9 @@ namespace ICSharpCode.XamlDesigner
}
}
OutlineNode outlineRoot;
IOutlineNode outlineRoot;
public OutlineNode OutlineRoot {
public IOutlineNode OutlineRoot {
get {
return outlineRoot;
}

2
samples/XamlDesigner/Shell.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.XamlDesigner @@ -30,7 +30,7 @@ namespace ICSharpCode.XamlDesigner
//public Toolbox Toolbox { get; set; }
//public SceneTree SceneTree { get; set; }
public PropertyGrid PropertyGrid { get; internal set; }
public IPropertyGrid PropertyGrid { get; internal set; }
//public ErrorList ErrorList { get; set; }
public ObservableCollection<Document> Documents { get; private set; }

6
src/AddIns/Analysis/UnitTesting/TestRunner/TestResultsReader.cs

@ -61,8 +61,10 @@ namespace ICSharpCode.UnitTesting @@ -61,8 +61,10 @@ namespace ICSharpCode.UnitTesting
public void Dispose()
{
reader.Dispose();
namedPipe.Dispose();
if (reader != null)
reader.Dispose();
if (namedPipe != null)
namedPipe.Dispose();
}
public event EventHandler<TestFinishedEventArgs> TestFinished;

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

@ -363,7 +363,6 @@ @@ -363,7 +363,6 @@
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.UseIsOperatorIssue" />
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.UseMethodAnyIssue" />
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.UseMethodIsInstanceOfTypeIssue" />
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.UseOfMemberOfNullReference" />
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.ValueParameterNotUsedIssue" />
<Class class = "ICSharpCode.NRefactory.CSharp.Refactoring.XmlDocIssue" />
</Path>

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

@ -91,6 +91,7 @@ @@ -91,6 +91,7 @@
<Compile Include="Src\CSharpSemanticHighlighterVisitor.cs">
<DependentUpon>CSharpSemanticHighlighter.cs</DependentUpon>
</Compile>
<Compile Include="Src\CSharpTextEditorExtension.cs" />
<Compile Include="Src\FormattingStrategy\CSharpFormattingOptionsContainer.cs" />
<Compile Include="Src\FormattingStrategy\CSharpFormatter.cs" />
<Compile Include="Src\FormattingStrategy\CSharpFormattingPolicies.cs" />

362
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs

@ -20,12 +20,18 @@ using System; @@ -20,12 +20,18 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Threading;
using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Project;
using CSharpBinding.Completion;
using CSharpBinding.FormattingStrategy;
using CSharpBinding.Refactoring;
@ -49,303 +55,97 @@ namespace CSharpBinding @@ -49,303 +55,97 @@ namespace CSharpBinding
this.container.AddService(typeof(System.CodeDom.Compiler.CodeDomProvider), new Microsoft.CSharp.CSharpCodeProvider());
}
public override ICodeCompletionBinding CreateCompletionBinding(FileName fileName, TextLocation currentLocation, ICSharpCode.NRefactory.Editor.ITextSource fileContent)
public override ICodeCompletionBinding CreateCompletionBinding(string expressionToComplete, FileName fileName, TextLocation location, ICodeContext context)
{
if (fileName == null)
throw new ArgumentNullException("fileName");
return new CSharpCompletionBinding(fileName, currentLocation, fileContent);
if (context == null)
throw new ArgumentNullException("context");
string content = GeneratePartialClassContextStub(fileName, location, context);
const string caretPoint = "$__Caret_Point__$;";
int caretOffset = content.IndexOf(caretPoint, StringComparison.Ordinal) + expressionToComplete.Length;
SD.Log.DebugFormatted("context used for dot completion: {0}", content.Replace(caretPoint, "$" + expressionToComplete + "|$"));
var doc = new ReadOnlyDocument(content.Replace(caretPoint, expressionToComplete));
return new CSharpCompletionBinding(fileName, doc.GetLocation(caretOffset), doc.CreateSnapshot());
}
}
public class CSharpTextEditorExtension : ITextEditorExtension
{
ITextEditor editor;
IssueManager inspectionManager;
IList<IContextActionProvider> contextActionProviders;
CodeManipulation codeManipulation;
CaretReferenceHighlightRenderer renderer;
CodeEditorFormattingOptionsAdapter options;
TextEditorOptions originalEditorOptions;
public void Attach(ITextEditor editor)
{
this.editor = editor;
inspectionManager = new IssueManager(editor);
codeManipulation = new CodeManipulation(editor);
renderer = new CaretReferenceHighlightRenderer(editor);
// Patch editor options (indentation) to project-specific settings
if (!editor.ContextActionProviders.IsReadOnly) {
contextActionProviders = AddInTree.BuildItems<IContextActionProvider>("/SharpDevelop/ViewContent/TextEditor/C#/ContextActions", null);
editor.ContextActionProviders.AddRange(contextActionProviders);
}
// Create instance of options adapter and register it as service
var formattingPolicy = CSharpFormattingPolicies.Instance.GetProjectOptions(
SD.ProjectService.FindProjectContainingFile(editor.FileName));
options = new CodeEditorFormattingOptionsAdapter(editor.Options, formattingPolicy.OptionsContainer);
var textEditor = editor.GetService<TextEditor>();
if (textEditor != null) {
var textViewServices = textEditor.TextArea.TextView.Services;
// Unregister any previous ITextEditorOptions instance from editor, if existing, register our impl.
textViewServices.RemoveService(typeof(ITextEditorOptions));
textViewServices.AddService(typeof(ITextEditorOptions), options);
// Set TextEditor's options to same object
originalEditorOptions = textEditor.Options;
textEditor.Options = options;
}
}
public void Detach()
static string GeneratePartialClassContextStub(FileName fileName, TextLocation location, ICodeContext context)
{
var textEditor = editor.GetService<TextEditor>();
if (textEditor != null) {
var textView = textEditor.TextArea.TextView;
// Unregister our ITextEditorOptions instance from editor
var optionsService = textView.GetService<ITextEditorOptions>();
if ((optionsService != null) && (optionsService == options))
textView.Services.RemoveService(typeof(ITextEditorOptions));
// Reset TextEditor options, too?
if ((textEditor.Options != null) && (textEditor.Options == options))
textEditor.Options = originalEditorOptions;
}
codeManipulation.Dispose();
if (inspectionManager != null) {
inspectionManager.Dispose();
inspectionManager = null;
}
if (contextActionProviders != null) {
editor.ContextActionProviders.RemoveAll(contextActionProviders.Contains);
var compilation = SD.ParserService.GetCompilationForFile(fileName);
var file = SD.ParserService.GetExistingUnresolvedFile(fileName);
if (compilation == null || file == null)
return "";
var unresolvedMember = file.GetMember(location);
if (unresolvedMember == null)
return "";
var member = unresolvedMember.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
if (member == null)
return "";
var builder = new TypeSystemAstBuilder();
MethodDeclaration decl;
if (unresolvedMember is IMethod) {
// If it's a method, convert it directly (including parameters + type parameters)
decl = (MethodDeclaration)builder.ConvertEntity(member);
} else {
// Otherwise, create a method anyways, and copy the parameters
decl = new MethodDeclaration();
if (member is IParameterizedMember) {
foreach (var p in ((IParameterizedMember)member).Parameters) {
decl.Parameters.Add(builder.ConvertParameter(p));
}
}
}
renderer.Dispose();
options = null;
this.editor = null;
}
}
class CodeEditorFormattingOptionsAdapter : TextEditorOptions, ITextEditorOptions, ICodeEditorOptions
{
CSharpFormattingOptionsContainer container;
readonly ITextEditorOptions globalOptions;
readonly ICodeEditorOptions globalCodeEditorOptions;
public CodeEditorFormattingOptionsAdapter(ITextEditorOptions globalOptions, CSharpFormattingOptionsContainer container)
{
if (globalOptions == null)
throw new ArgumentNullException("globalOptions");
if (container == null)
throw new ArgumentNullException("container");
this.globalOptions = globalOptions;
this.globalCodeEditorOptions = globalOptions as ICodeEditorOptions;
this.container = container;
CSharpFormattingPolicies.Instance.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
globalOptions.PropertyChanged += OnGlobalOptionsPropertyChanged;
decl.Name = "__DebuggerStub__";
decl.ReturnType = builder.ConvertType(member.ReturnType);
decl.Modifiers = unresolvedMember.IsStatic ? Modifiers.Static : Modifiers.None;
// Make the method look like an explicit interface implementation so that it doesn't appear in CC
decl.PrivateImplementationType = new SimpleType("__DummyType__");
decl.Body = GenerateBodyFromContext(builder, context.LocalVariables.ToArray());
return WrapInType(unresolvedMember.DeclaringTypeDefinition, decl).ToString();
}
void OnFormattingPolicyUpdated(object sender, CSharpBinding.FormattingStrategy.CSharpFormattingPolicyUpdateEventArgs e)
static BlockStatement GenerateBodyFromContext(TypeSystemAstBuilder builder, IVariable[] variables)
{
OnPropertyChanged("IndentationSize");
OnPropertyChanged("ConvertTabsToSpaces");
var body = new BlockStatement();
foreach (var v in variables)
body.Statements.Add(new VariableDeclarationStatement(builder.ConvertType(v.Type), v.Name));
body.Statements.Add(new ExpressionStatement(new IdentifierExpression("$__Caret_Point__$")));
return body;
}
void OnGlobalOptionsPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
static AstNode WrapInType(IUnresolvedTypeDefinition entity, EntityDeclaration decl)
{
OnPropertyChanged(e.PropertyName);
}
#region ITextEditorOptions implementation
public override int IndentationSize {
get {
return container.GetEffectiveIndentationSize() ?? globalOptions.IndentationSize;
}
}
public override bool ConvertTabsToSpaces {
get {
return container.GetEffectiveConvertTabsToSpaces() ?? globalOptions.ConvertTabsToSpaces;
}
}
public bool AutoInsertBlockEnd {
get {
return globalOptions.AutoInsertBlockEnd;
}
}
public int VerticalRulerColumn {
get {
return globalOptions.VerticalRulerColumn;
}
}
public bool UnderlineErrors {
get {
return globalOptions.UnderlineErrors;
}
}
public string FontFamily {
get {
return globalOptions.FontFamily;
}
}
public double FontSize {
get {
return globalOptions.FontSize;
}
}
#endregion
public override bool AllowScrollBelowDocument {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.AllowScrollBelowDocument : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.AllowScrollBelowDocument = value;
if (entity == null)
return decl;
// Wrap decl in TypeDeclaration
decl = new TypeDeclaration {
ClassType = GetClassType(entity),
Modifiers = Modifiers.Partial,
Name = entity.Name,
Members = { decl }
};
if (entity.DeclaringTypeDefinition != null) {
// Handle nested types
return WrapInType(entity.DeclaringTypeDefinition, decl);
}
if (string.IsNullOrEmpty(entity.Namespace))
return decl;
return new NamespaceDeclaration(entity.Namespace) {
Members = {
decl
}
}
};
}
public bool ShowLineNumbers {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.ShowLineNumbers : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.ShowLineNumbers = value;
}
}
}
public bool EnableChangeMarkerMargin {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.EnableChangeMarkerMargin : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.EnableChangeMarkerMargin = value;
}
}
}
public bool WordWrap {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.WordWrap : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.WordWrap = value;
}
}
}
public bool CtrlClickGoToDefinition {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.CtrlClickGoToDefinition : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.CtrlClickGoToDefinition = value;
}
}
}
public bool MouseWheelZoom {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.MouseWheelZoom : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.MouseWheelZoom = value;
}
}
}
public bool HighlightBrackets {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.HighlightBrackets : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.HighlightBrackets = value;
}
}
}
public bool HighlightSymbol {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.HighlightSymbol : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.HighlightSymbol = value;
}
}
}
public bool EnableAnimations {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.EnableAnimations : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.EnableAnimations = value;
}
}
}
public bool UseSmartIndentation {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.UseSmartIndentation : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.UseSmartIndentation = value;
}
}
}
public bool EnableFolding {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.EnableFolding : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.EnableFolding = value;
}
}
}
public bool EnableQuickClassBrowser {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.EnableQuickClassBrowser : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.EnableQuickClassBrowser = value;
}
}
}
public bool ShowHiddenDefinitions {
get {
return (globalCodeEditorOptions != null) ? globalCodeEditorOptions.ShowHiddenDefinitions : default(bool);
}
set {
if (globalCodeEditorOptions != null) {
globalCodeEditorOptions.ShowHiddenDefinitions = value;
}
static ClassType GetClassType(IUnresolvedTypeDefinition entity)
{
switch (entity.Kind) {
case TypeKind.Interface:
return ClassType.Interface;
case TypeKind.Struct:
return ClassType.Struct;
default:
return ClassType.Class;
}
}
}

253
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpTextEditorExtension.cs

@ -0,0 +1,253 @@ @@ -0,0 +1,253 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using ICSharpCode.AvalonEdit;
using CSharpBinding.FormattingStrategy;
using CSharpBinding.Refactoring;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Refactoring;
namespace CSharpBinding
{
public class CSharpTextEditorExtension : ITextEditorExtension
{
ITextEditor editor;
IssueManager inspectionManager;
IList<IContextActionProvider> contextActionProviders;
CodeManipulation codeManipulation;
CaretReferenceHighlightRenderer renderer;
CodeEditorFormattingOptionsAdapter options;
TextEditorOptions originalEditorOptions;
public void Attach(ITextEditor editor)
{
this.editor = editor;
inspectionManager = new IssueManager(editor);
codeManipulation = new CodeManipulation(editor);
renderer = new CaretReferenceHighlightRenderer(editor);
// Patch editor options (indentation) to project-specific settings
if (!editor.ContextActionProviders.IsReadOnly) {
contextActionProviders = AddInTree.BuildItems<IContextActionProvider>("/SharpDevelop/ViewContent/TextEditor/C#/ContextActions", null);
editor.ContextActionProviders.AddRange(contextActionProviders);
}
// Create instance of options adapter and register it as service
var formattingPolicy = CSharpFormattingPolicies.Instance.GetProjectOptions(SD.ProjectService.FindProjectContainingFile(editor.FileName));
var textEditor = editor.GetService<TextEditor>();
if (textEditor != null) {
options = new CodeEditorFormattingOptionsAdapter(textEditor.Options, editor.Options, formattingPolicy.OptionsContainer);
var textViewServices = textEditor.TextArea.TextView.Services;
// Unregister any previous ITextEditorOptions instance from editor, if existing, register our impl.
textViewServices.RemoveService(typeof(ITextEditorOptions));
textViewServices.AddService(typeof(ITextEditorOptions), options);
// Set TextEditor's options to same object
originalEditorOptions = textEditor.Options;
textEditor.Options = options.TextEditorOptions;
}
}
public void Detach()
{
var textEditor = editor.GetService<TextEditor>();
if (textEditor != null) {
var textView = textEditor.TextArea.TextView;
// Unregister our ITextEditorOptions instance from editor
var optionsService = textView.GetService<ITextEditorOptions>();
if ((optionsService != null) && (optionsService == options))
textView.Services.RemoveService(typeof(ITextEditorOptions));
// Reset TextEditor options, too?
if ((textEditor.Options != null) && (textEditor.Options == options.TextEditorOptions))
textEditor.Options = originalEditorOptions;
}
codeManipulation.Dispose();
if (inspectionManager != null) {
inspectionManager.Dispose();
inspectionManager = null;
}
if (contextActionProviders != null) {
editor.ContextActionProviders.RemoveAll(contextActionProviders.Contains);
}
renderer.Dispose();
options = null;
this.editor = null;
}
}
class CodeEditorFormattingOptionsAdapter : ITextEditorOptions, INotifyPropertyChanged
{
CSharpFormattingOptionsContainer container;
readonly TextEditorOptions avalonEditOptions;
readonly TextEditorOptions originalAvalonEditOptions;
readonly ITextEditorOptions originalSDOptions;
public CodeEditorFormattingOptionsAdapter(TextEditorOptions originalAvalonEditOptions, ITextEditorOptions originalSDOptions, CSharpFormattingOptionsContainer container)
{
if (originalAvalonEditOptions == null)
throw new ArgumentNullException("originalAvalonEditOptions");
if (originalSDOptions == null)
throw new ArgumentNullException("originalSDOptions");
if (container == null)
throw new ArgumentNullException("container");
this.originalAvalonEditOptions = originalAvalonEditOptions;
this.avalonEditOptions = new TextEditorOptions(originalAvalonEditOptions);
this.originalSDOptions = originalSDOptions;
this.container = container;
// Update overridden options once
UpdateOverriddenProperties();
CSharpFormattingPolicies.Instance.FormattingPolicyUpdated += OnFormattingPolicyUpdated;
this.originalAvalonEditOptions.PropertyChanged += OnOrigAvalonOptionsPropertyChanged;
this.originalSDOptions.PropertyChanged += OnSDOptionsPropertyChanged;
}
void OnFormattingPolicyUpdated(object sender, CSharpBinding.FormattingStrategy.CSharpFormattingPolicyUpdateEventArgs e)
{
// Update editor options from changed policy
UpdateOverriddenProperties();
OnPropertyChanged("IndentationSize");
OnPropertyChanged("IndentationString");
OnPropertyChanged("ConvertTabsToSpaces");
}
void UpdateOverriddenProperties()
{
avalonEditOptions.IndentationSize = container.GetEffectiveIndentationSize() ?? originalSDOptions.IndentationSize;
avalonEditOptions.ConvertTabsToSpaces = container.GetEffectiveConvertTabsToSpaces() ?? originalSDOptions.ConvertTabsToSpaces;
}
void OnOrigAvalonOptionsPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if ((e.PropertyName != "IndentationSize") && (e.PropertyName != "IndentationString") && (e.PropertyName != "ConvertTabsToSpaces")) {
// Update values in our own TextEditorOptions instance
PropertyInfo propertyInfo = typeof(TextEditorOptions).GetProperty(e.PropertyName);
if (propertyInfo != null) {
propertyInfo.SetValue(avalonEditOptions, propertyInfo.GetValue(originalAvalonEditOptions));
}
} else {
UpdateOverriddenProperties();
}
OnPropertyChanged(e.PropertyName);
}
void OnSDOptionsPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
OnPropertyChanged(e.PropertyName);
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public ICSharpCode.AvalonEdit.TextEditorOptions TextEditorOptions
{
get {
return avalonEditOptions;
}
}
#region Overridden properties
public int IndentationSize {
get {
// Get value from own TextEditorOptions instance
return avalonEditOptions.IndentationSize;
}
}
public string IndentationString {
get {
// Get value from own TextEditorOptions instance
return avalonEditOptions.IndentationString;
}
}
public bool ConvertTabsToSpaces {
get {
// Get value from own TextEditorOptions instance
return avalonEditOptions.ConvertTabsToSpaces;
}
}
#endregion
#region Rest of ITextEditorOptions implementation
public bool AutoInsertBlockEnd {
get {
return originalSDOptions.AutoInsertBlockEnd;
}
}
public int VerticalRulerColumn {
get {
return originalSDOptions.VerticalRulerColumn;
}
}
public bool UnderlineErrors {
get {
return originalSDOptions.UnderlineErrors;
}
}
public string FontFamily {
get {
return originalSDOptions.FontFamily;
}
}
public double FontSize {
get {
return originalSDOptions.FontSize;
}
}
#endregion
}
}

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

@ -24,10 +24,8 @@ using ICSharpCode.Core; @@ -24,10 +24,8 @@ using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Completion;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Completion;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
@ -129,7 +127,7 @@ namespace CSharpBinding.Completion @@ -129,7 +127,7 @@ namespace CSharpBinding.Completion
DefaultCompletionItemList list = new DefaultCompletionItemList();
list.Items.AddRange(FilterAndAddTemplates(editor, completionData.Cast<ICompletionItem>().ToList()));
if (list.Items.Count > 0) {
if (list.Items.Count > 0 && (ctrlSpace || cce.AutoCompleteEmptyMatch)) {
list.SortItems();
list.PreselectionLength = caretOffset - startPos;
list.PostselectionLength = Math.Max(0, startPos + triggerWordLength - caretOffset);

49
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs

@ -17,17 +17,19 @@ @@ -17,17 +17,19 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Project;
using CSharpBinding.Parser;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Completion;
using ICSharpCode.NRefactory.CSharp.TypeSystem;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using CSharpBinding.Parser;
namespace CSharpBinding.Completion
{
@ -35,7 +37,7 @@ namespace CSharpBinding.Completion @@ -35,7 +37,7 @@ namespace CSharpBinding.Completion
{
public readonly ITextEditor Editor;
public readonly IDocument Document;
public readonly CSharpFullParseInformation ParseInformation;
public readonly IList<string> ConditionalSymbols;
public readonly ICompilation Compilation;
public readonly IProjectContent ProjectContent;
public readonly CSharpTypeResolveContext TypeResolveContextAtCaret;
@ -56,7 +58,7 @@ namespace CSharpBinding.Completion @@ -56,7 +58,7 @@ namespace CSharpBinding.Completion
if (projectContent == null)
return null;
return new CSharpCompletionContext(editor, parseInfo, compilation, projectContent, editor.Document, editor.Caret.Location);
return new CSharpCompletionContext(editor, parseInfo.SyntaxTree.ConditionalSymbols, compilation, projectContent, editor.Document, parseInfo.UnresolvedFile, editor.Caret.Location);
}
public static CSharpCompletionContext Get(ITextEditor editor, ITextSource fileContent, TextLocation currentLocation, FileName fileName)
@ -64,33 +66,50 @@ namespace CSharpBinding.Completion @@ -64,33 +66,50 @@ namespace CSharpBinding.Completion
IDocument document = new ReadOnlyDocument(fileContent);
// Don't require the very latest parse information, an older cached version is OK.
var parseInfo = SD.ParserService.Parse(fileName, document) as CSharpFullParseInformation;
var parseInfo = SD.ParserService.GetCachedParseInformation(fileName) as CSharpFullParseInformation;
if (parseInfo == null) {
parseInfo = SD.ParserService.Parse(fileName) as CSharpFullParseInformation;
}
if (parseInfo == null)
return null;
ICompilation compilation = SD.ParserService.GetCompilationForFile(fileName);
var projectContent = compilation.MainAssembly.UnresolvedAssembly as IProjectContent;
var project = SD.ProjectService.FindProjectContainingFile(fileName)as CSharpProject;
if (project == null)
return null;
var solutionSnapshot = SD.ParserService.GetCurrentSolutionSnapshot();
var projectContent = solutionSnapshot.GetProjectContent(project);
if (projectContent == null)
return null;
return new CSharpCompletionContext(editor, parseInfo, compilation, projectContent, document, currentLocation);
CSharpParser parser = new CSharpParser(project.CompilerSettings);
parser.GenerateTypeSystemMode = false;
SyntaxTree cu = parser.Parse(fileContent, Path.GetRandomFileName() + ".cs");
cu.Freeze();
CSharpUnresolvedFile unresolvedFile = cu.ToTypeSystem();
ICompilation compilation = projectContent.AddOrUpdateFiles(unresolvedFile).CreateCompilation(solutionSnapshot);
return new CSharpCompletionContext(editor, parseInfo.SyntaxTree.ConditionalSymbols, compilation, projectContent, document, unresolvedFile, currentLocation);
}
private CSharpCompletionContext(ITextEditor editor, CSharpFullParseInformation parseInfo, ICompilation compilation, IProjectContent projectContent, IDocument document, TextLocation caretLocation)
private CSharpCompletionContext(ITextEditor editor, IList<string> conditionalSymbols, ICompilation compilation, IProjectContent projectContent, IDocument document, CSharpUnresolvedFile unresolvedFile, TextLocation caretLocation)
{
Debug.Assert(editor != null);
Debug.Assert(parseInfo != null);
Debug.Assert(unresolvedFile != null);
Debug.Assert(compilation != null);
Debug.Assert(projectContent != null);
Debug.Assert(document != null);
this.Editor = editor;
this.Document = document;
this.ParseInformation = parseInfo;
this.ConditionalSymbols = conditionalSymbols;
this.Compilation = compilation;
this.ProjectContent = projectContent;
this.TypeResolveContextAtCaret = parseInfo.UnresolvedFile.GetTypeResolveContext(compilation, caretLocation);
this.CompletionContextProvider = new DefaultCompletionContextProvider(document, parseInfo.UnresolvedFile);
this.CompletionContextProvider.ConditionalSymbols.AddRange(parseInfo.SyntaxTree.ConditionalSymbols);
this.TypeResolveContextAtCaret = unresolvedFile.GetTypeResolveContext(compilation, caretLocation);
this.CompletionContextProvider = new DefaultCompletionContextProvider(document, unresolvedFile);
this.CompletionContextProvider.ConditionalSymbols.AddRange(conditionalSymbols);
}
}
}

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs

@ -148,7 +148,7 @@ namespace CSharpBinding.Completion @@ -148,7 +148,7 @@ namespace CSharpBinding.Completion
IEnumerable<ICompletionData> ICompletionDataFactory.CreatePreProcessorDefinesCompletionData()
{
return completionContext.ParseInformation.SyntaxTree.ConditionalSymbols.Select(def => new CompletionData(def));
return completionContext.ConditionalSymbols.Select(def => new CompletionData(def));
}
ICompletionData ICompletionDataFactory.CreateImportCompletionData(IType type, bool useFullName, bool addForTypeCreation)

8
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormatter.cs

@ -31,11 +31,17 @@ namespace CSharpBinding.FormattingStrategy @@ -31,11 +31,17 @@ namespace CSharpBinding.FormattingStrategy
/// </summary>
public static void Format(ITextEditor editor, int offset, int length, CSharpFormattingOptionsContainer optionsContainer)
{
SyntaxTree syntaxTree = SyntaxTree.Parse(editor.Document);
if (syntaxTree.Errors.Count > 0) {
// Don't format files containing syntax errors!
return;
}
TextEditorOptions editorOptions = editor.ToEditorOptions();
optionsContainer.CustomizeEditorOptions(editorOptions);
var formatter = new CSharpFormatter(optionsContainer.GetEffectiveOptions(), editorOptions);
formatter.AddFormattingRegion(new DomRegion(editor.Document.GetLocation(offset), editor.Document.GetLocation(offset + length)));
var changes = formatter.AnalyzeFormatting(editor.Document, SyntaxTree.Parse(editor.Document));
var changes = formatter.AnalyzeFormatting(editor.Document, syntaxTree);
changes.ApplyChanges(offset, length);
}
}

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpSymbolSearch.cs

@ -87,7 +87,7 @@ namespace CSharpBinding @@ -87,7 +87,7 @@ namespace CSharpBinding
IEnumerable<ISymbol> GetRelatedSymbols(ISymbol entity)
{
TypeGraph typeGraph = new TypeGraph(new [] { compilation.MainAssembly });
var typeGraph = new Lazy<TypeGraph>(() => new TypeGraph(new [] { compilation.MainAssembly }));
var symbolCollector = new SymbolCollector();
return symbolCollector.GetRelatedSymbols(typeGraph, entity);
}

5
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs

@ -211,5 +211,10 @@ namespace CSharpBinding.Refactoring @@ -211,5 +211,10 @@ namespace CSharpBinding.Refactoring
script.ChangeModifier(entityDeclaration, entityDeclaration.Modifiers | Modifiers.Virtual);
}
}
public override string EscapeIdentifier(string identifier)
{
return "@" + identifier;
}
}
}

10
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs

@ -24,6 +24,7 @@ using System.Windows.Threading; @@ -24,6 +24,7 @@ using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring;
@ -32,6 +33,10 @@ using ICSharpCode.NRefactory.TypeSystem; @@ -32,6 +33,10 @@ using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Commands;
using ICSharpCode.SharpDevelop.Editor.Dialogs;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Refactoring;
using ICSharpCode.SharpDevelop.Workbench;
namespace CSharpBinding.Refactoring
@ -102,6 +107,11 @@ namespace CSharpBinding.Refactoring @@ -102,6 +107,11 @@ namespace CSharpBinding.Refactoring
return tcs.Task;
}
public override void Rename(ISymbol symbol, string name = null)
{
RenameSymbolCommand.RunRename(symbol, name);
}
public override Task<Script> InsertWithCursor(string operation, InsertPosition defaultPosition, IList<AstNode> nodes)
{
// TODO : Use undo group

19
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs

@ -63,9 +63,14 @@ namespace CSharpBinding.Refactoring @@ -63,9 +63,14 @@ namespace CSharpBinding.Refactoring
var typeResolveContext = refactoringContext.GetTypeResolveContext();
if (typeResolveContext == null) {
parameterList = EmptyList<PropertyOrFieldWrapper>.Instance;
return;
}
var resolvedCurrent = typeResolveContext.CurrentTypeDefinition;
if (resolvedCurrent == null) {
parameterList = EmptyList<PropertyOrFieldWrapper>.Instance;
return;
}
parameterList = CreateCtorParams(resolvedCurrent).ToList();
this.varList.ItemsSource = parameterList;
@ -74,23 +79,17 @@ namespace CSharpBinding.Refactoring @@ -74,23 +79,17 @@ namespace CSharpBinding.Refactoring
Visibility = System.Windows.Visibility.Visible;
}
IEnumerable<PropertyOrFieldWrapper> CreateCtorParams(IType sourceType)
IEnumerable<PropertyOrFieldWrapper> CreateCtorParams(ITypeDefinition sourceType)
{
int i = 0;
foreach (var f in sourceType.GetFields().Where(field => !field.IsConst
&& field.IsStatic == sourceType.GetDefinition().IsStatic
&& field.DeclaringType.FullName == sourceType.FullName
&& field.ReturnType != null)) {
foreach (var f in sourceType.Fields.Where(f => !f.IsStatic)) {
yield return new PropertyOrFieldWrapper(f) { Index = i };
i++;
}
foreach (var p in sourceType.GetProperties().Where(prop => prop.CanSet && !prop.IsIndexer
&& prop.IsAutoImplemented()
&& prop.IsStatic == sourceType.GetDefinition().IsStatic
&& prop.DeclaringType.FullName == sourceType.FullName
&& prop.ReturnType != null)) {
foreach (var p in sourceType.Properties.Where(prop => !prop.IsStatic && prop.CanSet
&& !prop.IsIndexer && prop.IsAutoImplemented())) {
yield return new PropertyOrFieldWrapper(p) { Index = i };
i++;
}

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

@ -226,7 +226,7 @@ namespace CSharpBinding.Refactoring @@ -226,7 +226,7 @@ namespace CSharpBinding.Refactoring
cancellationToken.ThrowIfCancellationRequested();
var issues = provider.GetIssues(context).ToList();
// Fix issues, if possible:
if (issues.Any(i => i.Actions.Count > 0)) {
if (provider.Attribute.SupportsAutoFix && issues.Any(i => i.Actions.Count > 0)) {
using (var script = context.StartScript()) {
foreach (var issue in issues) {
if (issue.Actions.Count > 0) {

48
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml.cs

@ -43,7 +43,7 @@ namespace CSharpBinding.Refactoring @@ -43,7 +43,7 @@ namespace CSharpBinding.Refactoring
{
InitializeComponent();
FixCheckBox_Unchecked(null, null);
treeView.Root = new RootTreeNode(IssueManager.IssueProviders);
treeView.Root = new RootTreeNode(IssueManager.IssueProviders, TreeNodeCheckedChanged);
searchInRBG.SelectedValue = SearchForIssuesTarget.WholeSolution;
LoadPreviousSelectionFromSettings();
}
@ -76,6 +76,14 @@ namespace CSharpBinding.Refactoring @@ -76,6 +76,14 @@ namespace CSharpBinding.Refactoring
}
}
void TreeNodeCheckedChanged()
{
if (treeView.Root == null) return;
fixCheckBox.IsEnabled = !treeView.Root.DescendantsAndSelf()
.OfType<IssueTreeNode>()
.Any(n => n.IsChecked == true && !n.Provider.Attribute.SupportsAutoFix);
}
void searchButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
@ -109,12 +117,16 @@ namespace CSharpBinding.Refactoring @@ -109,12 +117,16 @@ namespace CSharpBinding.Refactoring
sealed class RootTreeNode : BaseTreeNode
{
internal RootTreeNode(IEnumerable<IssueManager.IssueProvider> providers)
readonly Action checkedChanged;
internal RootTreeNode(IEnumerable<IssueManager.IssueProvider> providers, Action checkedChanged)
{
this.Children.AddRange(providers.Where(p => p.Attribute != null)
.GroupBy(p => p.Attribute.Category, (key, g) => new CategoryTreeNode(key, g)));
.GroupBy(p => p.Attribute.Category, (key, g) => new CategoryTreeNode(key, g, checkedChanged)));
this.IsChecked = false;
this.IsExpanded = true;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
}
public override string Key {
@ -128,17 +140,26 @@ namespace CSharpBinding.Refactoring @@ -128,17 +140,26 @@ namespace CSharpBinding.Refactoring
public override bool IsCheckable {
get { return true; }
}
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (checkedChanged != null && e.PropertyName == "IsChecked")
checkedChanged();
}
}
sealed class CategoryTreeNode : BaseTreeNode
{
readonly string categoryName;
readonly Action checkedChanged;
internal CategoryTreeNode(string categoryName, IEnumerable<IssueManager.IssueProvider> providers)
internal CategoryTreeNode(string categoryName, IEnumerable<IssueManager.IssueProvider> providers, Action checkedChanged)
{
this.categoryName = categoryName;
this.Children.AddRange(providers.Select(p => new IssueTreeNode(p)));
this.Children.AddRange(providers.Select(p => new IssueTreeNode(p, checkedChanged)));
this.IsExpanded = true;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
}
public override string Key {
@ -152,17 +173,26 @@ namespace CSharpBinding.Refactoring @@ -152,17 +173,26 @@ namespace CSharpBinding.Refactoring
public override bool IsCheckable {
get { return true; }
}
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (checkedChanged != null && e.PropertyName == "IsChecked")
checkedChanged();
}
}
sealed class IssueTreeNode : BaseTreeNode
{
internal readonly IssueManager.IssueProvider Provider;
readonly IssueDescriptionAttribute attribute;
readonly Action checkedChanged;
internal IssueTreeNode(IssueManager.IssueProvider provider)
internal IssueTreeNode(IssueManager.IssueProvider provider, Action checkedChanged)
{
this.Provider = provider;
this.attribute = provider.Attribute;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
}
public override string Key {
@ -180,6 +210,12 @@ namespace CSharpBinding.Refactoring @@ -180,6 +210,12 @@ namespace CSharpBinding.Refactoring
public override object ToolTip {
get { return attribute.Description; }
}
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (checkedChanged != null && e.PropertyName == "IsChecked")
checkedChanged();
}
}
}
}

3
src/AddIns/Debugger/Debugger.AddIn/Breakpoints/BreakpointEditorPopup.xaml.cs

@ -41,7 +41,8 @@ namespace Debugger.AddIn.Breakpoints @@ -41,7 +41,8 @@ namespace Debugger.AddIn.Breakpoints
{
InitializeComponent();
this.DataContext = target;
condition.DebugContext = new DebuggerCompletionContext(target.FileName, target.Location);
condition.ContextFileName = target.FileName;
condition.ContextTextLocation = target.Location;
condition.FontFamily = new FontFamily(SD.EditorControlService.GlobalOptions.FontFamily);
condition.FontSize = SD.EditorControlService.GlobalOptions.FontSize;
if (target.Condition == null)

18
src/AddIns/Debugger/Debugger.AddIn/Pads/AutoCompleteTextBox.cs

@ -64,7 +64,8 @@ namespace Debugger.AddIn.Pads.Controls @@ -64,7 +64,8 @@ namespace Debugger.AddIn.Pads.Controls
set { SetValue(IsEditableProperty, value); }
}
public DebuggerCompletionContext DebugContext { get; set; }
public FileName ContextFileName { get; set; }
public TextLocation ContextTextLocation { get; set; }
static void TextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
@ -127,20 +128,15 @@ namespace Debugger.AddIn.Pads.Controls @@ -127,20 +128,15 @@ namespace Debugger.AddIn.Pads.Controls
void editor_TextArea_TextEntered(object sender, TextCompositionEventArgs e)
{
if (e.Text == ".") {
DebuggerCompletionContext context = null;
StackFrame frame = WindowsDebugger.CurrentStackFrame;
if (frame == null) {
if (DebugContext != null) {
context = DebugContext;
}
} else {
context = new DebuggerCompletionContext(frame);
if (frame != null) {
ContextFileName = new FileName(frame.NextStatement.Filename);
ContextTextLocation = new TextLocation(frame.NextStatement.StartLine, frame.NextStatement.StartColumn);
}
if (context == null) return;
var binding = DebuggerDotCompletion.PrepareDotCompletion(editor.Text.Substring(0, editor.CaretOffset), context);
if (ContextFileName == null) return;
var binding = DebuggerDotCompletion.PrepareDotCompletion(editor.Text.Substring(0, editor.CaretOffset), ContextFileName, ContextTextLocation, SD.ParserService.ResolveContext(ContextFileName, ContextTextLocation));
if (binding == null) return;
binding.HandleKeyPressed(editorAdapter, '.');
SD.ParserService.ParseFileAsync(context.FileName).FireAndForget();
} else {
// TODO : implement automated error checking CSharpParser.ParseExpression does not report useful error messages.
// Error[] errors;

5
src/AddIns/Debugger/Debugger.AddIn/Pads/ConsolePad.cs

@ -86,10 +86,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -86,10 +86,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void ShowDotCompletion(StackFrame frame, string currentText)
{
var binding = DebuggerDotCompletion.PrepareDotCompletion(currentText, new DebuggerCompletionContext(frame));
var fileName = new ICSharpCode.Core.FileName(frame.NextStatement.Filename);
var textLocation = new TextLocation(frame.NextStatement.StartLine, frame.NextStatement.StartColumn);
var binding = DebuggerDotCompletion.PrepareDotCompletion(currentText, fileName, textLocation, SD.ParserService.ResolveContext(fileName, textLocation));
if (binding == null) return;
binding.HandleKeyPressed(console.TextEditor, '.');
SD.ParserService.ParseFileAsync(new ICSharpCode.Core.FileName(frame.NextStatement.Filename)).FireAndForget();
}
protected override ToolBar BuildToolBar()

156
src/AddIns/Debugger/Debugger.AddIn/Pads/DebuggerDotCompletion.cs

@ -41,162 +41,12 @@ namespace Debugger.AddIn.Pads.Controls @@ -41,162 +41,12 @@ namespace Debugger.AddIn.Pads.Controls
return !errors.Any();
}
public static ICodeCompletionBinding PrepareDotCompletion(string expressionToComplete, DebuggerCompletionContext context)
public static ICodeCompletionBinding PrepareDotCompletion(string expressionToComplete, FileName fileName, TextLocation location, ICodeContext context)
{
var lang = SD.LanguageService.GetLanguageByFileName(context.FileName);
var lang = SD.LanguageService.GetLanguageByFileName(fileName);
if (lang == null)
return null;
string content = GeneratePartialClassContextStub(context);
const string caretPoint = "$__Caret_Point__$;";
int caretOffset = content.IndexOf(caretPoint, StringComparison.Ordinal) + expressionToComplete.Length;
SD.Log.DebugFormatted("context used for dot completion: {0}", content.Replace(caretPoint, "$" + expressionToComplete + "|$"));
var doc = new ReadOnlyDocument(content.Replace(caretPoint, expressionToComplete));
return lang.CreateCompletionBinding(context.FileName, doc.GetLocation(caretOffset), doc.CreateSnapshot());
}
static string GeneratePartialClassContextStub(DebuggerCompletionContext context)
{
var compilation = SD.ParserService.GetCompilationForFile(context.FileName);
var file = SD.ParserService.GetExistingUnresolvedFile(context.FileName);
if (compilation == null || file == null)
return "";
var unresolvedMember = file.GetMember(context.Location);
if (unresolvedMember == null)
return "";
var member = unresolvedMember.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
if (member == null)
return "";
var builder = new TypeSystemAstBuilder();
MethodDeclaration decl;
if (unresolvedMember is IMethod) {
// If it's a method, convert it directly (including parameters + type parameters)
decl = (MethodDeclaration)builder.ConvertEntity(member);
} else {
// Otherwise, create a method anyways, and copy the parameters
decl = new MethodDeclaration();
if (member is IParameterizedMember) {
foreach (var p in ((IParameterizedMember)member).Parameters) {
decl.Parameters.Add(builder.ConvertParameter(p));
}
}
}
decl.Name = "__DebuggerStub__";
decl.ReturnType = builder.ConvertType(member.ReturnType);
decl.Modifiers = unresolvedMember.IsStatic ? Modifiers.Static : Modifiers.None;
// Make the method look like an explicit interface implementation so that it doesn't appear in CC
decl.PrivateImplementationType = new SimpleType("__DummyType__");
decl.Body = GenerateBodyFromContext(builder, context);
return WrapInType(unresolvedMember.DeclaringTypeDefinition, decl).ToString();
}
static BlockStatement GenerateBodyFromContext(TypeSystemAstBuilder builder, DebuggerCompletionContext context)
{
var body = new BlockStatement();
foreach (var v in context.Variables)
body.Statements.Add(new VariableDeclarationStatement(builder.ConvertType(v.Type), v.Name));
body.Statements.Add(new ExpressionStatement(new IdentifierExpression("$__Caret_Point__$")));
return body;
}
static AstNode WrapInType(IUnresolvedTypeDefinition entity, EntityDeclaration decl)
{
if (entity == null)
return decl;
// Wrap decl in TypeDeclaration
decl = new TypeDeclaration {
ClassType = GetClassType(entity),
Modifiers = Modifiers.Partial,
Name = entity.Name,
Members = { decl }
};
if (entity.DeclaringTypeDefinition != null) {
// Handle nested types
return WrapInType(entity.DeclaringTypeDefinition, decl);
}
if (string.IsNullOrEmpty(entity.Namespace))
return decl;
return new NamespaceDeclaration(entity.Namespace) {
Members = {
decl
}
};
}
static ClassType GetClassType(IUnresolvedTypeDefinition entity)
{
switch (entity.Kind) {
case TypeKind.Interface:
return ClassType.Interface;
case TypeKind.Struct:
return ClassType.Struct;
default:
return ClassType.Class;
}
}
}
public class LocalVariable
{
readonly IType type;
public IType Type {
get {
return type;
}
}
readonly string name;
public string Name {
get {
return name;
}
}
public LocalVariable(IType type, string name)
{
this.type = type;
this.name = name;
}
}
public class DebuggerCompletionContext
{
readonly FileName fileName;
TextLocation location;
readonly LocalVariable[] variables;
public DebuggerCompletionContext(StackFrame frame)
{
fileName = new FileName(frame.NextStatement.Filename);
location = new TextLocation(frame.NextStatement.StartLine, frame.NextStatement.StartColumn);
variables = frame.GetLocalVariables().Select(v => new LocalVariable(v.Type, v.Name)).ToArray();
}
public DebuggerCompletionContext(FileName fileName, TextLocation location)
{
this.fileName = fileName;
this.location = location;
this.variables = SD.ParserService.ResolveContext(fileName, location)
.LocalVariables.Select(v => new LocalVariable(v.Type, v.Name)).ToArray();
}
public FileName FileName {
get {
return fileName;
}
}
public TextLocation Location {
get {
return location;
}
}
public LocalVariable[] Variables {
get {
return variables;
}
return lang.CreateCompletionBinding(expressionToComplete, fileName, location, context);
}
}
}

2
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -633,6 +633,8 @@ namespace ICSharpCode.SharpDevelop.Services @@ -633,6 +633,8 @@ namespace ICSharpCode.SharpDevelop.Services
return;
if (CurrentStackFrame == null)
return;
if (!e.InDocument)
return;
var resolveResult = SD.ParserService.Resolve(e.Editor, e.LogicalPosition, CurrentStackFrame.AppDomain.Compilation);
if (resolveResult == null)
return;

12
src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs

@ -155,6 +155,12 @@ namespace Debugger @@ -155,6 +155,12 @@ namespace Debugger
string name = corModule.GetName();
if (corModule.IsDynamic() == 1 || corModule.IsInMemory() == 1) {
var defaultUnresolvedAssembly = new DefaultUnresolvedAssembly(name);
var defaultUnresolvedTypeDefinition = new DefaultUnresolvedTypeDefinition("UnknownDynamicType");
var defaultUnresolvedMethod = new DefaultUnresolvedMethod(defaultUnresolvedTypeDefinition, "UnknownMethod");
var defaultUnresolvedField = new DefaultUnresolvedField(defaultUnresolvedTypeDefinition, "UnknownField");
defaultUnresolvedTypeDefinition.Members.Add(defaultUnresolvedMethod);
defaultUnresolvedTypeDefinition.Members.Add(defaultUnresolvedField);
defaultUnresolvedAssembly.AddTypeDefinition(defaultUnresolvedTypeDefinition);
weakTable.Add(defaultUnresolvedAssembly, new ModuleMetadataInfo(module, null));
return Task.FromResult<IUnresolvedAssembly>(defaultUnresolvedAssembly);
}
@ -527,6 +533,9 @@ namespace Debugger @@ -527,6 +533,9 @@ namespace Debugger
public static IMethod Import(this ICompilation compilation, ICorDebugFunction corFunction)
{
Module module = compilation.GetAppDomain().Process.GetModule(corFunction.GetModule());
if (module.IsDynamic || module.IsInMemory) {
return module.Assembly.GetTypeDefinition("", "UnknownDynamicType").Methods.First();
}
var info = GetInfo(module.Assembly);
uint functionToken = corFunction.GetToken();
var unresolvedMethod = info.GetMethodFromToken(functionToken);
@ -547,6 +556,9 @@ namespace Debugger @@ -547,6 +556,9 @@ namespace Debugger
public static IField ImportField(this IType declaringType, uint fieldToken)
{
var module = declaringType.GetDefinition().ParentAssembly.GetModule();
if (module.IsDynamic || module.IsInMemory) {
return module.Assembly.GetTypeDefinition("", "UnknownDynamicType").Fields.First();
}
var info = GetInfo(module.Assembly);
return declaringType.GetFields(f => info.GetMetadataToken(f) == fieldToken, GetMemberOptions.IgnoreInheritedMembers).SingleOrDefault();
}

6
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs

@ -67,8 +67,10 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -67,8 +67,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
/// <inheritdoc />
public Point GetScreenPosition(int line, int column)
{
var positionInPixels = textView.PointToScreen(
textView.GetVisualPosition(new TextViewPosition(line, column), VisualYPosition.LineBottom) - textView.ScrollOffset);
var visualPosition = textView.GetVisualPosition(
new TextViewPosition(line, column), VisualYPosition.LineBottom) - textView.ScrollOffset;
var positionInPixels = textView.PointToScreen(new Point(visualPosition.X.CoerceValue(0, textView.ActualWidth),
visualPosition.Y.CoerceValue(0, textView.ActualHeight)));
return positionInPixels.TransformFromDevice(textView);
}

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

@ -54,6 +54,7 @@ @@ -54,6 +54,7 @@
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml">

2
src/AddIns/DisplayBindings/HexEditor/Project/Src/Util/BufferManager.cs

@ -127,8 +127,6 @@ namespace HexEditor.Util @@ -127,8 +127,6 @@ namespace HexEditor.Util
{
Editor c = (Editor)this.parent;
Application.DoEvents();
if (c.ProgressBar != null) {
if (percentage >= 100) {
if (c.InvokeRequired)

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

@ -112,11 +112,14 @@ namespace ICSharpCode.WpfDesign.Designer @@ -112,11 +112,14 @@ namespace ICSharpCode.WpfDesign.Designer
bool continueHitTest = true;
HitTestFilterCallback filterBehavior = CustomHitTestFilterBehavior ?? FilterHitTestInvisibleElements;
CustomHitTestFilterBehavior = null;
hitTestElements.Clear();
if (testAdorners) {
RunHitTest(
_adornerLayer, mousePosition, FilterHitTestInvisibleElements,
_adornerLayer, mousePosition, filterBehavior,
delegate(HitTestResult result) {
if (result != null && result.VisualHit != null && result.VisualHit is Visual) {
DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit);
@ -138,7 +141,7 @@ namespace ICSharpCode.WpfDesign.Designer @@ -138,7 +141,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (continueHitTest && testDesignSurface) {
RunHitTest(
this.Child, mousePosition, FilterHitTestInvisibleElements,
this.Child, mousePosition, filterBehavior,
delegate(HitTestResult result) {
if (result != null && result.VisualHit != null && result.VisualHit is Visual) {
DesignPanelHitTestResult customResult = new DesignPanelHitTestResult((Visual)result.VisualHit);
@ -210,6 +213,8 @@ namespace ICSharpCode.WpfDesign.Designer @@ -210,6 +213,8 @@ namespace ICSharpCode.WpfDesign.Designer
#region Properties
//Set custom HitTestFilterCallbak
public HitTestFilterCallback CustomHitTestFilterBehavior { get; set; }
/// <summary>
/// Gets/Sets the design context.
/// </summary>

27
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridPlacementSupport.cs

@ -218,28 +218,15 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -218,28 +218,15 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
margin.Bottom = GetRowOffset(bottomRowIndex + 1) - info.Bounds.Bottom;
info.Item.Properties[FrameworkElement.MarginProperty].SetValue(margin);
var widthIsSet = info.Item.Properties[FrameworkElement.WidthProperty].IsSet;
var heightIsSet = info.Item.Properties[FrameworkElement.HeightProperty].IsSet;
if (!widthIsSet)
{
if (ha == HorizontalAlignment.Stretch)
info.Item.Properties[FrameworkElement.WidthProperty].Reset();
else
info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width);
}
else {
if (ha == HorizontalAlignment.Stretch)
info.Item.Properties[FrameworkElement.WidthProperty].Reset();
else
info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width);
}
if (!heightIsSet)
{
if (va == VerticalAlignment.Stretch)
info.Item.Properties[FrameworkElement.HeightProperty].Reset();
else
info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height);
}
else {
if (va == VerticalAlignment.Stretch)
info.Item.Properties[FrameworkElement.HeightProperty].Reset();
else
info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height);
}
}
public override void LeaveContainer(PlacementOperation operation)

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs

@ -121,7 +121,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -121,7 +121,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
} else {
bounds.Height = Math.Max(0, bounds.Height + delta);
}
bounds.Height = Math.Max(0, bounds.Height - delta);
info.Bounds = bounds;
} else {
foreach (var item in operation.PlacedItems) {
@ -145,7 +144,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -145,7 +144,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
} else {
bounds.Width = Math.Max(0, bounds.Width + delta);
}
bounds.Width = Math.Max(0, bounds.Width - delta);
info.Bounds = bounds;
} else {
foreach (var item in operation.PlacedItems) {

6
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/StackPanelPlacementSupport.cs

@ -89,11 +89,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -89,11 +89,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public override void EnterContainer(PlacementOperation operation)
{
base.EnterContainer(operation);
foreach (var info in operation.PlacedItems) {
info.Item.Properties[FrameworkElement.MarginProperty].Reset();
info.Item.Properties[FrameworkElement.HorizontalAlignmentProperty].Reset();
info.Item.Properties[FrameworkElement.VerticalAlignmentProperty].Reset();
}
_rectangle.Visibility = Visibility.Visible;
}

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/Outline.xaml.cs

@ -40,10 +40,11 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -40,10 +40,11 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
}
public static readonly DependencyProperty RootProperty =
DependencyProperty.Register("Root", typeof(OutlineNode), typeof(Outline));
DependencyProperty.Register("Root", typeof(IOutlineNode), typeof(Outline));
public OutlineNode Root {
get { return (OutlineNode)GetValue(RootProperty); }
public IOutlineNode Root
{
get { return (IOutlineNode)GetValue(RootProperty); }
set { SetValue(RootProperty, value); }
}

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

@ -34,138 +34,45 @@ using ICSharpCode.WpfDesign.XamlDom; @@ -34,138 +34,45 @@ using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.WpfDesign.Designer.OutlineView
{
public class OutlineNode : INotifyPropertyChanged
public interface IOutlineNode
{
//Used to check if element can enter other containers
public static PlacementType DummyPlacementType;
ISelectionService SelectionService { get; }
bool IsExpanded { get; set; }
DesignItem DesignItem { get; set; }
bool IsSelected { get; set; }
bool IsDesignTimeVisible { get; set; }
bool IsDesignTimeLocked { get; }
string Name { get; }
bool CanInsert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy);
void Insert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy);
ObservableCollection<IOutlineNode> Children{ get; }
}
static OutlineNode()
{
DummyPlacementType = PlacementType.Register("DummyPlacement");
}
public static OutlineNode Create(DesignItem designItem)
{
OutlineNode node;
if (!outlineNodes.TryGetValue(designItem, out node)) {
node = new OutlineNode(designItem);
outlineNodes[designItem] = node;
}
return node;
}
public class OutlineNode: OutlineNodeBase
{
//TODO: Reset with DesignContext
static Dictionary<DesignItem, OutlineNode> outlineNodes = new Dictionary<DesignItem, OutlineNode>();
static Dictionary<DesignItem, IOutlineNode> outlineNodes = new Dictionary<DesignItem, IOutlineNode>();
OutlineNode(DesignItem designItem)
protected OutlineNode(DesignItem designitem): base(designitem)
{
DesignItem = designItem;
UpdateChildren();
var hidden = designItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).ValueOnInstance;
if (hidden != null && (bool) hidden == true) {
this._isDesignTimeVisible = false;
((FrameworkElement) this.DesignItem.Component).Visibility = Visibility.Hidden;
}
var locked = designItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).ValueOnInstance;
if (locked != null && (bool) locked == true) {
this._isDesignTimeLocked = true;
}
//TODO
DesignItem.NameChanged += new EventHandler(DesignItem_NameChanged);
DesignItem.PropertyChanged += new PropertyChangedEventHandler(DesignItem_PropertyChanged);
SelectionService.SelectionChanged += new EventHandler<DesignItemCollectionEventArgs>(Selection_SelectionChanged);
}
public DesignItem DesignItem { get; private set; }
public ISelectionService SelectionService {
get { return DesignItem.Services.Selection; }
}
bool isExpanded = true;
public bool IsExpanded {
get {
return isExpanded;
}
set {
isExpanded = value;
RaisePropertyChanged("IsExpanded");
}
}
bool isSelected;
public bool IsSelected {
get {
return isSelected;
}
set {
if (isSelected != value) {
isSelected = value;
SelectionService.SetSelectedComponents(new[] { DesignItem },
value ? SelectionTypes.Add : SelectionTypes.Remove);
RaisePropertyChanged("IsSelected");
}
}
}
bool _isDesignTimeVisible = true;
public bool IsDesignTimeVisible
static OutlineNode()
{
get {
return _isDesignTimeVisible;
}
set {
_isDesignTimeVisible = value;
var ctl = DesignItem.Component as UIElement;
ctl.Visibility = _isDesignTimeVisible ? Visibility.Visible : Visibility.Hidden;
RaisePropertyChanged("IsDesignTimeVisible");
if (!value)
DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).SetValue(true);
else
DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).Reset();
}
DummyPlacementType = PlacementType.Register("DummyPlacement");
}
bool _isDesignTimeLocked = false;
public bool IsDesignTimeLocked
public static IOutlineNode Create(DesignItem designItem)
{
get {
return _isDesignTimeLocked;
}
set {
_isDesignTimeLocked = value;
((XamlDesignItem)DesignItem).IsDesignTimeLocked = _isDesignTimeLocked;
RaisePropertyChanged("IsDesignTimeLocked");
// if (value)
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).SetValue(true);
// else
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).Reset();
}
}
ObservableCollection<OutlineNode> children = new ObservableCollection<OutlineNode>();
public ObservableCollection<OutlineNode> Children {
get { return children; }
}
public string Name {
get {
if (string.IsNullOrEmpty(DesignItem.Name)) {
return DesignItem.ComponentType.Name;
}
return DesignItem.ComponentType.Name + " (" + DesignItem.Name + ")";
IOutlineNode node;
if (!outlineNodes.TryGetValue(designItem, out node)) {
node = new OutlineNode(designItem);
outlineNodes[designItem] = node;
}
return node;
}
void Selection_SelectionChanged(object sender, DesignItemCollectionEventArgs e)
@ -173,19 +80,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -173,19 +80,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
IsSelected = DesignItem.Services.Selection.IsComponentSelected(DesignItem);
}
void DesignItem_NameChanged(object sender, EventArgs e)
{
RaisePropertyChanged("Name");
}
void DesignItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == DesignItem.ContentPropertyName) {
UpdateChildren();
}
}
void UpdateChildren()
protected override void UpdateChildren()
{
Children.Clear();
@ -193,8 +88,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -193,8 +88,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
var content = DesignItem.ContentProperty;
if (content.IsCollection) {
UpdateChildrenCore(content.CollectionElements);
}
else {
} else {
if (content.Value != null) {
UpdateChildrenCore(new[] { content.Value });
}
@ -208,16 +102,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -208,16 +102,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
if (ModelTools.CanSelectComponent(item)) {
var node = OutlineNode.Create(item);
Children.Add(node);
}
else
{
} else {
var content = item.ContentProperty;
if (content != null)
{
if (content != null) {
if (content.IsCollection) {
UpdateChildrenCore(content.CollectionElements);
}
else {
} else {
if (content.Value != null) {
UpdateChildrenCore(new[] { content.Value });
}
@ -226,57 +116,5 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -226,57 +116,5 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
}
}
}
public bool CanInsert(IEnumerable<OutlineNode> nodes, OutlineNode after, bool copy)
{
var placementBehavior = DesignItem.GetBehavior<IPlacementBehavior>();
if (placementBehavior == null)
return false;
var operation = PlacementOperation.Start(nodes.Select(node => node.DesignItem).ToArray(), DummyPlacementType);
if (operation != null) {
bool canEnter = placementBehavior.CanEnterContainer(operation, true);
operation.Abort();
return canEnter;
}
return false;
}
public void Insert(IEnumerable<OutlineNode> nodes, OutlineNode after, bool copy)
{
using (var moveTransaction = DesignItem.Context.OpenGroup("Item moved in outline view", nodes.Select(n => n.DesignItem).ToList())) {
if (copy) {
nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())).ToList();
} else {
foreach (var node in nodes) {
node.DesignItem.Remove();
}
}
var index = after == null ? 0 : Children.IndexOf(after) + 1;
var content = DesignItem.ContentProperty;
if (content.IsCollection) {
foreach (var node in nodes) {
content.CollectionElements.Insert(index++, node.DesignItem);
}
} else {
content.SetValue(nodes.First().DesignItem);
}
moveTransaction.Commit();
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
void RaisePropertyChanged(string name)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
#endregion
}
}

225
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNodeBase.cs

@ -0,0 +1,225 @@ @@ -0,0 +1,225 @@
/*
* Created by SharpDevelop.
* User: trubra
* Date: 2014-01-28
* Time: 10:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
using System.Linq;
using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.WpfDesign.Designer.OutlineView
{
/// <summary>
/// Description of OutlineNodeBase.
/// </summary>
public abstract class OutlineNodeBase : INotifyPropertyChanged, IOutlineNode
{
protected abstract void UpdateChildren();
//Used to check if element can enter other containers
protected static PlacementType DummyPlacementType;
protected OutlineNodeBase(DesignItem designItem)
{
DesignItem = designItem;
var hidden = designItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).ValueOnInstance;
if (hidden != null && (bool)hidden) {
_isDesignTimeVisible = false;
((FrameworkElement)DesignItem.Component).Visibility = Visibility.Hidden;
}
var locked = designItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).ValueOnInstance;
if (locked != null && (bool)locked) {
_isDesignTimeLocked = true;
}
//TODO
DesignItem.NameChanged += new EventHandler(DesignItem_NameChanged);
DesignItem.PropertyChanged += new PropertyChangedEventHandler(DesignItem_PropertyChanged);
}
public DesignItem DesignItem { get; set; }
public ISelectionService SelectionService
{
get { return DesignItem.Services.Selection; }
}
bool isExpanded = true;
public bool IsExpanded
{
get
{
return isExpanded;
}
set
{
isExpanded = value;
RaisePropertyChanged("IsExpanded");
}
}
bool isSelected;
public bool IsSelected
{
get
{
return isSelected;
}
set
{
if (isSelected != value) {
isSelected = value;
SelectionService.SetSelectedComponents(new[] { DesignItem },
value ? SelectionTypes.Add : SelectionTypes.Remove);
RaisePropertyChanged("IsSelected");
}
}
}
bool _isDesignTimeVisible = true;
public bool IsDesignTimeVisible
{
get
{
return _isDesignTimeVisible;
}
set
{
_isDesignTimeVisible = value;
var ctl = DesignItem.Component as UIElement;
if(ctl!=null)
ctl.Visibility = _isDesignTimeVisible ? Visibility.Visible : Visibility.Hidden;
RaisePropertyChanged("IsDesignTimeVisible");
if (!value)
DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).SetValue(true);
else
DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsHiddenProperty).Reset();
}
}
bool _isDesignTimeLocked = false;
public bool IsDesignTimeLocked
{
get
{
return _isDesignTimeLocked;
}
set
{
_isDesignTimeLocked = value;
((XamlDesignItem)DesignItem).IsDesignTimeLocked = _isDesignTimeLocked;
RaisePropertyChanged("IsDesignTimeLocked");
// if (value)
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).SetValue(true);
// else
// DesignItem.Properties.GetAttachedProperty(DesignTimeProperties.IsLockedProperty).Reset();
}
}
ObservableCollection<IOutlineNode> children = new ObservableCollection<IOutlineNode>();
public ObservableCollection<IOutlineNode> Children
{
get { return children; }
}
public string Name
{
get
{
if (string.IsNullOrEmpty(DesignItem.Name)) {
return DesignItem.ComponentType.Name;
}
return DesignItem.ComponentType.Name + " (" + DesignItem.Name + ")";
}
}
void DesignItem_NameChanged(object sender, EventArgs e)
{
RaisePropertyChanged("Name");
}
void DesignItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == DesignItem.ContentPropertyName) {
UpdateChildren();
}
}
public bool CanInsert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy)
{
var placementBehavior = DesignItem.GetBehavior<IPlacementBehavior>();
if (placementBehavior == null)
return false;
var operation = PlacementOperation.Start(nodes.Select(node => node.DesignItem).ToArray(), DummyPlacementType);
if (operation != null) {
bool canEnter = placementBehavior.CanEnterContainer(operation, true);
operation.Abort();
return canEnter;
}
return false;
}
public virtual void Insert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy)
{
using (var moveTransaction = DesignItem.Context.OpenGroup("Item moved in outline view", nodes.Select(n => n.DesignItem).ToList()))
{
if (copy) {
nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())).ToList();
} else {
foreach (var node in nodes) {
node.DesignItem.Remove();
}
}
var index = after == null ? 0 : Children.IndexOf(after) + 1;
var content = DesignItem.ContentProperty;
if (content.IsCollection) {
foreach (var node in nodes) {
content.CollectionElements.Insert(index++, node.DesignItem);
}
} else {
content.SetValue(nodes.First().DesignItem);
}
moveTransaction.Commit();
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
#endregion
}
}

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

@ -28,30 +28,30 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -28,30 +28,30 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
protected override bool CanInsert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy)
{
UpdateCustomNodes(items);
return (target.DataContext as OutlineNode).CanInsert(_customOutlineNodes,
after == null ? null : after.DataContext as OutlineNode, copy);
return (target.DataContext as IOutlineNode).CanInsert(_customOutlineNodes,
after == null ? null : after.DataContext as IOutlineNode, copy);
}
protected override void Insert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy)
{
UpdateCustomNodes(items);
(target.DataContext as OutlineNode).Insert(_customOutlineNodes,
after == null ? null : after.DataContext as OutlineNode, copy);
(target.DataContext as IOutlineNode).Insert(_customOutlineNodes,
after == null ? null : after.DataContext as IOutlineNode, copy);
}
// Need to do this through a seperate List since previously LINQ queries apparently disconnected DataContext;bug in .NET 4.0
private List<OutlineNode> _customOutlineNodes;
private List<IOutlineNode> _customOutlineNodes;
void UpdateCustomNodes(IEnumerable<DragTreeViewItem> items)
{
_customOutlineNodes = new List<OutlineNode>();
_customOutlineNodes = new List<IOutlineNode>();
foreach (var item in items)
_customOutlineNodes.Add(item.DataContext as OutlineNode);
_customOutlineNodes.Add(item.DataContext as IOutlineNode);
}
public override bool ShouldItemBeVisible(DragTreeViewItem dragTreeViewitem)
{
var node = dragTreeViewitem.DataContext as OutlineNode;
var node = dragTreeViewitem.DataContext as IOutlineNode;
return string.IsNullOrEmpty(Filter) || node.Name.ToLower().Contains(Filter.ToLower());
}
@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView @@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
{
base.SelectOnly(item);
var node = item.DataContext as OutlineNode;
var node = item.DataContext as IOutlineNode;
var surface = node.DesignItem.View.TryFindParent<DesignSurface>();
if (surface != null)

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/CollectionEditor.xaml.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors @@ -64,7 +64,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors
if(control!=null){
TypeMappings.TryGetValue(control.GetType(), out _type);
if (_type != null) {
OutlineNode node = OutlineNode.Create(item);
IOutlineNode node = OutlineNode.Create(item);
Outline.Root = node;
PropertyGridView.PropertyGrid.SelectedItems = item.Services.Selection.SelectedItems;
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs

@ -94,7 +94,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors @@ -94,7 +94,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors
var range = Metadata.GetValueRange(PropertyNode.FirstProperty);
if (range == null) {
range = new NumberRange() { Min = 0, Max = double.MaxValue };
range = new NumberRange() { Min = double.MinValue, Max = double.MaxValue };
}
if (range.Min == double.MinValue) {

20
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs

@ -35,7 +35,20 @@ using System.Windows; @@ -35,7 +35,20 @@ using System.Windows;
namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
{
public class PropertyGrid : INotifyPropertyChanged
public interface IPropertyGrid
{
IEnumerable<DesignItem> SelectedItems { get; set; }
Dictionary<MemberDescriptor, PropertyNode> NodeFromDescriptor { get; }
DesignItem SingleItem { get; }
string Name { get; set; }
string OldName { get; }
bool IsNameCorrect { get; set; }
bool ReloadActive { get; }
event EventHandler AggregatePropertiesUpdated;
event PropertyChangedEventHandler PropertyChanged;
}
public class PropertyGrid : INotifyPropertyChanged, IPropertyGrid
{
public PropertyGrid()
{
@ -54,7 +67,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -54,7 +67,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
Category attachedCategory = new Category("Attached");
Dictionary<MemberDescriptor, PropertyNode> nodeFromDescriptor = new Dictionary<MemberDescriptor, PropertyNode>();
public Dictionary<MemberDescriptor, PropertyNode> NodeFromDescriptor { get { return nodeFromDescriptor; } }
public event EventHandler AggregatePropertiesUpdated;
public CategoriesCollection Categories { get; private set; }
public PropertyNodeCollection Events { get; private set; }
@ -220,6 +234,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -220,6 +234,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
}
} finally {
reloadActive = false;
if (AggregatePropertiesUpdated != null)
AggregatePropertiesUpdated(this, EventArgs.Empty);
}
}

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGridView.cs

@ -42,10 +42,13 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -42,10 +42,13 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
DefaultStyleKeyProperty.OverrideMetadata(typeof(PropertyGridView), new FrameworkPropertyMetadata(typeof(PropertyGridView)));
}
public PropertyGridView() : this(null)
{
}
public PropertyGridView()
public PropertyGridView(IPropertyGrid pg)
{
PropertyGrid = new PropertyGrid();
PropertyGrid = pg??new PropertyGrid();
DataContext = PropertyGrid;
}
@ -61,7 +64,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -61,7 +64,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
static PropertyContextMenu propertyContextMenu = new PropertyContextMenu();
public PropertyGrid PropertyGrid { get; private set; }
public IPropertyGrid PropertyGrid { get; private set; }
public static readonly DependencyProperty FirstColumnWidthProperty =
DependencyProperty.Register("FirstColumnWidth", typeof(double), typeof(PropertyGridView),

19
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/CreateComponentTool.cs

@ -157,9 +157,26 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -157,9 +157,26 @@ namespace ICSharpCode.WpfDesign.Designer.Services
return item;
}
public static bool AddItemWithCustomSizePosition(DesignItem container, Type createdItem, Size size, Point position)
{
CreateComponentTool cct = new CreateComponentTool(createdItem);
return AddItemWithCustomSize(container, cct.CreateItem(container.Context), position, size);
}
public static bool AddItemWithDefaultSize(DesignItem container, Type createdItem, Size size)
{
CreateComponentTool cct = new CreateComponentTool(createdItem);
return AddItemWithCustomSize(container, cct.CreateItem(container.Context), new Point(0, 0), size);
}
internal static bool AddItemWithDefaultSize(DesignItem container, DesignItem createdItem, Point position)
{
var size = ModelTools.GetDefaultSize(createdItem);
return AddItemWithCustomSize(container, createdItem, position, ModelTools.GetDefaultSize(createdItem));
}
internal static bool AddItemWithCustomSize(DesignItem container, DesignItem createdItem, Point position, Size size)
{
PlacementOperation operation = PlacementOperation.TryStartInsertNewComponents(
container,
new DesignItem[] { createdItem },

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Services/ToolService.cs

@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
using System;
using System.Windows.Input;
using System.Windows.Media;
namespace ICSharpCode.WpfDesign.Designer.Services
{
// See IToolService for description.
@ -37,6 +37,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services @@ -37,6 +37,11 @@ namespace ICSharpCode.WpfDesign.Designer.Services
});
}
public HitTestFilterCallback DesignPanelHitTestFilterCallback
{
set{ _designPanel.CustomHitTestFilterBehavior = value; }
}
public void Dispose()
{
if (_designPanel != null) {

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

@ -90,6 +90,7 @@ @@ -90,6 +90,7 @@
</Compile>
<Compile Include="Extensions\RenderTransformOriginExtension.cs" />
<Compile Include="Extensions\RightClickContextMenuExtension.cs" />
<Compile Include="OutlineView\OutlineNodeBase.cs" />
<Compile Include="Extensions\RightClickMultipleItemsContextMenuExtension.cs" />
<Compile Include="Extensions\RightClickMultipleItemsContextMenu.xaml.cs">
<DependentUpon>RightClickMultipleItemsContextMenu.xaml</DependentUpon>

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlEditOperations.cs

@ -131,7 +131,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -131,7 +131,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
AddInParent(parent, pastedItems);
pasted = true;
}
} else if (pastedItems.Count == 1 && parent.ContentProperty.Value == null && parent.ContentProperty.ValueOnInstance == null && DefaultPlacementBehavior.CanContentControlAdd((ContentControl)parent.View)) {
} else if (pastedItems.Count == 1 && parent.ContentProperty.Value == null && parent.ContentProperty.ValueOnInstance == null && parent.View is ContentControl && DefaultPlacementBehavior.CanContentControlAdd((ContentControl)parent.View)) {
AddInParent(parent, pastedItems);
pasted = true;
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/HierarchyTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView @@ -26,7 +26,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView
public class HierarchyTests : ModelTestHelper
{
private DesignItem _grid;
private OutlineNode _outline;
private IOutlineNode _outline;
[TestFixtureSetUp]
public void Intialize()

16
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/InsertTests.cs

@ -26,15 +26,15 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView @@ -26,15 +26,15 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView
public class CollectionElementsInsertTests : ModelTestHelper
{
private DesignItem _grid;
private OutlineNode _outline;
private IOutlineNode _outline;
private DesignItem _gridButton;
private DesignItem _stackPanel;
private DesignItem _stackPanelButton;
private OutlineNode _gridButtonNode;
private OutlineNode _stackPanelNode;
private OutlineNode _stackPanelButtonNode;
private IOutlineNode _gridButtonNode;
private IOutlineNode _stackPanelNode;
private IOutlineNode _stackPanelButtonNode;
[SetUp]
public void Intialize()
@ -162,15 +162,15 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView @@ -162,15 +162,15 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView
public class ContentControlInsertTests : ModelTestHelper
{
private DesignItem _grid;
private OutlineNode _outline;
private IOutlineNode _outline;
private DesignItem _gridButton;
private DesignItem _stackPanel;
private DesignItem _stackPanelImage;
private OutlineNode _gridButtonNode;
private OutlineNode _stackPanelNode;
private OutlineNode _stackPanelImageNode;
private IOutlineNode _gridButtonNode;
private IOutlineNode _stackPanelNode;
private IOutlineNode _stackPanelImageNode;
[SetUp]
public void Intialize()

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/OutlineView/SelectionTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView @@ -26,7 +26,7 @@ namespace ICSharpCode.WpfDesign.Tests.Designer.OutlineView
public class SelectionTests : ModelTestHelper
{
private DesignItem _grid;
private OutlineNode _outline;
private IOutlineNode _outline;
[SetUp]
public void Intialize()

91
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/XamlDom/MarkupExtensionTests.cs

@ -17,6 +17,9 @@ @@ -17,6 +17,9 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using NUnit.Framework;
using System.Windows.Markup;
using ICSharpCode.WpfDesign.XamlDom;
@ -119,6 +122,79 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom @@ -119,6 +122,79 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom
TestMarkupExtension("Content=\"{t:String '" + PathWithCommasAndSpaces + "'}\"");
}
[Test]
public void TestMultiBinding()
{
string xaml = @"
<Window xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:t=""" + XamlTypeFinderTests.XamlDomTestsNamespace + @""">
<TextBox>
<MultiBinding>
<MultiBinding.Converter>
<t:MyMultiConverter />
</MultiBinding.Converter>
<Binding Path=""SomeProperty"" />
</MultiBinding>
</TextBox>
</Window>";
TestLoading(xaml);
TestWindowMultiBinding((Window)XamlReader.Parse(xaml));
var doc = XamlParser.Parse(new StringReader(xaml));
TestWindowMultiBinding((Window)doc.RootInstance);
}
void TestWindowMultiBinding(Window w)
{
var textBox = (TextBox)w.Content;
var expr = BindingOperations.GetMultiBindingExpression(textBox, TextBox.TextProperty);
Assert.IsNotNull(expr);
var converter = expr.ParentMultiBinding.Converter as MyMultiConverter;
Assert.IsNotNull(converter);
Assert.AreEqual(expr.ParentMultiBinding.Bindings.Count, 1);
}
[Test]
public void TestPriorityBinding()
{
string xaml = @"
<Window xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:t=""" + XamlTypeFinderTests.XamlDomTestsNamespace + @""">
<TextBox>
<PriorityBinding>
<Binding Path=""SomeProperty"" />
<Binding Path=""OtherProperty"" />
</PriorityBinding>
</TextBox>
</Window>";
TestLoading(xaml);
TestWindowPriorityBinding((Window)XamlReader.Parse(xaml));
var doc = XamlParser.Parse(new StringReader(xaml));
TestWindowPriorityBinding((Window)doc.RootInstance);
}
void TestWindowPriorityBinding(Window w)
{
var textBox = (TextBox)w.Content;
var expr = BindingOperations.GetPriorityBindingExpression(textBox, TextBox.TextProperty);
Assert.IsNotNull(expr);
Assert.AreEqual(expr.ParentPriorityBinding.Bindings.Count, 2);
}
// [Test]
// public void Test10()
// {
@ -177,4 +253,19 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom @@ -177,4 +253,19 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom
return null;
}
}
public class MyMultiConverter : IMultiValueConverter
{
#region IMultiValueConverter implementation
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Windows.DependencyProperty.UnsetValue;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}

34
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs

@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
@ -548,11 +549,35 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -548,11 +549,35 @@ namespace ICSharpCode.WpfDesign.XamlDom
{
public override object ProvideValue()
{
var target = XamlObject.Instance as Binding;
var target = XamlObject.Instance as BindingBase;
Debug.Assert(target != null);
//TODO: XamlObject.Clone()
var b = new Binding();
var b = CopyBinding(target);
return b.ProvideValue(XamlObject.ServiceProvider);
}
BindingBase CopyBinding(BindingBase target)
{
BindingBase b;
if (target != null) {
b = (BindingBase)Activator.CreateInstance(target.GetType());
} else {
b = new Binding();
}
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(target)) {
if (pd.IsReadOnly) continue;
if (pd.IsReadOnly) {
if (pd.Name.Equals("Bindings", StringComparison.Ordinal)) {
var bindings = (Collection<BindingBase>)pd.GetValue(target);
var newBindings = (Collection<BindingBase>)pd.GetValue(b);
foreach (var binding in bindings) {
newBindings.Add(CopyBinding(binding));
}
}
continue;
}
try {
var val1 = pd.GetValue(b);
var val2 = pd.GetValue(target);
@ -560,7 +585,8 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -560,7 +585,8 @@ namespace ICSharpCode.WpfDesign.XamlDom
pd.SetValue(b, val2);
} catch {}
}
return b.ProvideValue(XamlObject.ServiceProvider);
return b;
}
}

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

@ -726,6 +726,7 @@ namespace ICSharpCode.WpfDesign.XamlDom @@ -726,6 +726,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
XamlParser parser = new XamlParser();
parser.settings = settings;
parser.errorSink = (IXamlErrorSink)settings.ServiceProvider.GetService(typeof(IXamlErrorSink));
parser.document = root.OwnerDocument;
var xamlObject = parser.ParseObject(element as XmlElement);
if (xamlObject != null)

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementInformation.cs

@ -28,9 +28,9 @@ namespace ICSharpCode.WpfDesign @@ -28,9 +28,9 @@ namespace ICSharpCode.WpfDesign
{
/// <summary>
/// The designer rounds bounds to this number of digits to avoid floating point errors.
/// Value: 1
/// Value: 0
/// </summary>
public const int BoundsPrecision = 1;
public const int BoundsPrecision = 0;
Rect originalBounds, bounds;
readonly DesignItem item;

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Tools.cs

@ -21,6 +21,7 @@ using System.Collections.Generic; @@ -21,6 +21,7 @@ using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners;
@ -53,6 +54,10 @@ namespace ICSharpCode.WpfDesign @@ -53,6 +54,10 @@ namespace ICSharpCode.WpfDesign
/// </summary>
public interface IToolService
{
/// <summary>
/// Set custom HitTestFilterCallback for DesignPanel
/// </summary>
HitTestFilterCallback DesignPanelHitTestFilterCallback{ set; }
/// <summary>
/// Gets the 'pointer' tool.
/// The pointer tool is the default tool for selecting and moving elements.
@ -77,6 +82,10 @@ namespace ICSharpCode.WpfDesign @@ -77,6 +82,10 @@ namespace ICSharpCode.WpfDesign
public interface IDesignPanel : IInputElement
{
/// <summary>
/// Set a custom filter callback so that any element can be filtered out
/// </summary>
HitTestFilterCallback CustomHitTestFilterBehavior { get; set; }
/// <summary>
/// Gets the design context used by the DesignPanel.
/// </summary>
DesignContext Context { get; }

17
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeViewContainerControl.cs

@ -667,11 +667,20 @@ namespace ICSharpCode.XmlEditor @@ -667,11 +667,20 @@ namespace ICSharpCode.XmlEditor
}
/// <summary>
/// Deletes the selected node.
/// Handles a keyboard press event in tree view.
/// </summary>
protected void XmlElementTreeViewDeleteKeyPressed(object source, EventArgs e)
protected void XmlElementTreeViewKeyPressed(object source, XmlTreeViewKeyPressedEventArgs e)
{
Delete();
if (e.KeyData == Keys.Delete)
Delete();
else if (e.KeyData == (Keys.Control | Keys.C))
Copy();
else if (e.KeyData == (Keys.Control | Keys.X))
Cut();
else if (e.KeyData == (Keys.Control | Keys.V))
Paste();
else if (e.KeyData == (Keys.Control | Keys.A))
SelectAll();
}
#region Forms Designer generated code
@ -738,7 +747,7 @@ namespace ICSharpCode.XmlEditor @@ -738,7 +747,7 @@ namespace ICSharpCode.XmlEditor
this.xmlElementTreeView.Size = new System.Drawing.Size(185, 326);
this.xmlElementTreeView.TabIndex = 0;
this.xmlElementTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.XmlElementTreeViewAfterSelect);
this.xmlElementTreeView.DeleteKeyPressed += new System.EventHandler(this.XmlElementTreeViewDeleteKeyPressed);
this.xmlElementTreeView.TreeViewKeyPressed += this.XmlElementTreeViewKeyPressed;
//
// attributesGrid
//

22
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeViewControl.cs

@ -26,6 +26,20 @@ using ICSharpCode.SharpDevelop.Gui; @@ -26,6 +26,20 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.XmlEditor
{
public class XmlTreeViewKeyPressedEventArgs : EventArgs
{
public XmlTreeViewKeyPressedEventArgs(Keys keyData)
{
KeyData = keyData;
}
public Keys KeyData
{
get;
private set;
}
}
/// <summary>
/// Displays a tree of XML elements. This is a separate control so it can
/// be unit tested. It has no SharpDevelop specific parts, for example,
@ -43,9 +57,9 @@ namespace ICSharpCode.XmlEditor @@ -43,9 +57,9 @@ namespace ICSharpCode.XmlEditor
}
/// <summary>
/// Raised when the delete key is pressed.
/// Raised when some key in tree view is pressed.
/// </summary>
public event EventHandler DeleteKeyPressed;
public event EventHandler<XmlTreeViewKeyPressedEventArgs> TreeViewKeyPressed;
public XmlTreeViewControl()
{
@ -332,8 +346,8 @@ namespace ICSharpCode.XmlEditor @@ -332,8 +346,8 @@ namespace ICSharpCode.XmlEditor
/// </summary>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Delete && DeleteKeyPressed != null) {
DeleteKeyPressed(this, new EventArgs());
if (/*keyData == Keys.Delete && */TreeViewKeyPressed != null) {
TreeViewKeyPressed(this, new XmlTreeViewKeyPressedEventArgs(keyData));
}
return base.ProcessCmdKey(ref msg, keyData);
}

2
src/AddIns/DisplayBindings/XmlEditor/Test/Tree/DeleteTreeNodeWithDeleteKeyTestFixture.cs

@ -36,7 +36,7 @@ namespace XmlEditor.Tests.Tree @@ -36,7 +36,7 @@ namespace XmlEditor.Tests.Tree
public void DeleteKeyPressed()
{
using (DerivedXmlTreeViewControl treeView = new DerivedXmlTreeViewControl()) {
treeView.DeleteKeyPressed += TreeViewDeleteKeyPressed;
treeView.TreeViewKeyPressed += TreeViewDeleteKeyPressed;
treeView.CallProcessCmdKey(Keys.Delete);
}
Assert.IsTrue(deleteKeyPressEventFired);

4
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/DerivedXmlTreeViewContainerControl.cs

@ -81,12 +81,12 @@ namespace XmlEditor.Tests.Utils @@ -81,12 +81,12 @@ namespace XmlEditor.Tests.Utils
/// <summary>
/// Allows us to call the XmlTreeViewContainer's
/// XmlElementTreeViewDeleteKeyPressed method to fake the user
/// XmlElementTreeViewKeyPressed method to fake the user
/// pressing the delete key in the xml tree view control.
/// </summary>
public void CallXmlElementTreeViewDeleteKeyPressed()
{
base.XmlElementTreeViewDeleteKeyPressed(this, new EventArgs());
base.XmlElementTreeViewKeyPressed(this, new XmlTreeViewKeyPressedEventArgs(Keys.Delete));
}
/// <summary>

3
src/AddIns/VersionControl/GitAddIn/Src/Git.cs

@ -94,7 +94,8 @@ namespace ICSharpCode.GitAddIn @@ -94,7 +94,8 @@ namespace ICSharpCode.GitAddIn
/// </summary>
public static string FindGit()
{
string[] paths = Environment.GetEnvironmentVariable("PATH").Split(';');
string pathVariable = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
string[] paths = pathVariable.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string path in paths) {
try {
string exe = Path.Combine(path, "git.exe");

8
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/UseOfMemberOfNullReference.cs

@ -34,10 +34,10 @@ using ICSharpCode.NRefactory.CSharp.Analysis; @@ -34,10 +34,10 @@ using ICSharpCode.NRefactory.CSharp.Analysis;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
[IssueDescription("Use of (non-extension method) member of null value will cause a NullReferenceException",
Description = "Detects when a member of a null value is used",
Category = IssueCategories.CodeQualityIssues,
Severity = Severity.Warning)]
// [IssueDescription("Use of (non-extension method) member of null value will cause a NullReferenceException",
// Description = "Detects when a member of a null value is used",
// Category = IssueCategories.CodeQualityIssues,
// Severity = Severity.Warning)]
public class UseOfMemberOfNullReference : GatherVisitorCodeIssueProvider
{
static readonly ISet<NullValueStatus> ProblematicNullStates = new HashSet<NullValueStatus> {

1
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Refactoring/IssueAttribute.cs

@ -41,6 +41,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -41,6 +41,7 @@ namespace ICSharpCode.NRefactory.CSharp
public string SuppressMessageCheckId { get; set; }
public int PragmaWarning { get; set; }
public bool IsEnabledByDefault { get; set; }
public bool SupportsAutoFix { get; set; }
public Severity Severity { get; set; }

8
src/Libraries/NRefactory/ICSharpCode.NRefactory.Cecil/CecilLoader.cs

@ -824,7 +824,13 @@ namespace ICSharpCode.NRefactory.TypeSystem @@ -824,7 +824,13 @@ namespace ICSharpCode.NRefactory.TypeSystem
void AddSecurityAttributes(SecurityDeclaration secDecl, IList<IUnresolvedAttribute> targetCollection)
{
var blobSecDecl = new UnresolvedSecurityDeclarationBlob((int)secDecl.Action, secDecl.GetBlob());
byte[] blob;
try {
blob = secDecl.GetBlob();
} catch (NotSupportedException) {
return; // https://github.com/icsharpcode/SharpDevelop/issues/284
}
var blobSecDecl = new UnresolvedSecurityDeclarationBlob((int)secDecl.Action, blob);
targetCollection.AddRange(blobSecDecl.UnresolvedAttributes);
}
#endregion

2
src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/Analysis/SymbolCollectorTests.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.NRefactory.Analysis @@ -60,7 +60,7 @@ namespace ICSharpCode.NRefactory.Analysis
col.IncludeOverloads = includeOverloads;
col.GroupForRenaming = true;
var result = col.GetRelatedSymbols (new TypeGraph (compilation.Assemblies),
var result = col.GetRelatedSymbols (new Lazy<TypeGraph>(() => new TypeGraph (compilation.Assemblies)),
symbol);
if (offsets.Count != result.Count()) {
foreach (var a in result)

2
src/Libraries/NRefactory/ICSharpCode.NRefactory.Tests/CSharp/Resolver/FindReferencesTest.cs

@ -469,7 +469,7 @@ namespace Foo @@ -469,7 +469,7 @@ namespace Foo
{
var sym = GetSymbol(compilation, fullyQualifiedName);
Assert.NotNull(sym);
var graph = new TypeGraph(compilation.Assemblies);
var graph = new Lazy<TypeGraph>(() => new TypeGraph(compilation.Assemblies));
var col = new SymbolCollector();
col.IncludeOverloads = includeOverloads;
col.GroupForRenaming = true;

16
src/Libraries/NRefactory/ICSharpCode.NRefactory/Analysis/SymbolCollector.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.Analysis @@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.Analysis
}
}
static IEnumerable<ISymbol> CollectOverloads (TypeGraph g, IMethod method)
static IEnumerable<ISymbol> CollectOverloads (IMethod method)
{
return method.DeclaringType
.GetMethods (m => m.Name == method.Name)
@ -85,7 +85,7 @@ namespace ICSharpCode.NRefactory.Analysis @@ -85,7 +85,7 @@ namespace ICSharpCode.NRefactory.Analysis
/// <returns>The related symbols.</returns>
/// <param name="g">The type graph.</param>
/// <param name="m">The symbol to search</param>
public IEnumerable<ISymbol> GetRelatedSymbols(TypeGraph g, ISymbol m)
public IEnumerable<ISymbol> GetRelatedSymbols(Lazy<TypeGraph> g, ISymbol m)
{
switch (m.SymbolKind) {
case SymbolKind.TypeDefinition:
@ -103,7 +103,7 @@ namespace ICSharpCode.NRefactory.Analysis @@ -103,7 +103,7 @@ namespace ICSharpCode.NRefactory.Analysis
return GetRelatedSymbols (g, ((IMethod)m).DeclaringTypeDefinition);
List<ISymbol> constructorSymbols = new List<ISymbol> ();
if (IncludeOverloads) {
foreach (var m3 in CollectOverloads (g, (IMethod)m)) {
foreach (var m3 in CollectOverloads ((IMethod)m)) {
constructorSymbols.Add (m3);
}
}
@ -120,16 +120,18 @@ namespace ICSharpCode.NRefactory.Analysis @@ -120,16 +120,18 @@ namespace ICSharpCode.NRefactory.Analysis
case SymbolKind.Method: {
var member = (IMember)m;
List<ISymbol> symbols = new List<ISymbol> ();
if (member.ImplementedInterfaceMembers.Count > 0) {
if (!member.IsExplicitInterfaceImplementation)
symbols.Add (member);
if (GroupForRenaming) {
foreach (var m2 in member.ImplementedInterfaceMembers) {
symbols.AddRange (GetRelatedSymbols (g, m2));
}
} else {
symbols.Add (member);
symbols.AddRange(member.ImplementedInterfaceMembers);
}
if (member.DeclaringType.Kind == TypeKind.Interface) {
var declaringTypeNode = g.GetNode(member.DeclaringTypeDefinition);
var declaringTypeNode = g.Value.GetNode(member.DeclaringTypeDefinition);
if (declaringTypeNode != null) {
foreach (var derivedType in declaringTypeNode.DerivedTypes) {
var mem = SearchMember (derivedType.TypeDefinition, member);
@ -143,7 +145,7 @@ namespace ICSharpCode.NRefactory.Analysis @@ -143,7 +145,7 @@ namespace ICSharpCode.NRefactory.Analysis
if (IncludeOverloads) {
IncludeOverloads = false;
if (member is IMethod) {
foreach (var m3 in CollectOverloads (g, (IMethod)member)) {
foreach (var m3 in CollectOverloads ((IMethod)member)) {
symbols.AddRange (GetRelatedSymbols (g, m3));
}
} else if (member.SymbolKind == SymbolKind.Indexer) {

3
src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs

@ -118,7 +118,8 @@ namespace ICSharpCode.TreeView @@ -118,7 +118,8 @@ namespace ICSharpCode.TreeView
protected override void OnContextMenuOpening(ContextMenuEventArgs e)
{
Node.ShowContextMenu(e);
if (Node != null)
Node.ShowContextMenu(e);
}
#endregion

13
src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs

@ -65,6 +65,10 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks @@ -65,6 +65,10 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
get { return (SDBookmark)this.control.listView.SelectedItem; }
}
public IEnumerable<SDBookmark> SelectedItems {
get { return this.control.listView.SelectedItems.OfType<SDBookmark>(); }
}
protected BookmarkPadBase()
{
this.control = new BookmarkPadContent();
@ -86,11 +90,14 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks @@ -86,11 +90,14 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
};
this.control.listView.KeyDown += delegate(object sender, System.Windows.Input.KeyEventArgs e) {
SDBookmark bm = this.control.listView.SelectedItem as SDBookmark;
if (bm == null) return;
var selectedItems = this.SelectedItems.ToList();
if (!selectedItems.Any())
return;
switch (e.Key) {
case System.Windows.Input.Key.Delete:
SD.BookmarkManager.RemoveMark(bm);
foreach (var selectedItem in selectedItems) {
SD.BookmarkManager.RemoveMark(selectedItem);
}
break;
}
};

7
src/Main/Base/Project/Editor/Bookmarks/BookmarkPadToolbarCommands.cs

@ -67,8 +67,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks @@ -67,8 +67,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
public override void Run()
{
BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
if (pad.SelectedItem != null) {
SD.BookmarkManager.RemoveMark(pad.SelectedItem);
var selectedItems = pad.SelectedItems.ToList();
if (selectedItems.Any()) {
foreach (var selectedItem in selectedItems) {
SD.BookmarkManager.RemoveMark(selectedItem);
}
}
}
}

2
src/Main/Base/Project/Editor/IEditorUIService.cs

@ -37,6 +37,8 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -37,6 +37,8 @@ namespace ICSharpCode.SharpDevelop.Editor
/// <summary>
/// Gets the absolute screen position of given position in the document.
/// If the position is outside of the currently visible portion of the document,
/// the value is forced into the viewport bounds.
/// </summary>
Point GetScreenPosition(int line, int column);

12
src/Main/Base/Project/Parser/ProjectContentContainer.cs

@ -463,9 +463,15 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -463,9 +463,15 @@ namespace ICSharpCode.SharpDevelop.Parser
foreach (var file in assemblyFiles) {
progressMonitor.CancellationToken.ThrowIfCancellationRequested();
if (File.Exists(file)) {
var pc = SD.AssemblyParserService.GetAssembly(file, false, progressMonitor.CancellationToken);
if (pc != null) {
newReferences.Add(pc);
try {
var pc = SD.AssemblyParserService.GetAssembly(file, false, progressMonitor.CancellationToken);
if (pc != null) {
newReferences.Add(pc);
}
} catch (IOException ex) {
LoggingService.Warn(ex);
} catch (BadImageFormatException ex) {
LoggingService.Warn(ex);
}
}
progressMonitor.Progress += (1.0 - assemblyResolvingProgress) / assemblyFiles.Count;

5
src/Main/Base/Project/Refactoring/CodeGenerator.cs

@ -83,6 +83,11 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -83,6 +83,11 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return newName;
}
public virtual string EscapeIdentifier(string identifier)
{
throw new NotSupportedException("Feature not supported!");
}
public virtual void AddField(ITypeDefinition declaringType, Accessibility accessibility, IType fieldType, string name)
{
throw new NotSupportedException("Feature not supported!");

53
src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs

@ -52,35 +52,43 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -52,35 +52,43 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public override void Run(ResolveResult symbol)
{
var entity = GetSymbol(symbol);
if ((entity is IMember) && ((entity.SymbolKind == SymbolKind.Constructor) || (entity.SymbolKind == SymbolKind.Destructor))) {
RunRename(GetSymbol(symbol));
}
public static void RunRename(ISymbol symbol, string newName = null)
{
if ((symbol is IMember) && ((symbol.SymbolKind == SymbolKind.Constructor) || (symbol.SymbolKind == SymbolKind.Destructor))) {
// Don't rename constructors/destructors, rename their declaring type instead
entity = ((IMember) entity).DeclaringType.GetDefinition();
symbol = ((IMember) symbol).DeclaringType.GetDefinition();
}
if (entity != null) {
var project = GetProjectFromSymbol(entity);
if (symbol != null) {
var project = GetProjectFromSymbol(symbol);
if (project != null) {
var languageBinding = project.LanguageBinding;
RenameSymbolDialog renameDialog = new RenameSymbolDialog(name => CheckName(name, languageBinding))
{
Owner = SD.Workbench.MainWindow,
OldSymbolName = entity.Name,
NewSymbolName = entity.Name
};
if ((bool) renameDialog.ShowDialog()) {
AsynchronousWaitDialog.ShowWaitDialogForAsyncOperation(
"${res:SharpDevelop.Refactoring.Rename}",
progressMonitor =>
FindReferenceService.RenameSymbol(entity, renameDialog.NewSymbolName, progressMonitor)
.ObserveOnUIThread()
.Subscribe(error => SD.MessageService.ShowError(error.Message), ex => SD.MessageService.ShowException(ex), () => {}));
if (newName == null) {
RenameSymbolDialog renameDialog = new RenameSymbolDialog(name => CheckName(name, languageBinding))
{
Owner = SD.Workbench.MainWindow,
OldSymbolName = symbol.Name,
NewSymbolName = symbol.Name
};
if (renameDialog.ShowDialog() == true) {
newName = renameDialog.NewSymbolName;
} else {
return;
}
}
AsynchronousWaitDialog.ShowWaitDialogForAsyncOperation(
"${res:SharpDevelop.Refactoring.Rename}",
progressMonitor =>
FindReferenceService.RenameSymbol(symbol, newName, progressMonitor)
.ObserveOnUIThread()
.Subscribe(error => SD.MessageService.ShowError(error.Message), ex => SD.MessageService.ShowException(ex), () => {}));
}
}
}
ICSharpCode.SharpDevelop.Project.IProject GetProjectFromSymbol(ISymbol symbol)
static ICSharpCode.SharpDevelop.Project.IProject GetProjectFromSymbol(ISymbol symbol)
{
switch (symbol.SymbolKind) {
case SymbolKind.None:
@ -113,12 +121,13 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -113,12 +121,13 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
}
}
bool CheckName(string name, ILanguageBinding language)
static bool CheckName(string name, ILanguageBinding language)
{
if (string.IsNullOrEmpty(name))
return false;
if ((language.CodeDomProvider == null) || !language.CodeDomProvider.IsValidIdentifier(name))
if ((language.CodeDomProvider == null) || (!language.CodeDomProvider.IsValidIdentifier(name) &&
!language.CodeDomProvider.IsValidIdentifier(language.CodeGenerator.EscapeIdentifier(name))))
return false;
return true;

18
src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs

@ -187,8 +187,16 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -187,8 +187,16 @@ namespace ICSharpCode.SharpDevelop.Editor
if (commentStartOffset >= 0) {
commentEndOffset = selectedText.IndexOf(commentEnd, commentStartOffset + commentStart.Length - editor.SelectionStart);
} else {
commentEndOffset = selectedText.IndexOf(commentEnd);
}
// Try to search end of comment in whole selection
bool startAfterEnd = false;
int commentEndOffsetWholeText = selectedText.IndexOf(commentEnd);
if ((commentEndOffsetWholeText >= 0) && (commentEndOffsetWholeText < (commentStartOffset - editor.SelectionStart))) {
// There seems to be an end offset before the start offset in selection
commentStartOffset = -1;
startAfterEnd = true;
commentEndOffset = commentEndOffsetWholeText;
}
if (commentEndOffset >= 0) {
@ -205,7 +213,11 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -205,7 +213,11 @@ namespace ICSharpCode.SharpDevelop.Editor
offset = document.TextLength;
}
string text = document.GetText(0, offset);
commentStartOffset = text.LastIndexOf(commentStart);
if (startAfterEnd) {
commentStartOffset = text.LastIndexOf(commentStart, editor.SelectionStart);
} else {
commentStartOffset = text.LastIndexOf(commentStart);
}
if (commentStartOffset >= 0) {
// Find end of comment before comment start.
commentEndBeforeStartOffset = text.IndexOf(commentEnd, commentStartOffset, editor.SelectionStart - commentStartOffset);

19
src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/OutputTextLineParser.cs

@ -85,7 +85,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -85,7 +85,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// Extracts source code file reference from NUnit output. (stacktrace format)
/// </summary>
/// <param name="lineText">The text line to parse.</param>
/// <param name="multiline">The <paramref name="line"/> text is multilined.</param>
/// <param name="multiline">The <paramref name="lineText"/> text is multilined.</param>
/// <returns>A <see cref="FileLineReference"/> if the line of text contains a
/// file reference otherwise <see langword="null"/></returns>
public static FileLineReference GetNUnitOutputFileLineReference(string lineText, bool multiline)
@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Gui
FileLineReference result = null;
if (lineText != null) {
Match match = Regex.Match(lineText, @"\b(\w:[/\\].*?):line\s(\d+)?\r?$", regexOptions);
Match match = Regex.Match(lineText, GetStackFrameRegex(), regexOptions);
while (match.Success) {
try {
int line = Convert.ToInt32(match.Groups[2].Value);
@ -111,6 +111,21 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -111,6 +111,21 @@ namespace ICSharpCode.SharpDevelop.Gui
return result;
}
static readonly System.Reflection.MethodInfo GetResourceString = typeof(Environment)
.GetMethod("GetResourceString", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic,
null, new[] { typeof(string) }, null);
static string GetStackFrameRegex()
{
string line = "in {0}:line {1}";
if (GetResourceString != null) {
line = (string)GetResourceString.Invoke(null, new[] { "StackTrace_InFileLineNumber" });
}
return line.Replace("{0}", @"(\w:[/\\].*?)").Replace("{1}", @"(\d+)");
}
/// <summary>
/// Extracts source code file reference from the c++ or VB.Net compiler output.
/// </summary>

74
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs

@ -17,8 +17,11 @@ @@ -17,8 +17,11 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
@ -249,37 +252,58 @@ namespace ICSharpCode.SharpDevelop.Project @@ -249,37 +252,58 @@ namespace ICSharpCode.SharpDevelop.Project
try {
inSelectFile = true;
lastSelectionTarget = fileName;
TreeNode node = FindFileNode(fileName);
if (node != null) {
// Expand to node
TreeNode parent = node.Parent;
while (parent != null) {
parent.Expand();
parent = parent.Parent;
}
//node = FindFileNode(fileName);
treeView.SelectedNode = node;
} else {
// Node for this file does not exist yet (the tree view is lazy loaded)
SelectDeepestOpenNodeForPath(fileName);
}
LoadAndExpandToNode(new FileName(fileName));
} finally {
inSelectFile = false;
}
}
#region SelectDeepestOpenNode internals
//
// SolutionNode RootSolutionNode {
// get {
// if (treeView.Nodes != null && treeView.Nodes.Count>0) {
// return treeView.Nodes[0] as SolutionNode;
// }
// return null;
// }
// }
//
void LoadAndExpandToNode(FileName fileName)
{
IProject project = null;
if (!SD.ProjectService.IsSolutionOrProjectFile(fileName)) {
project = SD.ProjectService.FindProjectContainingFile(fileName);
}
Stack<ISolutionItem> itemsToExpand = new Stack<ISolutionItem>();
ISolutionItem item = project;
if (project == null) {
item = SD.ProjectService.CurrentSolution.AllItems
.OfType<ISolutionFileItem>().FirstOrDefault(i => i.FileName.Equals(fileName));
}
while (item != null) {
itemsToExpand.Push(item);
item = item.ParentFolder;
}
AbstractProjectBrowserTreeNode current = null;
var currentChildren = treeView.Nodes;
while (itemsToExpand.Any()) {
var currentItem = itemsToExpand.Pop();
current = currentChildren.OfType<AbstractProjectBrowserTreeNode>().FirstOrDefault(n => n.Tag == currentItem);
if (current == null) break;
current.Expand();
currentChildren = current.Nodes;
}
if (project != null) {
var fileItem = project.FindFile(fileName);
var virtualPath = fileItem.VirtualName;
if (!string.IsNullOrWhiteSpace(fileItem.DependentUpon)) {
int index = virtualPath.LastIndexOf('\\') + 1;
virtualPath = virtualPath.Insert(index, fileItem.DependentUpon + "\\");
}
string[] relativePath = virtualPath.Split('\\');
for (int i = 0; i < relativePath.Length; i++) {
current = currentChildren.OfType<AbstractProjectBrowserTreeNode>()
.FirstOrDefault(n => n.Text.Equals(relativePath[i], StringComparison.OrdinalIgnoreCase));
if (current == null) break;
current.Expand();
currentChildren = current.Nodes;
}
}
treeView.SelectedNode = current;
}
void SelectDeepestOpenNodeForPath(string fileName)
{
TreeNode node = FindDeepestOpenNodeForPath(fileName);

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

@ -51,6 +51,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -51,6 +51,7 @@ namespace ICSharpCode.SharpDevelop.Project
this.solution = item.ParentSolution;
this.item = item;
this.Text = Path.GetFileName(FileName);
this.Tag = item;
SetIcon(IconService.GetImageForFile(FileName));
}

2
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -188,7 +188,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -188,7 +188,7 @@ namespace ICSharpCode.SharpDevelop.Project
try {
FileAttributes attributes = File.GetAttributes(FileName);
return ((FileAttributes.ReadOnly & attributes) == FileAttributes.ReadOnly);
} catch (FileNotFoundException) {
} catch (UnauthorizedAccessException) {
return false;
} catch (IOException) {
// directory not found, network path not available, etc.

2
src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs

@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop @@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop
}
}
public virtual ICodeCompletionBinding CreateCompletionBinding(FileName fileName, TextLocation currentLocation, ITextSource fileContent)
public virtual ICodeCompletionBinding CreateCompletionBinding(string expressionToComplete, FileName fileName, TextLocation location, ICodeContext context)
{
throw new NotSupportedException();
}

5
src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
@ -62,8 +63,8 @@ namespace ICSharpCode.SharpDevelop @@ -62,8 +63,8 @@ namespace ICSharpCode.SharpDevelop
}
/// <summary>
/// Creates a completion binding which works with a fileName and a location as context.
/// Creates a completion binding for a given expression and context.
/// </summary>
ICodeCompletionBinding CreateCompletionBinding(FileName fileName, TextLocation currentLocation, ITextSource fileContent);
ICodeCompletionBinding CreateCompletionBinding(string expressionToComplete, FileName fileName, TextLocation location, ICodeContext context);
}
}

8
src/Main/SharpDevelop/Parser/ParserService.cs

@ -174,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -174,7 +174,7 @@ namespace ICSharpCode.SharpDevelop.Parser
internal void RemoveEntry(ParserServiceEntry entry)
{
Debug.Assert(Monitor.IsEntered(entry));
Debug.Assert(entry.rwLock.IsWriteLockHeld);
lock (fileEntryDict) {
ParserServiceEntry entryAtKey;
if (fileEntryDict.TryGetValue(entry.fileName, out entryAtKey)) {
@ -190,7 +190,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -190,7 +190,7 @@ namespace ICSharpCode.SharpDevelop.Parser
internal void RegisterForCacheExpiry(ParserServiceEntry entry)
{
// This method should not be called within any locks
Debug.Assert(!Monitor.IsEntered(entry));
Debug.Assert(!(entry.rwLock.IsReadLockHeld || entry.rwLock.IsUpgradeableReadLockHeld || entry.rwLock.IsWriteLockHeld));
ParserServiceEntry expiredItem = null;
lock (cacheExpiryQueue) {
cacheExpiryQueue.Remove(entry); // remove entry from queue if it's already enqueued
@ -278,7 +278,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -278,7 +278,7 @@ namespace ICSharpCode.SharpDevelop.Parser
public ResolveResult Resolve(FileName fileName, TextLocation location, ITextSource fileContent, ICompilation compilation, CancellationToken cancellationToken)
{
var entry = GetFileEntry(fileName, true);
if (entry.parser == null)
if (entry.parser == null || location.IsEmpty)
return ErrorResolveResult.UnknownError;
IProject project = compilation != null ? compilation.GetProject() : null;
var parseInfo = entry.Parse(fileContent, project, cancellationToken);
@ -334,7 +334,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -334,7 +334,7 @@ namespace ICSharpCode.SharpDevelop.Parser
public Task<ResolveResult> ResolveAsync(FileName fileName, TextLocation location, ITextSource fileContent, ICompilation compilation, CancellationToken cancellationToken)
{
var entry = GetFileEntry(fileName, true);
if (entry.parser == null)
if (entry.parser == null || location.IsEmpty)
return Task.FromResult<ResolveResult>(ErrorResolveResult.UnknownError);
IProject project = compilation != null ? compilation.GetProject() : null;
return entry.ParseAsync(fileContent, project, cancellationToken).ContinueWith(

96
src/Main/SharpDevelop/Parser/ParserServiceEntry.cs

@ -54,6 +54,10 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -54,6 +54,10 @@ namespace ICSharpCode.SharpDevelop.Parser
List<ProjectEntry> entries = new List<ProjectEntry> { default(ProjectEntry) };
ITextSourceVersion currentVersion;
// Lock ordering: runningAsyncParseLock, rwLock, lock(parserService.fileEntryDict)
// (to avoid deadlocks, the locks may only be acquired in this order)
internal readonly ReaderWriterLockSlim rwLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
public ParserServiceEntry(ParserService parserService, FileName fileName)
{
this.parserService = parserService;
@ -68,6 +72,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -68,6 +72,7 @@ namespace ICSharpCode.SharpDevelop.Parser
int FindIndexForProject(IProject parentProject)
{
Debug.Assert(rwLock.IsReadLockHeld || rwLock.IsUpgradeableReadLockHeld || rwLock.IsWriteLockHeld);
if (parentProject == null)
return 0;
for (int i = 0; i < entries.Count; i++) {
@ -81,7 +86,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -81,7 +86,8 @@ namespace ICSharpCode.SharpDevelop.Parser
public void AddOwnerProject(IProject project, bool isLinkedFile)
{
Debug.Assert(project != null);
lock (this) {
rwLock.EnterWriteLock();
try {
if (FindIndexForProject(project) >= 0)
throw new InvalidOperationException("The project alreadys owns the file");
ProjectEntry newEntry = new ProjectEntry(project, null, null);
@ -92,6 +98,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -92,6 +98,8 @@ namespace ICSharpCode.SharpDevelop.Parser
} else {
entries.Insert(0, newEntry);
}
} finally {
rwLock.ExitWriteLock();
}
}
@ -100,7 +108,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -100,7 +108,8 @@ namespace ICSharpCode.SharpDevelop.Parser
Debug.Assert(project != null);
ProjectEntry oldEntry;
bool removedLastOwner = false;
lock (this) {
rwLock.EnterWriteLock();
try {
int index = FindIndexForProject(project);
if (index < 0)
throw new InvalidOperationException("The project does not own the file");
@ -111,6 +120,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -111,6 +120,8 @@ namespace ICSharpCode.SharpDevelop.Parser
} else {
entries.RemoveAt(index);
}
} finally {
rwLock.ExitWriteLock();
}
if (oldEntry.UnresolvedFile != null) {
project.OnParseInformationUpdated(new ParseInformationEventArgs(project, oldEntry.UnresolvedFile, null));
@ -128,6 +139,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -128,6 +139,7 @@ namespace ICSharpCode.SharpDevelop.Parser
/// </summary>
int CompareVersions(ITextSourceVersion newVersion)
{
Debug.Assert(rwLock.IsReadLockHeld || rwLock.IsUpgradeableReadLockHeld || rwLock.IsWriteLockHeld);
if (currentVersion != null && newVersion != null && currentVersion.BelongsToSameDocumentAs(newVersion))
return currentVersion.CompareAge(newVersion);
else
@ -137,7 +149,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -137,7 +149,8 @@ namespace ICSharpCode.SharpDevelop.Parser
#region Expire Cache + GetExistingUnresolvedFile + GetCachedParseInformation
public void ExpireCache()
{
lock (this) {
rwLock.EnterWriteLock();
try {
if (PrimaryProject == null) {
parserService.RemoveEntry(this);
} else {
@ -148,12 +161,15 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -148,12 +161,15 @@ namespace ICSharpCode.SharpDevelop.Parser
}
// force re-parse on next ParseFile() call even if unchanged
this.currentVersion = null;
} finally {
rwLock.ExitWriteLock();
}
}
public IUnresolvedFile GetExistingUnresolvedFile(ITextSourceVersion version, IProject parentProject)
{
lock (this) {
rwLock.EnterReadLock();
try {
if (version != null && CompareVersions(version) != 0) {
return null;
}
@ -161,12 +177,15 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -161,12 +177,15 @@ namespace ICSharpCode.SharpDevelop.Parser
if (index < 0)
return null;
return entries[index].UnresolvedFile;
} finally {
rwLock.ExitReadLock();
}
}
public ParseInformation GetCachedParseInformation(ITextSourceVersion version, IProject parentProject)
{
lock (this) {
rwLock.EnterReadLock();
try {
if (version != null && CompareVersions(version) != 0) {
return null;
}
@ -174,6 +193,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -174,6 +193,8 @@ namespace ICSharpCode.SharpDevelop.Parser
if (index < 0)
return null;
return entries[index].CachedParseInformation;
} finally {
rwLock.ExitReadLock();
}
}
#endregion
@ -218,7 +239,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -218,7 +239,8 @@ namespace ICSharpCode.SharpDevelop.Parser
}
ProjectEntry result;
lock (this) {
rwLock.EnterUpgradeableReadLock();
try {
int index = FindIndexForProject(parentProject);
int versionComparison = CompareVersions(fileContent.Version);
if (versionComparison > 0 || index < 0) {
@ -253,24 +275,32 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -253,24 +275,32 @@ namespace ICSharpCode.SharpDevelop.Parser
}
// Only if all parse runs succeeded, register the parse information.
currentVersion = fileContent.Version;
for (int i = 0; i < entries.Count; i++) {
if (fullParseInformationRequested || (entries[i].CachedParseInformation != null && results[i].NewParseInformation.IsFullParseInformation))
entries[i] = new ProjectEntry(entries[i].Project, results[i].NewUnresolvedFile, results[i].NewParseInformation);
else
entries[i] = new ProjectEntry(entries[i].Project, results[i].NewUnresolvedFile, null);
if (entries[i].Project != null)
entries[i].Project.OnParseInformationUpdated(results[i]);
parserService.RaiseParseInformationUpdated(results[i]);
rwLock.EnterWriteLock();
try {
currentVersion = fileContent.Version;
for (int i = 0; i < entries.Count; i++) {
if (fullParseInformationRequested || (entries[i].CachedParseInformation != null && results[i].NewParseInformation.IsFullParseInformation))
entries[i] = new ProjectEntry(entries[i].Project, results[i].NewUnresolvedFile, results[i].NewParseInformation);
else
entries[i] = new ProjectEntry(entries[i].Project, results[i].NewUnresolvedFile, null);
if (entries[i].Project != null)
entries[i].Project.OnParseInformationUpdated(results[i]);
parserService.RaiseParseInformationUpdated(results[i]);
}
result = entries[index];
} finally {
rwLock.ExitWriteLock();
}
result = entries[index];
} // exit lock
} finally {
rwLock.ExitUpgradeableReadLock();
}
parserService.RegisterForCacheExpiry(this);
return result;
}
ParseInformation ParseWithExceptionHandling(ITextSource fileContent, bool fullParseInformationRequested, IProject project, CancellationToken cancellationToken)
{
Debug.Assert(rwLock.IsUpgradeableReadLockHeld && !rwLock.IsWriteLockHeld);
#if DEBUG
if (Debugger.IsAttached)
return parser.Parse(fileName, fileContent, fullParseInformationRequested, project, cancellationToken);
@ -285,6 +315,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -285,6 +315,8 @@ namespace ICSharpCode.SharpDevelop.Parser
#endregion
#region ParseAsync
/// <summary>lock object for protecting the runningAsyncParse* fields</summary>
object runningAsyncParseLock = new object();
Task<ProjectEntry> runningAsyncParseTask;
ITextSourceVersion runningAsyncParseFileContentVersion;
IProject runningAsyncParseProject;
@ -324,19 +356,24 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -324,19 +356,24 @@ namespace ICSharpCode.SharpDevelop.Parser
}
}
Task<ProjectEntry> task;
lock (this) {
lock (runningAsyncParseLock) {
if (fileContent != null) {
// Optimization:
// don't start a background task if fileContent was specified and up-to-date parse info is available
int index = FindIndexForProject(parentProject);
int versionComparison = CompareVersions(fileContent.Version);
if (versionComparison == 0 && index >= 0) {
// Ensure we have parse info for the specified project (entry.UnresolvedFile is null for newly registered projects)
// If full parse info is requested, ensure we have full parse info.
if (entries[index].UnresolvedFile != null && !(requestFullParseInformation && entries[index].CachedParseInformation == null)) {
// We already have the requested version parsed, just return it:
return Task.FromResult(entries[index]);
rwLock.EnterReadLock();
try {
int index = FindIndexForProject(parentProject);
int versionComparison = CompareVersions(fileContent.Version);
if (versionComparison == 0 && index >= 0) {
// Ensure we have parse info for the specified project (entry.UnresolvedFile is null for newly registered projects)
// If full parse info is requested, ensure we have full parse info.
if (entries[index].UnresolvedFile != null && !(requestFullParseInformation && entries[index].CachedParseInformation == null)) {
// We already have the requested version parsed, just return it:
return Task.FromResult(entries[index]);
}
}
} finally {
rwLock.ExitReadLock();
}
// Optimization:
// if an equivalent task is already running, return that one instead
@ -356,7 +393,7 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -356,7 +393,7 @@ namespace ICSharpCode.SharpDevelop.Parser
}
return DoParse(fileContent, parentProject, requestFullParseInformation, cancellationToken);
} finally {
lock (this) {
lock (runningAsyncParseLock) {
runningAsyncParseTask = null;
runningAsyncParseFileContentVersion = null;
runningAsyncParseProject = null;
@ -383,7 +420,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -383,7 +420,8 @@ namespace ICSharpCode.SharpDevelop.Parser
throw new ArgumentNullException("unresolvedFile");
FreezableHelper.Freeze(unresolvedFile);
var newParseInfo = new ParseInformation(unresolvedFile, null, false);
lock (this) {
rwLock.EnterWriteLock();
try {
int index = FindIndexForProject(project);
if (index >= 0) {
currentVersion = null;
@ -392,6 +430,8 @@ namespace ICSharpCode.SharpDevelop.Parser @@ -392,6 +430,8 @@ namespace ICSharpCode.SharpDevelop.Parser
project.OnParseInformationUpdated(args);
parserService.RaiseParseInformationUpdated(args);
}
} finally {
rwLock.ExitWriteLock();
}
}
}

1
src/Main/SharpDevelop/Project/Build/MSBuildEngine/MSBuildEngineWorker.cs

@ -313,6 +313,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -313,6 +313,7 @@ namespace ICSharpCode.SharpDevelop.Project
error.IsWarning = isWarning;
error.Subcategory = subcategory;
error.HelpKeyword = helpKeyword;
error.ParentProject = engine.Project;
engine.loggerChain.HandleError(error);
}

1
src/Main/SharpDevelop/Workbench/DisplayBinding/OpenWithDialog.Designer.cs generated

@ -77,6 +77,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -77,6 +77,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
this.programListBox.Size = new System.Drawing.Size(268, 156);
this.programListBox.TabIndex = 1;
this.programListBox.SelectedIndexChanged += new System.EventHandler(this.ProgramListBoxSelectedIndexChanged);
this.programListBox.DoubleClick += new System.EventHandler(this.ProgramListBoxDoubleClicked);
//
// addButton
//

5
src/Main/SharpDevelop/Workbench/DisplayBinding/OpenWithDialog.cs

@ -122,6 +122,11 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -122,6 +122,11 @@ namespace ICSharpCode.SharpDevelop.Workbench
}
}
void ProgramListBoxDoubleClicked(object sender, EventArgs e)
{
okButton.PerformClick();
}
void RemoveButtonClick(object sender, EventArgs e)
{
SD.DisplayBindingService.RemoveExternalProcessDisplayBinding((ExternalProcessDisplayBinding)SelectedBinding.GetLoadedBinding());

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

Loading…
Cancel
Save