Browse Source

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

Conflicts:
	src/Main/Base/Project/Dom/ClassBrowser/WorkspaceModel.cs
	src/Main/Base/Project/Dom/IAssemblyModel.cs
newNRILSpyDebugger
Siegfried Pammer 12 years ago
parent
commit
983ee4df54
  1. 255
      data/resources/StringResources.de.resx
  2. 6
      data/resources/StringResources.es-mx.resx
  3. 6
      data/resources/StringResources.es.resx
  4. 6
      data/resources/StringResources.fr.resx
  5. 6
      data/resources/StringResources.it.resx
  6. 30
      data/resources/StringResources.nl.resx
  7. 40
      data/resources/StringResources.resx
  8. 6
      data/resources/StringResources.tr.resx
  9. 9
      samples/XamlDesigner/Document.cs
  10. 7
      samples/XamlDesigner/MainWindow.xaml
  11. 49
      samples/XamlDesigner/MyTypeFinder.cs
  12. 103
      samples/XamlDesigner/Toolbox.cs
  13. 13
      samples/XamlDesigner/ToolboxView.xaml
  14. 17
      samples/XamlDesigner/ToolboxView.xaml.cs
  15. 1
      samples/XamlDesigner/XamlDesigner.csproj
  16. 12
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml.cs
  17. 12
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs
  18. 10
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs
  19. 12
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.xaml.cs
  20. 12
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProjectOptionsPanel.xaml.cs
  21. 4
      src/AddIns/Analysis/CodeQuality/Gui/Commands/AnalyzeCodeQualityCommand.cs
  22. 5
      src/AddIns/Analysis/CodeQuality/Properties/AssemblyInfo.cs
  23. 11
      src/AddIns/Analysis/CodeQuality/Reporting/BaseReport.cs
  24. 11
      src/AddIns/Analysis/CodeQuality/Reporting/DependencyReport.cs
  25. 11
      src/AddIns/Analysis/CodeQuality/Reporting/OverviewReport.cs
  26. 11
      src/AddIns/Analysis/CodeQuality/Reporting/ReportViewModel.cs
  27. 4
      src/AddIns/Analysis/MachineSpecifications/MachineSpecifications.Tests/Properties/AssemblyInfo.cs
  28. 2
      src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestFramework.cs
  29. 3
      src/AddIns/Analysis/Profiler/Frontend/AddIn/Src/ProfilerProcessRunner.cs
  30. 12
      src/AddIns/Analysis/SourceAnalysis/Src/AnalysisIdeOptionsPanel.xaml.cs
  31. 12
      src/AddIns/Analysis/SourceAnalysis/Src/AnalysisOptionsPanel.xaml.cs
  32. 3
      src/AddIns/Analysis/UnitTesting/Interfaces/IUnitTestTaskService.cs
  33. 3
      src/AddIns/Analysis/UnitTesting/Interfaces/UnitTestTaskService.cs
  34. 3
      src/AddIns/Analysis/UnitTesting/Service/ITestService.cs
  35. 3
      src/AddIns/Analysis/UnitTesting/Service/SDTestService.cs
  36. 11
      src/AddIns/Analysis/UnitTesting/Test/Project/DoubleNestedTestClassWithBaseType.cs
  37. 6
      src/AddIns/Analysis/UnitTesting/TestRunner/TestExecutionManager.cs
  38. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd
  39. 5
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs
  40. 12
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml.cs
  41. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpSymbolSearch.cs
  42. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CreatePropertiesDialog.xaml.cs
  43. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideEqualsGetHashCodeMethodsDialog.xaml.cs
  44. 12
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/LinkerOptions.xaml.cs
  45. 12
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/PreprocessorOptions.xaml.cs
  46. 5
      src/AddIns/BackendBindings/JavaScriptBinding/Project/Src/ES3/ES3Lexer.Action.cs
  47. 5
      src/AddIns/BackendBindings/JavaScriptBinding/Project/Src/ES3/ES3Parser.Action.cs
  48. 7
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Parsing/PythonParserParsePropertyTests.cs
  49. 18
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/NodeWrapper.cs
  50. 1
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj
  51. 83
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlOutlineContentHost.xaml.cs
  52. 8
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlOutlineNode.cs
  53. 9
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlUnresolvedFile.cs
  54. 2
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
  55. 2
      src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptionsPanel.xaml
  56. 142
      src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs
  57. 2
      src/AddIns/Debugger/Debugger.Core/Eval.cs
  58. 1
      src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs
  59. 2
      src/AddIns/Debugger/Debugger.Core/Options.cs
  60. 12
      src/AddIns/Debugger/Debugger.Core/Process.cs
  61. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
  62. 8
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs
  63. 10
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  64. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs
  65. 14
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs
  66. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs
  67. 6
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs
  68. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs
  69. 12
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DocumentPrinter.cs
  70. 5
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/UserControls/WizardErrorUserControl.cs
  71. 5
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/EDMObjects/Designer/ChangeWatcher/EDMDesignerChangeWatcher.cs
  72. 5
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/EDMObjects/Designer/ChangeWatcher/IEDMDesignerChangeWatcherObserver.cs
  73. 5
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/EntityModelCodeGenerator.cs
  74. 4
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/ObjectModelConverters/ObjectModelConverterException.cs
  75. 12
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/GeneralOptionsPanel.xaml.cs
  76. 13
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/GridOptionsPanel.xaml.cs
  77. 13
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/LocalizationModelOptionsPanel.xaml.cs
  78. 11
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesComponentCodeDomSerializer.cs
  79. 10
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs
  80. 23
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/SharpDevelopTranslations.cs
  81. 53
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/ThumbnailViewPad.cs
  82. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs
  83. 50
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfToolbox.cs
  84. 20
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
  85. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj
  86. 19
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.addin
  87. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Configuration/AssemblyInfo.cs
  88. 218
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs
  89. 85
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ClearableTextBox.cs
  90. 26
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ContainerDragHandle.cs
  91. 321
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml
  92. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GrayOutDesignerExceptActiveArea.cs
  93. 101
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/InfoTextEnterArea.cs
  94. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/MarginHandle.cs
  95. 28
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PanelMoveAdorner.cs
  96. 227
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/QuickOperationMenu.cs
  97. 28
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/RenderTransformOriginThumb.cs
  98. 38
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/RotateThumb.cs
  99. 12
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ZoomControl.cs
  100. 113
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Converters.cs
  101. Some files were not shown because too many files have changed in this diff Show More

255
data/resources/StringResources.de.resx

