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. 58
      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. 2
      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. 372
      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. 15
      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. 15
      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. 1
      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. 6
      src/Main/Base/Project/Parser/ProjectContentContainer.cs
  87. 5
      src/Main/Base/Project/Refactoring/CodeGenerator.cs
  88. 37
      src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs
  89. 16
      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. 60
      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/
/src/AddIns/Misc/PackageManagement/Packages/AvalonEdit/lib /src/AddIns/Misc/PackageManagement/Packages/AvalonEdit/lib
/packages/ /packages/
/src/Tools/ResGet/*.log

6
data/resources/StringResources.cz.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>O pluginu</value> <value>O pluginu</value>
</data> </data>
@ -6155,7 +6158,4 @@ Došlo k chybě při spuštění:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Odkomentovat oblast</value> <value>Odkomentovat oblast</value>
</data> </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> </root>

6
data/resources/StringResources.de.resx

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

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

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Acerca de</value> <value>Acerca de</value>
</data> </data>
@ -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"> <data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Análisis de Calidad de Código</value> <value>Análisis de Calidad de Código</value>
</data> </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"> <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> <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> </data>
@ -1980,6 +2008,15 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Guardar</value> <value>Guardar</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Pre-seleccionar miembros usados recientemente</value> <value>Pre-seleccionar miembros usados recientemente</value>
</data> </data>
@ -2352,6 +2389,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Resaltar &amp;corchetes</value> <value>Resaltar &amp;corchetes</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Resaltar símbolos</value> <value>Resaltar símbolos</value>
</data> </data>
@ -2613,6 +2653,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valores predeterminados de VB:</value> <value>Valores predeterminados de VB:</value>
</data> </data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formato de Código</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve"> <data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuración</value> <value>&amp;Configuración</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Código No Cubierto</value> <value>Código No Cubierto</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Código Parcialmente Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Columna</value> <value>Columna</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Contenido</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Opciones de Vista</value> <value>Opciones de Vista</value>
</data> </data>
@ -4298,6 +4347,9 @@ Utilice solamente letras, dígitos, espacio, '.' ó '_'.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>La solución ha sido cambiada externamente.</value> <value>La solución ha sido cambiada externamente.</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Convertir &amp;proyectos seleccionados a:</value> <value>Convertir &amp;proyectos seleccionados a:</value>
</data> </data>
@ -5689,6 +5741,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Agregar referencia</value> <value>Agregar referencia</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Agregar Referencia a Servicio</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Agregar Referencia Web</value> <value>Agregar Referencia Web</value>
</data> </data>
@ -6097,6 +6152,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve"> <data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>Clases derivadas de ${Name}</value> <value>Clases derivadas de ${Name}</value>
</data> </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"> <data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Convertir a propiedad automática</value> <value>Convertir a propiedad automática</value>
</data> </data>
@ -6560,6 +6621,9 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve"> <data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Abrir solución</value> <value>Abrir solución</value>
</data> </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"> <data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Página de Inicio</value> <value>Página de Inicio</value>
</data> </data>
@ -6572,6 +6636,12 @@ Los archivos de recursos han sido renombrados/movidos convenientemente.</value>
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve"> <data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>ln ${Line} col ${Column} car ${Character}</value> <value>ln ${Line} col ${Column} car ${Character}</value>
</data> </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"> <data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Varios</value> <value>Varios</value>
</data> </data>
@ -7719,8 +7789,4 @@ Error al iniciar:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Descomentar región</value> <value>Descomentar región</value>
</data> </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> </root>

74
data/resources/StringResources.es.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Acerca de...</value> <value>Acerca de...</value>
</data> </data>
@ -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"> <data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Análisis de Calidad de Código</value> <value>Análisis de Calidad de Código</value>
</data> </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"> <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> <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> </data>
@ -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"> <data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Guardar</value> <value>Guardar</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Pre-seleccionar miembros utilizados recientemente</value> <value>Pre-seleccionar miembros utilizados recientemente</value>
</data> </data>
@ -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"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Resaltar &amp;corchetes</value> <value>Resaltar &amp;corchetes</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Resaltar símbolos</value> <value>Resaltar símbolos</value>
</data> </data>
@ -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"> <data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valores por defecto para Opciones de VB:</value> <value>Valores por defecto para Opciones de VB:</value>
</data> </data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formato de Código</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve"> <data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuración</value> <value>&amp;Configuración</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Código No Cubierto</value> <value>Código No Cubierto</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Código Parcialmente Cubierto</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Columna</value> <value>Columna</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Contenido</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Opciones de Vista</value> <value>Opciones de Vista</value>
</data> </data>
@ -4303,6 +4352,9 @@ Solamente letras, dígitos, espacio, '.' o '_' son permitidos.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>La solución ha sido cambiada externamente.</value> <value>La solución ha sido cambiada externamente.</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Convertir &amp;proyectos seleccionados a:</value> <value>Convertir &amp;proyectos seleccionados a:</value>
</data> </data>
@ -5695,6 +5747,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Agregar Referencia</value> <value>Agregar Referencia</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Agregar Referencia a Servicio</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Agregar Referencia Web</value> <value>Agregar Referencia Web</value>
</data> </data>
@ -6103,6 +6158,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve"> <data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>Clases derivadas de ${Name}</value> <value>Clases derivadas de ${Name}</value>
</data> </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"> <data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Convertir a propiedad automática</value> <value>Convertir a propiedad automática</value>
</data> </data>
@ -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"> <data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Abrir solución</value> <value>Abrir solución</value>
</data> </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"> <data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Página de inicio</value> <value>Página de inicio</value>
</data> </data>
@ -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"> <data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>ln ${Line} col ${Column} car ${Character}</value> <value>ln ${Line} col ${Column} car ${Character}</value>
</data> </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"> <data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Misceláneo</value> <value>Misceláneo</value>
</data> </data>
@ -7726,8 +7796,4 @@ Error mientras se iniciaba:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Descomentar Región</value> <value>Descomentar Región</value>
</data> </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> </root>

6
data/resources/StringResources.fi.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>About SharpDevelop, finnish lang dev: Pekka Herala domain: sivustot.net</value> <value>About SharpDevelop, finnish lang dev: Pekka Herala domain: sivustot.net</value>
</data> </data>
@ -5654,7 +5657,4 @@ Työkalusarja, joka rakentaa Windows asennuspaketteja XML-lähdekoodilla. Sarja
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Kommentti valinta</value> <value>Kommentti valinta</value>
</data> </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> </root>

58
data/resources/StringResources.fr.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>A propos</value> <value>A propos</value>
</data> </data>
@ -206,7 +209,7 @@
</data> </data>
<data name="AddInManager.NoAddInsInstalled" xml:space="preserve"> <data name="AddInManager.NoAddInsInstalled" xml:space="preserve">
<value>Vous n'avez aucun AddIn installé. <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>
<data name="AddInManager.OpenWebsite" xml:space="preserve"> <data name="AddInManager.OpenWebsite" xml:space="preserve">
<value>Ouvrir le site Web</value> <value>Ouvrir le site Web</value>
@ -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> <value>Voir le contrat de license</value>
</data> </data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve"> <data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Les Add-Ins installés suivant sont dépendant de "{0}": <value>Les Add-Ins installés suivant sont dépendant de "{0}": {1}
{1}
Ils ne fonctionneront plus si vous désactivez cet Add-In! Souhaitez-vous continuer?</value> Ils ne fonctionneront plus si vous désactivez cet Add-In! Souhaitez-vous continuer?</value>
</data> </data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve"> <data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Package "{0}" nécessite au moins une dépendance: <value>Package "{0}" nécessite au moins une dépendance: {1}
{1}
L'application va essayer de les télécharger et de les installer. Souhaitez-vous continuer?</value> L'application va essayer de les télécharger et de les installer. Souhaitez-vous continuer?</value>
</data> </data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve"> <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
Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value> Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value>
</data> </data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve"> <data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>En cliquant "J'accepte", vous êtes d'accord pour la license des packages suivant. <value>En cliquant sur "J'accepte", vous êtes d'accord pour la license des packages suivant.
Si vous ne le souhaitez pas, veuillez cliquer "Je décline".</value> Si vous ne le souhaitez pas, veuillez cliquer sur "Je décline".</value>
</data> </data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve"> <data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Le package suivant nécessite que vous acceptiez sa license:</value> <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>
<value>Dépots</value> <value>Dépots</value>
</data> </data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve"> <data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Les Add-Ins installés suivant sont dépendants de "{0}": <value>Les Add-Ins installés suivant sont dépendants de "{0}": {1}
{1}
Ils ne fonctionneront plus si vous désinstallez cet Add-In! Souhaitez-vous continuer?</value> Ils ne fonctionneront plus si vous désinstallez cet Add-In! Souhaitez-vous continuer?</value>
</data> </data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve"> <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
<value>Session de profilage SharpDevelop</value> <value>Session de profilage SharpDevelop</value>
</data> </data>
<data name="AddIns.Profiler.Messages.FileNotFound" xml:space="preserve"> <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>
<data name="AddIns.Profiler.Messages.NoStartableProjectFound" xml:space="preserve"> <data name="AddIns.Profiler.Messages.NoStartableProjectFound" xml:space="preserve">
<value>Aucun projet n'est démarrable. Arrêt...</value> <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>
<value>Sauvegarder en UTF-8</value> <value>Sauvegarder en UTF-8</value>
</data> </data>
<data name="BackendBindings.ExecutionManager.CantExecuteDLLError" xml:space="preserve"> <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>
<data name="BackendBindings.ExecutionManager.NoSingleFileCompilation" xml:space="preserve"> <data name="BackendBindings.ExecutionManager.NoSingleFileCompilation" xml:space="preserve">
<value>Compiler un fichier seul n'est pas possible, veuillez créer un projet!</value> <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
<value>Aller à la ligne</value> <value>Aller à la ligne</value>
</data> </data>
<data name="Dialog.Goto.IntroText" xml:space="preserve"> <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>
<data name="Dialog.HighlightingEditor.ColorDlg.Background" xml:space="preserve"> <data name="Dialog.HighlightingEditor.ColorDlg.Background" xml:space="preserve">
<value>Couleur de l'arrière-plan</value> <value>Couleur de l'arrière-plan</value>
@ -2645,6 +2640,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Valeurs par défaut des options VB:</value> <value>Valeurs par défaut des options VB:</value>
</data> </data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Formatage du code</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve"> <data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>&amp;Configuration</value> <value>&amp;Configuration</value>
</data> </data>
@ -2794,7 +2792,7 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
</data> </data>
<data name="Dialog.ProjectOptions.StorageLocationHelp" xml:space="preserve"> <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. <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. '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> 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> </data>
@ -3484,7 +3482,6 @@ Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file
</data> </data>
<data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntExeNotFoundMessage" xml:space="preserve"> <data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntExeNotFoundMessage" xml:space="preserve">
<value>Impossible de trouver NAnt '{0}'. <value>Impossible de trouver NAnt '{0}'.
Configurez le chemin vers NAnt dans les options de SharpDevelop.</value> Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
</data> </data>
<data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntStoppedMessage" xml:space="preserve"> <data name="ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntStoppedMessage" xml:space="preserve">
@ -3638,10 +3635,10 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<value>Envoyer vers la console Ruby</value> <value>Envoyer vers la console Ruby</value>
</data> </data>
<data name="ICSharpCode.Services.FileUtilityService.CantLoadFileStandardText" xml:space="preserve"> <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>
<data name="ICSharpCode.Services.FileUtilityService.CantSaveFileStandardText" xml:space="preserve"> <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>
<data name="ICSharpCode.SharpDevelop.BrowserDisplayBinding.Browser" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.BrowserDisplayBinding.Browser" xml:space="preserve">
<value>Navigateur</value> <value>Navigateur</value>
@ -3755,7 +3752,7 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<value>Le fichier est introuvable.</value> <value>Le fichier est introuvable.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Commands.ReloadFile.ReloadFileQuestion" xml:space="preserve"> <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> Toutes les modifications seront perdues.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Commands.RunCompile.LanguageBindingCantCompileFileError" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Commands.RunCompile.LanguageBindingCantCompileFileError" xml:space="preserve">
@ -4027,7 +4024,7 @@ Toutes les modifications seront perdues.</value>
<value>L'ajout de ce composant conduirait à une dépendance cyclique.</value> <value>L'ajout de ce composant conduirait à une dépendance cyclique.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Hosts.DefaultDesignerHost.ExceptionDuringComponentCreationError" xml:space="preserve"> <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>
<data name="ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors" xml:space="preserve"> <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> <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
<value>Impossible de trouver le dialogue id '{0}' dans le document.</value> <value>Impossible de trouver le dialogue id '{0}' dans le document.</value>
</data> </data>
<data name="ICSharpCode.WixBinding.ExtensionBinding.InvalidExtension" xml:space="preserve"> <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> Par exemple: Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension</value>
</data> </data>
@ -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"> <data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Ajouter une référence</value> <value>Ajouter une référence</value>
</data> </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"> <data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Ajouter une référence web</value> <value>Ajouter une référence web</value>
</data> </data>
@ -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"> <data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Ouvre une solution</value> <value>Ouvre une solution</value>
</data> </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"> <data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Page de démarrage</value> <value>Page de démarrage</value>
</data> </data>
@ -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> <value>Compiler projet actif ou buffer (si pas de projet ouvert) (Sauvegarde auto.)</value>
</data> </data>
<data name="XML.MainMenu.RunMenu.Compile.StopDebuggingQuestion" xml:space="preserve"> <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>
<data name="XML.MainMenu.RunMenu.Compile.StopDebuggingTitle" xml:space="preserve"> <data name="XML.MainMenu.RunMenu.Compile.StopDebuggingTitle" xml:space="preserve">
<value>Arrêter le déboguage</value> <value>Arrêter le déboguage</value>
@ -7771,7 +7774,4 @@ Erreur lors du démarrage:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Partie non commentée</value> <value>Partie non commentée</value>
</data> </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> </root>

8
data/resources/StringResources.hu.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>About</value> <value>About</value>
</data> </data>
@ -5079,8 +5083,4 @@ Hiba az indításkor:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Megjegyzésből ki</value> <value>Megjegyzésből ki</value>
</data> </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> </root>

8
data/resources/StringResources.it.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Informazioni su...</value> <value>Informazioni su...</value>
</data> </data>
@ -7710,8 +7714,4 @@ Errore durante esecuzione:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Rimuovi commento regione</value> <value>Rimuovi commento regione</value>
</data> </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> </root>

6
data/resources/StringResources.kr.resx

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

15
data/resources/StringResources.nl.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Info...</value> <value>Info...</value>
</data> </data>
@ -2650,6 +2653,9 @@ Wilt u het nieuwe bestand toevoegen aan project ${CurrentProjectName}?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>Standaard waarden voor VB Opties:</value> <value>Standaard waarden voor VB Opties:</value>
</data> </data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Code formatteren</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve"> <data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>Instellingen</value> <value>Instellingen</value>
</data> </data>
@ -5730,6 +5736,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Voeg referentie toe</value> <value>Voeg referentie toe</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Service referentie toevoegen</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Web referentie toevoegen</value> <value>Web referentie toevoegen</value>
</data> </data>
@ -6608,6 +6617,9 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve"> <data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Oplossing openen</value> <value>Oplossing openen</value>
</data> </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"> <data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Startpagina</value> <value>Startpagina</value>
</data> </data>
@ -7774,7 +7786,4 @@ Startfout:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Regiocommentaar verwijderen</value> <value>Regiocommentaar verwijderen</value>
</data> </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> </root>

8
data/resources/StringResources.no.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Om</value> <value>Om</value>
</data> </data>
@ -7047,8 +7051,4 @@ SharpDevelop 2 kompilerer ressurser annerledes: ressursnavnet er ikke bare filna
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Fjern kommentarer</value> <value>Fjern kommentarer</value>
</data> </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> </root>

8
data/resources/StringResources.pl.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>O Menadżerze Dodatków</value> <value>O Menadżerze Dodatków</value>
</data> </data>
@ -5661,8 +5665,4 @@ Błąd podczas uruchamiania:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Odkomentuj region</value> <value>Odkomentuj region</value>
</data> </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> </root>

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

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Sobre</value> <value>Sobre</value>
</data> </data>
@ -228,6 +231,33 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Formato de arquivo desconhecido.</value> <value>Formato de arquivo desconhecido.</value>
</data> </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"> <data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Esse arquivo contem novas linhas inconsistentes.</value> <value>Esse arquivo contem novas linhas inconsistentes.</value>
</data> </data>
@ -6199,7 +6229,4 @@ Use somente letras, dígitos, espaço, "." ou "_" são permitidos.</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Desfazer comentário</value> <value>Desfazer comentário</value>
</data> </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> </root>

6
data/resources/StringResources.pt.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Sobre</value> <value>Sobre</value>
</data> </data>
@ -5846,7 +5849,4 @@ O erro no início foi:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Desfazer comentário</value> <value>Desfazer comentário</value>
</data> </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> </root>

8
data/resources/StringResources.ro.resx

@ -117,6 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Despre</value> <value>Despre</value>
</data> </data>
@ -3794,8 +3798,4 @@ Eroare la pornire:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Regiune necomentată</value> <value>Regiune necomentată</value>
</data> </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> </root>

8
data/resources/StringResources.ru.resx

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

361
data/resources/StringResources.se.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Om SharpDevelop</value> <value>Om SharpDevelop</value>
</data> </data>
@ -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"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Okänt filformat:</value> <value>Okänt filformat:</value>
</data> </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"> <data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Den här filen innehåller inkonsekvent information (newlines).</value> <value>Den här filen innehåller inkonsekvent information (newlines).</value>
</data> </data>
@ -269,7 +388,7 @@ Ladda hem ett tillägg från Internet och klicka sedan på 'Installera Tillägg'
<value>Hjälp bibliotek</value> <value>Hjälp bibliotek</value>
</data> </data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve"> <data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Hjälpläge</value> <value>Välj hjälpinställningar</value>
</data> </data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve"> <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> <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'
<value>Visa hjälp</value> <value>Visa hjälp</value>
</data> </data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve"> <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>
<data name="AddIns.HexEditor.DefaultBytesPerLine" xml:space="preserve"> <data name="AddIns.HexEditor.DefaultBytesPerLine" xml:space="preserve">
<value>Antal bytes per rad</value> <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'
<data name="AddIns.HexEditor.Display.Elements.Data" xml:space="preserve"> <data name="AddIns.HexEditor.Display.Elements.Data" xml:space="preserve">
<value>Data</value> <value>Data</value>
</data> </data>
<data name="AddIns.HexEditor.Display.Elements.Offset" xml:space="preserve">
<value>Förskjutning</value>
</data>
<data name="AddIns.HexEditor.NumeralSystem" xml:space="preserve"> <data name="AddIns.HexEditor.NumeralSystem" xml:space="preserve">
<value>Numeriskt system</value> <value>Numeriskt system</value>
</data> </data>
@ -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"> <data name="AddIns.Profiler.Commands.ShowFunctions.TabTitle" xml:space="preserve">
<value>Alla funktioner för {0}</value> <value>Alla funktioner för {0}</value>
</data> </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"> <data name="AddIns.Profiler.MessageViewCategory" xml:space="preserve">
<value>Profil</value> <value>Profil</value>
</data> </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"> <data name="AddIns.Profiler.Options.General.DataCollection.EnableDCAtStartup" xml:space="preserve">
<value>Börja insamling av data direkt efter att sessionen har startat.</value> <value>Börja insamling av data direkt efter att sessionen har startat.</value>
</data> </data>
@ -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"> <data name="AddIns.Profiler.Options.General.DataCollection.SizeOfStorageDescription" xml:space="preserve">
<value>Storlek av temporär data fil.</value> <value>Storlek av temporär data fil.</value>
</data> </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"> <data name="AddIns.Profiler.Options.Title" xml:space="preserve">
<value>Profilering</value> <value>Profilering</value>
</data> </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"> <data name="AddIns.Profiler.ProfileExecutable.ErrorMessage" xml:space="preserve">
<value>Ogiltigt data, vänligen försök igen!</value> <value>Ogiltigt data, vänligen försök igen!</value>
</data> </data>
@ -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"> <data name="AddIns.Profiler.ProfileExecutableForm.StartText" xml:space="preserve">
<value>Starta profilering</value> <value>Starta profilering</value>
</data> </data>
<data name="AddIns.Profiler.ProfileExecutableForm.Title" xml:space="preserve">
<value>Profilera exekverbar</value>
</data>
<data name="AddIns.Profiler.ProfilerControlWindow.CollectData" xml:space="preserve"> <data name="AddIns.Profiler.ProfilerControlWindow.CollectData" xml:space="preserve">
<value>Samla data</value> <value>Samla data</value>
</data> </data>
<data name="AddIns.Profiler.ProfilerControlWindow.Shutdown" xml:space="preserve"> <data name="AddIns.Profiler.ProfilerControlWindow.Shutdown" xml:space="preserve">
<value>Stäng ner</value> <value>Stäng ner</value>
</data> </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"> <data name="AddIns.Profiler.ProfilingView.CallCountColumnText" xml:space="preserve">
<value>Antal anrop</value> <value>Antal anrop</value>
</data> </data>
@ -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"> <data name="AddIns.Profiler.ProfilingView.ContextMenu.CopySelectedData" xml:space="preserve">
<value>Kopiera markerat</value> <value>Kopiera markerat</value>
</data> </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"> <data name="AddIns.Profiler.ProfilingView.ContextMenu.GoToDefinition" xml:space="preserve">
<value>Gå till definition</value> <value>Gå till definition</value>
</data> </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"> <data name="AddIns.Profiler.ProfilingView.ContextMenu.ShowFunctions" xml:space="preserve">
<value>Visa funktioner</value> <value>Visa funktioner</value>
</data> </data>
@ -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"> <data name="AddIns.Profiler.ProfilingView.TimeText" xml:space="preserve">
<value>Tid:</value> <value>Tid:</value>
</data> </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"> <data name="AddIns.Profiler.ProfilingView.Top20TabText" xml:space="preserve">
<value>Topp 20</value> <value>Topp 20</value>
</data> </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"> <data name="AddIns.SearchReplace.SearchProgressTitle" xml:space="preserve">
<value>Söker...</value> <value>Söker...</value>
</data> </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"> <data name="AddIns.SharpRefactoring.CreateProperties.Description" xml:space="preserve">
<value>Välj de fält som du vill skapa egenskaper för:</value> <value>Välj de fält som du vill skapa egenskaper för:</value>
</data> </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"> <data name="AddIns.SharpRefactoring.ExtractMethod" xml:space="preserve">
<value>Extrahera funktion</value> <value>Extrahera funktion</value>
</data> </data>
@ -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"> <data name="AddIns.SharpRefactoring.IntroduceMethod" xml:space="preserve">
<value>Introducera funktion {0} i {1}</value> <value>Introducera funktion {0} i {1}</value>
</data> </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"> <data name="AddIns.SharpRefactoring.OverrideEqualsGetHashCodeMethods.AddInterface" xml:space="preserve">
<value>Lägg till interface {0}</value> <value>Lägg till interface {0}</value>
</data> </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"> <data name="AddIns.SourceAnalysis.CheckProjectWithStyleCop" xml:space="preserve">
<value>Kontrollera nuvarande projekt med StyleCop</value> <value>Kontrollera nuvarande projekt med StyleCop</value>
</data> </data>
@ -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"> <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> <value>Tack för din medverkan! Du kan alltid gå ur genom att ändra inställningarna.i SharpDevelop.</value>
</data> </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"> <data name="AddIns.UsageDataCollector.ShowCollectedData" xml:space="preserve">
<value>Visa insamlad data</value> <value>Visa insamlad data</value>
</data> </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"> <data name="AddIns.XamlBinding.Options.EventColor" xml:space="preserve">
<value>Händelsefärg:</value> <value>Händelsefärg:</value>
</data> </data>
@ -644,9 +859,15 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.ActionMenu.UnregisterTypeLibMenuItem" xml:space="preserve"> <data name="ComponentInspector.ActionMenu.UnregisterTypeLibMenuItem" xml:space="preserve">
<value>Avregistrera TypeLib</value> <value>Avregistrera TypeLib</value>
</data> </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"> <data name="ComponentInspector.AttachDialog.ProcessLabel" xml:space="preserve">
<value>Process</value> <value>Process</value>
</data> </data>
<data name="ComponentInspector.AttachDialog.Title" xml:space="preserve">
<value>Bifoga</value>
</data>
<data name="ComponentInspector.CastDialog.CannotFindType" xml:space="preserve"> <data name="ComponentInspector.CastDialog.CannotFindType" xml:space="preserve">
<value>Kan inte hitta typen</value> <value>Kan inte hitta typen</value>
</data> </data>
@ -767,6 +988,9 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.GacList.OpenMenuItem" xml:space="preserve"> <data name="ComponentInspector.GacList.OpenMenuItem" xml:space="preserve">
<value>&amp;Öppna</value> <value>&amp;Öppna</value>
</data> </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"> <data name="ComponentInspector.GacList.VersionColumn" xml:space="preserve">
<value>Version</value> <value>Version</value>
</data> </data>
@ -869,6 +1093,12 @@ Du kan specificera ett startcommando i projektinställningarna.</value>
<data name="ComponentInspector.WaitingForAppDialog.Information" xml:space="preserve"> <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> <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>
<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"> <data name="CSharpBinding.InsertAnonymousMethod" xml:space="preserve">
<value>Infoga anonyma metoder utan parametrar.</value> <value>Infoga anonyma metoder utan parametrar.</value>
</data> </data>
@ -1227,7 +1457,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Detaljinställningar för kodkomplettering</value> <value>Detaljinställningar för kodkomplettering</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend" xml:space="preserve"> <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>
<data name="Dialog.Options.IDEOptions.CodeCompletion.MainOption" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.CodeCompletion.MainOption" xml:space="preserve">
<value>Använd följande inställning för att avaktivera kodkomplettering:</value> <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>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Spara</value> <value>Spara</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Förhandsvälj nyligen använda medlemmar</value> <value>Förhandsvälj nyligen använda medlemmar</value>
</data> </data>
@ -1302,7 +1535,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Redigera Standardrubriker</value> <value>Redigera Standardrubriker</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.General" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.General" xml:space="preserve">
<value>Generella</value> <value>Allmänt</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.LoadSaveOptions.CreateBackupCopyCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.LoadSaveOptions.CreateBackupCopyCheckBox" xml:space="preserve">
<value>Skapa &amp;alltid säkerhetskopia</value> <value>Skapa &amp;alltid säkerhetskopia</value>
@ -1548,11 +1781,14 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Ingen</value> <value>Ingen</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve">
<value>Markörer och linjaler</value> <value>Markörer</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve">
<value>Markörer och linjaler</value> <value>Markörer och linjaler</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.SpacesCheckBox" xml:space="preserve">
<value>Visa &amp;blanksteg</value> <value>Visa &amp;blanksteg</value>
</data> </data>
@ -1638,7 +1874,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>Projektinformation</value> <value>Projektinformation</value>
</data> </data>
<data name="Dialog.ProjectOptions.ApplicationSettings.RootNamespace" xml:space="preserve"> <data name="Dialog.ProjectOptions.ApplicationSettings.RootNamespace" xml:space="preserve">
<value>&amp;Rot namespace:</value> <value>&amp;Rotnamnrymd:</value>
</data> </data>
<data name="Dialog.ProjectOptions.ApplicationSettings.StartupObject" xml:space="preserve"> <data name="Dialog.ProjectOptions.ApplicationSettings.StartupObject" xml:space="preserve">
<value>&amp;Startobjekt:</value> <value>&amp;Startobjekt:</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> <value>Tillåt &amp;osäker kod</value>
</data> </data>
<data name="Dialog.ProjectOptions.BuildOptions.General" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.General" xml:space="preserve">
<value>Generell</value> <value>Allmänt</value>
</data> </data>
<data name="Dialog.ProjectOptions.BuildOptions.NoCorlib" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.NoCorlib" xml:space="preserve">
<value>Referera inte till &amp;mscorlib.dll</value> <value>Referera inte till &amp;mscorlib.dll</value>
@ -1806,7 +2042,7 @@ Vill du lägga till den nya filen till projektet ${CurrentProjectName}?</value>
<value>&amp;Lägg till importering</value> <value>&amp;Lägg till importering</value>
</data> </data>
<data name="Dialog.ProjectOptions.ProjectImports.Namespace" xml:space="preserve"> <data name="Dialog.ProjectOptions.ProjectImports.Namespace" xml:space="preserve">
<value>&amp;Namespace:</value> <value>&amp;Namnrymd:</value>
</data> </data>
<data name="Dialog.ProjectOptions.Publish" xml:space="preserve"> <data name="Dialog.ProjectOptions.Publish" xml:space="preserve">
<value>Publicera</value> <value>Publicera</value>
@ -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"> <data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Lägg till</value> <value>&amp;Lägg till</value>
</data> </data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avancerad</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve"> <data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Tillbaka</value> <value>&lt; Tillbaka</value>
</data> </data>
@ -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"> <data name="Global.MoveUp" xml:space="preserve">
<value>Flytta &amp;Upp</value> <value>Flytta &amp;Upp</value>
</data> </data>
<data name="Global.NA" xml:space="preserve">
<value>Ej tillämpbar</value>
</data>
<data name="Global.Name" xml:space="preserve"> <data name="Global.Name" xml:space="preserve">
<value>Namn</value> <value>Namn</value>
</data> </data>
@ -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"> <data name="Gui.ProjectBrowser.OpenWith.Bindings.XmlEditor" xml:space="preserve">
<value>XML redigerare</value> <value>XML redigerare</value>
</data> </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"> <data name="Gui.ProjectBrowser.OpenWith.Default" xml:space="preserve">
<value>Standard</value> <value>Standard</value>
</data> </data>
@ -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"> <data name="ICSharpCode.BooInterpreter" xml:space="preserve">
<value>Boo tolkare</value> <value>Boo tolkare</value>
</data> </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"> <data name="ICSharpCode.Build.MonoIsNotInstalled" xml:space="preserve">
<value>Mono är inte installerad.</value> <value>Mono är inte installerad.</value>
</data> </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"> <data name="ICSharpCode.CodeAnalysis" xml:space="preserve">
<value>Kodanalys</value> <value>Kodanalys</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeAnalysis.ProjectOptions.CannotFindFxCop" xml:space="preserve">
<value>Kunde inte hitta FxCop - kontrollera att FxCop finns installerad.</value> <value>Kunde inte hitta FxCop - kontrollera att FxCop finns installerad.</value>
</data> </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"> <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> <value>Du kan specificera sökvägen till FxCop under inställningarna för SharpDevelop.</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeAnalysis.RunningFxCopOn" xml:space="preserve">
<value>Kör FxCop på</value> <value>Kör FxCop på</value>
</data> </data>
<data name="ICSharpCode.CodeAnalysis.SuppressMessage" xml:space="preserve">
<value>Visa inte meddelande</value>
</data>
<data name="ICSharpCode.CodeCoverage.CodeCovered" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.CodeCovered" xml:space="preserve">
<value>Kodtäckning</value> <value>Kodtäckning</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Kolumn</value> <value>Kolumn</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>Innehåll</value>
</data>
<data name="ICSharpCode.CodeCoverage.EndColumn" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.EndColumn" xml:space="preserve">
<value>Slutkolumn</value> <value>Slutkolumn</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.EndLine" xml:space="preserve">
<value>Radslut</value>
</data>
<data name="ICSharpCode.CodeCoverage.NoCodeCoverageResultsGenerated" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.NoCodeCoverageResultsGenerated" xml:space="preserve">
<value>Ingen resultatfil för kodtäckning genererades:</value> <value>Ingen resultatfil för kodtäckning genererades:</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CppBinding.ProjectOptions.AdditionalOptions" xml:space="preserve">
<value>Ytterligare inställningar</value> <value>Ytterligare inställningar</value>
</data> </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"> <data name="ICSharpCode.CppBinding.ProjectOptions.Preprocessor" xml:space="preserve">
<value>Preprocessor</value> <value>Preprocessor</value>
</data> </data>
@ -2666,6 +2950,9 @@ Alla ändringar kommer att förloras.</value>
<data name="ICSharpCode.SharpDevelop.ExceptionBox.QuitWarning" xml:space="preserve"> <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> <value>Vill du verkligen avsluta SharpDevelop? Alla ändringar som inte sparats kommer att förloras!</value>
</data> </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"> <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> <value>Tack för att du hjälper oss att göra SharpDevelop till ett bättre program.</value>
</data> </data>
@ -2685,7 +2972,7 @@ Alla ändringar kommer att förloras.</value>
<value>Sökväg</value> <value>Sökväg</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.Components.Namespace" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.Components.Namespace" xml:space="preserve">
<value>Namespace</value> <value>Namnrymd</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.ComponentsToAddLabel" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.ComponentsToAddLabel" xml:space="preserve">
<value>K&amp;omponenter att lägga till</value> <value>K&amp;omponenter att lägga till</value>
@ -2721,7 +3008,7 @@ Alla ändringar kommer att förloras.</value>
<value>Konfigurera Verktygsfält</value> <value>Konfigurera Verktygsfält</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.Namespace" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.Namespace" xml:space="preserve">
<value>Namespace</value> <value>Namnrymd</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.NewButton" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.ConfigureSidebarDialog.NewButton" xml:space="preserve">
<value>&amp;Ny</value> <value>&amp;Ny</value>
@ -2763,7 +3050,7 @@ Alla ändringar kommer att förloras.</value>
<value>markera metoden InitializeComponents i kodvyn som endast läsbar</value> <value>markera metoden InitializeComponents i kodvyn som endast läsbar</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GeneralOptionsPanel.PanelName" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GeneralOptionsPanel.PanelName" xml:space="preserve">
<value>Generell</value> <value>Allmänt</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.GridPropertiesGroupBox" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.GridPropertiesGroupBox" xml:space="preserve">
<value>Rutsystemets egenskaper</value> <value>Rutsystemets egenskaper</value>
@ -2771,6 +3058,9 @@ Alla ändringar kommer att förloras.</value>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.HeightLabel" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.HeightLabel" xml:space="preserve">
<value>&amp;Höjd</value> <value>&amp;Höjd</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.PanelName" xml:space="preserve">
<value>Rutsystemets Inställningar</value> <value>Rutsystemets Inställningar</value>
</data> </data>
@ -2844,13 +3134,13 @@ Inga komponenter för WindowsFormer kommer att vara tillgängliga, var god konfi
<value>Gå till</value> <value>Gå till</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidNamespaceError" xml:space="preserve"> <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>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidReferenceNameError" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.InvalidReferenceNameError" xml:space="preserve">
<value>Referensnamnet innehåller ogiltiga tecken.</value> <value>Referensnamnet innehåller ogiltiga tecken.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.NamespaceLabel" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.NamespaceLabel" xml:space="preserve">
<value>&amp;Namespace:</value> <value>&amp;Namnrymd:</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ParametersProperty" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ParametersProperty" xml:space="preserve">
<value>Parametrar</value> <value>Parametrar</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> <value>Specificerar om filen skall kopieras till utdatamappen</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool" xml:space="preserve">
<value>Anpassa verktyg</value> <value>Anpassningsverktyg</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomTool.Description" xml:space="preserve">
<value>Specificerar verktyget som konverterar filen till utdatat.</value> <value>Specificerar verktyget som konverterar filen till utdatat.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.CustomToolNamespace" xml:space="preserve"> <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>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.FileName.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectFile.FileName.Description" xml:space="preserve">
<value>Fullständig sökväg till filen.</value> <value>Fullständig sökväg till filen.</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"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Konvertera valda &amp;projekt till:</value> <value>Konvertera valda &amp;projekt till:</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ConvertButton" xml:space="preserve">
<value>&amp;Konvertera</value> <value>&amp;Konvertera</value>
</data> </data>
@ -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"> <data name="ICSharpCode.WixBinding.PackagesFilesView.ContextMenu.AddFiles" xml:space="preserve">
<value>Lägg till filer...</value> <value>Lägg till filer...</value>
</data> </data>
<data name="ICSharpCode.WixBinding.ProjectOptions.OutputType.Installer" xml:space="preserve">
<value>Installationspaket</value>
</data>
<data name="ICSharpCode.WixBinding.ViewDialogXml.DialogIdNotFoundMessage" xml:space="preserve"> <data name="ICSharpCode.WixBinding.ViewDialogXml.DialogIdNotFoundMessage" xml:space="preserve">
<value>Kunde inte hitta '{0}' i {1}</value> <value>Kunde inte hitta '{0}' i {1}</value>
</data> </data>
@ -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"> <data name="ICSharpCode.WixBinding.WixLibraryFolderNode.Text" xml:space="preserve">
<value>WiX bibliotek</value> <value>WiX bibliotek</value>
</data> </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"> <data name="ICSharpCode.WixBinding.WixProjectFileAssociation" xml:space="preserve">
<value>WIX projekt</value> <value>WIX projekt</value>
</data> </data>
@ -3303,10 +3605,10 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>Schemata</value> <value>Schemata</value>
</data> </data>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.NamespaceExists" xml:space="preserve"> <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>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.NoTargetNamespace" xml:space="preserve"> <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>
<data name="ICSharpCode.XmlEditor.XmlSchemasPanel.Title" xml:space="preserve"> <data name="ICSharpCode.XmlEditor.XmlSchemasPanel.Title" xml:space="preserve">
<value>XML Schemata</value> <value>XML Schemata</value>
@ -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"> <data name="ICSharpCode.XmlEditor.XmlTreeView.Title" xml:space="preserve">
<value>XML träd</value> <value>XML träd</value>
</data> </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"> <data name="ICSharpCode.XmlEditor.XPathQueryPad.PrefixColumnHeaderTitle" xml:space="preserve">
<value>Prefix</value> <value>Prefix</value>
</data> </data>
@ -3392,6 +3700,9 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<data name="MainWindow.DiscardChangesMessage" xml:space="preserve"> <data name="MainWindow.DiscardChangesMessage" xml:space="preserve">
<value>Vill du verkligen kassera dina ändringar?</value> <value>Vill du verkligen kassera dina ändringar?</value>
</data> </data>
<data name="MainWindow.Editor.Tooltip.Namespace" xml:space="preserve">
<value>namnrymd</value>
</data>
<data name="MainWindow.SaveChangesMessage" xml:space="preserve"> <data name="MainWindow.SaveChangesMessage" xml:space="preserve">
<value>Vill du spara ändringarna?</value> <value>Vill du spara ändringarna?</value>
</data> </data>
@ -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"> <data name="ProjectComponent.ContextMenu.GenerateDocumentation.ProjectNeedsToBeCompiled2" xml:space="preserve">
<value>XML dokumentationsfilen existerar inte, du måste kompilera projektet först.</value> <value>XML dokumentationsfilen existerar inte, du måste kompilera projektet först.</value>
</data> </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"> <data name="ProjectComponent.ContextMenu.HtmlExport" xml:space="preserve">
<value>HTML-e&amp;xport</value> <value>HTML-e&amp;xport</value>
</data> </data>
@ -4062,7 +4376,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>Multilinje</value> <value>Multilinje</value>
</data> </data>
<data name="RegExpTk.MainDialog.Namespace" xml:space="preserve"> <data name="RegExpTk.MainDialog.Namespace" xml:space="preserve">
<value>Namespace</value> <value>Namnrymd</value>
</data> </data>
<data name="RegExpTk.MainDialog.PublicVisible" xml:space="preserve"> <data name="RegExpTk.MainDialog.PublicVisible" xml:space="preserve">
<value>Publik synlig</value> <value>Publik synlig</value>
@ -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"> <data name="SharpDevelop.Refactoring.CannotPerformOperationBecauseOfSyntaxErrors" xml:space="preserve">
<value>Operationen kunde inte utföras på grund av att källkoden innehåller fel:</value> <value>Operationen kunde inte utföras på grund av att källkoden innehåller fel:</value>
</data> </data>
<data name="SharpDevelop.Refactoring.CreateGetter" xml:space="preserve">
<value>Skapa &amp;Getter</value>
</data>
<data name="SharpDevelop.Refactoring.CreateOnEventMethod" xml:space="preserve"> <data name="SharpDevelop.Refactoring.CreateOnEventMethod" xml:space="preserve">
<value>Skapa OnEvent-metod</value> <value>Skapa OnEvent-metod</value>
</data> </data>
@ -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"> <data name="SharpDevelop.Refactoring.MoveClassToFile" xml:space="preserve">
<value>Flytta klassen till filen '${FileName}'</value> <value>Flytta klassen till filen '${FileName}'</value>
</data> </data>
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>Åsidosättanden av ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve"> <data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>Referenser till ${Name}</value> <value>Referenser till ${Name}</value>
</data> </data>
@ -4329,7 +4649,7 @@ Gå till 'Inställningar-&gt;Visuell stil' och ändra den nuvarande språkmiljö
<value>C# Dokumentations Taggar</value> <value>C# Dokumentations Taggar</value>
</data> </data>
<data name="SharpDevelop.SideBar.GeneralCategory" xml:space="preserve"> <data name="SharpDevelop.SideBar.GeneralCategory" xml:space="preserve">
<value>Generell</value> <value>Allmänt</value>
</data> </data>
<data name="SharpDevelop.SideBar.LicensesTags" xml:space="preserve"> <data name="SharpDevelop.SideBar.LicensesTags" xml:space="preserve">
<value>Licenser</value> <value>Licenser</value>
@ -5660,7 +5980,4 @@ Resursfilerna har därför bytt namn/flyttats enligt ovan.</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Avkommentera region</value> <value>Avkommentera region</value>
</data> </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> </root>

299
data/resources/StringResources.tr.resx

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </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"> <data name="AddInManager.About" xml:space="preserve">
<value>Hakkında</value> <value>Hakkında</value>
</data> </data>
@ -160,7 +163,7 @@
<value>Bu eklenti iki kez kurulmuş. Lütfen birini kaldırın.</value> <value>Bu eklenti iki kez kurulmuş. Lütfen birini kaldırın.</value>
</data> </data>
<data name="AddInManager.AddInMustHaveIdentity" xml:space="preserve"> <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>
<data name="AddInManager.AddInRemoved" xml:space="preserve"> <data name="AddInManager.AddInRemoved" xml:space="preserve">
<value>Eklenti SharpDevelop yeniden başlatıldığında kaldırılacak.</value> <value>Eklenti SharpDevelop yeniden başlatıldığında kaldırılacak.</value>
@ -229,6 +232,158 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve"> <data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Bilinmeyen dosya biçimi:</value> <value>Bilinmeyen dosya biçimi:</value>
</data> </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"> <data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Bu dosya tutarsız satırlar içeriyor.</value> <value>Bu dosya tutarsız satırlar içeriyor.</value>
</data> </data>
@ -269,11 +424,14 @@
<value>Yardım Kitaplığı</value> <value>Yardım Kitaplığı</value>
</data> </data>
<data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve"> <data name="AddIns.HelpViewer.HelpModeLabel" xml:space="preserve">
<value>Yardım Modu</value> <value>Yardım Tercihi Ayarı</value>
</data> </data>
<data name="AddIns.HelpViewer.HLMNoActiveCatalogError" xml:space="preserve"> <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> <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>
<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"> <data name="AddIns.HelpViewer.HLMNotFound" xml:space="preserve">
<value>Kütüphane Yöneticisi Yardımı bulunamadı. Yüklemeyi kontrol edin.</value> <value>Kütüphane Yöneticisi Yardımı bulunamadı. Yüklemeyi kontrol edin.</value>
</data> </data>
@ -302,7 +460,7 @@
<value>Yardımı Göster</value> <value>Yardımı Göster</value>
</data> </data>
<data name="AddIns.HelpViewer.UseExternalHelp" xml:space="preserve"> <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>
<data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve"> <data name="AddIns.HelpViewer.UseOfflineHelpLabel" xml:space="preserve">
<value>Yerel yardımı kullanmak istiyorum</value> <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
<data name="CQA.MainWindow.FormTitle" xml:space="preserve"> <data name="CQA.MainWindow.FormTitle" xml:space="preserve">
<value>Kod Kalite Analizi</value> <value>Kod Kalite Analizi</value>
</data> </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"> <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> <value>Açık yönteme referans ekleyin; yeni yöntem eklemek için tab veya enter tuşuna tekrar basın.</value>
</data> </data>
@ -1823,6 +2005,15 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.CodeCompletion.SaveItemCountBeforeNumber" xml:space="preserve">
<value>Kaydet</value> <value>Kaydet</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.CodeCompletion.UseDataUsageCache" xml:space="preserve">
<value>Son kullanılan üyeleri öncelikli seç</value> <value>Son kullanılan üyeleri öncelikli seç</value>
</data> </data>
@ -1871,6 +2062,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve">
<value>Hata ayıklama</value> <value>Hata ayıklama</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.Debugging.EnableDecompiler" xml:space="preserve">
<value>Tekrar derlemeyi etkinleştir</value> <value>Tekrar derlemeyi etkinleştir</value>
</data> </data>
@ -1919,6 +2116,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Symbols.ListCaption" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging.Symbols.ListCaption" xml:space="preserve">
<value>Sembol ve kaynak kodu yolları:</value> <value>Sembol ve kaynak kodu yolları:</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.EditStandardHeaderPanel.HeaderLabel" xml:space="preserve">
<value>Başlık</value> <value>Başlık</value>
</data> </data>
@ -2186,6 +2386,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightBracketCheckBox" xml:space="preserve">
<value>Eşleşen parantezleri vurgula</value> <value>Eşleşen parantezleri vurgula</value>
</data> </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"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.HighlightSymbolCheckBox" xml:space="preserve">
<value>Sembolleri vurgula</value> <value>Sembolleri vurgula</value>
</data> </data>
@ -2447,6 +2650,9 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve"> <data name="Dialog.ProjectOptions.BuildOptions.VBOptionsDefaultValues" xml:space="preserve">
<value>VB Seçenekleri için varsayılan değerler:</value> <value>VB Seçenekleri için varsayılan değerler:</value>
</data> </data>
<data name="Dialog.ProjectOptions.CodeFormatting" xml:space="preserve">
<value>Kod biçimlendirme</value>
</data>
<data name="Dialog.ProjectOptions.Configuration" xml:space="preserve"> <data name="Dialog.ProjectOptions.Configuration" xml:space="preserve">
<value>Yapılandırma</value> <value>Yapılandırma</value>
</data> </data>
@ -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"> <data name="ICSharpCode.CodeCoverage.CodeNotCovered" xml:space="preserve">
<value>Kapsanmamış Kod</value> <value>Kapsanmamış Kod</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.CodePartCovered" xml:space="preserve">
<value>Kod Kısmen Kapalı</value>
</data>
<data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.Column" xml:space="preserve">
<value>Kolon</value> <value>Kolon</value>
</data> </data>
<data name="ICSharpCode.CodeCoverage.Content" xml:space="preserve">
<value>İçerik</value>
</data>
<data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve"> <data name="ICSharpCode.CodeCoverage.DisplayOptions" xml:space="preserve">
<value>Gösterim Seçenekleri</value> <value>Gösterim Seçenekleri</value>
</data> </data>
@ -3596,6 +3808,12 @@ Not: Bu işlem özel düzenlemelerinizi etkilemez.</value>
<data name="ICSharpCode.SharpDevelop.DefaultEditor.IncrementalSearch.ReverseSearchStatusBarMessage" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.DefaultEditor.IncrementalSearch.ReverseSearchStatusBarMessage" xml:space="preserve">
<value>Artan Ters Arama:</value> <value>Artan Ters Arama:</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.ErrorLoadingCodeCompletionInformation" xml:space="preserve">
<value>${Filename} dosyasından ${Assembly} için kod tamamlama bilgisi yükleme hatası:</value> <value>${Filename} dosyasından ${Assembly} için kod tamamlama bilgisi yükleme hatası:</value>
</data> </data>
@ -4128,6 +4346,9 @@ Sadece harf,rakam, boşluk, '.' yada '_' kullanabilirsiniz.</value>
<data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage" xml:space="preserve">
<value>Bu çözüm dışarıdan değiştirildi.</value> <value>Bu çözüm dışarıdan değiştirildi.</value>
</data> </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"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeCompilerVersionLabel" xml:space="preserve">
<value>Seçilen projeleri dönüştür:</value> <value>Seçilen projeleri dönüştür:</value>
</data> </data>
@ -4472,6 +4693,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework Uzantısı</value> <value>.NET Framework Uzantısı</value>
</data> </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"> <data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>Fark bulunamadı</value> <value>Fark bulunamadı</value>
</data> </data>
@ -4493,6 +4717,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve">
<value>Visual Studio Uzantısı</value> <value>Visual Studio Uzantısı</value>
</data> </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"> <data name="ICSharpCode.WPFDesigner.ContextMenu.Copy" xml:space="preserve">
<value>Kopyala</value> <value>Kopyala</value>
</data> </data>
@ -4793,6 +5020,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve"> <data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Sık Kullanılanlar</value> <value>Sık Kullanılanlar</value>
</data> </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"> <data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Geri</value> <value>Geri</value>
</data> </data>
@ -4832,9 +5062,24 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve"> <data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve">
<value>Arama sonucu olumsuz.</value> <value>Arama sonucu olumsuz.</value>
</data> </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"> <data name="MainWindow.Windows.ClassBrowser.SearchButton.ToolTip" xml:space="preserve">
<value>Sınıf Görünümü Arama</value> <value>Sınıf Görünümü Arama</value>
</data> </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"> <data name="MainWindow.Windows.ClassScoutLabel" xml:space="preserve">
<value>Sınıflar</value> <value>Sınıflar</value>
</data> </data>
@ -4847,6 +5092,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.CompilerMessageView.ToggleWordWrapButton.ToolTip" xml:space="preserve"> <data name="MainWindow.Windows.CompilerMessageView.ToggleWordWrapButton.ToolTip" xml:space="preserve">
<value>Sözcük Kaydırmaya Geç</value> <value>Sözcük Kaydırmaya Geç</value>
</data> </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"> <data name="MainWindow.Windows.Debug.Breakpoints" xml:space="preserve">
<value>DuraksamaNoktaları</value> <value>DuraksamaNoktaları</value>
</data> </data>
@ -4943,6 +5191,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Console" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Console" xml:space="preserve">
<value>Konsol</value> <value>Konsol</value>
</data> </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"> <data name="MainWindow.Windows.Debug.ExceptionForm.Break" xml:space="preserve">
<value>Kesme</value> <value>Kesme</value>
</data> </data>
@ -5300,6 +5551,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.In" xml:space="preserve"> <data name="MainWindow.Windows.SearchResultPanel.In" xml:space="preserve">
<value>deki</value> <value>deki</value>
</data> </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"> <data name="MainWindow.Windows.SearchResultPanel.OccurrencesCount" xml:space="preserve">
<value>${Count} tane bulundu</value> <value>${Count} tane bulundu</value>
</data> </data>
@ -5315,6 +5569,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.PerFile" xml:space="preserve"> <data name="MainWindow.Windows.SearchResultPanel.PerFile" xml:space="preserve">
<value>Dosya başına</value> <value>Dosya başına</value>
</data> </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"> <data name="MainWindow.Windows.SearchResultPanel.SelectViewMode.ToolTip" xml:space="preserve">
<value>Liste modu aramayı seç</value> <value>Liste modu aramayı seç</value>
</data> </data>
@ -5480,6 +5740,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddReference" xml:space="preserve">
<value>Referans Ekle</value> <value>Referans Ekle</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.AddServiceReference" xml:space="preserve">
<value>Servis Referansı Ekle</value>
</data>
<data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.AddWebReference" xml:space="preserve">
<value>Web Referansı Ekle</value> <value>Web Referansı Ekle</value>
</data> </data>
@ -5750,6 +6013,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve"> <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> <value>Kaynak kod üreteci: '{0}' kaynağı için hiçbir kaynak özelliği oluşturamıyor.</value>
</data> </data>
<data name="ResourceEditor.ResourceEdit.CommentColumn" xml:space="preserve">
<value>Yorum</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve"> <data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve">
<value>İçerik</value> <value>İçerik</value>
</data> </data>
@ -5762,6 +6028,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName" xml:space="preserve"> <data name="ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName" xml:space="preserve">
<value>Kaynak adı kopyala</value> <value>Kaynak adı kopyala</value>
</data> </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"> <data name="ResourceEditor.ResourceEdit.ContextMenu.Rename" xml:space="preserve">
<value>Yeniden adlandır</value> <value>Yeniden adlandır</value>
</data> </data>
@ -5879,6 +6151,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve"> <data name="SharpDevelop.Refactoring.ClassesDerivingFrom" xml:space="preserve">
<value>${Name} 'den türeme sınıflar</value> <value>${Name} 'den türeme sınıflar</value>
</data> </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"> <data name="SharpDevelop.Refactoring.ConvertToAutomaticProperty" xml:space="preserve">
<value>Otomatik özelliği dönüştür</value> <value>Otomatik özelliği dönüştür</value>
</data> </data>
@ -5963,6 +6241,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve"> <data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>${Name} geçersiz kıl</value> <value>${Name} geçersiz kıl</value>
</data> </data>
<data name="SharpDevelop.Refactoring.PartsOfClass" xml:space="preserve">
<value>${Name} parçaları</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve"> <data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>${Name} referansları</value> <value>${Name} referansları</value>
</data> </data>
@ -6339,6 +6620,9 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value>
<data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve"> <data name="StartPage.StartMenu.OpenCombineButton" xml:space="preserve">
<value>Çözüm Aç</value> <value>Çözüm Aç</value>
</data> </data>
<data name="StartPage.StartMenu.RemoveRecentProject" xml:space="preserve">
<value>Son projeler listesinden kaldır</value>
</data>
<data name="StartPage.StartPageContentName" xml:space="preserve"> <data name="StartPage.StartPageContentName" xml:space="preserve">
<value>Başlangıç Sayfası</value> <value>Başlangıç Sayfası</value>
</data> </data>
@ -6351,6 +6635,12 @@ Kaynak dosyaları buna göre yeniden adlandırıldı/taşındı.</value>
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve"> <data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>satır ${Line} sütun ${Column} ${Character}</value> <value>satır ${Line} sütun ${Column} ${Character}</value>
</data> </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"> <data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Çeşitli</value> <value>Çeşitli</value>
</data> </data>
@ -7498,7 +7788,4 @@ Başlatma hatası:</value>
<data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve"> <data name="XML.TextAreaContextMenu.UncommentSelection" xml:space="preserve">
<value>Bölgeyi yorumlama</value> <value>Bölgeyi yorumlama</value>
</data> </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> </root>

6
data/resources/StringResources.zh.resx

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

4
samples/XamlDesigner/Document.cs

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

2
samples/XamlDesigner/Shell.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.XamlDesigner
//public Toolbox Toolbox { get; set; } //public Toolbox Toolbox { get; set; }
//public SceneTree SceneTree { 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 ErrorList ErrorList { get; set; }
public ObservableCollection<Document> Documents { get; private set; } public ObservableCollection<Document> Documents { get; private set; }

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

@ -61,7 +61,9 @@ namespace ICSharpCode.UnitTesting
public void Dispose() public void Dispose()
{ {
if (reader != null)
reader.Dispose(); reader.Dispose();
if (namedPipe != null)
namedPipe.Dispose(); namedPipe.Dispose();
} }

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

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

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

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

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

@ -20,12 +20,18 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Threading; using System.Threading;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Project;
using CSharpBinding.Completion; using CSharpBinding.Completion;
using CSharpBinding.FormattingStrategy; using CSharpBinding.FormattingStrategy;
using CSharpBinding.Refactoring; using CSharpBinding.Refactoring;
@ -49,303 +55,97 @@ namespace CSharpBinding
this.container.AddService(typeof(System.CodeDom.Compiler.CodeDomProvider), new Microsoft.CSharp.CSharpCodeProvider()); 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) if (fileName == null)
throw new ArgumentNullException("fileName"); 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 static string GeneratePartialClassContextStub(FileName fileName, TextLocation location, ICodeContext context)
{ {
ITextEditor editor; var compilation = SD.ParserService.GetCompilationForFile(fileName);
IssueManager inspectionManager; var file = SD.ParserService.GetExistingUnresolvedFile(fileName);
IList<IContextActionProvider> contextActionProviders; if (compilation == null || file == null)
CodeManipulation codeManipulation; return "";
CaretReferenceHighlightRenderer renderer; var unresolvedMember = file.GetMember(location);
CodeEditorFormattingOptionsAdapter options; if (unresolvedMember == null)
TextEditorOptions originalEditorOptions; return "";
var member = unresolvedMember.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
public void Attach(ITextEditor editor) 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.LocalVariables.ToArray());
return WrapInType(unresolvedMember.DeclaringTypeDefinition, decl).ToString();
}
static BlockStatement GenerateBodyFromContext(TypeSystemAstBuilder builder, IVariable[] variables)
{ {
this.editor = editor; var body = new BlockStatement();
inspectionManager = new IssueManager(editor); foreach (var v in variables)
codeManipulation = new CodeManipulation(editor); body.Statements.Add(new VariableDeclarationStatement(builder.ConvertType(v.Type), v.Name));
renderer = new CaretReferenceHighlightRenderer(editor); body.Statements.Add(new ExpressionStatement(new IdentifierExpression("$__Caret_Point__$")));
return body;
// 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 AstNode WrapInType(IUnresolvedTypeDefinition entity, EntityDeclaration decl)
{ {
var textEditor = editor.GetService<TextEditor>(); if (entity == null)
if (textEditor != null) { return decl;
var textView = textEditor.TextArea.TextView; // Wrap decl in TypeDeclaration
decl = new TypeDeclaration {
// Unregister our ITextEditorOptions instance from editor ClassType = GetClassType(entity),
var optionsService = textView.GetService<ITextEditorOptions>(); Modifiers = Modifiers.Partial,
if ((optionsService != null) && (optionsService == options)) Name = entity.Name,
textView.Services.RemoveService(typeof(ITextEditorOptions)); Members = { decl }
};
// Reset TextEditor options, too? if (entity.DeclaringTypeDefinition != null) {
if ((textEditor.Options != null) && (textEditor.Options == options)) // Handle nested types
textEditor.Options = originalEditorOptions; return WrapInType(entity.DeclaringTypeDefinition, decl);
} }
if (string.IsNullOrEmpty(entity.Namespace))
codeManipulation.Dispose(); return decl;
if (inspectionManager != null) { return new NamespaceDeclaration(entity.Namespace) {
inspectionManager.Dispose(); Members = {
inspectionManager = null; decl
} }
if (contextActionProviders != null) { };
editor.ContextActionProviders.RemoveAll(contextActionProviders.Contains); }
}
renderer.Dispose(); static ClassType GetClassType(IUnresolvedTypeDefinition entity)
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;
}
void OnFormattingPolicyUpdated(object sender, CSharpBinding.FormattingStrategy.CSharpFormattingPolicyUpdateEventArgs e)
{ {
OnPropertyChanged("IndentationSize"); switch (entity.Kind) {
OnPropertyChanged("ConvertTabsToSpaces"); case TypeKind.Interface:
} return ClassType.Interface;
case TypeKind.Struct:
void OnGlobalOptionsPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) return ClassType.Struct;
{ default:
OnPropertyChanged(e.PropertyName); return ClassType.Class;
}
#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;
}
}
}
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;
}
} }
} }
} }

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

@ -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;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Completion; using ICSharpCode.NRefactory.Completion;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Completion; using ICSharpCode.NRefactory.CSharp.Completion;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
@ -129,7 +127,7 @@ namespace CSharpBinding.Completion
DefaultCompletionItemList list = new DefaultCompletionItemList(); DefaultCompletionItemList list = new DefaultCompletionItemList();
list.Items.AddRange(FilterAndAddTemplates(editor, completionData.Cast<ICompletionItem>().ToList())); 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.SortItems();
list.PreselectionLength = caretOffset - startPos; list.PreselectionLength = caretOffset - startPos;
list.PostselectionLength = Math.Max(0, startPos + triggerWordLength - caretOffset); list.PostselectionLength = Math.Max(0, startPos + triggerWordLength - caretOffset);

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

@ -17,17 +17,19 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System; using System;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.SharpDevelop.Project;
using CSharpBinding.Parser;
using ICSharpCode.NRefactory.CSharp.Completion; using ICSharpCode.NRefactory.CSharp.Completion;
using ICSharpCode.NRefactory.CSharp.TypeSystem; using ICSharpCode.NRefactory.CSharp.TypeSystem;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using CSharpBinding.Parser;
namespace CSharpBinding.Completion namespace CSharpBinding.Completion
{ {
@ -35,7 +37,7 @@ namespace CSharpBinding.Completion
{ {
public readonly ITextEditor Editor; public readonly ITextEditor Editor;
public readonly IDocument Document; public readonly IDocument Document;
public readonly CSharpFullParseInformation ParseInformation; public readonly IList<string> ConditionalSymbols;
public readonly ICompilation Compilation; public readonly ICompilation Compilation;
public readonly IProjectContent ProjectContent; public readonly IProjectContent ProjectContent;
public readonly CSharpTypeResolveContext TypeResolveContextAtCaret; public readonly CSharpTypeResolveContext TypeResolveContextAtCaret;
@ -56,7 +58,7 @@ namespace CSharpBinding.Completion
if (projectContent == null) if (projectContent == null)
return 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) public static CSharpCompletionContext Get(ITextEditor editor, ITextSource fileContent, TextLocation currentLocation, FileName fileName)
@ -64,33 +66,50 @@ namespace CSharpBinding.Completion
IDocument document = new ReadOnlyDocument(fileContent); IDocument document = new ReadOnlyDocument(fileContent);
// Don't require the very latest parse information, an older cached version is OK. // 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) if (parseInfo == null)
return 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) if (projectContent == null)
return 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(editor != null);
Debug.Assert(parseInfo != null); Debug.Assert(unresolvedFile != null);
Debug.Assert(compilation != null); Debug.Assert(compilation != null);
Debug.Assert(projectContent != null); Debug.Assert(projectContent != null);
Debug.Assert(document != null); Debug.Assert(document != null);
this.Editor = editor; this.Editor = editor;
this.Document = document; this.Document = document;
this.ParseInformation = parseInfo; this.ConditionalSymbols = conditionalSymbols;
this.Compilation = compilation; this.Compilation = compilation;
this.ProjectContent = projectContent; this.ProjectContent = projectContent;
this.TypeResolveContextAtCaret = parseInfo.UnresolvedFile.GetTypeResolveContext(compilation, caretLocation); this.TypeResolveContextAtCaret = unresolvedFile.GetTypeResolveContext(compilation, caretLocation);
this.CompletionContextProvider = new DefaultCompletionContextProvider(document, parseInfo.UnresolvedFile); this.CompletionContextProvider = new DefaultCompletionContextProvider(document, unresolvedFile);
this.CompletionContextProvider.ConditionalSymbols.AddRange(parseInfo.SyntaxTree.ConditionalSymbols); this.CompletionContextProvider.ConditionalSymbols.AddRange(conditionalSymbols);
} }
} }
} }

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

@ -148,7 +148,7 @@ namespace CSharpBinding.Completion
IEnumerable<ICompletionData> ICompletionDataFactory.CreatePreProcessorDefinesCompletionData() 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) 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
/// </summary> /// </summary>
public static void Format(ITextEditor editor, int offset, int length, CSharpFormattingOptionsContainer optionsContainer) 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(); TextEditorOptions editorOptions = editor.ToEditorOptions();
optionsContainer.CustomizeEditorOptions(editorOptions); optionsContainer.CustomizeEditorOptions(editorOptions);
var formatter = new CSharpFormatter(optionsContainer.GetEffectiveOptions(), editorOptions); var formatter = new CSharpFormatter(optionsContainer.GetEffectiveOptions(), editorOptions);
formatter.AddFormattingRegion(new DomRegion(editor.Document.GetLocation(offset), editor.Document.GetLocation(offset + length))); 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); changes.ApplyChanges(offset, length);
} }
} }

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

@ -87,7 +87,7 @@ namespace CSharpBinding
IEnumerable<ISymbol> GetRelatedSymbols(ISymbol entity) 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(); var symbolCollector = new SymbolCollector();
return symbolCollector.GetRelatedSymbols(typeGraph, entity); return symbolCollector.GetRelatedSymbols(typeGraph, entity);
} }

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

@ -211,5 +211,10 @@ namespace CSharpBinding.Refactoring
script.ChangeModifier(entityDeclaration, entityDeclaration.Modifiers | Modifiers.Virtual); 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;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Snippets; using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Refactoring; using ICSharpCode.NRefactory.CSharp.Refactoring;
@ -32,6 +33,10 @@ using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor; 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; using ICSharpCode.SharpDevelop.Workbench;
namespace CSharpBinding.Refactoring namespace CSharpBinding.Refactoring
@ -102,6 +107,11 @@ namespace CSharpBinding.Refactoring
return tcs.Task; 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) public override Task<Script> InsertWithCursor(string operation, InsertPosition defaultPosition, IList<AstNode> nodes)
{ {
// TODO : Use undo group // TODO : Use undo group

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

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

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

@ -226,7 +226,7 @@ namespace CSharpBinding.Refactoring
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
var issues = provider.GetIssues(context).ToList(); var issues = provider.GetIssues(context).ToList();
// Fix issues, if possible: // 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()) { using (var script = context.StartScript()) {
foreach (var issue in issues) { foreach (var issue in issues) {
if (issue.Actions.Count > 0) { if (issue.Actions.Count > 0) {

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

@ -43,7 +43,7 @@ namespace CSharpBinding.Refactoring
{ {
InitializeComponent(); InitializeComponent();
FixCheckBox_Unchecked(null, null); FixCheckBox_Unchecked(null, null);
treeView.Root = new RootTreeNode(IssueManager.IssueProviders); treeView.Root = new RootTreeNode(IssueManager.IssueProviders, TreeNodeCheckedChanged);
searchInRBG.SelectedValue = SearchForIssuesTarget.WholeSolution; searchInRBG.SelectedValue = SearchForIssuesTarget.WholeSolution;
LoadPreviousSelectionFromSettings(); LoadPreviousSelectionFromSettings();
} }
@ -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) void searchButton_Click(object sender, RoutedEventArgs e)
{ {
DialogResult = true; DialogResult = true;
@ -109,12 +117,16 @@ namespace CSharpBinding.Refactoring
sealed class RootTreeNode : BaseTreeNode 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) 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.IsChecked = false;
this.IsExpanded = true; this.IsExpanded = true;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
} }
public override string Key { public override string Key {
@ -128,17 +140,26 @@ namespace CSharpBinding.Refactoring
public override bool IsCheckable { public override bool IsCheckable {
get { return true; } get { return true; }
} }
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (checkedChanged != null && e.PropertyName == "IsChecked")
checkedChanged();
}
} }
sealed class CategoryTreeNode : BaseTreeNode sealed class CategoryTreeNode : BaseTreeNode
{ {
readonly string categoryName; 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.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.IsExpanded = true;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
} }
public override string Key { public override string Key {
@ -152,17 +173,26 @@ namespace CSharpBinding.Refactoring
public override bool IsCheckable { public override bool IsCheckable {
get { return true; } get { return true; }
} }
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (checkedChanged != null && e.PropertyName == "IsChecked")
checkedChanged();
}
} }
sealed class IssueTreeNode : BaseTreeNode sealed class IssueTreeNode : BaseTreeNode
{ {
internal readonly IssueManager.IssueProvider Provider; internal readonly IssueManager.IssueProvider Provider;
readonly IssueDescriptionAttribute attribute; readonly IssueDescriptionAttribute attribute;
readonly Action checkedChanged;
internal IssueTreeNode(IssueManager.IssueProvider provider) internal IssueTreeNode(IssueManager.IssueProvider provider, Action checkedChanged)
{ {
this.Provider = provider; this.Provider = provider;
this.attribute = provider.Attribute; this.attribute = provider.Attribute;
this.checkedChanged = checkedChanged;
this.PropertyChanged += OnPropertyChanged;
} }
public override string Key { public override string Key {
@ -180,6 +210,12 @@ namespace CSharpBinding.Refactoring
public override object ToolTip { public override object ToolTip {
get { return attribute.Description; } 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
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = target; 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.FontFamily = new FontFamily(SD.EditorControlService.GlobalOptions.FontFamily);
condition.FontSize = SD.EditorControlService.GlobalOptions.FontSize; condition.FontSize = SD.EditorControlService.GlobalOptions.FontSize;
if (target.Condition == null) if (target.Condition == null)

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

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

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

@ -86,10 +86,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void ShowDotCompletion(StackFrame frame, string currentText) 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; if (binding == null) return;
binding.HandleKeyPressed(console.TextEditor, '.'); binding.HandleKeyPressed(console.TextEditor, '.');
SD.ParserService.ParseFileAsync(new ICSharpCode.Core.FileName(frame.NextStatement.Filename)).FireAndForget();
} }
protected override ToolBar BuildToolBar() protected override ToolBar BuildToolBar()

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

@ -41,162 +41,12 @@ namespace Debugger.AddIn.Pads.Controls
return !errors.Any(); 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) if (lang == null)
return null; return null;
string content = GeneratePartialClassContextStub(context); return lang.CreateCompletionBinding(expressionToComplete, 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 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;
}
} }
} }
} }

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

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

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

@ -155,6 +155,12 @@ namespace Debugger
string name = corModule.GetName(); string name = corModule.GetName();
if (corModule.IsDynamic() == 1 || corModule.IsInMemory() == 1) { if (corModule.IsDynamic() == 1 || corModule.IsInMemory() == 1) {
var defaultUnresolvedAssembly = new DefaultUnresolvedAssembly(name); 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)); weakTable.Add(defaultUnresolvedAssembly, new ModuleMetadataInfo(module, null));
return Task.FromResult<IUnresolvedAssembly>(defaultUnresolvedAssembly); return Task.FromResult<IUnresolvedAssembly>(defaultUnresolvedAssembly);
} }
@ -527,6 +533,9 @@ namespace Debugger
public static IMethod Import(this ICompilation compilation, ICorDebugFunction corFunction) public static IMethod Import(this ICompilation compilation, ICorDebugFunction corFunction)
{ {
Module module = compilation.GetAppDomain().Process.GetModule(corFunction.GetModule()); 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); var info = GetInfo(module.Assembly);
uint functionToken = corFunction.GetToken(); uint functionToken = corFunction.GetToken();
var unresolvedMethod = info.GetMethodFromToken(functionToken); var unresolvedMethod = info.GetMethodFromToken(functionToken);
@ -547,6 +556,9 @@ namespace Debugger
public static IField ImportField(this IType declaringType, uint fieldToken) public static IField ImportField(this IType declaringType, uint fieldToken)
{ {
var module = declaringType.GetDefinition().ParentAssembly.GetModule(); var module = declaringType.GetDefinition().ParentAssembly.GetModule();
if (module.IsDynamic || module.IsInMemory) {
return module.Assembly.GetTypeDefinition("", "UnknownDynamicType").Fields.First();
}
var info = GetInfo(module.Assembly); var info = GetInfo(module.Assembly);
return declaringType.GetFields(f => info.GetMetadataToken(f) == fieldToken, GetMemberOptions.IgnoreInheritedMembers).SingleOrDefault(); 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
/// <inheritdoc /> /// <inheritdoc />
public Point GetScreenPosition(int line, int column) public Point GetScreenPosition(int line, int column)
{ {
var positionInPixels = textView.PointToScreen( var visualPosition = textView.GetVisualPosition(
textView.GetVisualPosition(new TextViewPosition(line, column), VisualYPosition.LineBottom) - textView.ScrollOffset); 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); return positionInPixels.TransformFromDevice(textView);
} }

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

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

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

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

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

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

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

@ -218,29 +218,16 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
margin.Bottom = GetRowOffset(bottomRowIndex + 1) - info.Bounds.Bottom; margin.Bottom = GetRowOffset(bottomRowIndex + 1) - info.Bounds.Bottom;
info.Item.Properties[FrameworkElement.MarginProperty].SetValue(margin); 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) if (ha == HorizontalAlignment.Stretch)
info.Item.Properties[FrameworkElement.WidthProperty].Reset(); info.Item.Properties[FrameworkElement.WidthProperty].Reset();
else else
info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width); info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width);
}
else {
info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width);
}
if (!heightIsSet)
{
if (va == VerticalAlignment.Stretch) if (va == VerticalAlignment.Stretch)
info.Item.Properties[FrameworkElement.HeightProperty].Reset(); info.Item.Properties[FrameworkElement.HeightProperty].Reset();
else else
info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height); info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height);
} }
else {
info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height);
}
}
public override void LeaveContainer(PlacementOperation operation) 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
} else { } else {
bounds.Height = Math.Max(0, bounds.Height + delta); bounds.Height = Math.Max(0, bounds.Height + delta);
} }
bounds.Height = Math.Max(0, bounds.Height - delta);
info.Bounds = bounds; info.Bounds = bounds;
} else { } else {
foreach (var item in operation.PlacedItems) { foreach (var item in operation.PlacedItems) {
@ -145,7 +144,6 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
} else { } else {
bounds.Width = Math.Max(0, bounds.Width + delta); bounds.Width = Math.Max(0, bounds.Width + delta);
} }
bounds.Width = Math.Max(0, bounds.Width - delta);
info.Bounds = bounds; info.Bounds = bounds;
} else { } else {
foreach (var item in operation.PlacedItems) { 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
public override void EnterContainer(PlacementOperation operation) public override void EnterContainer(PlacementOperation operation)
{ {
base.EnterContainer(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; _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
} }
public static readonly DependencyProperty RootProperty = public static readonly DependencyProperty RootProperty =
DependencyProperty.Register("Root", typeof(OutlineNode), typeof(Outline)); DependencyProperty.Register("Root", typeof(IOutlineNode), typeof(Outline));
public OutlineNode Root { public IOutlineNode Root
get { return (OutlineNode)GetValue(RootProperty); } {
get { return (IOutlineNode)GetValue(RootProperty); }
set { SetValue(RootProperty, value); } set { SetValue(RootProperty, value); }
} }

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

@ -34,138 +34,45 @@ using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.WpfDesign.Designer.OutlineView namespace ICSharpCode.WpfDesign.Designer.OutlineView
{ {
public class OutlineNode : INotifyPropertyChanged public interface IOutlineNode
{ {
//Used to check if element can enter other containers ISelectionService SelectionService { get; }
public static PlacementType DummyPlacementType; bool IsExpanded { get; set; }
DesignItem DesignItem { get; set; }
static OutlineNode() bool IsSelected { get; set; }
{ bool IsDesignTimeVisible { get; set; }
DummyPlacementType = PlacementType.Register("DummyPlacement"); bool IsDesignTimeLocked { get; }
} string Name { get; }
public static OutlineNode Create(DesignItem designItem) bool CanInsert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy);
{ void Insert(IEnumerable<IOutlineNode> nodes, IOutlineNode after, bool copy);
OutlineNode node; ObservableCollection<IOutlineNode> Children{ get; }
if (!outlineNodes.TryGetValue(designItem, out node)) {
node = new OutlineNode(designItem);
outlineNodes[designItem] = node;
}
return node;
} }
public class OutlineNode: OutlineNodeBase
{
//TODO: Reset with DesignContext //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(); 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); SelectionService.SelectionChanged += new EventHandler<DesignItemCollectionEventArgs>(Selection_SelectionChanged);
} }
public DesignItem DesignItem { get; private set; } static OutlineNode()
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 { DummyPlacementType = PlacementType.Register("DummyPlacement");
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();
}
} }
bool _isDesignTimeLocked = false; public static IOutlineNode Create(DesignItem designItem)
public bool IsDesignTimeLocked
{ {
get { IOutlineNode node;
return _isDesignTimeLocked; if (!outlineNodes.TryGetValue(designItem, out node)) {
} node = new OutlineNode(designItem);
set { outlineNodes[designItem] = node;
_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 + ")";
} }
return node;
} }
void Selection_SelectionChanged(object sender, DesignItemCollectionEventArgs e) void Selection_SelectionChanged(object sender, DesignItemCollectionEventArgs e)
@ -173,19 +80,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
IsSelected = DesignItem.Services.Selection.IsComponentSelected(DesignItem); IsSelected = DesignItem.Services.Selection.IsComponentSelected(DesignItem);
} }
void DesignItem_NameChanged(object sender, EventArgs e) protected override void UpdateChildren()
{
RaisePropertyChanged("Name");
}
void DesignItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == DesignItem.ContentPropertyName) {
UpdateChildren();
}
}
void UpdateChildren()
{ {
Children.Clear(); Children.Clear();
@ -193,8 +88,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
var content = DesignItem.ContentProperty; var content = DesignItem.ContentProperty;
if (content.IsCollection) { if (content.IsCollection) {
UpdateChildrenCore(content.CollectionElements); UpdateChildrenCore(content.CollectionElements);
} } else {
else {
if (content.Value != null) { if (content.Value != null) {
UpdateChildrenCore(new[] { content.Value }); UpdateChildrenCore(new[] { content.Value });
} }
@ -208,16 +102,12 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
if (ModelTools.CanSelectComponent(item)) { if (ModelTools.CanSelectComponent(item)) {
var node = OutlineNode.Create(item); var node = OutlineNode.Create(item);
Children.Add(node); Children.Add(node);
} } else {
else
{
var content = item.ContentProperty; var content = item.ContentProperty;
if (content != null) if (content != null) {
{
if (content.IsCollection) { if (content.IsCollection) {
UpdateChildrenCore(content.CollectionElements); UpdateChildrenCore(content.CollectionElements);
} } else {
else {
if (content.Value != null) { if (content.Value != null) {
UpdateChildrenCore(new[] { content.Value }); UpdateChildrenCore(new[] { content.Value });
} }
@ -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 @@
/*
* 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
protected override bool CanInsert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy) protected override bool CanInsert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy)
{ {
UpdateCustomNodes(items); UpdateCustomNodes(items);
return (target.DataContext as OutlineNode).CanInsert(_customOutlineNodes, return (target.DataContext as IOutlineNode).CanInsert(_customOutlineNodes,
after == null ? null : after.DataContext as OutlineNode, copy); after == null ? null : after.DataContext as IOutlineNode, copy);
} }
protected override void Insert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy) protected override void Insert(DragTreeViewItem target, DragTreeViewItem[] items, DragTreeViewItem after, bool copy)
{ {
UpdateCustomNodes(items); UpdateCustomNodes(items);
(target.DataContext as OutlineNode).Insert(_customOutlineNodes, (target.DataContext as IOutlineNode).Insert(_customOutlineNodes,
after == null ? null : after.DataContext as OutlineNode, copy); 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 // 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) void UpdateCustomNodes(IEnumerable<DragTreeViewItem> items)
{ {
_customOutlineNodes = new List<OutlineNode>(); _customOutlineNodes = new List<IOutlineNode>();
foreach (var item in items) foreach (var item in items)
_customOutlineNodes.Add(item.DataContext as OutlineNode); _customOutlineNodes.Add(item.DataContext as IOutlineNode);
} }
public override bool ShouldItemBeVisible(DragTreeViewItem dragTreeViewitem) 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()); return string.IsNullOrEmpty(Filter) || node.Name.ToLower().Contains(Filter.ToLower());
} }
@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView
{ {
base.SelectOnly(item); base.SelectOnly(item);
var node = item.DataContext as OutlineNode; var node = item.DataContext as IOutlineNode;
var surface = node.DesignItem.View.TryFindParent<DesignSurface>(); var surface = node.DesignItem.View.TryFindParent<DesignSurface>();
if (surface != null) 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
if(control!=null){ if(control!=null){
TypeMappings.TryGetValue(control.GetType(), out _type); TypeMappings.TryGetValue(control.GetType(), out _type);
if (_type != null) { if (_type != null) {
OutlineNode node = OutlineNode.Create(item); IOutlineNode node = OutlineNode.Create(item);
Outline.Root = node; Outline.Root = node;
PropertyGridView.PropertyGrid.SelectedItems = item.Services.Selection.SelectedItems; 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
var range = Metadata.GetValueRange(PropertyNode.FirstProperty); var range = Metadata.GetValueRange(PropertyNode.FirstProperty);
if (range == null) { 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) { if (range.Min == double.MinValue) {

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

@ -35,7 +35,20 @@ using System.Windows;
namespace ICSharpCode.WpfDesign.Designer.PropertyGrid 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() public PropertyGrid()
{ {
@ -54,7 +67,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
Category attachedCategory = new Category("Attached"); Category attachedCategory = new Category("Attached");
Dictionary<MemberDescriptor, PropertyNode> nodeFromDescriptor = new Dictionary<MemberDescriptor, PropertyNode>(); 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 CategoriesCollection Categories { get; private set; }
public PropertyNodeCollection Events { get; private set; } public PropertyNodeCollection Events { get; private set; }
@ -220,6 +234,8 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
} }
} finally { } finally {
reloadActive = false; 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
DefaultStyleKeyProperty.OverrideMetadata(typeof(PropertyGridView), new FrameworkPropertyMetadata(typeof(PropertyGridView))); 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; DataContext = PropertyGrid;
} }
@ -61,7 +64,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
static PropertyContextMenu propertyContextMenu = new PropertyContextMenu(); static PropertyContextMenu propertyContextMenu = new PropertyContextMenu();
public PropertyGrid PropertyGrid { get; private set; } public IPropertyGrid PropertyGrid { get; private set; }
public static readonly DependencyProperty FirstColumnWidthProperty = public static readonly DependencyProperty FirstColumnWidthProperty =
DependencyProperty.Register("FirstColumnWidth", typeof(double), typeof(PropertyGridView), 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
return item; 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) 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( PlacementOperation operation = PlacementOperation.TryStartInsertNewComponents(
container, container,
new DesignItem[] { createdItem }, new DesignItem[] { createdItem },

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

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

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

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

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

@ -131,7 +131,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
AddInParent(parent, pastedItems); AddInParent(parent, pastedItems);
pasted = true; 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); AddInParent(parent, pastedItems);
pasted = true; pasted = true;
} }

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

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

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

@ -17,6 +17,9 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System; using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using NUnit.Framework; using NUnit.Framework;
using System.Windows.Markup; using System.Windows.Markup;
using ICSharpCode.WpfDesign.XamlDom; using ICSharpCode.WpfDesign.XamlDom;
@ -119,6 +122,79 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom
TestMarkupExtension("Content=\"{t:String '" + PathWithCommasAndSpaces + "'}\""); 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] // [Test]
// public void Test10() // public void Test10()
// { // {
@ -177,4 +253,19 @@ namespace ICSharpCode.WpfDesign.Tests.XamlDom
return null; 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 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
@ -548,11 +549,35 @@ namespace ICSharpCode.WpfDesign.XamlDom
{ {
public override object ProvideValue() public override object ProvideValue()
{ {
var target = XamlObject.Instance as Binding; var target = XamlObject.Instance as BindingBase;
Debug.Assert(target != null);
//TODO: XamlObject.Clone() //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)) { 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 { try {
var val1 = pd.GetValue(b); var val1 = pd.GetValue(b);
var val2 = pd.GetValue(target); var val2 = pd.GetValue(target);
@ -560,7 +585,8 @@ namespace ICSharpCode.WpfDesign.XamlDom
pd.SetValue(b, val2); pd.SetValue(b, val2);
} catch {} } 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
XamlParser parser = new XamlParser(); XamlParser parser = new XamlParser();
parser.settings = settings; parser.settings = settings;
parser.errorSink = (IXamlErrorSink)settings.ServiceProvider.GetService(typeof(IXamlErrorSink));
parser.document = root.OwnerDocument; parser.document = root.OwnerDocument;
var xamlObject = parser.ParseObject(element as XmlElement); var xamlObject = parser.ParseObject(element as XmlElement);
if (xamlObject != null) if (xamlObject != null)

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -94,7 +94,8 @@ namespace ICSharpCode.GitAddIn
/// </summary> /// </summary>
public static string FindGit() 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) { foreach (string path in paths) {
try { try {
string exe = Path.Combine(path, "git.exe"); 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;
namespace ICSharpCode.NRefactory.CSharp.Refactoring namespace ICSharpCode.NRefactory.CSharp.Refactoring
{ {
[IssueDescription("Use of (non-extension method) member of null value will cause a NullReferenceException", // [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", // Description = "Detects when a member of a null value is used",
Category = IssueCategories.CodeQualityIssues, // Category = IssueCategories.CodeQualityIssues,
Severity = Severity.Warning)] // Severity = Severity.Warning)]
public class UseOfMemberOfNullReference : GatherVisitorCodeIssueProvider public class UseOfMemberOfNullReference : GatherVisitorCodeIssueProvider
{ {
static readonly ISet<NullValueStatus> ProblematicNullStates = new HashSet<NullValueStatus> { 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
public string SuppressMessageCheckId { get; set; } public string SuppressMessageCheckId { get; set; }
public int PragmaWarning { get; set; } public int PragmaWarning { get; set; }
public bool IsEnabledByDefault { get; set; } public bool IsEnabledByDefault { get; set; }
public bool SupportsAutoFix { get; set; }
public Severity Severity { get; set; } public Severity Severity { get; set; }

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

@ -824,7 +824,13 @@ namespace ICSharpCode.NRefactory.TypeSystem
void AddSecurityAttributes(SecurityDeclaration secDecl, IList<IUnresolvedAttribute> targetCollection) 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); targetCollection.AddRange(blobSecDecl.UnresolvedAttributes);
} }
#endregion #endregion

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

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

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

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

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

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

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

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

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

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

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

@ -67,8 +67,11 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
public override void Run() public override void Run()
{ {
BookmarkPadBase pad = (BookmarkPadBase)this.Owner; BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
if (pad.SelectedItem != null) { var selectedItems = pad.SelectedItems.ToList();
SD.BookmarkManager.RemoveMark(pad.SelectedItem); 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
/// <summary> /// <summary>
/// Gets the absolute screen position of given position in the document. /// 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> /// </summary>
Point GetScreenPosition(int line, int column); Point GetScreenPosition(int line, int column);

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

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

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

@ -83,6 +83,11 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return newName; 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) public virtual void AddField(ITypeDefinition declaringType, Accessibility accessibility, IType fieldType, string name)
{ {
throw new NotSupportedException("Feature not supported!"); throw new NotSupportedException("Feature not supported!");

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

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

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

@ -187,8 +187,16 @@ namespace ICSharpCode.SharpDevelop.Editor
if (commentStartOffset >= 0) { if (commentStartOffset >= 0) {
commentEndOffset = selectedText.IndexOf(commentEnd, commentStartOffset + commentStart.Length - editor.SelectionStart); 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) { if (commentEndOffset >= 0) {
@ -205,7 +213,11 @@ namespace ICSharpCode.SharpDevelop.Editor
offset = document.TextLength; offset = document.TextLength;
} }
string text = document.GetText(0, offset); string text = document.GetText(0, offset);
if (startAfterEnd) {
commentStartOffset = text.LastIndexOf(commentStart, editor.SelectionStart);
} else {
commentStartOffset = text.LastIndexOf(commentStart); commentStartOffset = text.LastIndexOf(commentStart);
}
if (commentStartOffset >= 0) { if (commentStartOffset >= 0) {
// Find end of comment before comment start. // Find end of comment before comment start.
commentEndBeforeStartOffset = text.IndexOf(commentEnd, commentStartOffset, editor.SelectionStart - commentStartOffset); 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
/// Extracts source code file reference from NUnit output. (stacktrace format) /// Extracts source code file reference from NUnit output. (stacktrace format)
/// </summary> /// </summary>
/// <param name="lineText">The text line to parse.</param> /// <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 /// <returns>A <see cref="FileLineReference"/> if the line of text contains a
/// file reference otherwise <see langword="null"/></returns> /// file reference otherwise <see langword="null"/></returns>
public static FileLineReference GetNUnitOutputFileLineReference(string lineText, bool multiline) public static FileLineReference GetNUnitOutputFileLineReference(string lineText, bool multiline)
@ -95,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.Gui
FileLineReference result = null; FileLineReference result = null;
if (lineText != 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) { while (match.Success) {
try { try {
int line = Convert.ToInt32(match.Groups[2].Value); int line = Convert.ToInt32(match.Groups[2].Value);
@ -111,6 +111,21 @@ namespace ICSharpCode.SharpDevelop.Gui
return result; 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> /// <summary>
/// Extracts source code file reference from the c++ or VB.Net compiler output. /// Extracts source code file reference from the c++ or VB.Net compiler output.
/// </summary> /// </summary>

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

@ -17,8 +17,11 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System; using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -249,37 +252,58 @@ namespace ICSharpCode.SharpDevelop.Project
try { try {
inSelectFile = true; inSelectFile = true;
lastSelectionTarget = fileName; lastSelectionTarget = fileName;
TreeNode node = FindFileNode(fileName); LoadAndExpandToNode(new FileName(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);
}
} finally { } finally {
inSelectFile = false; inSelectFile = false;
} }
} }
#region SelectDeepestOpenNode internals #region SelectDeepestOpenNode internals
//
// SolutionNode RootSolutionNode { void LoadAndExpandToNode(FileName fileName)
// get { {
// if (treeView.Nodes != null && treeView.Nodes.Count>0) { IProject project = null;
// return treeView.Nodes[0] as SolutionNode; if (!SD.ProjectService.IsSolutionOrProjectFile(fileName)) {
// } project = SD.ProjectService.FindProjectContainingFile(fileName);
// return null; }
// } 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) void SelectDeepestOpenNodeForPath(string fileName)
{ {
TreeNode node = FindDeepestOpenNodeForPath(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
this.solution = item.ParentSolution; this.solution = item.ParentSolution;
this.item = item; this.item = item;
this.Text = Path.GetFileName(FileName); this.Text = Path.GetFileName(FileName);
this.Tag = item;
SetIcon(IconService.GetImageForFile(FileName)); SetIcon(IconService.GetImageForFile(FileName));
} }

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

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

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

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

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

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

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

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

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

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

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

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