@ -229,6 +229,152 @@ Laden Sie ein AddIn aus dem Internet herunter, klicken Sie auf "AddIn installier @@ -229,6 +229,152 @@ Laden Sie ein AddIn aus dem Internet herunter, klicken Sie auf "AddIn installier
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Unbekanntes Dateiformat:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Aus Archiv installieren...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repository:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Suche:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Vorinstallierte AddIns anzeigen</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Prereleases anzeigen</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Sie können den AddInManager nicht deinstallieren. Er wird für die Wiederinstallation von AddIns benötigt!</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>SharpDevelop AddIn Repository</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Erstellt von:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Abhängigkeiten:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Downloads:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Dateiname:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Installierte Version:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Zuletzt aktualisiert:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Weitere Informationen</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Neue Version:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Bewertung:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Missbrauch melden</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Version:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Lizenzvereinbarungen anzeigen</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Folgende installierte AddIns hängen von "{0}" ab:
{1}
Sie werden nicht mehr funktionieren nachdem dieses AddIn deaktiviert wurde! Sind Sie sicher, dass Sie fortfahren möchten?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Das Paket "{0}" benötigt noch mindestens ein zusätzliches Paket:
{1}
Die Anwendung wird versuchen diese auch herunterzuladen und zu installieren. Wollen Sie fortfahren?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>Das gewählte Paket enthält kein gültiges SharpDevelop AddIn.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>&amp;Akzeptieren</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>A&amp;blehnen</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Package" xml:space="preserve">
<value>Mit einem Klick auf "Akzeptieren" stimmen Sie den Lizenzbedingungen des oben angegebenen Paketes zu.
Wenn Sie den Lizenzbedingungen nicht zustimmen, klicken Sie auf "Ablehnen".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>Mit einem Klick auf "Akzeptieren" stimmen Sie den Lizenzbedingungen der oben angegebenen Pakete zu.
Wenn Sie den Lizenzbedingungen nicht zustimmen, klicken Sie auf "Ablehnen".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Das folgende Paket hat eine Klicken-um-zu-akzeptieren-Lizenz:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Packages" xml:space="preserve">
<value>Die folgenden Pakete haben eine Klicken-um-zu-akzeptieren-Lizenz:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Lizenzvereinbarungen</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Hinzufügen</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Nach unten</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Nach oben</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Name:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Entfernen</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Quelle:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Quellen</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Folgende installierte AddIns hängen von "{0}" ab:
{1}
Sie werden nicht mehr funktionieren, nachdem dieses AddIn entfernt wurde! Sind Sie sicher, dass Sie fortfahren möchten?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop AddIns|*.sdaddin;*.addin|Alle Dateien|*.*</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleText" xml:space="preserve">
<value>Klicken Sie hier um die Updates zu sehen.</value>
</data>
<data name="AddInManager2.UpdateNotifier.BubbleTitle" xml:space="preserve">
<value>Updates für SharpDevelop sind verfügbar</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Verfügbar</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Installiert</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Diese Datei enthält inkonsistente Zeilenenden.</value>
</data>
@ -1504,9 +1650,18 @@ Beispiele: "120", "MainClass", "Main.cs, 120".</value> @@ -1504,9 +1650,18 @@ Beispiele: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.HighlightingEditor.Import" xml:space="preserve">
<value>Hervorhebungsfarben importieren</value>
</data>
<data name="Dialog.HighlightingEditor.NotSupportedMessage" xml:space="preserve">
<value>Diese Version der Einstellungen wird nicht unterstützt!</value>
</data>
<data name="Dialog.HighlightingEditor.OverwriteCustomizationsMessage" xml:space="preserve">
<value>Hiermit werden alle benutzerdefinierten Farben zurückgesetzt und die gewählten Einstellungen importiert. Wollen Sie fortfahren?</value>
</data>
<data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve">
<value>Wert</value>
</data>
<data name="Dialog.HighlightingEditor.ResetAll" xml:space="preserve">
<value>Alle auf Standard zurücksetzen</value>
</data>
<data name="Dialog.HighlightingEditor.SampleText" xml:space="preserve">
<value>Beispieltext</value>
</data>
@ -1800,7 +1955,7 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value> @@ -1800,7 +1955,7 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<value>Code-Completion Detail-Einstellungen</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.LanguageDependend" xml:space="preserve">
<value>Die folgenden Einstellungen sind sprach-abhängig; einige sind nicht in allen Programmiersprachen verfügbar.</value>
<value>Die folgenden Einstellungen sind sprachabhängig; einige sind nicht in allen Programmiersprachen verfügbar.</value>
</data>
<data name="Dialog.Options.IDEOptions.CodeCompletion.MainOption" xml:space="preserve">
<value>Mit der folgenden Einstellung kann Code Completion komplett deaktiviert werden:</value>
@ -1862,6 +2017,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value> @@ -1862,6 +2017,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve">
<value>Debugger</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableDecompiler" xml:space="preserve">
<value>Decompiler aktivieren</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableEditAndContinue" xml:space="preserve">
<value>Bearbeiten und Fortfahren (EnC) aktivieren</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Exceptions" xml:space="preserve">
<value>Ausnahmen</value>
</data>
@ -1892,6 +2053,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value> @@ -1892,6 +2053,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.StepOverSingleLineProperties" xml:space="preserve">
<value>Über einzeilige Properties springen</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressJITOptimization" xml:space="preserve">
<value>JIT-Optimierung unterdrücken</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressNGENOptimization" xml:space="preserve">
<value>NGEN-Optimierung unterdrücken</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Symbols" xml:space="preserve">
<value>Symbole</value>
</data>
@ -2351,6 +2518,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value> @@ -2351,6 +2518,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any" xml:space="preserve">
<value>Jeder Prozessor</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any32" xml:space="preserve">
<value>Beliebige CPU (32-bit bevorzugt)</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any64" xml:space="preserve">
<value>Beliebige CPU (64-bit bevorzugt)</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Itanium" xml:space="preserve">
<value>Intel 64-bit Itanium Prozessor</value>
</data>
@ -2496,7 +2669,7 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value> @@ -2496,7 +2669,7 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<value>Referenzpfade</value>
</data>
<data name="Dialog.ProjectOptions.ReferencePaths.AddPath" xml:space="preserve">
<value>Pfad hinzufügem</value>
<value>Pfad hinzufügen</value>
</data>
<data name="Dialog.ProjectOptions.RunPostBuildEvent.Always" xml:space="preserve">
<value>Immer</value>
@ -2711,6 +2884,9 @@ Sie können die Einstellungen auch in einer .user-Datei anstelle der Projektdate @@ -2711,6 +2884,9 @@ Sie können die Einstellungen auch in einer .user-Datei anstelle der Projektdate
<data name="Global.AddButtonText" xml:space="preserve">
<value>Hin&amp;zufügen</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Fortgeschritten</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Zurück</value>
</data>
@ -3571,6 +3747,12 @@ wurde außerhalb der Applikation geändert. Wollen Sie die Datei neu laden?</val @@ -3571,6 +3747,12 @@ wurde außerhalb der Applikation geändert. Wollen Sie die Datei neu laden?</val
<data name="ICSharpCode.SharpDevelop.DefaultEditor.IncrementalSearch.ReverseSearchStatusBarMessage" xml:space="preserve">
<value>Inkrementelle Suche (rückwärts):</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyInvalid" xml:space="preserve">
<value>{0} ist keine gültige .NET Assembly.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyNotAccessible" xml:space="preserve">
<value>Auf {0} kann nicht zugegriffen werden oder es existiert nicht mehr.</value>
</data>
<data name="ICSharpCode.SharpDevelop.ErrorLoadingCodeCompletionInformation" xml:space="preserve">
<value>Fehler beim Laden der Code-Completion-Informationen für ${Assembly} aus ${Filename}:</value>
</data>
@ -4448,6 +4630,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4448,6 +4630,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework-Erweiterung</value>
</data>
<data name="ICSharpCode.WixBinding.WixNotInstalled" xml:space="preserve">
<value>WiX ist nicht installiert. Bitte laden Sie WiX von http://wixtoolset.org/ herunter.</value>
</data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>Keine Unterschiede gefunden.</value>
</data>
@ -4469,6 +4654,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4469,6 +4654,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve">
<value>Visual Studio-Erweiterung</value>
</data>
<data name="ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad" xml:space="preserve">
<value>WPF Designer Miniaturansicht</value>
</data>
<data name="ICSharpCode.WPFDesigner.ContextMenu.Copy" xml:space="preserve">
<value>Kopieren</value>
</data>
@ -4769,6 +4957,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4769,6 +4957,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Lesezeichen</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.AddToWorkspace" xml:space="preserve">
<value>Zum Arbeitsbereich hinzufügen</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Zurück</value>
</data>
@ -4808,9 +4999,21 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4808,9 +4999,21 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve">
<value>Keine Suchergebnisse gefunden.</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyButton.ToolTip" xml:space="preserve">
<value>Assembly öffnen</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromFile" xml:space="preserve">
<value>Assembly aus Datei öffnen...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromGAC" xml:space="preserve">
<value>Assembly aus GAC öffnen...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.SearchButton.ToolTip" xml:space="preserve">
<value>Suche nach Klassenname</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.Workspace" xml:space="preserve">
<value>Arbeitsbereich {0}</value>
</data>
<data name="MainWindow.Windows.ClassScoutLabel" xml:space="preserve">
<value>Klassen</value>
</data>
@ -4895,6 +5098,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4895,6 +5098,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Conditional.Breakpoints.DisableBreakpoint" xml:space="preserve">
<value>Haltepunkt deaktivieren</value>
</data>
<data name="MainWindow.Windows.Debug.Conditional.Breakpoints.EditCondition" xml:space="preserve">
<value>Bedingung bearbeiten...</value>
</data>
<data name="MainWindow.Windows.Debug.Conditional.Breakpoints.EnableBreakpoint" xml:space="preserve">
<value>Haltepunkt aktivieren</value>
</data>
@ -5273,6 +5479,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5273,6 +5479,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.In" xml:space="preserve">
<value>in</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.NoProject" xml:space="preserve">
<value>&lt;Kein Projekt&gt;</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.OccurrencesCount" xml:space="preserve">
<value>${Count} Ergebnisse</value>
</data>
@ -5288,6 +5497,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5288,6 +5497,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.SearchResultPanel.PerFile" xml:space="preserve">
<value>Pro Datei</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProject" xml:space="preserve">
<value>Pro Projekt</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProjectAndFile" xml:space="preserve">
<value>Pro Projekt und Datei</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.SelectViewMode.ToolTip" xml:space="preserve">
<value>Wähle Darstellungsmodus</value>
</data>
@ -5408,6 +5623,21 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5408,6 +5623,21 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="PortableLibrary.CouldNotFindTools" xml:space="preserve">
<value>Konnte die Portable Class Library Tools nicht finden.</value>
</data>
<data name="PortableLibrary.PortableSubset" xml:space="preserve">
<value>.NET Portable Teilmenge</value>
</data>
<data name="PortableLibrary.SelectAtLeastTwoFrameworks" xml:space="preserve">
<value>Zwei oder mehr Frameworks müssen gewählt werden.</value>
</data>
<data name="PortableLibrary.SelectedProfile" xml:space="preserve">
<value>Ausgewähltes Profil:</value>
</data>
<data name="PortableLibrary.SelectProfileDialog.Title" xml:space="preserve">
<value>Profil für portable Bibliothek auswählen</value>
</data>
<data name="PortableLibrary.ToolsInstallationHelp" xml:space="preserve">
<value>Um die Portable Class Library Tools ohne Visual Studio zu installieren, laden Sie die Datei (PortableLibraryTools.exe) auf Ihren Computer herunter und führen das Installationsprogramm von der Kommandozeile aus. Geben Sie zusätzlich den /buildmachine Schalter auf der Kommandozeile an.</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Alle Knoten einklappen</value>
</data>
@ -5708,6 +5938,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5708,6 +5938,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve">
<value>Ressourcen-Codegenerator: Es konnte keine Ressourcen-Eigenschaft für die Ressource '{0}' erzeugt werden.</value>
</data>
<data name="ResourceEditor.ResourceEdit.CommentColumn" xml:space="preserve">
<value>Kommentar</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve">
<value>Inhalt</value>
</data>
@ -5720,6 +5953,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5720,6 +5953,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ResourceEditor.ResourceEdit.ContextMenu.CopyResourceName" xml:space="preserve">
<value>Kopiere Resourcenname</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditComment" xml:space="preserve">
<value>Kommentar bearbeiten</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.EditCommentText" xml:space="preserve">
<value>Einen neuen Text für den Ressourcen-Kommentar eingeben:</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContextMenu.Rename" xml:space="preserve">
<value>&amp;Umbenennen</value>
</data>
@ -5736,6 +5975,9 @@ Bitte einen anderen verwenden.</value> @@ -5736,6 +5975,9 @@ Bitte einen anderen verwenden.</value>
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>Alle Dateien (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>Alle bekannten Dateierweiterungen</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Assemblydateien (*.exe;*.dll)</value>
</data>
@ -5919,6 +6161,9 @@ Bitte einen anderen verwenden.</value> @@ -5919,6 +6161,9 @@ Bitte einen anderen verwenden.</value>
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>Überschreibunden von ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.PartsOfClass" xml:space="preserve">
<value>Teile von ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>Referenzen auf ${Name}</value>
</data>
@ -6684,6 +6929,12 @@ SharpDevelop 2 kompiliert Ressourcendateien anders: der Ressourcenname ist nicht @@ -6684,6 +6929,12 @@ SharpDevelop 2 kompiliert Ressourcendateien anders: der Ressourcenname ist nicht
<data name="Templates.Project.GtkSharpProject.Name" xml:space="preserve">
<value>Gtk#-Anwendung</value>
</data>
<data name="Templates.Project.PortableLibrary.Description" xml:space="preserve">
<value>Bibliothek, die auf Windows, Silverlight, Windows Phone und Xbox verwendet werden kann.</value>
</data>
<data name="Templates.Project.PortableLibrary.Name" xml:space="preserve">
<value>Portable Klassenbibliothek</value>
</data>
<data name="Templates.Project.PRISMApplicationSmallUnity.Description" xml:space="preserve">
<value>Erstellt eine einfache PRISM-Anwendung mit Bootstrapper und Infrastruktur.</value>
</data>

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

@ -2733,15 +2733,15 @@ También puede elegir guardar la opción en el archivo .user en lugar de en el a @@ -2733,15 +2733,15 @@ También puede elegir guardar la opción en el archivo .user en lugar de en el a
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Código</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Avanzado</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Abortar</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Agregar</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avanzado</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Atrás</value>
</data>

6
data/resources/StringResources.es.resx

@ -2783,15 +2783,15 @@ También puede escoger almacenar el parámetro de configuración en el archivo . @@ -2783,15 +2783,15 @@ También puede escoger almacenar el parámetro de configuración en el archivo .
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Fuente</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Avanzado</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Abortar</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Agregar</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avanzado</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Atrás</value>
</data>

6
data/resources/StringResources.fr.resx

@ -2870,15 +2870,15 @@ Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file @@ -2870,15 +2870,15 @@ Vous pouvez aussi choisir de stocker la configuration dans le fichier .user-file
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Source</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Avancé</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Stopper</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Ajouter</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avancé</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Retour</value>
</data>

6
data/resources/StringResources.it.resx

@ -2791,15 +2791,15 @@ Puoi anche scegliere di memorizzare le impostazioni in un file .user invece che @@ -2791,15 +2791,15 @@ Puoi anche scegliere di memorizzare le impostazioni in un file .user invece che
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Sorgente</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Avanzate</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Annulla</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Aggiungi</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Avanzate</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Indietro</value>
</data>

30
data/resources/StringResources.nl.resx

@ -2879,15 +2879,15 @@ Er kan worden gekozen voor opslag van de instellingen in het .user bestand inpla @@ -2879,15 +2879,15 @@ Er kan worden gekozen voor opslag van de instellingen in het .user bestand inpla
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Bron</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Uitgebreid</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Afbreken</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Toevoegen</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Uitgebreid</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Terug</value>
</data>
@ -3740,6 +3740,12 @@ Noot: Dit beïnvloed eigen aangepaste opmaak niet.</value> @@ -3740,6 +3740,12 @@ Noot: Dit beïnvloed eigen aangepaste opmaak niet.</value>
<data name="ICSharpCode.SharpDevelop.DefaultEditor.IncrementalSearch.ReverseSearchStatusBarMessage" xml:space="preserve">
<value>Omgekeerd aanvullend zoeken:</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyInvalid" xml:space="preserve">
<value>{0} is ongeldig als .NET assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Dom.AssemblyNotAccessible" xml:space="preserve">
<value>{0} is niet toegankelijk of bestaat niet meer.</value>
</data>
<data name="ICSharpCode.SharpDevelop.ErrorLoadingCodeCompletionInformation" xml:space="preserve">
<value>Fout bij laden van code-completering informatie voor ${Assembly} van ${Filename}:</value>
</data>
@ -4638,6 +4644,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -4638,6 +4644,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve">
<value>Visual Studio extensie</value>
</data>
<data name="ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad" xml:space="preserve">
<value>WPF ontwerper thumbnail overzicht</value>
</data>
<data name="ICSharpCode.WPFDesigner.ContextMenu.Copy" xml:space="preserve">
<value>Kopieëren</value>
</data>
@ -4938,6 +4947,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -4938,6 +4947,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Bladwijzers</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.AddToWorkspace" xml:space="preserve">
<value>Toevoegen aan werkruimte</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Vorige</value>
</data>
@ -4977,9 +4989,21 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -4977,9 +4989,21 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve">
<value>Géén zoekresultaten gevonden.</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyButton.ToolTip" xml:space="preserve">
<value>Open assembly...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromFile" xml:space="preserve">
<value>Open assembly vanuit bestand...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromGAC" xml:space="preserve">
<value>Assembly openen vanuit GAK...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.SearchButton.ToolTip" xml:space="preserve">
<value>Zoeken in Klassen Overzicht</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.Workspace" xml:space="preserve">
<value>Werkruimte {0}</value>
</data>
<data name="MainWindow.Windows.ClassScoutLabel" xml:space="preserve">
<value>Klassen Overzicht</value>
</data>

40
data/resources/StringResources.resx

@ -287,7 +287,7 @@ Download an AddIn from the Internet, then click 'Install AddIn' and choose the d @@ -287,7 +287,7 @@ Download an AddIn from the Internet, then click 'Install AddIn' and choose the d
<value>View License Terms</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Following installed AddIns are dependent from "{0}":
<value>Following installed AddIns are depending on "{0}":
{1}
@ -351,7 +351,7 @@ If you do not agree to the license terms click "I Decline".</value> @@ -351,7 +351,7 @@ If you do not agree to the license terms click "I Decline".</value>
<value>Repositories</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Following installed AddIns are dependent from "{0}":
<value>Following installed AddIns are depending on "{0}":
{1}
@ -2958,15 +2958,15 @@ You can also choose to store the setting in the .user-file instead of the projec @@ -2958,15 +2958,15 @@ You can also choose to store the setting in the .user-file instead of the projec
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Source</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Advanced</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Abort</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>&amp;Add</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Advanced</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Back</value>
</data>
@ -4891,6 +4891,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -4891,6 +4891,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="ICSharpCode.WixBinding.WixVisualStudioExtensionTitle" xml:space="preserve">
<value>Visual Studio Extension</value>
</data>
<data name="ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad" xml:space="preserve">
<value>WPF Designer Thumbnail View</value>
</data>
<data name="ICSharpCode.WPFDesigner.ContextMenu.Copy" xml:space="preserve">
<value>Copy</value>
</data>
@ -5222,6 +5225,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -5222,6 +5225,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Bookmarks</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.AddToWorkspace" xml:space="preserve">
<value>Add to workspace</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Back</value>
</data>
@ -5261,9 +5267,21 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -5261,9 +5267,21 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="MainWindow.Windows.ClassBrowser.NoResultsFound" xml:space="preserve">
<value>No search results found.</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyButton.ToolTip" xml:space="preserve">
<value>Open assembly</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromFile" xml:space="preserve">
<value>Open assembly from file...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.OpenAssemblyFromGAC" xml:space="preserve">
<value>Open assembly from GAC...</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.SearchButton.ToolTip" xml:space="preserve">
<value>Class View Search</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.Workspace" xml:space="preserve">
<value>Workspace {0}</value>
</data>
<data name="MainWindow.Windows.ClassScoutLabel" xml:space="preserve">
<value>Classes</value>
</data>
@ -5760,6 +5778,9 @@ Shows the full callstack of the error.</comment> @@ -5760,6 +5778,9 @@ Shows the full callstack of the error.</comment>
<value>in</value>
<comment>used like this: occurrences IN files</comment>
</data>
<data name="MainWindow.Windows.SearchResultPanel.NoProject" xml:space="preserve">
<value>&lt;no project&gt;</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.OccurrencesCount" xml:space="preserve">
<value>${Count} occurrences</value>
</data>
@ -5775,6 +5796,12 @@ Shows the full callstack of the error.</comment> @@ -5775,6 +5796,12 @@ Shows the full callstack of the error.</comment>
<data name="MainWindow.Windows.SearchResultPanel.PerFile" xml:space="preserve">
<value>Per file</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProject" xml:space="preserve">
<value>Per project</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.PerProjectAndFile" xml:space="preserve">
<value>Per project and file</value>
</data>
<data name="MainWindow.Windows.SearchResultPanel.SelectViewMode.ToolTip" xml:space="preserve">
<value>Select search list mode</value>
</data>
@ -6466,6 +6493,9 @@ Removed the end part of the original message ", reason '${Message}'" since this @@ -6466,6 +6493,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="SharpDevelop.Refactoring.OverridesOf" xml:space="preserve">
<value>Overrides of ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.PartsOfClass" xml:space="preserve">
<value>Parts of ${Name}</value>
</data>
<data name="SharpDevelop.Refactoring.ReferencesTo" xml:space="preserve">
<value>References to ${Name}</value>
<comment>Title for search results for references</comment>

6
data/resources/StringResources.tr.resx

@ -2732,15 +2732,15 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind @@ -2732,15 +2732,15 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Kaynak</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Gelişmiş</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Başarısız</value>
</data>
<data name="Global.AddButtonText" xml:space="preserve">
<value>Ekle</value>
</data>
<data name="Global.Advanced" xml:space="preserve">
<value>Gelişmiş</value>
</data>
<data name="Global.BackButtonText" xml:space="preserve">
<value>&lt; Geri</value>
</data>

9
samples/XamlDesigner/Document.cs

@ -206,7 +206,14 @@ namespace ICSharpCode.XamlDesigner @@ -206,7 +206,14 @@ namespace ICSharpCode.XamlDesigner
{
OutlineRoot = null;
using (var xmlReader = XmlReader.Create(new StringReader(Text))) {
DesignSurface.LoadDesigner(xmlReader, null);
XamlLoadSettings settings = new XamlLoadSettings();
foreach (var assNode in Toolbox.Instance.AssemblyNodes)
{
settings.DesignerAssemblies.Add(assNode.Assembly);
}
settings.TypeFinder = MyTypeFinder.Instance;
DesignSurface.LoadDesigner(xmlReader, settings);
}
if (DesignContext.RootItem != null) {
OutlineRoot = OutlineNode.Create(DesignContext.RootItem);

7
samples/XamlDesigner/MainWindow.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<Window x:Class="ICSharpCode.XamlDesigner.MainWindow"
<Window x:Class="ICSharpCode.XamlDesigner.MainWindow"
x:Name="root"
xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
@ -112,6 +112,11 @@ @@ -112,6 +112,11 @@
</AvalonDock:DockableContent>
</AvalonDock:DockablePane>
<AvalonDock:DockablePane>
<AvalonDock:DockableContent x:Name="content5" Title="Thumbnail">
<sd:ThumbnailView x:Name="uxThumbnailView" DesignSurface="{Binding DataContext.CurrentDocument.DesignSurface, ElementName=root, FallbackValue={x:Null}}" />
</AvalonDock:DockableContent>
</AvalonDock:DockablePane>
</AvalonDock:ResizingPanel>
</AvalonDock:DockingManager>
</DockPanel>

49
samples/XamlDesigner/MyTypeFinder.cs

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.XamlDesigner
{
public class MyTypeFinder : XamlTypeFinder
{
public override Assembly LoadAssembly(string name)
{
foreach (var assemblyNode in Toolbox.Instance.AssemblyNodes)
{
if (assemblyNode.Name == name)
return assemblyNode.Assembly;
}
return null;
}
public override XamlTypeFinder Clone()
{
return _instance;
}
private static object lockObj = new object();
private static MyTypeFinder _instance;
public static MyTypeFinder Instance
{
get
{
lock (lockObj)
{
if (_instance == null)
{
_instance = new MyTypeFinder();
_instance.ImportFrom(CreateWpfTypeFinder());
}
}
return _instance;
}
}
}
}

103
samples/XamlDesigner/Toolbox.cs

@ -14,45 +14,47 @@ namespace ICSharpCode.XamlDesigner @@ -14,45 +14,47 @@ namespace ICSharpCode.XamlDesigner
public class Toolbox
{
public Toolbox()
{
AssemblyNodes = new ObservableCollection<AssemblyNode>();
{
AssemblyNodes = new ObservableCollection<AssemblyNode>();
LoadSettings();
}
}
public static Toolbox Instance = new Toolbox();
public ObservableCollection<AssemblyNode> AssemblyNodes { get; private set; }
public ObservableCollection<AssemblyNode> AssemblyNodes { get; private set; }
public void AddAssembly(string path)
{
{
AddAssembly(path, true);
}
void AddAssembly(string path, bool updateSettings)
{
var assembly = Assembly.LoadFile(path);
var node = new AssemblyNode();
node.Assembly = assembly;
node.Path = path;
foreach (var t in assembly.GetExportedTypes()) {
if (IsControl(t) && Metadata.IsPopularControl(t)) {
node.Controls.Add(new ControlNode() { Type = t });
}
}
void AddAssembly(string path, bool updateSettings)
{
var assembly = Assembly.LoadFile(path);
MyTypeFinder.Instance.RegisterAssembly(assembly);
var node = new AssemblyNode();
node.Assembly = assembly;
node.Path = path;
foreach (var t in assembly.GetExportedTypes()) {
if (IsControl(t) /* && Metadata.IsPopularControl(t) */) {
node.Controls.Add(new ControlNode() { Type = t });
}
}
node.Controls.Sort(delegate(ControlNode c1, ControlNode c2) {
return c1.Name.CompareTo(c2.Name);
});
node.Controls.Sort(delegate(ControlNode c1, ControlNode c2) {
return c1.Name.CompareTo(c2.Name);
});
AssemblyNodes.Add(node);
AssemblyNodes.Add(node);
if (updateSettings) {
if (Settings.Default.AssemblyList == null) {
Settings.Default.AssemblyList = new StringCollection();
}
}
Settings.Default.AssemblyList.Add(path);
}
}
}
public void Remove(AssemblyNode node)
{
@ -61,42 +63,47 @@ namespace ICSharpCode.XamlDesigner @@ -61,42 +63,47 @@ namespace ICSharpCode.XamlDesigner
}
public void LoadSettings()
{
{
if (Settings.Default.AssemblyList != null) {
foreach (var path in Settings.Default.AssemblyList) {
AddAssembly(Environment.ExpandEnvironmentVariables(path), false);
try
{
AddAssembly(Environment.ExpandEnvironmentVariables(path), false);
}
catch (Exception ex)
{ }
}
}
}
static bool IsControl(Type t)
{
return !t.IsAbstract && !t.IsGenericTypeDefinition && t.IsSubclassOf(typeof(FrameworkElement));
}
static bool IsControl(Type t)
{
return !t.IsAbstract && !t.IsGenericTypeDefinition && t.IsSubclassOf(typeof(FrameworkElement));
}
}
public class AssemblyNode
{
public AssemblyNode()
{
Controls = new List<ControlNode>();
}
{
public AssemblyNode()
{
Controls = new List<ControlNode>();
}
public Assembly Assembly { get; set; }
public List<ControlNode> Controls { get; private set; }
public string Path { get; set; }
public Assembly Assembly { get; set; }
public List<ControlNode> Controls { get; private set; }
public string Path { get; set; }
public string Name {
get { return Assembly.GetName().Name; }
}
}
public string Name {
get { return Assembly.GetName().Name; }
}
}
public class ControlNode
{
public Type Type { get; set; }
public class ControlNode
{
public Type Type { get; set; }
public string Name {
get { return Type.Name; }
}
}
public string Name {
get { return Type.Name; }
}
}
}

13
samples/XamlDesigner/ToolboxView.xaml

@ -3,18 +3,23 @@ @@ -3,18 +3,23 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Outline="clr-namespace:ICSharpCode.WpfDesign.Designer.OutlineView;assembly=ICSharpCode.WpfDesign.Designer"
xmlns:Default="clr-namespace:ICSharpCode.XamlDesigner">
<UserControl.ContextMenu>
<ContextMenu>
<MenuItem Header="Browse..." Click="BrowseForAssemblies_OnClick"></MenuItem>
</ContextMenu>
</UserControl.ContextMenu>
<UserControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type Default:AssemblyNode}"
ItemsSource="{Binding Controls}">
ItemsSource="{Binding Controls}">
<Outline:IconItem Icon="Images/Reference.png"
Text="{Binding Name}"
ToolTip="{Binding Path}" />
Text="{Binding Name}"
ToolTip="{Binding Path}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Default:ControlNode}">
<Outline:IconItem Icon="Images/Tag.png"
Text="{Binding Type.Name}" />
Text="{Binding Type.Name}" />
</DataTemplate>
</UserControl.Resources>

17
samples/XamlDesigner/ToolboxView.xaml.cs

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
using System.IO;
using ICSharpCode.WpfDesign.Designer.OutlineView;
using System;
using System.Collections.Generic;
@ -16,6 +17,7 @@ using System.Windows.Media.Imaging; @@ -16,6 +17,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ICSharpCode.WpfDesign.Designer.Services;
using Microsoft.Win32;
namespace ICSharpCode.XamlDesigner
{
@ -73,5 +75,20 @@ namespace ICSharpCode.XamlDesigner @@ -73,5 +75,20 @@ namespace ICSharpCode.XamlDesigner
Toolbox.Instance.Remove(node);
}
}
private void BrowseForAssemblies_OnClick(object sender, RoutedEventArgs e)
{
var dlg = new OpenFileDialog();
dlg.Filter = "Assemblies (*.dll)|*.dll";
dlg.Multiselect = true;
dlg.CheckFileExists = true;
if (dlg.ShowDialog().Value)
{
foreach (var fileName in dlg.FileNames)
{
Toolbox.Instance.AddAssembly(fileName);
}
}
}
}
}

1
samples/XamlDesigner/XamlDesigner.csproj

@ -129,6 +129,7 @@ @@ -129,6 +129,7 @@
</Compile>
<Compile Include="ExtensionMethods.cs" />
<Compile Include="MainWindow_Commands.cs" />
<Compile Include="MyTypeFinder.cs" />
<Compile Include="Shell.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>

12
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 19.07.2012
* Time: 21:27
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.Core;
@ -53,4 +49,4 @@ namespace ICSharpCode.CodeAnalysis @@ -53,4 +49,4 @@ namespace ICSharpCode.CodeAnalysis
set { PropertyService.Set("CodeAnalysis.FxCopPath", value); }
}
}
}
}

12
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 06/09/2012
* Time: 18:27
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Text;
@ -288,4 +284,4 @@ namespace ICSharpCode.CodeAnalysis @@ -288,4 +284,4 @@ namespace ICSharpCode.CodeAnalysis
#endregion
}
}
}

10
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 30.06.2012
* Time: 20:55
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using System.Drawing;

12
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 09.06.2012
* Time: 17:03
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -108,4 +104,4 @@ namespace ICSharpCode.CodeCoverage @@ -108,4 +104,4 @@ namespace ICSharpCode.CodeCoverage
public ObservableCollection<CodeCoverageDisplayItem> DisplayItems {get; private set;}
}
}
}

12
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProjectOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 09.06.2012
* Time: 15:01
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Specialized;
using System.IO;
@ -86,4 +82,4 @@ namespace ICSharpCode.CodeCoverage @@ -86,4 +82,4 @@ namespace ICSharpCode.CodeCoverage
IsDirty = true;
}
}
}
}

4
src/AddIns/Analysis/CodeQuality/Gui/Commands/AnalyzeCodeQualityCommand.cs

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.CodeQuality.Gui
{
@ -11,7 +11,7 @@ namespace ICSharpCode.CodeQuality.Gui @@ -11,7 +11,7 @@ namespace ICSharpCode.CodeQuality.Gui
{
public override void Run()
{
WorkbenchSingleton.Workbench.ShowView(new AnalyzeCodeQualityViewContent());
SD.Workbench.ShowView(new AnalyzeCodeQualityViewContent());
}
}
}

5
src/AddIns/Analysis/CodeQuality/Properties/AssemblyInfo.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
#region Using directives
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
#region Using directives
using System;
using System.Reflection;

11
src/AddIns/Analysis/CodeQuality/Reporting/BaseReport.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 25.02.2012
* Time: 21:04
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;

11
src/AddIns/Analysis/CodeQuality/Reporting/DependencyReport.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 25.02.2012
* Time: 21:17
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

11
src/AddIns/Analysis/CodeQuality/Reporting/OverviewReport.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 13.02.2012
* Time: 19:46
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

11
src/AddIns/Analysis/CodeQuality/Reporting/ReportViewModel.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 26.02.2012
* Time: 18:10
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.CodeQuality.Engine.Dom;

4
src/AddIns/Analysis/MachineSpecifications/MachineSpecifications.Tests/Properties/AssemblyInfo.cs

@ -1,10 +1,14 @@ @@ -1,10 +1,14 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
#region Using directives
using System;
using System.Reflection;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.

2
src/AddIns/Analysis/MachineSpecifications/MachineSpecifications/src/MSpecTestFramework.cs

@ -39,4 +39,4 @@ namespace ICSharpCode.MachineSpecifications @@ -39,4 +39,4 @@ namespace ICSharpCode.MachineSpecifications
return false;
}
}
}
}

3
src/AddIns/Analysis/Profiler/Frontend/AddIn/Src/ProfilerProcessRunner.cs

@ -11,6 +11,7 @@ using ICSharpCode.Profiler.Controller; @@ -11,6 +11,7 @@ using ICSharpCode.Profiler.Controller;
using ICSharpCode.Profiler.Controller.Data;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.Profiler.AddIn
{
@ -39,7 +40,7 @@ namespace ICSharpCode.Profiler.AddIn @@ -39,7 +40,7 @@ namespace ICSharpCode.Profiler.AddIn
wasStarted = false;
}
public Task<int> RunInOutputPadAsync(MessageViewCategory outputCategory, string program, params string[] arguments)
public Task<int> RunInOutputPadAsync(IOutputCategory outputCategory, string program, params string[] arguments)
{
throw new NotImplementedException();
}

12
src/AddIns/Analysis/SourceAnalysis/Src/AnalysisIdeOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 23.07.2012
* Time: 20:13
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
@ -105,4 +101,4 @@ namespace ICSharpCode.SourceAnalysis @@ -105,4 +101,4 @@ namespace ICSharpCode.SourceAnalysis
}
}
}
}
}

12
src/AddIns/Analysis/SourceAnalysis/Src/AnalysisOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.07.2012
* Time: 18:51
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
@ -124,4 +120,4 @@ namespace ICSharpCode.SourceAnalysis @@ -124,4 +120,4 @@ namespace ICSharpCode.SourceAnalysis
return newSettingsFile;
}
}
}
}

3
src/AddIns/Analysis/UnitTesting/Interfaces/IUnitTestTaskService.cs

@ -4,12 +4,13 @@ @@ -4,12 +4,13 @@
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.UnitTesting
{
public interface IUnitTestTaskService
{
MessageViewCategory BuildMessageViewCategory { get; }
IOutputCategory BuildMessageViewCategory { get; }
void ClearExceptCommentTasks();
void Add(SDTask task);
bool SomethingWentWrong { get; }

3
src/AddIns/Analysis/UnitTesting/Interfaces/UnitTestTaskService.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.UnitTesting
{
@ -14,7 +15,7 @@ namespace ICSharpCode.UnitTesting @@ -14,7 +15,7 @@ namespace ICSharpCode.UnitTesting
TaskService.ClearExceptCommentTasks();
}
public MessageViewCategory BuildMessageViewCategory {
public IOutputCategory BuildMessageViewCategory {
get { return TaskService.BuildMessageViewCategory; }
}

3
src/AddIns/Analysis/UnitTesting/Service/ITestService.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks; @@ -7,6 +7,7 @@ using System.Threading.Tasks;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.UnitTesting
{
@ -18,7 +19,7 @@ namespace ICSharpCode.UnitTesting @@ -18,7 +19,7 @@ namespace ICSharpCode.UnitTesting
/// </summary>
ITestFramework GetTestFrameworkForProject(IProject project);
MessageViewCategory UnitTestMessageView { get; }
IOutputCategory UnitTestMessageView { get; }
/// <summary>
/// Gets the current test solution.

3
src/AddIns/Analysis/UnitTesting/Service/SDTestService.cs

@ -8,6 +8,7 @@ using System.Threading.Tasks; @@ -8,6 +8,7 @@ using System.Threading.Tasks;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Workbench;
using ICSharpCode.UnitTesting.Frameworks;
namespace ICSharpCode.UnitTesting
@ -34,7 +35,7 @@ namespace ICSharpCode.UnitTesting @@ -34,7 +35,7 @@ namespace ICSharpCode.UnitTesting
#region UnitTestMessageView
MessageViewCategory unitTestMessageView;
public MessageViewCategory UnitTestMessageView {
public IOutputCategory UnitTestMessageView {
get {
if (unitTestMessageView == null) {
MessageViewCategory.Create(ref unitTestMessageView,

11
src/AddIns/Analysis/UnitTesting/Test/Project/DoubleNestedTestClassWithBaseType.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: trecio
* Date: 2011-10-23
* Time: 16:15
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.NRefactory.TypeSystem;

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

@ -115,9 +115,9 @@ namespace ICSharpCode.UnitTesting.Frameworks @@ -115,9 +115,9 @@ namespace ICSharpCode.UnitTesting.Frameworks
void ClearTasks()
{
taskService.BuildMessageViewCategory.ClearText();
taskService.BuildMessageViewCategory.Clear();
taskService.ClearExceptCommentTasks();
testService.UnitTestMessageView.ClearText();
testService.UnitTestMessageView.Clear();
}
void ShowUnitTestsPad()
@ -132,7 +132,7 @@ namespace ICSharpCode.UnitTesting.Frameworks @@ -132,7 +132,7 @@ namespace ICSharpCode.UnitTesting.Frameworks
void ShowOutputPad()
{
workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront();
testService.UnitTestMessageView.Activate(true);
}
void ResetTestResults()

2
src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd

@ -38,6 +38,8 @@ @@ -38,6 +38,8 @@
<Color name="InactiveCode" foreground="Gray" exampleText="#{#Deactivated by #if#}#"/>
<Color name="SemanticError" foreground="DarkRed" exampleText="o.#{#MissingMethod#}#()"/>
<Property name="DocCommentMarker" value="///" />
<RuleSet name="CommentMarkerSet">
<Keywords fontWeight="bold" foreground="Red">
<Word>TODO</Word>

5
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs

@ -53,10 +53,11 @@ namespace CSharpBinding.Completion @@ -53,10 +53,11 @@ namespace CSharpBinding.Completion
var stringBuilder = new StringBuilder();
var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);
ambience.ConvertEntity(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());
var inlineBuilder = new HighlightedInlineBuilder(stringBuilder.ToString());
string code = stringBuilder.ToString();
var inlineBuilder = new RichTextModel();
inlineBuilder.SetFontWeight(formatter.parameterStartOffset, formatter.parameterLength, FontWeights.Bold);
header.Inlines.Clear();
header.Inlines.AddRange(inlineBuilder.CreateRuns());
header.Inlines.AddRange(new RichText(code, inlineBuilder).CreateRuns());
}
public object Content {

12
src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 05/02/2012
* Time: 19:54
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
@ -76,4 +72,4 @@ namespace CSharpBinding.OptionPanels @@ -76,4 +72,4 @@ namespace CSharpBinding.OptionPanels
#endregion
}
}
}

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

@ -239,8 +239,8 @@ namespace CSharpBinding @@ -239,8 +239,8 @@ namespace CSharpBinding
{
internal readonly string newCode;
public RenameResultMatch(FileName fileName, TextLocation startLocation, TextLocation endLocation, int offset, int length, string newCode, HighlightedInlineBuilder builder = null, HighlightingColor defaultTextColor = null)
: base(fileName, startLocation, endLocation, offset, length, builder, defaultTextColor)
public RenameResultMatch(FileName fileName, TextLocation startLocation, TextLocation endLocation, int offset, int length, string newCode, RichText richText = null, HighlightingColor defaultTextColor = null)
: base(fileName, startLocation, endLocation, offset, length, richText, defaultTextColor)
{
this.newCode = newCode;
}

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

@ -99,9 +99,9 @@ namespace CSharpBinding.Refactoring @@ -99,9 +99,9 @@ namespace CSharpBinding.Refactoring
AstType interfaceTypeNode = refactoringContext.CreateShortType("System.ComponentModel", "INotifyPropertyChanged", 0);
var directBaseTypes = currentClass.DirectBaseTypes.Where(t => t.FullName != "System.Object");
if (currentClassDeclaration.BaseTypes.Count > 0) {
script.InsertText(insertion, ", " + interfaceTypeNode.GetText() + " ");
script.InsertText(insertion, ", " + interfaceTypeNode + " ");
} else {
script.InsertText(insertion, " : " + interfaceTypeNode.GetText() + " ");
script.InsertText(insertion, " : " + interfaceTypeNode + " ");
}
}

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/OverrideEqualsGetHashCodeMethodsDialog.xaml.cs

@ -320,7 +320,7 @@ namespace CSharpBinding.Refactoring @@ -320,7 +320,7 @@ namespace CSharpBinding.Refactoring
method.Body.Add(new VariableDeclarationStatement(
currentType.Clone(),
"other",
new CastExpression(currentType.Clone(), new IdentifierExpression("obj"))));
new IdentifierExpression("obj").CastAs(currentType.Clone())));
method.Body.Add(new IfElseStatement(
new BinaryOperatorExpression(new IdentifierExpression("other"), BinaryOperatorType.Equality, new PrimitiveExpression(null, "null")),
new ReturnStatement(new PrimitiveExpression(false, "false"))));

12
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/LinkerOptions.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.04.2012
* Time: 20:14
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel;
using System.Windows;
@ -170,4 +166,4 @@ namespace ICSharpCode.CppBinding.Project @@ -170,4 +166,4 @@ namespace ICSharpCode.CppBinding.Project
}
}
}
}

12
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/PreprocessorOptions.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 14.04.2012
* Time: 17:53
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel;
using System.Windows;
@ -139,4 +135,4 @@ namespace ICSharpCode.CppBinding.Project @@ -139,4 +135,4 @@ namespace ICSharpCode.CppBinding.Project
IsDirty = true;
}
}
}
}

5
src/AddIns/BackendBindings/JavaScriptBinding/Project/Src/ES3/ES3Lexer.Action.cs

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Globalization;
@ -163,4 +166,4 @@ namespace Xebic.Parsers.ES3 @@ -163,4 +166,4 @@ namespace Xebic.Parsers.ES3
return result;
}
}
}
}

5
src/AddIns/BackendBindings/JavaScriptBinding/Project/Src/ES3/ES3Parser.Action.cs

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Text;
@ -171,4 +174,4 @@ namespace Xebic.Parsers.ES3 @@ -171,4 +174,4 @@ namespace Xebic.Parsers.ES3
}
}
}
}
}

7
src/AddIns/BackendBindings/Python/PythonBinding/Test/Parsing/PythonParserParsePropertyTests.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
using System;
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PythonBinding;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
@ -116,4 +119,4 @@ namespace PythonBinding.Tests.Parsing @@ -116,4 +119,4 @@ namespace PythonBinding.Tests.Parsing
Assert.AreEqual(0, count);
}
}
}
}

18
src/AddIns/BackendBindings/XamlBinding/XamlBinding/NodeWrapper.cs

@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
namespace ICSharpCode.XamlBinding
{
public class NodeWrapper {
public string ElementName { get; set; }
public string Name { get; set; }
public int StartOffset { get; set; }
public int EndOffset { get; set; }
public IList<NodeWrapper> Children { get; set; }
}
}

1
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj

@ -91,7 +91,6 @@ @@ -91,7 +91,6 @@
</Compile>
<Compile Include="MarkupExtensionTokenKind.cs">
</Compile>
<Compile Include="NodeWrapper.cs" />
<Compile Include="Options\CodeCompletion.xaml.cs">
<DependentUpon>CodeCompletion.xaml</DependentUpon>
<SubType>Code</SubType>

83
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlOutlineContentHost.xaml.cs

@ -2,10 +2,13 @@ @@ -2,10 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using System.Linq;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Xml;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
@ -34,56 +37,64 @@ namespace ICSharpCode.XamlBinding @@ -34,56 +37,64 @@ namespace ICSharpCode.XamlBinding
if (this.editor == null || !FileUtility.IsEqualFileName(this.editor.FileName, e.FileName))
return;
#warning Reimplement XAML outline
// var cu = e.NewSyntaxTree as XamlSyntaxTree;
//
// if (cu != null && cu.TreeRootNode != null)
// UpdateTree(cu.TreeRootNode);
var parseInfo = e.NewParseInformation as XamlFullParseInformation;
if (parseInfo != null && parseInfo.Document != null)
UpdateTree(parseInfo.Document);
}
void UpdateTree(NodeWrapper root)
void UpdateTree(AXmlDocument root)
{
if (this.treeView.Root == null)
this.treeView.Root = BuildNode(root);
else
UpdateNode(this.treeView.Root as XamlOutlineNode, root);
if (treeView.Root == null) {
treeView.Root = new XamlOutlineNode {
ElementName = "Document Root",
Name = Path.GetFileName(editor.FileName),
Editor = editor
};
}
UpdateNode(treeView.Root as XamlOutlineNode, root);
}
void UpdateNode(XamlOutlineNode node, NodeWrapper dataNode)
void UpdateNode(XamlOutlineNode node, AXmlObject dataNode)
{
if (dataNode != null && node != null) {
node.Name = dataNode.Name;
node.ElementName = dataNode.ElementName;
node.Marker = editor.Document.CreateAnchor(Utils.MinMax(dataNode.StartOffset, 0, editor.Document.TextLength));
node.EndMarker = editor.Document.CreateAnchor(Utils.MinMax(dataNode.EndOffset, 0, editor.Document.TextLength));
int childrenCount = node.Children.Count;
int dataCount = dataNode.Children.Count;
for (int i = 0; i < Math.Max(childrenCount, dataCount); i++) {
if (i >= childrenCount) {
node.Children.Add(BuildNode(dataNode.Children[i]));
} else if (i >= dataCount) {
while (node.Children.Count > dataCount)
node.Children.RemoveAt(dataCount);
} else {
UpdateNode(node.Children[i] as XamlOutlineNode, dataNode.Children[i]);
}
if (dataNode == null || node == null)
return;
if (dataNode is AXmlElement) {
var item = (AXmlElement)dataNode;
node.Name = item.GetAttributeValue("Name") ?? item.GetAttributeValue(XamlConst.XamlNamespace, "Name");
node.ElementName = item.Name;
}
node.Marker = editor.Document.CreateAnchor(Utils.MinMax(dataNode.StartOffset, 0, editor.Document.TextLength));
node.EndMarker = editor.Document.CreateAnchor(Utils.MinMax(dataNode.EndOffset, 0, editor.Document.TextLength));
var dataChildren = dataNode.Children.OfType<AXmlElement>().ToList();
int childrenCount = node.Children.Count;
int dataCount = dataChildren.Count;
for (int i = 0; i < Math.Max(childrenCount, dataCount); i++) {
if (i >= childrenCount) {
node.Children.Add(BuildNode(dataChildren[i]));
} else if (i >= dataCount) {
while (node.Children.Count > dataCount)
node.Children.RemoveAt(dataCount);
} else {
UpdateNode(node.Children[i] as XamlOutlineNode, dataChildren[i]);
}
}
}
XamlOutlineNode BuildNode(NodeWrapper item)
XamlOutlineNode BuildNode(AXmlElement item)
{
XamlOutlineNode node = new XamlOutlineNode() {
Name = item.Name,
ElementName = item.ElementName,
XamlOutlineNode node = new XamlOutlineNode {
Name = item.GetAttributeValue("Name") ?? item.GetAttributeValue(XamlConst.XamlNamespace, "Name"),
ElementName = item.Name,
Marker = editor.Document.CreateAnchor(Utils.MinMax(item.StartOffset, 0, editor.Document.TextLength - 1)),
EndMarker = editor.Document.CreateAnchor(Utils.MinMax(item.EndOffset, 0, editor.Document.TextLength - 1)),
Editor = editor
};
foreach (var child in item.Children)
foreach (var child in item.Children.OfType<AXmlElement>())
node.Children.Add(BuildNode(child));
return node;
@ -96,9 +107,7 @@ namespace ICSharpCode.XamlBinding @@ -96,9 +107,7 @@ namespace ICSharpCode.XamlBinding
}
public object OutlineContent {
get {
return this;
}
get { return this; }
}
public void Dispose()

8
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlOutlineNode.cs

@ -6,12 +6,14 @@ using System.Linq; @@ -6,12 +6,14 @@ using System.Linq;
using System.Windows;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.TreeView;
namespace ICSharpCode.XamlBinding
{
class XamlOutlineNode : SharpTreeNode {
class XamlOutlineNode : SharpTreeNode
{
string elementName, name;
public string ElementName {
@ -107,5 +109,9 @@ namespace ICSharpCode.XamlBinding @@ -107,5 +109,9 @@ namespace ICSharpCode.XamlBinding
public override object Text {
get { return (!string.IsNullOrEmpty(Name) ? ElementName + " (" + Name + ")" : ElementName); }
}
public override object Icon {
get { return SD.ResourceService.GetImageSource("Icons.16x16.HtmlElements.Element"); }
}
}
}

9
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlUnresolvedFile.cs

@ -31,9 +31,10 @@ namespace ICSharpCode.XamlBinding @@ -31,9 +31,10 @@ namespace ICSharpCode.XamlBinding
public static XamlUnresolvedFile Create(FileName fileName, ITextSource fileContent, AXmlDocument document)
{
XamlUnresolvedFile file = new XamlUnresolvedFile(fileName);
ReadOnlyDocument textDocument = new ReadOnlyDocument(fileContent, fileName);
file.errors.AddRange(document.SyntaxErrors.Select(err => new Error(ErrorType.Error, err.Description)));
var visitor = new XamlDocumentVisitor(file, fileContent);
file.errors.AddRange(document.SyntaxErrors.Select(err => new Error(ErrorType.Error, err.Description, textDocument.GetLocation(err.StartOffset))));
var visitor = new XamlDocumentVisitor(file, textDocument);
visitor.VisitDocument(document);
if (visitor.TypeDefinition != null)
file.topLevel = new[] { visitor.TypeDefinition };
@ -130,10 +131,10 @@ namespace ICSharpCode.XamlBinding @@ -130,10 +131,10 @@ namespace ICSharpCode.XamlBinding
AXmlDocument currentDocument;
ReadOnlyDocument textDocument;
public XamlDocumentVisitor(IUnresolvedFile file, ITextSource fileContent)
public XamlDocumentVisitor(IUnresolvedFile file, ReadOnlyDocument textDocument)
{
this.file = file;
textDocument = new ReadOnlyDocument(fileContent, file.FileName);
this.textDocument = textDocument;
}
public override void VisitDocument(AXmlDocument document)

2
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin

@ -165,7 +165,7 @@ @@ -165,7 +165,7 @@
<Path name = "/SharpDevelop/Services/DebuggerService/ModuleContextMenu">
<MenuItem id = "AddModuleToWorkspace"
label = "Add to workspace"
label = "${res:MainWindow.Windows.ClassBrowser.AddToWorkspace}"
icon = "Icons.16x16.AssemblyFromFile"
class = "ICSharpCode.SharpDevelop.Gui.Pads.AddModuleToWorkspaceCommand"/>
</Path>

2
src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptionsPanel.xaml

@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
IsChecked="{sd:OptionBinding debugger:DebuggingOptions.PauseOnHandledExceptions}" />
</widgets:StackPanelWithSpacing>
</GroupBox>
<GroupBox Margin="5" Header="{sd:Localize Gloabl.Advanced}">
<GroupBox Margin="5" Header="{sd:Localize Global.Advanced}">
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
<!--
<CheckBox Content="{sd:Localize Dialog.Options.IDEOptions.Debugging.EnableEditAndContinue}"

142
src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs

@ -21,17 +21,18 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -21,17 +21,18 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public static void Attach(Debugger.Process process)
{
var classBrowser = SD.GetService<IClassBrowser>();
classBrowser.SpecialNodes.Add(new DebuggerProcessTreeNode(process));
classBrowser.AssemblyLists.Add(new DebuggerProcessAssemblyList(process));
}
public static void Detach(Debugger.Process process)
{
var classBrowser = SD.GetService<IClassBrowser>();
var nodes = classBrowser.SpecialNodes
.Where(n => n.Model == process)
var nodes = classBrowser.AssemblyLists
.OfType<DebuggerProcessAssemblyList>()
.Where(n => n.Process == process)
.ToArray();
foreach (var node in nodes) {
classBrowser.SpecialNodes.Remove(node);
classBrowser.AssemblyLists.Remove(node);
}
}
}
@ -40,48 +41,89 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -40,48 +41,89 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public Type GetSupportedType(object model)
{
if (model is Debugger.Process)
return typeof(Debugger.Process);
if (model is Debugger.Module)
return typeof(Debugger.Module);
if (model is DebuggerProcessAssemblyList)
return typeof(DebuggerProcessAssemblyList);
if (model is DebuggerModuleModel)
return typeof(DebuggerModuleModel);
return null;
}
public ICSharpCode.TreeView.SharpTreeNode CreateTreeNode(object model)
{
if (model is Debugger.Process)
return new DebuggerProcessTreeNode((Debugger.Process)model);
if (model is Debugger.Module)
return new DebuggerModuleTreeNode((Debugger.Module)model);
if (model is DebuggerProcessAssemblyList)
return new DebuggerProcessTreeNode((DebuggerProcessAssemblyList)model);
if (model is DebuggerModuleModel)
return new DebuggerModuleTreeNode((DebuggerModuleModel)model);
return null;
}
}
class DebuggerProcessTreeNode : ModelCollectionTreeNode
class DebuggerProcessAssemblyList : IAssemblyList
{
Debugger.Process process;
IMutableModelCollection<Debugger.Module> modules;
public DebuggerProcessTreeNode(Debugger.Process process)
IMutableModelCollection<DebuggerModuleModel> moduleModels;
public DebuggerProcessAssemblyList(Debugger.Process process)
{
if (process == null)
throw new ArgumentNullException("process");
this.process = process;
this.modules = new SimpleModelCollection<Debugger.Module>(this.process.Modules);
this.moduleModels = new NullSafeSimpleModelCollection<DebuggerModuleModel>();
this.moduleModels.AddRange(this.process.Modules.Select(m => new DebuggerModuleModel(m)));
this.Assemblies = new NullSafeSimpleModelCollection<IAssemblyModel>();
this.Assemblies.AddRange(moduleModels.Select(mm => mm.AssemblyModel));
this.process.ModuleLoaded += ModuleLoaded;
this.process.ModuleUnloaded += ModuleUnloaded;
}
void ModuleLoaded(object sender, ModuleEventArgs e)
{
modules.Add(e.Module);
DebuggerModuleModel model = new DebuggerModuleModel(e.Module);
moduleModels.Add(model);
Assemblies.Add(model.AssemblyModel);
}
void ModuleUnloaded(object sender, ModuleEventArgs e)
{
modules.Remove(e.Module);
DebuggerModuleModel deletedModel = moduleModels.FirstOrDefault(mm => mm.Module == e.Module);
if (deletedModel != null) {
moduleModels.Remove(deletedModel);
Assemblies.Remove(deletedModel.AssemblyModel);
}
}
public string Name { get; set; }
public IMutableModelCollection<IAssemblyModel> Assemblies { get; set; }
public IMutableModelCollection<DebuggerModuleModel> ModuleModels
{
get {
return moduleModels;
}
}
public Debugger.Process Process
{
get {
return process;
}
}
}
class DebuggerProcessTreeNode : ModelCollectionTreeNode
{
Debugger.Process process;
DebuggerProcessAssemblyList assemblyList;
public DebuggerProcessTreeNode(DebuggerProcessAssemblyList assemblyList)
{
if (assemblyList == null)
throw new ArgumentNullException("assemblyList");
this.assemblyList = assemblyList;
this.process = assemblyList.Process;
}
protected override object GetModel()
{
return process;
@ -89,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -89,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
protected override IModelCollection<object> ModelChildren {
get {
return modules;
return assemblyList.ModuleModels;
}
}
@ -112,16 +154,53 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -112,16 +154,53 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
class DebuggerModuleTreeNode : AssemblyTreeNode
class DebuggerModuleModel
{
Debugger.Module module;
Module module;
IAssemblyModel assemblyModel;
public DebuggerModuleTreeNode(Module module)
: base(CreateAssemblyModel(module))
public DebuggerModuleModel(Module module)
{
if (module == null)
throw new ArgumentNullException("module");
this.module = module;
this.assemblyModel = CreateAssemblyModel(module);
}
public Module Module
{
get {
return module;
}
}
public IAssemblyModel AssemblyModel
{
get {
return assemblyModel;
}
}
static IAssemblyModel CreateAssemblyModel(Module module)
{
// references??
IEntityModelContext context = new AssemblyEntityModelContext(module.Assembly.UnresolvedAssembly);
IAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context);
if (model is IUpdateableAssemblyModel) {
((IUpdateableAssemblyModel)model).Update(EmptyList<IUnresolvedTypeDefinition>.Instance, module.Assembly.TopLevelTypeDefinitions.SelectMany(td => td.Parts).ToList());
}
return model;
}
}
class DebuggerModuleTreeNode : AssemblyTreeNode
{
Debugger.Module module;
public DebuggerModuleTreeNode(DebuggerModuleModel model)
: base(model.AssemblyModel)
{
this.module = model.Module;
}
public override object Icon {
@ -143,21 +222,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -143,21 +222,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
var ctx = MenuService.ShowContextMenu(null, assemblyModel, "/SharpDevelop/Services/DebuggerService/ModuleContextMenu");
}
}
static IAssemblyModel CreateAssemblyModel(Module module)
{
// references??
IEntityModelContext context = new AssemblyEntityModelContext(module.Assembly.UnresolvedAssembly);
IAssemblyModel model = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(context);
if (model is IUpdateableAssemblyModel) {
((IUpdateableAssemblyModel)model).Update(EmptyList<IUnresolvedTypeDefinition>.Instance, module.Assembly.TopLevelTypeDefinitions.SelectMany(td => td.Parts).ToList());
}
return model;
}
}
/// <summary>
/// RunAssemblyWithDebuggerCommand.
/// AddModuleToWorkspaceCommand.
/// </summary>
class AddModuleToWorkspaceCommand : SimpleCommand
{
@ -177,7 +245,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -177,7 +245,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
// Create a new copy of this assembly model
IAssemblyModel newAssemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(assemblyModel.Context.Location);
if (newAssemblyModel != null)
classBrowser.AssemblyList.Assemblies.Add(newAssemblyModel);
classBrowser.MainAssemblyList.Assemblies.Add(newAssemblyModel);
}
}
}

2
src/AddIns/Debugger/Debugger.Core/Eval.cs

@ -134,7 +134,7 @@ namespace Debugger @@ -134,7 +134,7 @@ namespace Debugger
appDomain.Process.activeEvals.Add(this);
appDomain.Process.AsyncContinue(DebuggeeStateAction.Keep);
appDomain.Process.AsyncContinue(DebuggeeStateAction.Keep, evalThread);
}
/// <exception cref="DebuggerException">Evaluation can not be stopped</exception>

1
src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs

@ -98,6 +98,7 @@ namespace Debugger @@ -98,6 +98,7 @@ namespace Debugger
process.AsyncContinue(DebuggeeStateAction.Keep);
} else if (process.Evaluating) {
// Ignore events during property evaluation
pausedEventArgs = null;
process.AsyncContinue(DebuggeeStateAction.Keep);
} else if (pauseOnNextExit) {
// process.TraceMessage("Callback exit: Paused");

2
src/AddIns/Debugger/Debugger.Core/Options.cs

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.Collections.Generic;
using System;
namespace Debugger
{
public class Options

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

@ -461,12 +461,18 @@ namespace Debugger @@ -461,12 +461,18 @@ namespace Debugger
AsyncContinue(DebuggeeStateAction.Clear);
}
/// <param name="threadsToRun"> Null to keep current setting </param>
/// <param name="newThreadState"> What happens to created threads. Null to keep current setting </param>
internal void AsyncContinue(DebuggeeStateAction action)
/// <param name="threadToRun"> Run this thread and freeze all other threads </param>
internal void AsyncContinue(DebuggeeStateAction action, Thread threadToRun = null)
{
AssertPaused();
if (threadToRun != null) {
corProcess.SetAllThreadsDebugState(CorDebugThreadState.THREAD_SUSPEND, null);
threadToRun.CorThread.SetDebugState(CorDebugThreadState.THREAD_RUN);
} else {
corProcess.SetAllThreadsDebugState(CorDebugThreadState.THREAD_RUN, null);
}
NotifyResumed(action);
corProcess.Continue(0);
// this.TraceMessage("Continue");

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj

@ -106,8 +106,6 @@ @@ -106,8 +106,6 @@
<Compile Include="Src\ContextActions\ContextActionsPopup.cs" />
<Compile Include="Src\ContextActions\ContextActionsRenderer.cs" />
<Compile Include="Src\ContextActions\EditorActionsProvider.cs" />
<Compile Include="Src\ContextActions\ContextActionsViewModel.cs" />
<Compile Include="Src\ContextActions\ContextActionViewModel.cs" />
<Compile Include="Src\ContextActions\FindBaseClasses.cs" />
<Compile Include="Src\ContextActions\FindDerivedClassesOrOverrides.cs" />
<Compile Include="Src\ContextActions\GoToEntityAction.cs" />

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

@ -8,6 +8,8 @@ using ICSharpCode.AvalonEdit.Rendering; @@ -8,6 +8,8 @@ using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
using ICSharpCode.AvalonEdit.AddIn.ContextActions;
namespace ICSharpCode.AvalonEdit.AddIn
{
@ -39,5 +41,11 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -39,5 +41,11 @@ namespace ICSharpCode.AvalonEdit.AddIn
textView.GetVisualPosition(new TextViewPosition(line, column), VisualYPosition.LineBottom) - textView.ScrollOffset);
return positionInPixels.TransformFromDevice(textView);
}
/// <inheritdoc />
public void ShowContextActionsPopup(ContextActionsPopupViewModel viewModel)
{
new ContextActionsPopup { Actions = viewModel }.OpenAtCursorAndFocus();
}
}
}

10
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -68,6 +68,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -68,6 +68,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.MouseLeave += TextEditorMouseLeave;
this.Unloaded += OnUnloaded;
this.TextArea.TextView.MouseDown += TextViewMouseDown;
this.TextArea.TextView.MouseUp += TextViewMouseUp;
this.TextArea.Caret.PositionChanged += HighlightBrackets;
this.TextArea.TextView.VisualLinesChanged += CodeEditorView_VisualLinesChanged;
@ -400,10 +401,13 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -400,10 +401,13 @@ namespace ICSharpCode.AvalonEdit.AddIn
#endregion
#region Ctrl+Click Go To Definition
bool ctrlClickExecuted = false;
void TextViewMouseDown(object sender, MouseButtonEventArgs e)
{
// close existing debugger popup immediately on text editor mouse down
TryCloseExistingPopup(false);
ctrlClickExecuted = false;
if (options.CtrlClickGoToDefinition && e.ChangedButton == MouseButton.Left && Keyboard.Modifiers == ModifierKeys.Control) {
// Ctrl+Click Go to definition
@ -415,8 +419,14 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -415,8 +419,14 @@ namespace ICSharpCode.AvalonEdit.AddIn
var goToDefinitionCommand = new GoToDefinition();
goToDefinitionCommand.Run(resolveResult);
e.Handled = true;
ctrlClickExecuted = true;
}
}
void TextViewMouseUp(object sender, MouseButtonEventArgs e)
{
e.Handled = options.CtrlClickGoToDefinition && ctrlClickExecuted;
}
#endregion
public void JumpTo(int line, int column)

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs

@ -7,13 +7,14 @@ using System.ComponentModel; @@ -7,13 +7,14 @@ using System.ComponentModel;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Input;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{
/// <summary>
/// Description of ContextActionsHiddenViewModel.
/// </summary>
public class ContextActionsBulbViewModel : ContextActionsViewModel, INotifyPropertyChanged
public class ContextActionsBulbViewModel : ContextActionsPopupViewModel, INotifyPropertyChanged
{
public EditorActionsProvider Model { get; private set; }

14
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs

@ -6,10 +6,9 @@ using System.Windows.Controls.Primitives; @@ -6,10 +6,9 @@ using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{
@ -44,9 +43,9 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -44,9 +43,9 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
set { this.Child = value; }
}
public ContextActionsViewModel Actions
public ContextActionsPopupViewModel Actions
{
get { return (ContextActionsViewModel)ActionsControl.DataContext; }
get { return (ContextActionsPopupViewModel)ActionsControl.DataContext; }
set {
ActionsControl.DataContext = value;
}
@ -69,6 +68,13 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -69,6 +68,13 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
this.Focus();
}
public void OpenAtCursorAndFocus()
{
this.Placement = PlacementMode.MousePoint;
this.IsOpen = true;
this.Focus();
}
public static void SetPosition(Popup popup, ITextEditor editor, int line, int column, bool openAtWordStart = false)
{
var editorUIService = editor == null ? null : editor.GetService(typeof(IEditorUIService)) as IEditorUIService;

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs

@ -12,6 +12,7 @@ using ICSharpCode.NRefactory.Semantics; @@ -12,6 +12,7 @@ using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Commands;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{
@ -30,7 +31,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -30,7 +31,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
static ContextActionsPopup MakePopupWithBaseClasses(ITypeDefinition @class)
{
var baseClassList = @class.GetAllBaseTypeDefinitions().Where(baseClass => baseClass != @class).ToList();
var popupViewModel = new ContextActionsViewModel();
var popupViewModel = new ContextActionsPopupViewModel();
popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse(
"${res:SharpDevelop.Refactoring.BaseClassesOf}", new StringTagPair("Name", @class.Name)));
popupViewModel.Actions = BuildListViewModel(baseClassList);

6
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs

@ -10,8 +10,8 @@ using ICSharpCode.Core.Presentation; @@ -10,8 +10,8 @@ using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Commands;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
@ -42,7 +42,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -42,7 +42,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
static ContextActionsPopup MakePopupWithDerivedClasses(ITypeDefinition baseClass)
{
var derivedClassesTree = BuildDerivedTypesGraph(baseClass);
var popupViewModel = new ContextActionsViewModel();
var popupViewModel = new ContextActionsPopupViewModel();
popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse(
"${res:SharpDevelop.Refactoring.ClassesDerivingFrom}", new StringTagPair("Name", baseClass.Name)));
popupViewModel.Actions = BuildTreeViewModel(derivedClassesTree.Children);
@ -61,7 +61,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -61,7 +61,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
static ContextActionsPopup MakePopupWithOverrides(IMember member)
{
var derivedClassesTree = BuildDerivedTypesGraph(member.DeclaringTypeDefinition);
var popupViewModel = new ContextActionsViewModel {
var popupViewModel = new ContextActionsPopupViewModel {
Title = MenuService.ConvertLabel(StringParser.Parse(
"${res:SharpDevelop.Refactoring.OverridesOf}",
new StringTagPair("Name", member.FullName))

1
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs

@ -8,6 +8,7 @@ using System.Threading.Tasks; @@ -8,6 +8,7 @@ using System.Threading.Tasks;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor.ContextActions;
using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions

12
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DocumentPrinter.cs

@ -50,16 +50,14 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -50,16 +50,14 @@ namespace ICSharpCode.AvalonEdit.AddIn
// TableRow row = new TableRow();
// trg.Rows.Add(row);
// row.Cells.Add(new TableCell(new Paragraph(new Run(lineNumber.ToString()))) { TextAlignment = TextAlignment.Right });
HighlightedInlineBuilder inlineBuilder = new HighlightedInlineBuilder(document.GetText(line));
// Paragraph p = new Paragraph();
// row.Cells.Add(new TableCell(p));
if (highlighter != null) {
HighlightedLine highlightedLine = highlighter.HighlightLine(lineNumber);
int lineStartOffset = line.Offset;
foreach (HighlightedSection section in highlightedLine.Sections)
inlineBuilder.SetHighlighting(section.Offset - lineStartOffset, section.Length, section.Color);
p.Inlines.AddRange(highlightedLine.ToRichText().CreateRuns());
} else {
p.Inlines.Add(document.GetText(line));
}
// Paragraph p = new Paragraph();
// row.Cells.Add(new TableCell(p));
p.Inlines.AddRange(inlineBuilder.CreateRuns());
}
return p;
}

5
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/UserControls/WizardErrorUserControl.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
#region Usings
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
#region Usings
using System;
using System.Collections.Generic;

5
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/EDMObjects/Designer/ChangeWatcher/EDMDesignerChangeWatcher.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
#region Usings
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
#region Usings
using System;
using System.Collections.Generic;

5
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/EDMObjects/Designer/ChangeWatcher/IEDMDesignerChangeWatcherObserver.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
#region Usings
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
#region Usings
using System;
using System.Collections.Generic;

5
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/EntityModelCodeGenerator.cs

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
using System;
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Data.Entity.Design;
using System.Data.Metadata.Edm;

4
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/ObjectModelConverters/ObjectModelConverterException.cs

@ -1,4 +1,6 @@ @@ -1,4 +1,6 @@

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;

12
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/GeneralOptionsPanel.xaml.cs

@ -1,10 +1,6 @@ @@ -1,10 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 01.05.2012
* Time: 18:31
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
@ -90,4 +86,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels @@ -90,4 +86,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels
this.generateVSStyleHandlersCheckBox.IsChecked = GenerateVisualStudioStyleEventHandlers;
}
}
}
}

13
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/GridOptionsPanel.xaml.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 29.02.2012
* Time: 20:20
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows;
using ICSharpCode.Core;
@ -86,4 +81,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels @@ -86,4 +81,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels
EnableGridOptions(false);
}
}
}
}

13
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/OptionPanels/LocalizationModelOptionsPanel.xaml.cs

@ -1,11 +1,6 @@ @@ -1,11 +1,6 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 28.02.2012
* Time: 20:08
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel.Design.Serialization;
using ICSharpCode.Core;
@ -70,4 +65,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels @@ -70,4 +65,4 @@ namespace ICSharpCode.FormsDesigner.Gui.OptionPanels
}
}
}
}

11
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourcesComponentCodeDomSerializer.cs

@ -243,12 +243,11 @@ namespace ICSharpCode.FormsDesigner.Services @@ -243,12 +243,11 @@ namespace ICSharpCode.FormsDesigner.Services
static string CodeStatementToString(CodeStatement statement)
{
throw new NotImplementedException();
// CodeDomVerboseOutputGenerator outputGenerator = new CodeDomVerboseOutputGenerator();
// using(StringWriter sw = new StringWriter(System.Globalization.CultureInfo.InvariantCulture)) {
// outputGenerator.PublicGenerateCodeFromStatement(statement, sw, null);
// return sw.ToString().TrimEnd();
// }
CodeDomVerboseOutputGenerator outputGenerator = new CodeDomVerboseOutputGenerator();
using(StringWriter sw = new StringWriter(System.Globalization.CultureInfo.InvariantCulture)) {
outputGenerator.PublicGenerateCodeFromStatement(statement, sw, null);
return sw.ToString().TrimEnd();
}
}
}
}

10
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs

@ -25,6 +25,16 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -25,6 +25,16 @@ namespace ICSharpCode.WpfDesign.AddIn
MyTypeFinder f = new MyTypeFinder();
f.file = file;
f.ImportFrom(CreateWpfTypeFinder());
var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
foreach (var referencedAssembly in compilation.ReferencedAssemblies) {
try {
var assembly = Assembly.LoadFrom(referencedAssembly.GetReferenceAssemblyLocation());
f.RegisterAssembly(assembly);
} catch (Exception ex) {
ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex);
}
}
return f;
}

23
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/SharpDevelopTranslations.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.Core;
using System;
using ICSharpCode.WpfDesign.Designer;
namespace ICSharpCode.WpfDesign.AddIn
{
/// <summary>
/// Description of SharpDevelopTranslations.
/// </summary>
public class SharpDevelopTranslations : Translations
{
public override string PressAltText {
get { return StringParser.Parse("${res:AddIns.WpfDesign.AddIn.PressAltText}"); }
}
public static void Init() {
Instance = new SharpDevelopTranslations();
}
}
}

53
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/ThumbnailViewPad.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Workbench;
using ICSharpCode.WpfDesign.Designer.ThumbnailView;
namespace ICSharpCode.WpfDesign.AddIn
{
public class ThumbnailViewPad : AbstractPadContent
{
ContentPresenter contentControl = new ContentPresenter();
ThumbnailView thumbnailView = new ThumbnailView();
TextBlock notAvailableTextBlock = new TextBlock {
Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.OutlinePad.NotAvailable}"),
TextWrapping = TextWrapping.Wrap
};
public ThumbnailViewPad()
{
SD.Workbench.ActiveViewContentChanged += WorkbenchActiveViewContentChanged;
WorkbenchActiveViewContentChanged(null, null);
}
void WorkbenchActiveViewContentChanged(object sender, EventArgs e)
{
WpfViewContent wpfView = SD.Workbench.ActiveViewContent as WpfViewContent;
if (wpfView != null)
{
thumbnailView.DesignSurface = wpfView.DesignSurface;
SD.WinForms.SetContent(contentControl, thumbnailView);
} else {
SD.WinForms.SetContent(contentControl, notAvailableTextBlock);
}
}
/// <summary>
/// The <see cref="System.Windows.Forms.Control"/> representing the pad
/// </summary>
public override object Control {
get {
return contentControl;
}
}
}
}

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -52,7 +52,7 @@ namespace ICSharpCode.WpfDesign.AddIn
r.XmlResolver = null;
r.WhitespaceHandling = WhitespaceHandling.None;
while (r.NodeType != XmlNodeType.Element && r.Read());
if (r.LocalName == "ResourceDictionary" || r.LocalName == "Activity")
if (r.LocalName == "ResourceDictionary" || r.LocalName == "Application" || r.LocalName == "Activity")
return false;
} catch (XmlException) {
return true;

50
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfToolbox.cs

@ -2,12 +2,20 @@ @@ -2,12 +2,20 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Windows;
using System.Windows.Forms;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Widgets.SideBar;
using ICSharpCode.SharpDevelop.Workbench;
using WPF = System.Windows.Controls;
namespace ICSharpCode.WpfDesign.AddIn
@ -48,6 +56,48 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -48,6 +56,48 @@ namespace ICSharpCode.WpfDesign.AddIn
sideBar.ActiveTab = sideTab;
}
static bool IsControl(Type t)
{
return !t.IsAbstract && !t.IsGenericTypeDefinition && t.IsSubclassOf(typeof(FrameworkElement));
}
static HashSet<string> addedAssemblys = new HashSet<string>();
public void AddProjectDlls(OpenedFile file)
{
var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
foreach (var reference in compilation.ReferencedAssemblies) {
string f = reference.GetReferenceAssemblyLocation();
if (f != null && !addedAssemblys.Contains(f)) {
try {
var assembly = Assembly.LoadFrom(f);
SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] {','})[0]);
sideTab.DisplayName = StringParser.Parse(sideTab.Name);
sideTab.CanBeDeleted = false;
sideTab.ChoosedItemChanged += OnChoosedItemChanged;
sideTab.Items.Add(new WpfSideTabItem());
foreach (var t in assembly.GetExportedTypes())
{
if (IsControl(t))
{
sideTab.Items.Add(new WpfSideTabItem(t));
}
}
if (sideTab.Items.Count > 1)
sideBar.Tabs.Add(sideTab);
addedAssemblys.Add(f);
} catch (Exception ex) {
WpfViewContent.DllLoadErrors.Add(new SDTask(new BuildError(f, ex.Message)));
}
}
}
}
void OnChoosedItemChanged(object sender, EventArgs e)
{
if (toolService != null) {

20
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs

@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop.Dom; @@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
using ICSharpCode.SharpDevelop.Workbench;
using ICSharpCode.WpfDesign.Designer;
@ -37,11 +38,23 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -37,11 +38,23 @@ namespace ICSharpCode.WpfDesign.AddIn
{
public WpfViewContent(OpenedFile file) : base(file)
{
SharpDevelopTranslations.Init();
BasicMetadata.Register();
WpfToolbox.Instance.AddProjectDlls(file);
ProjectService.ProjectItemAdded += ProjectService_ProjectItemAdded;
this.TabPageText = "${res:FormsDesigner.DesignTabPages.DesignTabPage}";
this.IsActiveViewContentChanged += OnIsActiveViewContentChanged;
}
void ProjectService_ProjectItemAdded(object sender, ProjectItemEventArgs e)
{
if (e.ProjectItem is ReferenceProjectItem)
WpfToolbox.Instance.AddProjectDlls(this.Files[0]);
}
static WpfViewContent()
{
@ -134,6 +147,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -134,6 +147,7 @@ namespace ICSharpCode.WpfDesign.AddIn
}
}
public static List<SDTask> DllLoadErrors = new List<SDTask>();
void UpdateTasks(XamlErrorService xamlErrorService)
{
Debug.Assert(xamlErrorService != null);
@ -144,11 +158,13 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -144,11 +158,13 @@ namespace ICSharpCode.WpfDesign.AddIn
tasks.Clear();
foreach (XamlError error in xamlErrorService.Errors) {
var task = new SDTask(PrimaryFile.FileName, error.Message, error.Column - 1, error.Line - 1, TaskType.Error);
var task = new SDTask(PrimaryFile.FileName, error.Message, error.Column - 1, error.Line, TaskType.Error);
tasks.Add(task);
TaskService.Add(task);
}
TaskService.AddRange(DllLoadErrors);
if (xamlErrorService.Errors.Count != 0) {
SD.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront();
}
@ -226,6 +242,8 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -226,6 +242,8 @@ namespace ICSharpCode.WpfDesign.AddIn
public override void Dispose()
{
ProjectService.ProjectItemAdded -= ProjectService_ProjectItemAdded;
propertyContainer.Clear();
base.Dispose();
}

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj

@ -68,6 +68,8 @@ @@ -68,6 +68,8 @@
<Compile Include="Src\Commands\Remove.cs" />
<Compile Include="Src\Commands\UndoRedo.cs" />
<Compile Include="Src\Commands\ViewXaml.cs" />
<Compile Include="Src\SharpDevelopTranslations.cs" />
<Compile Include="Src\ThumbnailViewPad.cs" />
<Compile Include="Src\FileUriContext.cs" />
<Compile Include="Src\IdeChooseClassService.cs" />
<Compile Include="Src\ImageSourceEditor\ChooseImageDialog.xaml.cs">
@ -146,9 +148,5 @@ @@ -146,9 +148,5 @@
<Page Include="Src\ImageSourceEditor\ImageSourceEditor.xaml" />
<Page Include="Src\ObjectEditor.xaml" />
</ItemGroup>
<ItemGroup>
<Folder Include="Images" />
<Folder Include="Src\ImageSourceEditor" />
<Folder Include="Src\Commands" />
</ItemGroup>
<ItemGroup />
</Project>

19
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.addin

@ -1,4 +1,8 @@ @@ -1,4 +1,8 @@
<AddIn name="WPF Designer AddIn" author="Daniel Grunwald" copyright="prj:///doc/copyright.txt" description="WPF Designer" addInManagerHidden="preinstalled">
<AddIn name="WPF Designer AddIn"
author="Daniel Grunwald"
copyright="prj:///doc/copyright.txt"
description="WPF Designer"
addInManagerHidden="preinstalled">
<Manifest>
<Identity name="ICSharpCode.WpfDesigner" />
</Manifest>
@ -20,7 +24,18 @@ @@ -20,7 +24,18 @@
insertbefore = "Text"
fileNamePattern = "\.(xaml)$"
title = "WPF designer"/>-->
<DisplayBinding id="WPFDesigner" type="Secondary" class="ICSharpCode.WpfDesign.AddIn.WpfSecondaryDisplayBinding" fileNamePattern="\.xaml$" />
<DisplayBinding id="WPFDesigner"
type="Secondary"
class="ICSharpCode.WpfDesign.AddIn.WpfSecondaryDisplayBinding"
fileNamePattern="\.xaml$" />
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id = "ThumbnailViewPad"
category = "Main"
title = "${res:ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad}"
icon = "PadIcons.Toolbar"
class = "ICSharpCode.WpfDesign.AddIn.ThumbnailViewPad"
defaultPosition = "Right, Hidden" />
</Path>
<!--
<Path name = "/SharpDevelop/Workbench/Pads">

1
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Configuration/AssemblyInfo.cs

@ -50,3 +50,4 @@ using System.Windows.Markup; @@ -50,3 +50,4 @@ using System.Windows.Markup;
[assembly: XmlnsDefinition("http://sharpdevelop.net", "ICSharpCode.WpfDesign.Designer.Controls")]
[assembly: XmlnsDefinition("http://sharpdevelop.net", "ICSharpCode.WpfDesign.Designer.PropertyGrid")]
[assembly: XmlnsDefinition("http://sharpdevelop.net", "ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors")]
[assembly: XmlnsDefinition("http://sharpdevelop.net", "ICSharpCode.WpfDesign.Designer.ThumbnailView")]

218
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/CanvasPositionHandle.cs

@ -0,0 +1,218 @@ @@ -0,0 +1,218 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Input;
using System.Globalization;
using System.ComponentModel;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Shapes;
using ICSharpCode.WpfDesign.Adorners;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
/// <summary>
/// Adorner that displays the margin of a control in a Grid.
/// </summary>
public class CanvasPositionHandle : MarginHandle
{
static CanvasPositionHandle()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CanvasPositionHandle), new FrameworkPropertyMetadata(typeof(CanvasPositionHandle)));
HandleLengthOffset=2;
}
private Path line1;
private Path line2;
public override void OnApplyTemplate()
{
line1 = GetTemplateChild("line1") as Path;
line2 = GetTemplateChild("line2") as Path;
base.OnApplyTemplate();
}
readonly Canvas canvas;
readonly DesignItem adornedControlItem;
readonly AdornerPanel adornerPanel;
readonly HandleOrientation orientation;
readonly FrameworkElement adornedControl;
/// <summary> This grid contains the handle line and the endarrow.</summary>
Grid lineArrow;
private DependencyPropertyDescriptor leftDescriptor;
private DependencyPropertyDescriptor rightDescriptor;
private DependencyPropertyDescriptor topDescriptor;
private DependencyPropertyDescriptor bottomDescriptor;
private DependencyPropertyDescriptor widthDescriptor;
private DependencyPropertyDescriptor heightDescriptor;
public CanvasPositionHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
{
Debug.Assert(adornedControlItem != null);
this.adornedControlItem = adornedControlItem;
this.adornerPanel = adornerPanel;
this.orientation = orientation;
Angle = (double) orientation;
canvas = (Canvas) adornedControlItem.Parent.Component;
adornedControl = (FrameworkElement) adornedControlItem.Component;
Stub = new MarginStub(this);
ShouldBeVisible = true;
leftDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty,
adornedControlItem.Component.GetType());
leftDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
rightDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.RightProperty,
adornedControlItem.Component.GetType());
rightDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
topDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty,
adornedControlItem.Component.GetType());
topDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
bottomDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.BottomProperty,
adornedControlItem.Component.GetType());
bottomDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
widthDescriptor = DependencyPropertyDescriptor.FromProperty(Control.WidthProperty,
adornedControlItem.Component.GetType());
widthDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
heightDescriptor = DependencyPropertyDescriptor.FromProperty(Control.WidthProperty,
adornedControlItem.Component.GetType());
heightDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
BindAndPlaceHandle();
}
void OnPropertyChanged(object sender, EventArgs e)
{
BindAndPlaceHandle();
}
/// <summary>
/// Gets/Sets the angle by which the Canvas display has to be rotated
/// </summary>
public override double TextTransform
{
get
{
if ((double)orientation == 90 || (double)orientation == 180)
return 180;
if ((double)orientation == 270)
return 0;
return (double)orientation;
}
set { }
}
/// <summary>
/// Binds the <see cref="HandleLength"/> to the margin and place the handles.
/// </summary>
void BindAndPlaceHandle()
{
if (!adornerPanel.Children.Contains(this))
adornerPanel.Children.Add(this);
if (!adornerPanel.Children.Contains(Stub))
adornerPanel.Children.Add(Stub);
RelativePlacement placement=new RelativePlacement();
switch (orientation)
{
case HandleOrientation.Left:
{
var wr = (double) leftDescriptor.GetValue(adornedControl);
if (double.IsNaN(wr))
{
wr = (double) rightDescriptor.GetValue(adornedControl);
wr = canvas.ActualWidth - (adornedControl.ActualWidth + wr);
}
else
{
if (line1 != null)
{
line1.StrokeDashArray.Clear();
line2.StrokeDashArray.Clear();
}
}
this.HandleLength = wr;
placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Center);
placement.XOffset = -HandleLengthOffset;
break;
}
case HandleOrientation.Top:
{
var wr = (double)topDescriptor.GetValue(adornedControl);
if (double.IsNaN(wr))
{
wr = (double)bottomDescriptor.GetValue(adornedControl);
wr = canvas.ActualHeight - (adornedControl.ActualHeight + wr);
}
else
{
if (line1 != null)
{
line1.StrokeDashArray.Clear();
line2.StrokeDashArray.Clear();
}
}
this.HandleLength = wr;
placement = new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Top);
placement.YOffset = -HandleLengthOffset;
break;
}
case HandleOrientation.Right:
{
var wr = (double) rightDescriptor.GetValue(adornedControl);
if (double.IsNaN(wr))
{
wr = (double) leftDescriptor.GetValue(adornedControl);
wr = canvas.ActualWidth - (adornedControl.ActualWidth + wr);
}
else
{
if (line1 != null)
{
line1.StrokeDashArray.Clear();
line2.StrokeDashArray.Clear();
}
}
this.HandleLength = wr;
placement = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Center);
placement.XOffset = HandleLengthOffset;
break;
}
case HandleOrientation.Bottom:
{
var wr = (double)bottomDescriptor.GetValue(adornedControl);
if (double.IsNaN(wr))
{
wr = (double)topDescriptor.GetValue(adornedControl);
wr = canvas.ActualHeight - (adornedControl.ActualHeight + wr);
}
else
{
if (line1 != null)
{
line1.StrokeDashArray.Clear();
line2.StrokeDashArray.Clear();
}
}
this.HandleLength = wr;
placement = new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Bottom);
placement.YOffset = HandleLengthOffset;
break;
}
}
AdornerPanel.SetPlacement(this, placement);
this.Visibility = Visibility.Visible;
}
}
}

85
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ClearableTextBox.cs

@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;
using System.Windows.Data;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
public class ClearableTextBox : EnterTextBox
{
private Button textRemoverButton;
static ClearableTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof (ClearableTextBox),
new FrameworkPropertyMetadata(typeof (ClearableTextBox)));
}
public ClearableTextBox()
{
this.GotFocus += this.TextBoxGotFocus;
this.LostFocus += this.TextBoxLostFocus;
this.TextChanged += this.TextBoxTextChanged;
this.KeyUp += this.ClearableTextBox_KeyUp;
}
void ClearableTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
this.TextRemoverClick(sender, null);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.textRemoverButton = this.GetTemplateChild("TextRemover") as Button;
if (null != this.textRemoverButton)
{
this.textRemoverButton.Click += this.TextRemoverClick;
}
this.UpdateState();
}
protected void UpdateState()
{
if (string.IsNullOrEmpty(this.Text))
{
VisualStateManager.GoToState(this, "TextRemoverHidden", true);
}
else
{
VisualStateManager.GoToState(this, "TextRemoverVisible", true);
}
}
private void TextBoxTextChanged(object sender, TextChangedEventArgs e)
{
this.UpdateState();
}
private void TextRemoverClick(object sender, RoutedEventArgs e)
{
this.Text = string.Empty;
this.Focus();
}
private void TextBoxGotFocus(object sender, RoutedEventArgs e)
{
this.UpdateState();
}
private void TextBoxLostFocus(object sender, RoutedEventArgs e)
{
this.UpdateState();
}
}
}

26
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ContainerDragHandle.cs

@ -9,6 +9,9 @@ using System.Windows.Shapes; @@ -9,6 +9,9 @@ using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Extensions;
using ICSharpCode.WpfDesign.Designer.Converters;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
@ -24,5 +27,28 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -24,5 +27,28 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
//This style is defined in themes\generic.xaml
DefaultStyleKeyProperty.OverrideMetadata(typeof(ContainerDragHandle), new FrameworkPropertyMetadata(typeof(ContainerDragHandle)));
}
private ScaleTransform scaleTransform;
public ContainerDragHandle()
{
scaleTransform = new ScaleTransform(1.0, 1.0);
this.LayoutTransform = scaleTransform;
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var surface = this.TryFindParent<DesignSurface>();
if (surface != null && surface.ZoomControl != null)
{
var bnd = new Binding("CurrentZoom") { Source = surface.ZoomControl };
bnd.Converter = InvertedZoomConverter.Instance;
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleXProperty, bnd);
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleYProperty, bnd);
}
}
}
}

321
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Controls="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls" xmlns:ControlConvertors="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls.Converters" xmlns:Converters="clr-namespace:ICSharpCode.WpfDesign.Designer.Converters">
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Controls="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls" xmlns:ControlConvertors="clr-namespace:ICSharpCode.WpfDesign.Designer.Controls.Converters" xmlns:Converters="clr-namespace:ICSharpCode.WpfDesign.Designer.Converters" xmlns:Widgets="http://icsharpcode.net/sharpdevelop/widgets">
<!--
This file contains the default styles used by the Controls in ICSharpCode.WpfDesign.Designer.Controls
-->
@ -16,7 +16,35 @@ @@ -16,7 +16,35 @@
</Style>
<Style TargetType="{x:Type Controls:EnumButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Margin" Value="3 3 0 3" />
<Setter Property="MinWidth" Value="50" />
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid>
<Border x:Name="Background" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<Grid Background="{TemplateBinding Background}">
<Border Opacity="0" x:Name="BackgroundAnimation" Background="#FF448DCA" />
</Grid>
</Border>
<ContentPresenter
x:Name="contentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="SkyBlue" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type Controls:ResizeThumb}">
<Setter Property="Template">
@ -39,6 +67,20 @@ @@ -39,6 +67,20 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:RotateThumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:RotateThumb}">
<Grid>
<Rectangle VerticalAlignment="Top" Width="2" Height="30" Fill="Black" Margin="0,0,0,0" />
<Ellipse VerticalAlignment="Top" StrokeThickness="1" Name="thumbRectangle" SnapsToDevicePixels="True" Stroke="Black"
Width="7" Height="7" Fill="Black">
</Ellipse>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:SelectionFrame}">
<Setter Property="Template">
<Setter.Value>
@ -89,7 +131,7 @@ @@ -89,7 +131,7 @@
<Label Margin="4,0,0,0" Content="{TemplateBinding Window.Title}" />
</DockPanel>
<Border Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
<Border BorderBrush="{TemplateBinding Border.BorderBrush}" BorderThickness="{TemplateBinding Border.BorderThickness}" Background="{TemplateBinding Panel.Background}">
<Border ClipToBounds="True" BorderBrush="{TemplateBinding Border.BorderBrush}" BorderThickness="{TemplateBinding Border.BorderThickness}" Background="{TemplateBinding Panel.Background}">
<AdornerDecorator>
<ContentPresenter ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" Content="{TemplateBinding ContentControl.Content}" />
</AdornerDecorator>
@ -188,6 +230,45 @@ @@ -188,6 +230,45 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:CanvasPositionHandle}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:MarginHandle}">
<Grid Height="10" Width="{Binding Path=HandleLength, Converter={x:Static ControlConvertors:HandleLengthWithOffset.Instance}, RelativeSource={RelativeSource Mode=TemplatedParent}}" SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Path Name="startArrow" Fill="{StaticResource HandleBrush}" Stretch="Fill" Stroke="{TemplateBinding Panel.Background}" StrokeThickness="0.5" Margin="0,1,0,1" Data="M0,0 L0,1 1,0.5 z" Grid.Column="0" />
<!-- Wrap the handle-line and endArrow in this grid. It's visiblity is subjected to HandleLength -->
<Grid Height="10" Grid.Column="1" Name="lineArrow">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition MaxWidth="20" MinWidth="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Transparent" Height="10" Grid.Column="0" Grid.ColumnSpan="4" />
<Path Name="line1" StrokeDashArray="2,2" Stretch="Fill" Stroke="{StaticResource HandleBrush}" StrokeThickness="1.5" Margin="0 0 0 0" Data="M0,-0.75 L1,-0.75" Grid.Column="0" />
<TextBlock Grid.Column="1" Text="{Binding Path=HandleLength, Mode=OneWay, Converter={x:Static Converters:FormatDoubleConverter.Instance }, RelativeSource={RelativeSource Mode=TemplatedParent}}" FontSize="9" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="1,1,1,1">
<TextBlock.LayoutTransform>
<RotateTransform Angle="{Binding Path=TextTransform, RelativeSource={RelativeSource Mode=TemplatedParent}}" CenterX="0.5" CenterY="0.5">
</RotateTransform>
</TextBlock.LayoutTransform>
</TextBlock>
<Path Name="line2" StrokeDashArray="2,2" Stretch="Fill" Stroke="{StaticResource HandleBrush}" StrokeThickness="1.5" Margin="0 0 0 0" Data="M0,-0.75 L1,-0.75" Grid.Column="2" />
<!--<Path Name="arrow2" Margin="0,1,0,1" Fill="{StaticResource HandleBrush}" Stretch="Fill" Stroke="{TemplateBinding Panel.Background}" StrokeThickness="0.5" Data="M0,0 L0,1 1,0.5 z" Grid.Column="3" />-->
<!--<Rectangle Width="1.5" Fill="{StaticResource HandleBrush}" Grid.Column="4"/>-->
</Grid>
<!-- Rotate the handle and angle of rotation being set by the Margin type. See enum HandleOrientation -->
<Grid.LayoutTransform>
<RotateTransform Angle="{Binding Path=Angle, RelativeSource={RelativeSource Mode=TemplatedParent}}">
</RotateTransform>
</Grid.LayoutTransform>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:MarginHandle}">
<Setter Property="Template">
<Setter.Value>
@ -285,7 +366,7 @@ @@ -285,7 +366,7 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:InPlaceEditor}">
<TextBox Name="editor" SnapsToDevicePixels="True" Padding="{Binding Path=Padding}" FontSize="{Binding Path=FontSize}" FontFamily="{Binding Path=FontFamily}" FontStyle="{Binding Path=FontStyle}" FontStretch="{Binding Path=FontStretch}" FontWeight="{Binding Path=FontWight}" Text="{Binding Path=Bind, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AcceptsReturn="True" />
<TextBox Name="editor" SnapsToDevicePixels="True" Padding="{Binding Path=Padding}" FontSize="{Binding Path=FontSize}" FontFamily="{Binding Path=FontFamily}" FontStyle="{Binding Path=FontStyle}" FontStretch="{Binding Path=FontStretch}" FontWeight="{Binding Path=FontWeight}" Text="{Binding Path=Bind, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AcceptsReturn="True" />
</ControlTemplate>
</Setter.Value>
</Setter>
@ -305,4 +386,234 @@ @@ -305,4 +386,234 @@
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
<Style TargetType="{x:Type Controls:ZoomControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:ZoomControl}">
<Grid Background="{TemplateBinding Panel.Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Widgets:SelfCollapsingPanel Grid.Column="0" Grid.Row="1" CollapseOrientation="Horizontal" CanCollapse="{Binding Path=ComputedZoomButtonCollapsed, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}">
<Widgets:ZoomButtons x:Name="zoomButtons" Value="{Binding Path=CurrentZoom, RelativeSource={RelativeSource Mode=TemplatedParent}}" Minimum="{TemplateBinding MinimumZoom}" Maximum="{TemplateBinding MaximumZoom}" />
</Widgets:SelfCollapsingPanel>
<Rectangle Grid.Column="2" Grid.Row="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
<ScrollContentPresenter Name="PART_Presenter" Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="0" Margin="{TemplateBinding Control.Padding}" Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}">
<ScrollContentPresenter.LayoutTransform>
<ScaleTransform ScaleX="{Binding Path=CurrentZoom, RelativeSource={RelativeSource Mode=TemplatedParent}}" ScaleY="{Binding Path=CurrentZoom, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
</ScrollContentPresenter.LayoutTransform>
</ScrollContentPresenter>
<ContentControl Grid.Column="1" Grid.Row="1" Content="{TemplateBinding AdditionalControls}" />
<ScrollBar Name="PART_VerticalScrollBar" Grid.Column="3" Grid.Row="0" Minimum="0" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Value="{TemplateBinding VerticalOffset}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
<ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Column="2" Grid.Row="1" Minimum="0" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Value="{TemplateBinding HorizontalOffset}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Button}" x:Key="ClearButtonStyle">
<Setter Property="Background" Value="#FFaaaaaa" />
<Setter Property="BorderBrush" Value="#FFaaaaaa" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Width="14" Height="14">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused" />
<VisualState x:Name="Unfocused" />
</VisualStateGroup>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="00:00:00.2000000" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Duration="0"
Storyboard.TargetName="ellipseHighlight"
Storyboard.TargetProperty="(UIElement.Opacity)"
To="1" />
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<DoubleAnimation Duration="0"
Storyboard.TargetName="ellipseHighlight"
Storyboard.TargetProperty="(UIElement.Opacity)"
To="1" />
<DoubleAnimation Duration="0"
Storyboard.TargetName="pathHighlight"
Storyboard.TargetProperty="(UIElement.Opacity)"
To="1" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Ellipse x:Name="ellipse"
Fill="{TemplateBinding Background}"
Stroke="{TemplateBinding BorderBrush}" />
<Ellipse x:Name="ellipseHighlight"
Fill="#FFBD7777"
Opacity="0"
Stroke="Red" />
<Path x:Name="path"
Margin="4.5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M0.5,0.5 L8.5,8.5 M8.5000095,0.50000072 L0.50000954,8.500001"
Stretch="Fill"
Stroke="{TemplateBinding Foreground}"
UseLayoutRounding="False" />
<Path x:Name="pathHighlight"
Margin="4.5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M0.5,0.5 L8.5,8.5 M8.5000095,0.50000072 L0.50000954,8.500001"
Opacity="0"
Stretch="Fill"
Stroke="Red"
UseLayoutRounding="False" />
<ContentPresenter x:Name="contentPresenter"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Visibility="Collapsed" />
<Rectangle x:Name="DisabledVisualElement"
Fill="#FFFFFFFF"
IsHitTestVisible="false"
Opacity="0"
RadiusX="3"
RadiusY="3" />
<Rectangle x:Name="FocusVisualElement"
Margin="1"
IsHitTestVisible="false"
Opacity="0"
RadiusX="2"
RadiusY="2"
Stroke="#FF6DBDD1"
StrokeThickness="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:ClearableTextBox}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
<Setter Property="BorderBrush" Value="#888" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="1,0,0,0" />
<Setter Property="AllowDrop" Value="true" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:ClearableTextBox}">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="TextRemoverStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="00:00:00.3000000" />
</VisualStateGroup.Transitions>
<VisualState x:Name="TextRemoverVisible">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="TextRemoverHidden">
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Duration="00:00:00.0010000"
Storyboard.TargetName="TextRemover"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="1" />
<ScrollViewer x:Name="PART_ContentHost" VerticalAlignment="Center"
Margin="0,0,18,0"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<Viewbox Stretch="Uniform" HorizontalAlignment="Right" VerticalAlignment="Stretch" Margin="0,3,3,3">
<Button x:Name="TextRemover"
Width="14"
Height="14"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsTabStop="False"
RenderTransformOrigin="0.5,0.5"
Style="{StaticResource ClearButtonStyle}">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1" />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Button.RenderTransform>
</Button>
</Viewbox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Controls:RenderTransformOriginThumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:RenderTransformOriginThumb}">
<Grid Width="10" Height="10" Margin="-5,-5,-5,-5">
<Ellipse Width="2" Height="2" Fill="Black"/>
<Ellipse Width="10" Height="10" Fill="Transparent" Stroke="Black" StrokeThickness="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GrayOutDesignerExceptActiveArea.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
using System.Windows.Media.Animation;
@ -78,7 +79,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -78,7 +79,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
if (designPanel != null && grayOut == null && optionService != null && optionService.GrayOutDesignSurfaceExceptParentContainerWhenDragging) {
grayOut = new GrayOutDesignerExceptActiveArea();
grayOut.designSurfaceRectangle = new RectangleGeometry(
new Rect(new Point(0, 0), designPanel.RenderSize));
new Rect(0, 0, ((Border)designPanel.Child).Child.RenderSize.Width, ((Border)designPanel.Child).Child.RenderSize.Height));
grayOut.designPanel = designPanel;
grayOut.adornerPanel = new AdornerPanel();
grayOut.adornerPanel.Order = AdornerOrder.BehindForeground;

101
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/InfoTextEnterArea.cs

@ -0,0 +1,101 @@ @@ -0,0 +1,101 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
using System.Windows.Media.Animation;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Services;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
/// <summary>
/// Gray out everything except a specific area.
/// </summary>
sealed class InfoTextEnterArea : FrameworkElement
{
Geometry designSurfaceRectangle;
Geometry activeAreaGeometry;
Geometry combinedGeometry;
AdornerPanel adornerPanel;
IDesignPanel designPanel;
const double MaxOpacity = 0.3;
public InfoTextEnterArea()
{
this.IsHitTestVisible = false;
}
public Geometry ActiveAreaGeometry {
get { return activeAreaGeometry; }
set {
activeAreaGeometry = value;
combinedGeometry = activeAreaGeometry;
}
}
Rect currentAnimateActiveAreaRectToTarget;
internal void AnimateActiveAreaRectTo(Rect newRect)
{
if (newRect.Equals(currentAnimateActiveAreaRectToTarget))
return;
activeAreaGeometry.BeginAnimation(
RectangleGeometry.RectProperty,
new RectAnimation(newRect, new Duration(new TimeSpan(0,0,0,0,100))),
HandoffBehavior.SnapshotAndReplace);
currentAnimateActiveAreaRectToTarget = newRect;
}
internal static void Start(ref InfoTextEnterArea grayOut, ServiceContainer services, UIElement activeContainer, string text)
{
Debug.Assert(activeContainer != null);
Start(ref grayOut, services, activeContainer, new Rect(activeContainer.RenderSize), text);
}
internal static void Start(ref InfoTextEnterArea grayOut, ServiceContainer services, UIElement activeContainer, Rect activeRectInActiveContainer, string text)
{
Debug.Assert(services != null);
Debug.Assert(activeContainer != null);
DesignPanel designPanel = services.GetService<IDesignPanel>() as DesignPanel;
OptionService optionService = services.GetService<OptionService>();
if (designPanel != null && grayOut == null && optionService != null && optionService.GrayOutDesignSurfaceExceptParentContainerWhenDragging) {
grayOut = new InfoTextEnterArea();
grayOut.designSurfaceRectangle = new RectangleGeometry(
new Rect(0, 0, ((Border)designPanel.Child).Child.RenderSize.Width, ((Border)designPanel.Child).Child.RenderSize.Height));
grayOut.designPanel = designPanel;
grayOut.adornerPanel = new AdornerPanel();
grayOut.adornerPanel.Order = AdornerOrder.Background;
grayOut.adornerPanel.SetAdornedElement(designPanel.Context.RootItem.View, null);
grayOut.ActiveAreaGeometry = new RectangleGeometry(activeRectInActiveContainer, 0, 0, (Transform)activeContainer.TransformToVisual(grayOut.adornerPanel.AdornedElement));
var tb = new TextBlock(){Text = text};
tb.FontSize = 10;
tb.ClipToBounds = true;
tb.Width = ((FrameworkElement) activeContainer).ActualWidth;
tb.Height = ((FrameworkElement) activeContainer).ActualHeight;
tb.VerticalAlignment = VerticalAlignment.Top;
tb.HorizontalAlignment = HorizontalAlignment.Left;
tb.RenderTransform = (Transform)activeContainer.TransformToVisual(grayOut.adornerPanel.AdornedElement);
grayOut.adornerPanel.Children.Add(tb);
designPanel.Adorners.Add(grayOut.adornerPanel);
}
}
static readonly TimeSpan animationTime = new TimeSpan(2000000);
internal static void Stop(ref InfoTextEnterArea grayOut)
{
if (grayOut != null) {
IDesignPanel designPanel = grayOut.designPanel;
AdornerPanel adornerPanelToRemove = grayOut.adornerPanel;
designPanel.Adorners.Remove(adornerPanelToRemove);
grayOut = null;
}
}
}
}

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/MarginHandle.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// <summary>
/// Gets the Stub for this handle
/// </summary>
public MarginStub Stub {get; private set;}
public MarginStub Stub {get; protected set;}
/// <summary>
/// Gets/Sets the angle by which handle rotates.
@ -70,7 +70,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -70,7 +70,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// <summary>
/// Gets/Sets the angle by which the Margin display has to be rotated
/// </summary>
public double TextTransform{
public virtual double TextTransform{
get{
if((double)orientation==90 || (double)orientation == 180)
return 180;
@ -109,6 +109,9 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -109,6 +109,9 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
get { return orientation; }
}
protected MarginHandle()
{ }
public MarginHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
{
Debug.Assert(adornedControlItem!=null);

28
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PanelMoveAdorner.cs

@ -9,6 +9,10 @@ using System.Windows.Controls; @@ -9,6 +9,10 @@ using System.Windows.Controls;
using System.Windows;
using System.Windows.Input;
using ICSharpCode.WpfDesign.Designer.Services;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Designer.Converters;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
@ -17,12 +21,17 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -17,12 +21,17 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
static PanelMoveAdorner()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(PanelMoveAdorner),
new FrameworkPropertyMetadata(typeof(PanelMoveAdorner)));
new FrameworkPropertyMetadata(typeof(PanelMoveAdorner)));
}
private ScaleTransform scaleTransform;
public PanelMoveAdorner(DesignItem item)
{
this.item = item;
scaleTransform = new ScaleTransform(1.0, 1.0);
this.LayoutTransform = scaleTransform;
}
DesignItem item;
@ -30,8 +39,23 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -30,8 +39,23 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
e.Handled = true;
item.Services.Selection.SetSelectedComponents(new DesignItem [] { item }, SelectionTypes.Auto);
item.Services.Selection.SetSelectedComponents(new DesignItem [] { item }, SelectionTypes.Auto);
new DragMoveMouseGesture(item, false).Start(item.Services.DesignPanel, e);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var surface = this.TryFindParent<DesignSurface>();
if (surface != null && surface.ZoomControl != null)
{
var bnd = new Binding("CurrentZoom") {Source = surface.ZoomControl};
bnd.Converter = InvertedZoomConverter.Instance;
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleXProperty, bnd);
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleYProperty, bnd);
}
}
}
}

227
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/QuickOperationMenu.cs

@ -6,6 +6,11 @@ using System.Collections.Generic; @@ -6,6 +6,11 @@ using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Designer.Converters;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
@ -13,106 +18,124 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -13,106 +18,124 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// A Small icon which shows up a menu containing common properties
/// </summary>
public class QuickOperationMenu : Control
{
static QuickOperationMenu()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof (QuickOperationMenu), new FrameworkPropertyMetadata(typeof (QuickOperationMenu)));
}
private MenuItem _mainHeader;
/// <summary>
/// Contains Default values in the Sub menu for example "HorizontalAlignment" has "HorizontalAlignment.Stretch" as it's value.
/// </summary>
private readonly Dictionary<MenuItem, MenuItem> _defaults = new Dictionary<MenuItem, MenuItem>();
/// <summary>
/// Is the main header menu which brings up all the menus.
/// </summary>
public MenuItem MainHeader {
get { return _mainHeader; }
}
/// <summary>
/// Add a submenu with checkable values.
/// </summary>
/// <param name="parent">The parent menu under which to add.</param>
/// <param name="enumValues">All the values of an enum to be showed in the menu</param>
/// <param name="defaultValue">The default value out of all the enums.</param>
/// <param name="setValue">The presently set value out of the enums</param>
public void AddSubMenuCheckable(MenuItem parent, Array enumValues, string defaultValue, string setValue)
{
foreach (var enumValue in enumValues) {
var menuItem = new MenuItem {Header = enumValue.ToString(), IsCheckable = true};
parent.Items.Add(menuItem);
if (enumValue.ToString() == defaultValue)
_defaults.Add(parent, menuItem);
if (enumValue.ToString() == setValue)
menuItem.IsChecked = true;
}
}
/// <summary>
/// Add a menu in the main header.
/// </summary>
/// <param name="menuItem">The menu to add.</param>
public void AddSubMenuInTheHeader(MenuItem menuItem)
{
if (_mainHeader != null)
_mainHeader.Items.Add(menuItem);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var mainHeader = Template.FindName("MainHeader", this) as MenuItem;
if (mainHeader != null) {
_mainHeader = mainHeader;
}
}
/// <summary>
/// Checks a menu item and making it exclusive. If the check was toggled then the default menu item is selected.
/// </summary>
/// <param name="parent">The parent item of the sub menu</param>
/// <param name="clickedOn">The Item clicked on</param>
/// <returns>Returns the Default value if the checkable menu item is toggled or otherwise the new checked menu item.</returns>
public string UncheckChildrenAndSelectClicked(MenuItem parent, MenuItem clickedOn)
{
MenuItem defaultMenuItem;
_defaults.TryGetValue(parent, out defaultMenuItem);
if (IsAnyItemChecked(parent)) {
foreach (var item in parent.Items) {
var menuItem = item as MenuItem;
if (menuItem != null) menuItem.IsChecked = false;
}
clickedOn.IsChecked = true;
return (string) clickedOn.Header;
} else {
if (defaultMenuItem != null) {
defaultMenuItem.IsChecked = true;
return (string) defaultMenuItem.Header;
}
}
return null;
}
/// <summary>
/// Checks in the sub-menu whether aby items has been checked or not
/// </summary>
/// <param name="parent"></param>
/// <returns></returns>
private bool IsAnyItemChecked(MenuItem parent)
{
bool check = false;
if (parent.HasItems) {
foreach (var item in parent.Items) {
var menuItem = item as MenuItem;
if (menuItem != null && menuItem.IsChecked)
check = true;
}
}
return check;
}
}
{
static QuickOperationMenu()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof (QuickOperationMenu), new FrameworkPropertyMetadata(typeof (QuickOperationMenu)));
}
public QuickOperationMenu()
{
scaleTransform = new ScaleTransform(1.0, 1.0);
this.LayoutTransform = scaleTransform;
}
private ScaleTransform scaleTransform;
private MenuItem _mainHeader;
/// <summary>
/// Contains Default values in the Sub menu for example "HorizontalAlignment" has "HorizontalAlignment.Stretch" as it's value.
/// </summary>
private readonly Dictionary<MenuItem, MenuItem> _defaults = new Dictionary<MenuItem, MenuItem>();
/// <summary>
/// Is the main header menu which brings up all the menus.
/// </summary>
public MenuItem MainHeader {
get { return _mainHeader; }
}
/// <summary>
/// Add a submenu with checkable values.
/// </summary>
/// <param name="parent">The parent menu under which to add.</param>
/// <param name="enumValues">All the values of an enum to be showed in the menu</param>
/// <param name="defaultValue">The default value out of all the enums.</param>
/// <param name="setValue">The presently set value out of the enums</param>
public void AddSubMenuCheckable(MenuItem parent, Array enumValues, string defaultValue, string setValue)
{
foreach (var enumValue in enumValues) {
var menuItem = new MenuItem {Header = enumValue.ToString(), IsCheckable = true};
parent.Items.Add(menuItem);
if (enumValue.ToString() == defaultValue)
_defaults.Add(parent, menuItem);
if (enumValue.ToString() == setValue)
menuItem.IsChecked = true;
}
}
/// <summary>
/// Add a menu in the main header.
/// </summary>
/// <param name="menuItem">The menu to add.</param>
public void AddSubMenuInTheHeader(MenuItem menuItem)
{
if (_mainHeader != null)
_mainHeader.Items.Add(menuItem);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var mainHeader = Template.FindName("MainHeader", this) as MenuItem;
if (mainHeader != null) {
_mainHeader = mainHeader;
}
var surface = this.TryFindParent<DesignSurface>();
if (surface != null && surface.ZoomControl != null)
{
var bnd = new Binding("CurrentZoom") { Source = surface.ZoomControl };
bnd.Converter = InvertedZoomConverter.Instance;
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleXProperty, bnd);
BindingOperations.SetBinding(scaleTransform, ScaleTransform.ScaleYProperty, bnd);
}
}
/// <summary>
/// Checks a menu item and making it exclusive. If the check was toggled then the default menu item is selected.
/// </summary>
/// <param name="parent">The parent item of the sub menu</param>
/// <param name="clickedOn">The Item clicked on</param>
/// <returns>Returns the Default value if the checkable menu item is toggled or otherwise the new checked menu item.</returns>
public string UncheckChildrenAndSelectClicked(MenuItem parent, MenuItem clickedOn)
{
MenuItem defaultMenuItem;
_defaults.TryGetValue(parent, out defaultMenuItem);
if (IsAnyItemChecked(parent)) {
foreach (var item in parent.Items) {
var menuItem = item as MenuItem;
if (menuItem != null) menuItem.IsChecked = false;
}
clickedOn.IsChecked = true;
return (string) clickedOn.Header;
} else {
if (defaultMenuItem != null) {
defaultMenuItem.IsChecked = true;
return (string) defaultMenuItem.Header;
}
}
return null;
}
/// <summary>
/// Checks in the sub-menu whether aby items has been checked or not
/// </summary>
/// <param name="parent"></param>
/// <returns></returns>
private bool IsAnyItemChecked(MenuItem parent)
{
bool check = false;
if (parent.HasItems) {
foreach (var item in parent.Items) {
var menuItem = item as MenuItem;
if (menuItem != null && menuItem.IsChecked)
check = true;
}
}
return check;
}
}
}

28
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/RenderTransformOriginThumb.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
/// <summary>
/// Description of RenderTransformThumb.
/// </summary>
public class RenderTransformOriginThumb : Thumb
{
static RenderTransformOriginThumb()
{
//This OverrideMetadata call tells the system that this element wants to provide a style that is different than its base class.
//This style is defined in themes\generic.xaml
DefaultStyleKeyProperty.OverrideMetadata(typeof(RenderTransformOriginThumb), new FrameworkPropertyMetadata(typeof(RenderTransformOriginThumb)));
}
}
}

38
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/RotateThumb.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Controls
{
public class RotateThumb : ResizeThumb
{
private double initialAngle;
private RotateTransform rotateTransform;
private Vector startVector;
private Point centerPoint;
private Control designerItem;
private Panel canvas;
private AdornerPanel parent;
static RotateThumb()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(RotateThumb), new FrameworkPropertyMetadata(typeof(RotateThumb)));
}
public RotateThumb()
{
this.ResizeThumbVisible = true;
}
}
}

12
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ZoomControl.cs

@ -18,9 +18,19 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -18,9 +18,19 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
{
PanToolCursor = GetCursor("Images/PanToolCursor.cur");
PanToolCursorMouseDown = GetCursor("Images/PanToolCursorMouseDown.cur");
DefaultStyleKeyProperty.OverrideMetadata(typeof(ZoomControl), new FrameworkPropertyMetadata(typeof(ZoomControl)));
}
public object AdditionalControls
{
get { return (object)GetValue(AdditionalControlsProperty); }
set { SetValue(AdditionalControlsProperty, value); }
}
static Cursor GetCursor(string path)
public static readonly DependencyProperty AdditionalControlsProperty =
DependencyProperty.Register("AdditionalControls", typeof(object), typeof(ZoomControl), new PropertyMetadata(null));
internal static Cursor GetCursor(string path)
{
var a = Assembly.GetExecutingAssembly();
var m = new ResourceManager(a.GetName().Name + ".g", a);

113
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Converters.cs

@ -9,6 +9,7 @@ using System.Windows.Data; @@ -9,6 +9,7 @@ using System.Windows.Data;
using System.Globalization;
using System.Windows;
using System.Collections;
using System.Windows.Media;
namespace ICSharpCode.WpfDesign.Designer.Converters
{
@ -85,7 +86,7 @@ namespace ICSharpCode.WpfDesign.Designer.Converters @@ -85,7 +86,7 @@ namespace ICSharpCode.WpfDesign.Designer.Converters
{
if (value == null || (int)value == 0) {
return Visibility.Collapsed;
}
}
return Visibility.Visible;
}
@ -145,17 +146,109 @@ namespace ICSharpCode.WpfDesign.Designer.Converters @@ -145,17 +146,109 @@ namespace ICSharpCode.WpfDesign.Designer.Converters
}
public class FormatDoubleConverter : IValueConverter
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly FormatDoubleConverter Instance=new FormatDoubleConverter();
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly FormatDoubleConverter Instance=new FormatDoubleConverter();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Math.Round((double)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class BlackWhenTrue : IValueConverter
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly BlackWhenTrue Instance = new BlackWhenTrue();
private Brush black = new SolidColorBrush(Colors.Black);
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? black : null;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Math.Round((double)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
public class EnumBoolean : IValueConverter
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly EnumBoolean Instance = new EnumBoolean();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
object parameterValue = Enum.Parse(value.GetType(), parameterString);
return parameterValue.Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
return Enum.Parse(targetType, parameterString);
}
}
public class EnumVisibility : IValueConverter
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly EnumVisibility Instance = new EnumVisibility();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
object parameterValue = Enum.Parse(value.GetType(), parameterString);
return parameterValue.Equals(value) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
return Enum.Parse(targetType, parameterString);
}
}
public class InvertedZoomConverter : IValueConverter
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "converter is immutable")]
public static readonly InvertedZoomConverter Instance = new InvertedZoomConverter();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return 1.0 / ((double)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return 1.0 / ((double)value);
}
}
}

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

Loading…
Cancel
Save