From b4c81d1ce69db4f83b14e5abae998a492cd07744 Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Fri, 7 Jan 2011 22:27:33 +0000 Subject: [PATCH] Branched from $/wpftoolkit/Main/Source --- .../ExtendedWPFToolkit.sln | 69 ++ .../ExtendedWPFToolkit.vssscc | 10 + .../MetadataStore.cs | 52 + .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 71 ++ .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../WPFToolkit.Extended.Design.csproj | 99 ++ .../WPFToolkit.Extended.Design.csproj.vspscc | 10 + .../Src/WPFToolkit.Extended.Samples/App.xaml | 8 + .../WPFToolkit.Extended.Samples/App.xaml.cs | 16 + .../MainWindow.xaml | 9 + .../MainWindow.xaml.cs | 27 + .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 71 ++ .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../WPFToolkit.Extended.Samples.csproj | 113 ++ .../WPFToolkit.Extended.Samples.csproj.vspscc | 10 + .../BusyIndicator/BusyIndicator.cs | 266 ++++ .../VisualStates.BusyIndicator.cs | 37 + .../ButtonSpinner/ButtonSpinner.cs | 191 +++ .../ButtonSpinner/SpinDirection.cs | 21 + .../ButtonSpinner/SpinEventArgs.cs | 28 + .../ButtonSpinner/Spinner.cs | 75 ++ .../ButtonSpinner/ValidSpinDirections.cs | 26 + .../ChildWindow/ChildWindow.cs | 539 +++++++++ .../ChildWindow/VisualStates.ChildWindow.cs | 22 + .../ChildWindow/WindowState.cs | 13 + .../ColorPicker/ColorItem.cs | 17 + .../ColorPicker/ColorPicker.cs | 221 ++++ .../Core/Converters/InverseBoolConverter.cs | 22 + .../Core/Primitives/InputBase.cs | 186 +++ .../Core/UIElementAdorner.cs | 215 ++++ .../DateTimeUpDown/DateTimeFormat.cs | 18 + .../DateTimeUpDown/DateTimeInfo.cs | 14 + .../DateTimeUpDown/DateTimePart.cs | 22 + .../DateTimeUpDown/DateTimeUpDown.cs | 445 +++++++ ...rderThicknessToStrokeThicknessConverter.cs | 24 + .../Magnifier/Converters/RadiusConverter.cs | 22 + .../Magnifier/Magnifier.cs | 166 +++ .../Magnifier/MagnifierAdorner.cs | 96 ++ .../Magnifier/MagnifierManager.cs | 98 ++ .../MaskedTextBox/MaskedTextBox.cs | 274 +++++ .../MessageBox/Icons/Error48.png | Bin 0 -> 4170 bytes .../MessageBox/Icons/Information48.png | Bin 0 -> 5101 bytes .../MessageBox/Icons/Question48.png | Bin 0 -> 5492 bytes .../MessageBox/Icons/Warning48.png | Bin 0 -> 3281 bytes .../MessageBox/MessageBox.cs | 422 +++++++ .../MessageBox/VisualStates.MessageBox.cs | 17 + .../NumericUpDown/NumericUpDown.cs | 297 +++++ .../Properties/AssemblyInfo.cs | 59 + .../Properties/Resources.Designer.cs | 63 + .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + .../RichTextBox/Formatters/ITextFormatter.cs | 11 + .../Formatters/PlainTextFormatter.cs | 21 + .../RichTextBox/Formatters/RtfFormatter.cs | 33 + .../RichTextBox/Formatters/XamlFormatter.cs | 40 + .../RichTextBox/RichTextBox.cs | 117 ++ .../IRichTextBoxFormatBar.cs | 12 + .../RichTextBoxFormatBar/Images/Bold16.png | Bin 0 -> 175 bytes .../RichTextBoxFormatBar/Images/Bullets16.png | Bin 0 -> 209 bytes .../Images/CenterAlign16.png | Bin 0 -> 172 bytes .../Images/FontColorPicker16.png | Bin 0 -> 374 bytes .../RichTextBoxFormatBar/Images/Italic16.png | Bin 0 -> 183 bytes .../Images/JustifyAlign16.png | Bin 0 -> 169 bytes .../Images/LeftAlign16.png | Bin 0 -> 186 bytes .../Images/Numbering16.png | Bin 0 -> 269 bytes .../Images/RightAlign16.png | Bin 0 -> 181 bytes .../Images/TextHighlightColorPicker16.png | Bin 0 -> 374 bytes .../Images/Underline16.png | Bin 0 -> 197 bytes .../RichTextBoxFormatBar.xaml | 422 +++++++ .../RichTextBoxFormatBar.xaml.cs | 232 ++++ .../RichTextBoxFormatBarManager.cs | 197 +++ .../WPFToolkit.Extended/Themes/Generic.xaml | 1073 +++++++++++++++++ .../UpDownBase/UpDownBase.cs | 162 +++ .../Src/WPFToolkit.Extended/VisualStates.cs | 9 + .../WPFToolkit.Extended.csproj | 174 +++ .../WPFToolkit.Extended.csproj.vspscc | 10 + .../ExtendedWPFToolkit.sln | 38 + .../ExtendedWPFToolkit.vssscc | 10 + .../Src/WPFToolkit.Extended.Examples/App.xaml | 8 + .../WPFToolkit.Extended.Examples/App.xaml.cs | 16 + .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 71 ++ .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../WPFToolkit.Extended.Examples.csproj | 113 ++ ...WPFToolkit.Extended.Examples.csproj.vspscc | 10 + .../WPFToolkit.Extended.Examples/Window1.xaml | 9 + .../Window1.xaml.cs | 33 + .../MessageBox/Icons/Error48.png | Bin 0 -> 4170 bytes .../MessageBox/Icons/Information48.png | Bin 0 -> 5101 bytes .../MessageBox/Icons/Question48.png | Bin 0 -> 5492 bytes .../MessageBox/Icons/Warning48.png | Bin 0 -> 3281 bytes .../Properties/AssemblyInfo.cs | 59 + .../Properties/Resources.Designer.cs | 63 + .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + .../RichTextBoxFormatBar/Images/Bold16.png | Bin 0 -> 175 bytes .../RichTextBoxFormatBar/Images/Bullets16.png | Bin 0 -> 209 bytes .../Images/CenterAlign16.png | Bin 0 -> 172 bytes .../Images/FontColorPicker16.png | Bin 0 -> 374 bytes .../RichTextBoxFormatBar/Images/Italic16.png | Bin 0 -> 183 bytes .../Images/JustifyAlign16.png | Bin 0 -> 169 bytes .../Images/LeftAlign16.png | Bin 0 -> 186 bytes .../Images/Numbering16.png | Bin 0 -> 269 bytes .../Images/RightAlign16.png | Bin 0 -> 181 bytes .../Images/TextHighlightColorPicker16.png | Bin 0 -> 374 bytes .../Images/Underline16.png | Bin 0 -> 197 bytes .../WPFToolkit.Extended/Themes/Generic.xaml | 1070 ++++++++++++++++ .../WPFToolkit.Extended.csproj | 242 ++++ .../WPFToolkit.Extended.csproj.vspscc | 10 + 119 files changed, 9673 insertions(+) create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.sln create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.vssscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/MetadataStore.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/AssemblyInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.resx create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.settings create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj.vspscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/AssemblyInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.resx create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.settings create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj.vspscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/VisualStates.BusyIndicator.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ButtonSpinner.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinDirection.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinEventArgs.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Spinner.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ValidSpinDirections.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/VisualStates.ChildWindow.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/WindowState.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/InputBase.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/UIElementAdorner.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeFormat.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimePart.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeUpDown.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/BorderThicknessToStrokeThicknessConverter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/RadiusConverter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Magnifier.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierAdorner.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierManager.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Warning48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/VisualStates.MessageBox.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/NumericUpDown/NumericUpDown.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/ITextFormatter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/PlainTextFormatter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/RtfFormatter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/XamlFormatter.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/RichTextBox.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/IRichTextBoxFormatBar.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/CenterAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/FontColorPicker16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Numbering16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/RightAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/UpDownBase/UpDownBase.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/VisualStates.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.sln create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.vssscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/AssemblyInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.resx create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.settings create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj.vspscc create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Warning48.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.resx create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.settings create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/CenterAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/FontColorPicker16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Numbering16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/RightAlign16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Themes/Generic.xaml create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj create mode 100644 Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.sln b/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.sln new file mode 100644 index 00000000..ffc559c3 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.sln @@ -0,0 +1,69 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFToolkit.Extended", "Src\WPFToolkit.Extended\WPFToolkit.Extended.csproj", "{72E591D6-8F83-4D8C-8F67-9C325E623234}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFToolkit.Extended.Samples", "Src\WPFToolkit.Extended.Samples\WPFToolkit.Extended.Samples.csproj", "{47B3F3DF-FAB7-4D0A-9267-109D30BF387F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFToolkit.Extended.Design", "Src\WPFToolkit.Extended.Design\WPFToolkit.Extended.Design.csproj", "{FA6645C6-7CA5-427C-91F2-916D9FECD76C}" +EndProject +Global + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 4 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = https://tfs.codeplex.com/tfs/tfs02 + SccLocalPath0 = . + SccProjectUniqueName1 = Src\\WPFToolkit.Extended\\WPFToolkit.Extended.csproj + SccProjectName1 = Src/WPFToolkit.Extended + SccLocalPath1 = Src\\WPFToolkit.Extended + SccProjectUniqueName2 = Src\\WPFToolkit.Extended.Samples\\WPFToolkit.Extended.Samples.csproj + SccProjectName2 = Src/WPFToolkit.Extended.Samples + SccLocalPath2 = Src\\WPFToolkit.Extended.Samples + SccProjectUniqueName3 = Src\\WPFToolkit.Extended.Design\\WPFToolkit.Extended.Design.csproj + SccProjectName3 = Src/WPFToolkit.Extended.Design + SccLocalPath3 = Src\\WPFToolkit.Extended.Design + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|x86.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|x86.ActiveCfg = Release|Any CPU + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Debug|Any CPU.ActiveCfg = Debug|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Debug|x86.ActiveCfg = Debug|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Debug|x86.Build.0 = Debug|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Release|Any CPU.ActiveCfg = Release|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Release|Mixed Platforms.Build.0 = Release|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Release|x86.ActiveCfg = Release|x86 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F}.Release|x86.Build.0 = Release|x86 + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Debug|x86.ActiveCfg = Debug|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Release|Any CPU.Build.0 = Release|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FA6645C6-7CA5-427C-91F2-916D9FECD76C}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.vssscc b/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.vssscc new file mode 100644 index 00000000..794f014c --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/ExtendedWPFToolkit.vssscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/MetadataStore.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/MetadataStore.cs new file mode 100644 index 00000000..d59e48ab --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/MetadataStore.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Windows.Design.Metadata; +using Microsoft.Windows.Controls; +using Microsoft.Windows.Design.Features; +using System.ComponentModel; + +[assembly: ProvideMetadata(typeof(WPFToolkit.Extended.Design.MetadataStore))] + +namespace WPFToolkit.Extended.Design +{ + internal class MetadataStore : IProvideAttributeTable + { + public AttributeTable AttributeTable + { + get + { + AttributeTableBuilder builder = new AttributeTableBuilder(); + + + //builder.AddCustomAttributes(typeof(NumericUpDown), new FeatureAttribute(typeof(NumericUpDownEditor))); + builder.AddCustomAttributes(typeof(NumericUpDown), "Increment", + new DescriptionAttribute("Specifies the amount in which to increment the value."), + new DisplayNameAttribute("Increment")); + + builder.AddCustomAttributes(typeof(NumericUpDown), "IsEditable", + new DescriptionAttribute("Determines if direct entry is allowed in the text box."), + new DisplayNameAttribute("IsEditable")); + + builder.AddCustomAttributes(typeof(NumericUpDown), "Maximum", + new DescriptionAttribute("Gets/Sets the maximum allowed value."), + new DisplayNameAttribute("Maximum")); + + builder.AddCustomAttributes(typeof(NumericUpDown), "Minimum", + new DescriptionAttribute("Gets/Sets the minimum allowed value."), + new DisplayNameAttribute("Minimum")); + + builder.AddCustomAttributes(typeof(NumericUpDown), "Text", + new DescriptionAttribute("Gets/Sets the formated string representation of the value."), + new DisplayNameAttribute("Text")); + + builder.AddCustomAttributes(typeof(NumericUpDown), "Value", + new DescriptionAttribute("Gets/Sets the numeric value."), + new DisplayNameAttribute("Value")); + + return builder.CreateTable(); + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/AssemblyInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..5b13e861 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// 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. +[assembly: AssemblyTitle("WPFToolkit.Extended.Design")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WPFToolkit.Extended.Design")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.Designer.cs new file mode 100644 index 00000000..7ef72466 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Design.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPFToolkit.Extended.Design.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.resx b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.Designer.cs new file mode 100644 index 00000000..72d80d66 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Design.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.settings b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj new file mode 100644 index 00000000..fd0fa3fa --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj @@ -0,0 +1,99 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {FA6645C6-7CA5-427C-91F2-916D9FECD76C} + library + Properties + WPFToolkit.Extended.Design + WPFToolkit.Extended.Design + v4.0 + Client + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + SAK + SAK + SAK + SAK + + + true + full + false + ..\WPFToolkit.Extended\bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\WPFToolkit.Extended\bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + 4.0 + + + + + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + {72E591D6-8F83-4D8C-8F67-9C325E623234} + WPFToolkit.Extended + + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj.vspscc b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj.vspscc new file mode 100644 index 00000000..feffdeca --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Design/WPFToolkit.Extended.Design.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml new file mode 100644 index 00000000..00767c6d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml.cs new file mode 100644 index 00000000..f0cfc9e7 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/App.xaml.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Windows; + +namespace WPFToolkit.Extended.Samples +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml new file mode 100644 index 00000000..0f66d220 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml.cs new file mode 100644 index 00000000..f28170f3 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/MainWindow.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WPFToolkit.Extended.Samples +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/AssemblyInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..35e4c7aa --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// 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. +[assembly: AssemblyTitle("WPFToolkit.Extended.Samples")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WPFToolkit.Extended.Samples")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.Designer.cs new file mode 100644 index 00000000..3c757353 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Samples.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPFToolkit.Extended.Samples.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.resx b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.Designer.cs new file mode 100644 index 00000000..a353c3db --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Samples.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.settings b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj new file mode 100644 index 00000000..e49eab24 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj @@ -0,0 +1,113 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {47B3F3DF-FAB7-4D0A-9267-109D30BF387F} + WinExe + Properties + WPFToolkit.Extended.Samples + WPFToolkit.Extended.Samples + v4.0 + Client + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + SAK + SAK + SAK + SAK + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + {72E591D6-8F83-4D8C-8F67-9C325E623234} + WPFToolkit.Extended + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj.vspscc b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj.vspscc new file mode 100644 index 00000000..feffdeca --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended.Samples/WPFToolkit.Extended.Samples.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.cs new file mode 100644 index 00000000..6a73cd8f --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.cs @@ -0,0 +1,266 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Shapes; +using System.Windows.Threading; + +namespace Microsoft.Windows.Controls +{ + /// + /// A control to provide a visual indicator when an application is busy. + /// + [TemplateVisualState(Name = VisualStates.StateIdle, GroupName = VisualStates.GroupBusyStatus)] + [TemplateVisualState(Name = VisualStates.StateBusy, GroupName = VisualStates.GroupBusyStatus)] + [TemplateVisualState(Name = VisualStates.StateVisible, GroupName = VisualStates.GroupVisibility)] + [TemplateVisualState(Name = VisualStates.StateHidden, GroupName = VisualStates.GroupVisibility)] + [StyleTypedProperty(Property = "OverlayStyle", StyleTargetType = typeof(Rectangle))] + [StyleTypedProperty(Property = "ProgressBarStyle", StyleTargetType = typeof(ProgressBar))] + public class BusyIndicator : ContentControl + { + #region Private Members + + /// + /// Timer used to delay the initial display and avoid flickering. + /// + private DispatcherTimer _displayAfterTimer = new DispatcherTimer(); + + #endregion //Private Members + + #region Constructors + + static BusyIndicator() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(BusyIndicator), new FrameworkPropertyMetadata(typeof(BusyIndicator))); + } + + public BusyIndicator() + { + _displayAfterTimer.Tick += DisplayAfterTimerElapsed; + } + + #endregion //Constructors + + #region Base Class Overrides + + /// + /// Overrides the OnApplyTemplate method. + /// + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + ChangeVisualState(false); + } + + #endregion //Base Class Overrides + + #region Properties + + /// + /// Gets or sets a value indicating whether the BusyContent is visible. + /// + protected bool IsContentVisible { get; set; } + + #endregion //Properties + + #region Dependency Properties + + #region IsBusy + + /// + /// Identifies the IsBusy dependency property. + /// + public static readonly DependencyProperty IsBusyProperty = DependencyProperty.Register( + "IsBusy", + typeof(bool), + typeof(BusyIndicator), + new PropertyMetadata(false, new PropertyChangedCallback(OnIsBusyChanged))); + + /// + /// Gets or sets a value indicating whether the busy indicator should show. + /// + public bool IsBusy + { + get { return (bool)GetValue(IsBusyProperty); } + set { SetValue(IsBusyProperty, value); } + } + + /// + /// IsBusyProperty property changed handler. + /// + /// BusyIndicator that changed its IsBusy. + /// Event arguments. + private static void OnIsBusyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + ((BusyIndicator)d).OnIsBusyChanged(e); + } + + /// + /// IsBusyProperty property changed handler. + /// + /// Event arguments. + protected virtual void OnIsBusyChanged(DependencyPropertyChangedEventArgs e) + { + if (IsBusy) + { + if (DisplayAfter.Equals(TimeSpan.Zero)) + { + // Go visible now + IsContentVisible = true; + } + else + { + // Set a timer to go visible + _displayAfterTimer.Interval = DisplayAfter; + _displayAfterTimer.Start(); + } + } + else + { + // No longer visible + _displayAfterTimer.Stop(); + IsContentVisible = false; + } + + ChangeVisualState(true); + } + + #endregion //IsBusy + + #region Busy Content + + /// + /// Identifies the BusyContent dependency property. + /// + public static readonly DependencyProperty BusyContentProperty = DependencyProperty.Register( + "BusyContent", + typeof(object), + typeof(BusyIndicator), + new PropertyMetadata(null)); + + /// + /// Gets or sets a value indicating the busy content to display to the user. + /// + public object BusyContent + { + get { return (object)GetValue(BusyContentProperty); } + set { SetValue(BusyContentProperty, value); } + } + + #endregion //Busy Content + + #region Busy Content Template + + /// + /// Identifies the BusyTemplate dependency property. + /// + public static readonly DependencyProperty BusyContentTemplateProperty = DependencyProperty.Register( + "BusyContentTemplate", + typeof(DataTemplate), + typeof(BusyIndicator), + new PropertyMetadata(null)); + + /// + /// Gets or sets a value indicating the template to use for displaying the busy content to the user. + /// + public DataTemplate BusyContentTemplate + { + get { return (DataTemplate)GetValue(BusyContentTemplateProperty); } + set { SetValue(BusyContentTemplateProperty, value); } + } + + #endregion //Busy Content Template + + #region Display After + + /// + /// Identifies the DisplayAfter dependency property. + /// + public static readonly DependencyProperty DisplayAfterProperty = DependencyProperty.Register( + "DisplayAfter", + typeof(TimeSpan), + typeof(BusyIndicator), + new PropertyMetadata(TimeSpan.FromSeconds(0.1))); + + /// + /// Gets or sets a value indicating how long to delay before displaying the busy content. + /// + public TimeSpan DisplayAfter + { + get { return (TimeSpan)GetValue(DisplayAfterProperty); } + set { SetValue(DisplayAfterProperty, value); } + } + + #endregion //Display After + + #region Overlay Style + + /// + /// Identifies the OverlayStyle dependency property. + /// + public static readonly DependencyProperty OverlayStyleProperty = DependencyProperty.Register( + "OverlayStyle", + typeof(Style), + typeof(BusyIndicator), + new PropertyMetadata(null)); + + /// + /// Gets or sets a value indicating the style to use for the overlay. + /// + public Style OverlayStyle + { + get { return (Style)GetValue(OverlayStyleProperty); } + set { SetValue(OverlayStyleProperty, value); } + } + #endregion //Overlay Style + + #region ProgressBar Style + + /// + /// Identifies the ProgressBarStyle dependency property. + /// + public static readonly DependencyProperty ProgressBarStyleProperty = DependencyProperty.Register( + "ProgressBarStyle", + typeof(Style), + typeof(BusyIndicator), + new PropertyMetadata(null)); + + /// + /// Gets or sets a value indicating the style to use for the progress bar. + /// + public Style ProgressBarStyle + { + get { return (Style)GetValue(ProgressBarStyleProperty); } + set { SetValue(ProgressBarStyleProperty, value); } + } + + #endregion //ProgressBar Style + + #endregion //Dependency Properties + + #region Methods + + /// + /// Handler for the DisplayAfterTimer. + /// + /// Event sender. + /// Event arguments. + private void DisplayAfterTimerElapsed(object sender, EventArgs e) + { + _displayAfterTimer.Stop(); + IsContentVisible = true; + ChangeVisualState(true); + } + + /// + /// Changes the control's visual state(s). + /// + /// True if state transitions should be used. + protected virtual void ChangeVisualState(bool useTransitions) + { + VisualStateManager.GoToState(this, IsBusy ? VisualStates.StateBusy : VisualStates.StateIdle, useTransitions); + VisualStateManager.GoToState(this, IsContentVisible ? VisualStates.StateVisible : VisualStates.StateHidden, useTransitions); + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/VisualStates.BusyIndicator.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/VisualStates.BusyIndicator.cs new file mode 100644 index 00000000..5d78d952 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/VisualStates.BusyIndicator.cs @@ -0,0 +1,37 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + internal static partial class VisualStates + { + /// + /// Busyness group name. + /// + public const string GroupBusyStatus = "BusyStatusStates"; + + /// + /// Busy state for BusyIndicator. + /// + public const string StateBusy = "Busy"; + + /// + /// Idle state for BusyIndicator. + /// + public const string StateIdle = "Idle"; + + /// + /// BusyDisplay group. + /// + public const string GroupVisibility = "VisibilityStates"; + + /// + /// Visible state name for BusyIndicator. + /// + public const string StateVisible = "Visible"; + + /// + /// Hidden state name for BusyIndicator. + /// + public const string StateHidden = "Hidden"; + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ButtonSpinner.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ButtonSpinner.cs new file mode 100644 index 00000000..b2c2ad99 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ButtonSpinner.cs @@ -0,0 +1,191 @@ +using System; +using System.Windows; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Controls.Primitives; + +namespace Microsoft.Windows.Controls +{ + /// + /// Represents a spinner control that includes two Buttons. + /// + [ContentProperty("Content")] + public class ButtonSpinner : Spinner + { + #region Properties + + #region Content + + /// + /// Identifies the Content dependency property. + /// + public static readonly DependencyProperty ContentProperty = DependencyProperty.Register("Content", typeof(object), typeof(ButtonSpinner), new PropertyMetadata(null, OnContentPropertyChanged)); + public object Content + { + get { return GetValue(ContentProperty) as object; } + set { SetValue(ContentProperty, value); } + } + + /// + /// ContentProperty property changed handler. + /// + /// ButtonSpinner that changed its Content. + /// Event arguments. + private static void OnContentPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + ButtonSpinner source = d as ButtonSpinner; + source.OnContentChanged(e.OldValue, e.NewValue); + } + + #endregion //Content + + private ButtonBase _increaseButton; + /// + /// Gets or sets the IncreaseButton template part. + /// + private ButtonBase IncreaseButton + { + get { return _increaseButton; } + set + { + if (_increaseButton != null) + { + _increaseButton.Click -= OnButtonClick; + } + + _increaseButton = value; + + if (_increaseButton != null) + { + _increaseButton.Click += OnButtonClick; + } + } + } + + + private ButtonBase _decreaseButton; + /// + /// Gets or sets the DecreaseButton template part. + /// + private ButtonBase DecreaseButton + { + get { return _decreaseButton; } + set + { + if (_decreaseButton != null) + { + _decreaseButton.Click -= OnButtonClick; + } + + _decreaseButton = value; + + if (_decreaseButton != null) + { + _decreaseButton.Click += OnButtonClick; + } + } + } + + #endregion //Properties + + #region Constructors + + static ButtonSpinner() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ButtonSpinner), new FrameworkPropertyMetadata(typeof(ButtonSpinner))); + } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + IncreaseButton = GetTemplateChild("IncreaseButton") as ButtonBase; + DecreaseButton = GetTemplateChild("DecreaseButton") as ButtonBase; + + SetButtonUsage(); + } + + #endregion //Base Class Overrides + + /// + /// Occurs when the Content property value changed. + /// + /// The old value of the Content property. + /// The new value of the Content property. + protected virtual void OnContentChanged(object oldValue, object newValue) { } + + /// + /// Handle click event of IncreaseButton and DecreaseButton template parts, + /// translating Click to appropriate Spin event. + /// + /// Event sender, should be either IncreaseButton or DecreaseButton template part. + /// Event args. + private void OnButtonClick(object sender, RoutedEventArgs e) + { + SpinDirection direction = sender == IncreaseButton ? SpinDirection.Increase : SpinDirection.Decrease; + OnSpin(new SpinEventArgs(direction)); + } + + /// + /// Cancel LeftMouseButtonUp events originating from a button that has + /// been changed to disabled. + /// + /// The data for the event. + protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) + { + base.OnMouseLeftButtonUp(e); + + Point mousePosition; + if (IncreaseButton != null && IncreaseButton.IsEnabled == false) + { + mousePosition = e.GetPosition(IncreaseButton); + if (mousePosition.X > 0 && mousePosition.X < IncreaseButton.ActualWidth && + mousePosition.Y > 0 && mousePosition.Y < IncreaseButton.ActualHeight) + { + e.Handled = true; + } + } + + if (DecreaseButton != null && DecreaseButton.IsEnabled == false) + { + mousePosition = e.GetPosition(DecreaseButton); + if (mousePosition.X > 0 && mousePosition.X < DecreaseButton.ActualWidth && + mousePosition.Y > 0 && mousePosition.Y < DecreaseButton.ActualHeight) + { + e.Handled = true; + } + } + } + + /// + /// Called when valid spin direction changed. + /// + /// The old value. + /// The new value. + protected override void OnValidSpinDirectionChanged(ValidSpinDirections oldValue, ValidSpinDirections newValue) + { + SetButtonUsage(); + } + + /// + /// Disables or enables the buttons based on the valid spin direction. + /// + private void SetButtonUsage() + { + // buttonspinner adds buttons that spin, so disable accordingly. + if (IncreaseButton != null) + { + IncreaseButton.IsEnabled = ((ValidSpinDirection & ValidSpinDirections.Increase) == ValidSpinDirections.Increase); + } + + if (DecreaseButton != null) + { + DecreaseButton.IsEnabled = ((ValidSpinDirection & ValidSpinDirections.Decrease) == ValidSpinDirections.Decrease); + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinDirection.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinDirection.cs new file mode 100644 index 00000000..aaa121fb --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinDirection.cs @@ -0,0 +1,21 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + /// + /// Represents spin directions that could be initiated by the end-user. + /// + /// Preview + public enum SpinDirection + { + /// + /// Represents a spin initiated by the end-user in order to Increase a value. + /// + Increase = 0, + + /// + /// Represents a spin initiated by the end-user in order to Decrease a value. + /// + Decrease = 1 + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinEventArgs.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinEventArgs.cs new file mode 100644 index 00000000..f8a89385 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/SpinEventArgs.cs @@ -0,0 +1,28 @@ +using System; +using System.Windows; + +namespace Microsoft.Windows.Controls +{ + /// + /// Provides data for the Spinner.Spin event. + /// + /// Preview + public class SpinEventArgs : RoutedEventArgs + { + /// + /// Gets the SpinDirection for the spin that has been initiated by the + /// end-user. + /// + public SpinDirection Direction { get; private set; } + + /// + /// Initializes a new instance of the SpinEventArgs class. + /// + /// Spin direction. + public SpinEventArgs(SpinDirection direction) + : base() + { + Direction = direction; + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Spinner.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Spinner.cs new file mode 100644 index 00000000..63b2a22a --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Spinner.cs @@ -0,0 +1,75 @@ +using System; +using System.Windows.Controls; +using System.Windows; + +namespace Microsoft.Windows.Controls +{ + /// + /// Base class for controls that represents controls that can spin. + /// + public abstract class Spinner : Control + { + #region Properties + + /// + /// Identifies the ValidSpinDirection dependency property. + /// + public static readonly DependencyProperty ValidSpinDirectionProperty = DependencyProperty.Register("ValidSpinDirection", typeof(ValidSpinDirections), typeof(Spinner), new PropertyMetadata(ValidSpinDirections.Increase | ValidSpinDirections.Decrease, OnValidSpinDirectionPropertyChanged)); + public ValidSpinDirections ValidSpinDirection + { + get { return (ValidSpinDirections)GetValue(ValidSpinDirectionProperty); } + set { SetValue(ValidSpinDirectionProperty, value); } + } + + /// + /// ValidSpinDirectionProperty property changed handler. + /// + /// ButtonSpinner that changed its ValidSpinDirection. + /// Event arguments. + private static void OnValidSpinDirectionPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + Spinner source = (Spinner)d; + ValidSpinDirections oldvalue = (ValidSpinDirections)e.OldValue; + ValidSpinDirections newvalue = (ValidSpinDirections)e.NewValue; + source.OnValidSpinDirectionChanged(oldvalue, newvalue); + } + + #endregion //Properties + + /// + /// Occurs when spinning is initiated by the end-user. + /// + public event EventHandler Spin; + + /// + /// Initializes a new instance of the Spinner class. + /// + protected Spinner() { } + + /// + /// Raises the OnSpin event when spinning is initiated by the end-user. + /// + /// Spin event args. + protected virtual void OnSpin(SpinEventArgs e) + { + ValidSpinDirections valid = e.Direction == SpinDirection.Increase ? ValidSpinDirections.Increase : ValidSpinDirections.Decrease; + + //Only raise the event if spin is allowed. + if ((ValidSpinDirection & valid) == valid) + { + EventHandler handler = Spin; + if (handler != null) + { + handler(this, e); + } + } + } + + /// + /// Called when valid spin direction changed. + /// + /// The old value. + /// The new value. + protected virtual void OnValidSpinDirectionChanged(ValidSpinDirections oldValue, ValidSpinDirections newValue) { } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ValidSpinDirections.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ValidSpinDirections.cs new file mode 100644 index 00000000..d744620d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/ValidSpinDirections.cs @@ -0,0 +1,26 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + /// + /// Represents spin directions that are valid. + /// + [Flags] + public enum ValidSpinDirections + { + /// + /// Can not increase nor decrease. + /// + None = 0, + + /// + /// Can increase. + /// + Increase = 1, + + /// + /// Can decrease. + /// + Decrease = 2 + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.cs new file mode 100644 index 00000000..74b9842e --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.cs @@ -0,0 +1,539 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Controls.Primitives; +using System.ComponentModel; +using System.Windows.Shapes; + +namespace Microsoft.Windows.Controls +{ + [TemplateVisualState(GroupName = VisualStates.WindowStatesGroup, Name = VisualStates.Open)] + [TemplateVisualState(GroupName = VisualStates.WindowStatesGroup, Name = VisualStates.Closed)] + public class ChildWindow : ContentControl + { + #region Private Members + + private Grid _root; + private TranslateTransform _moveTransform = new TranslateTransform(); + private bool _startupPositionInitialized; + private bool _isMouseCaptured; + private Point _clickPoint; + private Point _oldPosition; + private Border _dragWidget; + private FrameworkElement _parentContainer; + private Rectangle _modalLayer = new Rectangle(); + private Canvas _modalLayerPanel = new Canvas(); + + #endregion //Private Members + + #region Constructors + + static ChildWindow() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ChildWindow), new FrameworkPropertyMetadata(typeof(ChildWindow))); + } + + public ChildWindow() + { + _modalLayer.Fill = new SolidColorBrush(Colors.Gray); + _modalLayer.Opacity = 0.5; + } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _dragWidget = (Border)GetTemplateChild("PART_DragWidget"); + if (_dragWidget != null) + { + _dragWidget.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(HeaderLeftMouseButtonDown), true); + _dragWidget.AddHandler(UIElement.MouseLeftButtonUpEvent, new MouseButtonEventHandler(HeaderMouseLeftButtonUp), true); + _dragWidget.MouseMove += (o, e) => HeaderMouseMove(e); + } + + CloseButton = (Button)GetTemplateChild("PART_CloseButton"); + if (CloseButton != null) + CloseButton.Click += (o, e) => Close(); + + //Overlay = GetTemplateChild("PART_Overlay") as Panel; + WindowRoot = GetTemplateChild("PART_WindowRoot") as Grid; + + WindowRoot.RenderTransform = _moveTransform; + + + _parentContainer = VisualTreeHelper.GetParent(this) as FrameworkElement; + + //this is for XBAP applications only. When inside an XBAP the parent container has no height or width until it has loaded. Therefore + //we need to handle the loaded event and reposition the window. + if (System.Windows.Interop.BrowserInteropHelper.IsBrowserHosted) + { + _parentContainer.Loaded += (o, e) => + { + CenterChildWindow(); + }; + } + + _parentContainer.LayoutUpdated += ParentContainer_LayoutUpdated; + _parentContainer.SizeChanged += (o, ea) => + { + _modalLayer.Height = ea.NewSize.Height; + _modalLayer.Width = ea.NewSize.Width; + }; + + _root = GetTemplateChild("Root") as Grid; + _root.Children.Add(_modalLayerPanel); + + ChangeVisualState(); + } + + + + #endregion //Base Class Overrides + + #region Properties + + #region Internal Properties + + internal Grid WindowRoot { get; private set; } + internal Thumb DragWidget { get; private set; } + internal Button MinimizeButton { get; private set; } + internal Button MaximizeButton { get; private set; } + internal Button CloseButton { get; private set; } + + #endregion //Internal Properties + + #region Dependency Properties + + public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(ChildWindow), new UIPropertyMetadata(String.Empty)); + public string Caption + { + get { return (string)GetValue(CaptionProperty); } + set { SetValue(CaptionProperty, value); } + } + + public static readonly DependencyProperty CaptionForegroundProperty = DependencyProperty.Register("CaptionForeground", typeof(Brush), typeof(ChildWindow), new UIPropertyMetadata(null)); + public Brush CaptionForeground + { + get { return (Brush)GetValue(CaptionForegroundProperty); } + set { SetValue(CaptionForegroundProperty, value); } + } + + public static readonly DependencyProperty CloseButtonStyleProperty = DependencyProperty.Register("CloseButtonStyle", typeof(Style), typeof(ChildWindow), new PropertyMetadata(null)); + public Style CloseButtonStyle + { + get { return (Style)GetValue(CloseButtonStyleProperty); } + set { SetValue(CloseButtonStyleProperty, value); } + } + + public static readonly DependencyProperty CloseButtonVisibilityProperty = DependencyProperty.Register("CloseButtonVisibility", typeof(Visibility), typeof(ChildWindow), new PropertyMetadata(Visibility.Visible)); + public Visibility CloseButtonVisibility + { + get { return (Visibility)GetValue(CloseButtonVisibilityProperty); } + set { SetValue(CloseButtonVisibilityProperty, value); } + } + + public static readonly DependencyProperty IconSourceProperty = DependencyProperty.Register("Icon", typeof(ImageSource), typeof(ChildWindow), new UIPropertyMetadata(default(ImageSource))); + public ImageSource Icon + { + get { return (ImageSource)GetValue(IconSourceProperty); } + set { SetValue(IconSourceProperty, value); } + } + + public static readonly DependencyProperty IsModalProperty = DependencyProperty.Register("IsModal", typeof(bool), typeof(ChildWindow), new UIPropertyMetadata(false, new PropertyChangedCallback(OnIsModalPropertyChanged))); + public bool IsModal + { + get { return (bool)GetValue(IsModalProperty); } + set { SetValue(IsModalProperty, value); } + } + + private static void OnIsModalPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + ChildWindow childWindow = (ChildWindow)d; + if ((bool)e.NewValue) + childWindow.ShowModalLayer(); + else + childWindow.HideModalLayer(); + } + + #region Left + + public static readonly DependencyProperty LeftProperty = DependencyProperty.Register("Left", typeof(double), typeof(ChildWindow), new PropertyMetadata(0.0, new PropertyChangedCallback(OnLeftPropertyChanged))); + public double Left + { + get { return (double)GetValue(LeftProperty); } + set { SetValue(LeftProperty, value); } + } + + private static void OnLeftPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) + { + ChildWindow window = (ChildWindow)obj; + window.Left = window.GetRestrictedLeft(); + window.ProcessMove((double)e.NewValue - (double)e.OldValue, 0); + } + + #endregion //Left + + #region OverlayBrush + + public static readonly DependencyProperty OverlayBrushProperty = DependencyProperty.Register("OverlayBrush", typeof(Brush), typeof(ChildWindow)); + public Brush OverlayBrush + { + get { return (Brush)GetValue(OverlayBrushProperty); } + set { SetValue(OverlayBrushProperty, value); } + } + + #endregion //OverlayBrush + + #region OverlayOpacity + + public static readonly DependencyProperty OverlayOpacityProperty = DependencyProperty.Register("OverlayOpacity", typeof(double), typeof(ChildWindow)); + public double OverlayOpacity + { + get { return (double)GetValue(OverlayOpacityProperty); } + set { SetValue(OverlayOpacityProperty, value); } + } + + #endregion //OverlayOpacity + + #region Top + + public static readonly DependencyProperty TopProperty = DependencyProperty.Register("Top", typeof(double), typeof(ChildWindow), new PropertyMetadata(0.0, new PropertyChangedCallback(OnTopPropertyChanged))); + public double Top + { + get { return (double)GetValue(TopProperty); } + set { SetValue(TopProperty, value); } + } + + private static void OnTopPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) + { + ChildWindow window = (ChildWindow)obj; + window.Top = window.GetRestrictedTop(); + window.ProcessMove(0, (double)e.NewValue - (double)e.OldValue); + } + + #endregion //TopProperty + + public static readonly DependencyProperty WindowBackgroundProperty = DependencyProperty.Register("WindowBackground", typeof(Brush), typeof(ChildWindow), new PropertyMetadata(null)); + public Brush WindowBackground + { + get { return (Brush)GetValue(WindowBackgroundProperty); } + set { SetValue(WindowBackgroundProperty, value); } + } + + public static readonly DependencyProperty WindowBorderBrushProperty = DependencyProperty.Register("WindowBorderBrush", typeof(Brush), typeof(ChildWindow), new PropertyMetadata(null)); + public Brush WindowBorderBrush + { + get { return (Brush)GetValue(WindowBorderBrushProperty); } + set { SetValue(WindowBorderBrushProperty, value); } + } + + public static readonly DependencyProperty WindowOpacityProperty = DependencyProperty.Register("WindowOpacity", typeof(double), typeof(ChildWindow), new PropertyMetadata(null)); + public double WindowOpacity + { + get { return (double)GetValue(WindowOpacityProperty); } + set { SetValue(WindowOpacityProperty, value); } + } + + #region WindowState + + public static readonly DependencyProperty WindowStateProperty = DependencyProperty.Register("WindowState", typeof(WindowState), typeof(ChildWindow), new PropertyMetadata(WindowState.Open, new PropertyChangedCallback(OnWindowStatePropertyChanged))); + public WindowState WindowState + { + get { return (WindowState)GetValue(WindowStateProperty); } + set { SetValue(WindowStateProperty, value); } + } + + private static void OnWindowStatePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) + { + ChildWindow window = (ChildWindow)obj; + window.SetWindowState((WindowState)e.NewValue); + } + + #endregion //WindowState + + #endregion //Dependency Properties + + private bool? _dialogResult; + /// + /// Gets or sets a value indicating whether the ChildWindow was accepted or canceled. + /// + /// + /// True if the child window was accepted; false if the child window was + /// canceled. The default is null. + /// + [TypeConverter(typeof(NullableBoolConverter))] + public bool? DialogResult + { + get { return _dialogResult; } + set + { + if (_dialogResult != value) + { + _dialogResult = value; + Close(); + } + } + } + + #endregion //Properties + + #region Event Handlers + + void HeaderLeftMouseButtonDown(object sender, MouseButtonEventArgs e) + { + e.Handled = true; + Focus(); + _dragWidget.CaptureMouse(); + _isMouseCaptured = true; + _clickPoint = e.GetPosition(null); //save off the mouse position + _oldPosition = new Point(Left, Top); //save off our original window position + } + + private void HeaderMouseLeftButtonUp(object sender, MouseButtonEventArgs e) + { + e.Handled = true; + _dragWidget.ReleaseMouseCapture(); + _isMouseCaptured = false; + } + + private void HeaderMouseMove(MouseEventArgs e) + { + if (_isMouseCaptured && Visibility == Visibility.Visible) + { + Point currentPosition = e.GetPosition(null); //our current mouse position + + Left = _oldPosition.X + (currentPosition.X - _clickPoint.X); + Top = _oldPosition.Y + (currentPosition.Y - _clickPoint.Y); + + //this helps keep our mouse position in sync with the drag widget position + Point dragWidgetPosition = e.GetPosition(_dragWidget); + if (dragWidgetPosition.X < 0 || dragWidgetPosition.X > _dragWidget.ActualWidth || dragWidgetPosition.Y < 0 || dragWidgetPosition.Y > _dragWidget.ActualHeight) + { + return; + } + + _oldPosition = new Point(Left, Top); + _clickPoint = e.GetPosition(Window.GetWindow(this)); //store the point where we are relative to the window + } + } + + private void ParentContainer_LayoutUpdated(object sender, EventArgs e) + { + if (DesignerProperties.GetIsInDesignMode(this)) + return; + + //we only want to set the start position if this is the first time the control has bee initialized + if (!_startupPositionInitialized) + { + SetStartupPosition(); + _startupPositionInitialized = true; + } + } + + #endregion //Event Handlers + + #region Methods + + #region Private + + private double GetRestrictedLeft() + { + if (_parentContainer != null) + { + if (Left < 0) + { + return 0; + } + + if (Left + WindowRoot.ActualWidth > _parentContainer.ActualWidth && _parentContainer.ActualWidth != 0) + { + return _parentContainer.ActualWidth - WindowRoot.ActualWidth; + } + } + + return Left; + } + + private double GetRestrictedTop() + { + if (_parentContainer != null ) + { + if (Top < 0) + { + return 0; + } + + if (Top + WindowRoot.ActualHeight > _parentContainer.ActualHeight && _parentContainer.ActualHeight != 0) + { + return _parentContainer.ActualHeight - WindowRoot.ActualHeight; + } + } + + return Top; + } + + private void SetWindowState(WindowState state) + { + switch (state) + { + case WindowState.Closed: + { + ExecuteClose(); + break; + } + case WindowState.Open: + { + ExecuteOpen(); + break; + } + } + + ChangeVisualState(); + } + + private void ExecuteClose() + { + CancelEventArgs e = new CancelEventArgs(); + OnClosing(e); + + if (!e.Cancel) + { + if (!_dialogResult.HasValue) + _dialogResult = false; + + OnClosed(EventArgs.Empty); + } + else + { + _dialogResult = null; //if the Close is cancelled, DialogResult should always be NULL: + } + } + + private void ExecuteOpen() + { + _dialogResult = null; //reset the dialogResult to null each time the window is opened + BringToFront(); + } + + private void BringToFront() + { + int index = 0; + + if (_parentContainer != null) + { + index = (int)_parentContainer.GetValue(Canvas.ZIndexProperty); + } + + this.SetValue(Canvas.ZIndexProperty, ++index); + + if (IsModal) + { + Canvas.SetZIndex(_modalLayerPanel, -1); + } + } + + private void SetStartupPosition() + { + CenterChildWindow(); + BringToFront(); + } + + private void CenterChildWindow() + { + _moveTransform.X = _moveTransform.Y = 0; + + if (_parentContainer != null) + { + Left = (_parentContainer.ActualWidth - WindowRoot.ActualWidth) / 2.0; + Top = (_parentContainer.ActualHeight - WindowRoot.ActualHeight) / 2.0; + } + } + + protected virtual void ChangeVisualState() + { + if (WindowState == WindowState.Closed) + { + VisualStateManager.GoToState(this, VisualStates.Closed, true); + } + else + { + VisualStateManager.GoToState(this, VisualStates.Open, true); + } + } + + private void ShowModalLayer() + { + if (!DesignerProperties.GetIsInDesignMode(this)) + { + if (!_modalLayerPanel.Children.Contains(_modalLayer)) + _modalLayerPanel.Children.Add(_modalLayer); + + BringToFront(); + } + } + + private void HideModalLayer() + { + if (_modalLayerPanel.Children.Contains(_modalLayer)) + _modalLayerPanel.Children.Remove(_modalLayer); + } + + #endregion //Private + + #region Protected + + protected void ProcessMove(double x, double y) + { + _moveTransform.X += x; + _moveTransform.Y += y; + } + + #endregion //Protected + + #region Public + + public void Show() + { + WindowState = WindowState.Open; + } + + public void Close() + { + WindowState = WindowState.Closed; + } + + #endregion //Public + + #endregion //Methods + + #region Events + + /// + /// Occurs when the ChildWindow is closed. + /// + public event EventHandler Closed; + protected virtual void OnClosed(EventArgs e) + { + if (Closed != null) + Closed(this, e); + } + + /// + /// Occurs when the ChildWindow is closing. + /// + public event EventHandler Closing; + protected virtual void OnClosing(CancelEventArgs e) + { + if (Closing != null) + Closing(this, e); + } + + #endregion //Events + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/VisualStates.ChildWindow.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/VisualStates.ChildWindow.cs new file mode 100644 index 00000000..eb3a4ea9 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/VisualStates.ChildWindow.cs @@ -0,0 +1,22 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + internal static partial class VisualStates + { + /// + /// Window State group name. + /// + public const string WindowStatesGroup = "WindowStatesGroup"; + + /// + /// Open state name for ChildWindow. + /// + public const string Open = "Open"; + + /// + /// Closed state name for ChildWindow. + /// + public const string Closed = "Closed"; + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/WindowState.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/WindowState.cs new file mode 100644 index 00000000..cc001a25 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/WindowState.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Microsoft.Windows.Controls +{ + public enum WindowState + { + Closed, + Open + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs new file mode 100644 index 00000000..0f846a9a --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorItem.cs @@ -0,0 +1,17 @@ +using System; +using System.Windows.Media; + +namespace Microsoft.Windows.Controls +{ + public class ColorItem + { + public Color Color { get; set; } + public string Name { get; set; } + + public ColorItem(Color color, string name) + { + Color = color; + Name = name; + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs new file mode 100644 index 00000000..610cea70 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs @@ -0,0 +1,221 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Controls.Primitives; +using System.Collections.ObjectModel; +using System.Reflection; + +namespace Microsoft.Windows.Controls +{ + public class ColorPicker : Control + { + #region Members + + ToggleButton _colorPickerToggleButton; + Popup _colorPickerCanvasPopup; + ListBox _availableColors; + ListBox _standardColors; + ListBox _recentColors; + + #endregion //Members + + #region Properties + + #region AvailableColors + + public static readonly DependencyProperty AvailableColorsProperty = DependencyProperty.Register("AvailableColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(CreateAvailableColors())); + public ObservableCollection AvailableColors + { + get { return (ObservableCollection)GetValue(AvailableColorsProperty); } + set { SetValue(AvailableColorsProperty, value); } + } + + #endregion //AvailableColors + + #region ButtonStyle + + public static readonly DependencyProperty ButtonStyleProperty = DependencyProperty.Register("ButtonStyle", typeof(Style), typeof(ColorPicker)); + public Style ButtonStyle + { + get { return (Style)GetValue(ButtonStyleProperty); } + set { SetValue(ButtonStyleProperty, value); } + } + + #endregion //ButtonStyle + + #region RecenColors + + public static readonly DependencyProperty RecentColorsProperty = DependencyProperty.Register("RecentColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(null)); + public ObservableCollection RecentColors + { + get { return (ObservableCollection)GetValue(RecentColorsProperty); } + set { SetValue(RecentColorsProperty, value); } + } + + #endregion //RecentColors + + #region SelectedColor + + public static readonly DependencyProperty SelectedColorProperty = DependencyProperty.Register("SelectedColor", typeof(Color), typeof(ColorPicker), new FrameworkPropertyMetadata(Colors.Black, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(OnSelectedColorPropertyChanged))); + public Color SelectedColor + { + get { return (Color)GetValue(SelectedColorProperty); } + set { SetValue(SelectedColorProperty, value); } + } + + private static void OnSelectedColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + ColorPicker colorPicker = (ColorPicker)d; + if (colorPicker != null) + colorPicker.OnSelectedColorChanged((Color)e.OldValue, (Color)e.NewValue); + } + + private void OnSelectedColorChanged(Color oldValue, Color newValue) + { + RoutedPropertyChangedEventArgs args = new RoutedPropertyChangedEventArgs(oldValue, newValue); + args.RoutedEvent = ColorPicker.SelectedColorChangedEvent; + RaiseEvent(args); + } + + #endregion //SelectedColor + + #region StandardColors + + public static readonly DependencyProperty StandardColorsProperty = DependencyProperty.Register("StandardColors", typeof(ObservableCollection), typeof(ColorPicker), new UIPropertyMetadata(CreateStandardColors())); + public ObservableCollection StandardColors + { + get { return (ObservableCollection)GetValue(StandardColorsProperty); } + set { SetValue(StandardColorsProperty, value); } + } + + #endregion //StandardColors + + #endregion //Properties + + #region Constructors + + static ColorPicker() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); + } + + public ColorPicker() + { + RecentColors = new ObservableCollection(); + } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _colorPickerToggleButton = (ToggleButton)GetTemplateChild("PART_ColorPickerToggleButton"); + _colorPickerToggleButton.Click += ColorPickerToggleButton_Clicked; + + _colorPickerCanvasPopup = (Popup)GetTemplateChild("PART_ColorPickerPalettePopup"); + + _availableColors = (ListBox)GetTemplateChild("PART_AvailableColors"); + _availableColors.SelectionChanged += Color_SelectionChanged; + + _standardColors = (ListBox)GetTemplateChild("PART_StandardColors"); + _standardColors.SelectionChanged += Color_SelectionChanged; + + _recentColors = (ListBox)GetTemplateChild("PART_RecentColors"); + _recentColors.SelectionChanged += Color_SelectionChanged; + } + + #endregion //Base Class Overrides + + #region Event Handlers + + void ColorPickerToggleButton_Clicked(object sender, RoutedEventArgs e) + { + _colorPickerCanvasPopup.IsOpen = _colorPickerToggleButton.IsChecked ?? false; + } + + private void Color_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + ListBox lb = (ListBox)sender; + + if (e.AddedItems.Count > 0) + { + var colorItem = (ColorItem)e.AddedItems[0]; + SelectedColor = colorItem.Color; + UpdateRecentColors(colorItem); + CloseColorPicker(); + lb.SelectedIndex = -1; //for now I don't care about keeping track of the selected color + } + } + + #endregion //Event Handlers + + #region Events + + public static readonly RoutedEvent SelectedColorChangedEvent = EventManager.RegisterRoutedEvent("SelectedColorChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler), typeof(ColorPicker)); + public event RoutedPropertyChangedEventHandler SelectedColorChanged + { + add { AddHandler(SelectedColorChangedEvent, value); } + remove { RemoveHandler(SelectedColorChangedEvent, value); } + } + + #endregion //Events + + #region Methods + + private void CloseColorPicker() + { + _colorPickerToggleButton.IsChecked = false; + _colorPickerCanvasPopup.IsOpen = false; + } + + private void UpdateRecentColors(ColorItem colorItem) + { + if (!RecentColors.Contains(colorItem)) + RecentColors.Add(colorItem); + + if (RecentColors.Count > 10) //don't allow more than ten, maybe make a property that can be set by the user. + RecentColors.RemoveAt(0); + } + + private static ObservableCollection CreateStandardColors() + { + ObservableCollection _standardColors = new ObservableCollection(); + _standardColors.Add(new ColorItem(Colors.White, "White")); + _standardColors.Add(new ColorItem(Colors.Gray, "Gray")); + _standardColors.Add(new ColorItem(Colors.Black, "Black")); + _standardColors.Add(new ColorItem(Colors.Red, "Red")); + _standardColors.Add(new ColorItem(Colors.Green, "Geen")); + _standardColors.Add(new ColorItem(Colors.Blue, "Blue")); + _standardColors.Add(new ColorItem(Colors.Yellow, "Yellow")); + _standardColors.Add(new ColorItem(Colors.Orange, "Orange")); + _standardColors.Add(new ColorItem(Colors.Brown, "Brown")); + _standardColors.Add(new ColorItem(Colors.Purple, "Purple")); + return _standardColors; + } + + private static ObservableCollection CreateAvailableColors() + { + ObservableCollection _standardColors = new ObservableCollection(); + + PropertyInfo[] properties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public); + foreach (PropertyInfo info in properties) + { + if (String.Compare(info.Name, "Transparent", false) != 0) + { + Color c = (Color)info.GetValue(typeof(Colors), null); + var colorItem = new ColorItem(c, info.Name); + if (!_standardColors.Contains(colorItem)) + _standardColors.Add(colorItem); + } + } + + return _standardColors; + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs new file mode 100644 index 00000000..10684dcb --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs @@ -0,0 +1,22 @@ +using System; +using System.Windows.Data; + +namespace Microsoft.Windows.Controls.Core.Converters +{ + public class InverseBoolConverter : IValueConverter + { + #region IValueConverter Members + + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return !(bool)value; + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/InputBase.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/InputBase.cs new file mode 100644 index 00000000..58c656be --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/InputBase.cs @@ -0,0 +1,186 @@ +using System; +using System.Windows.Controls; +using System.Windows; + +namespace Microsoft.Windows.Controls.Primitives +{ + public abstract class InputBase : Control + { + #region Members + + /// + /// Flags if the Text and Value properties are in the process of being sync'd + /// + private bool _isSyncingTextAndValueProperties; + private bool _isInitialized; + + #endregion //Members + + #region Properties + + public virtual object PreviousValue { get; internal set; } + + #region IsEditable + + public static readonly DependencyProperty IsEditableProperty = DependencyProperty.Register("IsEditable", typeof(bool), typeof(InputBase), new PropertyMetadata(true)); + public bool IsEditable + { + get { return (bool)GetValue(IsEditableProperty); } + set { SetValue(IsEditableProperty, value); } + } + + #endregion //IsEditable + + #region Text + + public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(InputBase), new FrameworkPropertyMetadata(default(String), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnTextPropertyChanged)); + public string Text + { + get { return (string)this.GetValue(TextProperty); } + set { this.SetValue(TextProperty, value); } + } + + private static void OnTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + InputBase input = (InputBase)d; + input.OnTextChanged((string)e.OldValue, (string)e.NewValue); + if (input._isInitialized) + input.SyncTextAndValueProperties(e.Property, e.NewValue); + } + + protected virtual void OnTextChanged(string previousValue, string currentValue) + { + + } + + #endregion //Text + + #region Value + + public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(object), typeof(InputBase), new FrameworkPropertyMetadata(default(object), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnValuePropertyChanged, OnCoerceValuePropertyCallback)); + public virtual object Value + { + get { return (object)GetValue(ValueProperty); } + set { SetValue(ValueProperty, value); } + } + + private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + InputBase input = (InputBase)d; + + if (e.OldValue != e.NewValue) + { + input.PreviousValue = e.OldValue; + input.OnValueChanged(e.OldValue, e.NewValue); + + if (input._isInitialized) + input.SyncTextAndValueProperties(e.Property, e.NewValue); + } + } + + protected virtual void OnValueChanged(object oldValue, object newValue) + { + RoutedPropertyChangedEventArgs args = new RoutedPropertyChangedEventArgs(oldValue, newValue); + args.RoutedEvent = InputBase.ValueChangedEvent; + RaiseEvent(args); + } + + private static object OnCoerceValuePropertyCallback(DependencyObject d, object baseValue) + { + InputBase inputBase = d as InputBase; + if (inputBase != null) + return inputBase.OnCoerceValue(baseValue); + else + return baseValue; + } + + protected virtual object OnCoerceValue(object value) + { + return value; + } + + #endregion //Value + + #region ValueType + + public static readonly DependencyProperty ValueTypeProperty = DependencyProperty.Register("ValueType", typeof(Type), typeof(InputBase), new FrameworkPropertyMetadata(typeof(String), FrameworkPropertyMetadataOptions.None, new PropertyChangedCallback(OnValueTypePropertyChanged))); + public Type ValueType + { + get { return (Type)GetValue(ValueTypeProperty); } + set { SetValue(ValueTypeProperty, value); } + } + + private static void OnValueTypePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + InputBase input = (InputBase)d; + input.OnValueTypeChanged((Type)e.OldValue, (Type)e.NewValue); + } + + protected virtual void OnValueTypeChanged(Type oldValue, Type newType) + { + if (_isInitialized) + SyncTextAndValueProperties(TextProperty, Text); + } + + #endregion //ValueType + + #endregion //Properties + + #region Base Class Overrides + + protected override void OnInitialized(EventArgs e) + { + base.OnInitialized(e); + + if (!_isInitialized) + { + _isInitialized = true; + SyncTextAndValueProperties(ValueProperty, Value); + } + } + + #endregion //Base Class Overrides + + #region Events + + public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent("ValueChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler), typeof(InputBase)); + public event RoutedPropertyChangedEventHandler ValueChanged + { + add { AddHandler(ValueChangedEvent, value); } + remove { RemoveHandler(ValueChangedEvent, value); } + } + + #endregion //Events + + #region Methods + + protected void SyncTextAndValueProperties(DependencyProperty p, object newValue) + { + //prevents recursive syncing properties + if (_isSyncingTextAndValueProperties) + return; + + _isSyncingTextAndValueProperties = true; + + //this only occures when the user typed in the value + if (InputBase.TextProperty == p) + { + SetValue(InputBase.ValueProperty, ConvertTextToValue(newValue.ToString())); + } + + SetValue(InputBase.TextProperty, ConvertValueToText(newValue)); + + _isSyncingTextAndValueProperties = false; + } + + #endregion //Methods + + #region Abstract + + protected abstract object ConvertTextToValue(string text); + + protected abstract string ConvertValueToText(object value); + + #endregion //Abstract + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/UIElementAdorner.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/UIElementAdorner.cs new file mode 100644 index 00000000..263ca034 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/UIElementAdorner.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections; +using System.Windows.Media; +using System.Windows.Documents; +using System.Windows; + +namespace Microsoft.Windows.Controls.Core +{ + /// + /// An adorner that can display one and only one UIElement. + /// That element can be a panel, which contains multiple other elements. + /// The element is added to the adorner's visual and logical trees, enabling it to + /// particpate in dependency property value inheritance, amongst other things. + /// + internal class UIElementAdorner + : Adorner + where TElement : UIElement + { + #region Fields + + TElement _child = null; + double _offsetLeft = 0; + double _offsetTop = 0; + + #endregion // Fields + + #region Constructor + + /// + /// Constructor. + /// + /// The element to which the adorner will be bound. + public UIElementAdorner(UIElement adornedElement) + : base(adornedElement) + { + } + + #endregion // Constructor + + #region Public Interface + + #region Child + + /// + /// Gets/sets the child element hosted in the adorner. + /// + public TElement Child + { + get { return _child; } + set + { + if (value == _child) + return; + + if (_child != null) + { + base.RemoveLogicalChild(_child); + base.RemoveVisualChild(_child); + } + + _child = value; + + if (_child != null) + { + base.AddLogicalChild(_child); + base.AddVisualChild(_child); + } + } + } + + #endregion // Child + + #region GetDesiredTransform + + /// + /// Override. + /// + /// + /// + public override GeneralTransform GetDesiredTransform(GeneralTransform transform) + { + GeneralTransformGroup result = new GeneralTransformGroup(); + result.Children.Add(base.GetDesiredTransform(transform)); + result.Children.Add(new TranslateTransform(_offsetLeft, _offsetTop)); + return result; + } + + #endregion // GetDesiredTransform + + #region OffsetLeft + + /// + /// Gets/sets the horizontal offset of the adorner. + /// + public double OffsetLeft + { + get { return _offsetLeft; } + set + { + _offsetLeft = value; + UpdateLocation(); + } + } + + #endregion // OffsetLeft + + #region SetOffsets + + /// + /// Updates the location of the adorner in one atomic operation. + /// + public void SetOffsets(double left, double top) + { + _offsetLeft = left; + _offsetTop = top; + this.UpdateLocation(); + } + + #endregion // SetOffsets + + #region OffsetTop + + /// + /// Gets/sets the vertical offset of the adorner. + /// + public double OffsetTop + { + get { return _offsetTop; } + set + { + _offsetTop = value; + UpdateLocation(); + } + } + + #endregion // OffsetTop + + #endregion // Public Interface + + #region Protected Overrides + + /// + /// Override. + /// + /// + /// + protected override Size MeasureOverride(Size constraint) + { + if (_child == null) + return base.MeasureOverride(constraint); + + _child.Measure(constraint); + return _child.DesiredSize; + } + + /// + /// Override. + /// + /// + /// + protected override Size ArrangeOverride(Size finalSize) + { + if (_child == null) + return base.ArrangeOverride(finalSize); + + _child.Arrange(new Rect(finalSize)); + return finalSize; + } + + /// + /// Override. + /// + protected override IEnumerator LogicalChildren + { + get + { + ArrayList list = new ArrayList(); + if (_child != null) + list.Add(_child); + return list.GetEnumerator(); + } + } + + /// + /// Override. + /// + /// + /// + protected override Visual GetVisualChild(int index) + { + return _child; + } + + /// + /// Override. + /// + protected override int VisualChildrenCount + { + get { return _child == null ? 0 : 1; } + } + + #endregion // Protected Overrides + + #region Private Helpers + + void UpdateLocation() + { + AdornerLayer adornerLayer = base.Parent as AdornerLayer; + if (adornerLayer != null) + adornerLayer.Update(base.AdornedElement); + } + + #endregion // Private Helpers + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeFormat.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeFormat.cs new file mode 100644 index 00000000..64591695 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeFormat.cs @@ -0,0 +1,18 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + public enum DateTimeFormat + { + FullDateTime, + LongDate, + LongTime, + MonthDay, + RFC1123, + ShortDate, + ShortTime, + SortableDateTime, + UniversalSortableDateTime, + YearMonth + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeInfo.cs new file mode 100644 index 00000000..8f4f7765 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeInfo.cs @@ -0,0 +1,14 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + internal class DateTimeInfo + { + public string Content { get; set; } + public string Format { get; set; } + public bool IsReadOnly { get; set; } + public int Length { get; set; } + public int StartPosition { get; set; } + public DateTimePart Type { get; set; } + } +} \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimePart.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimePart.cs new file mode 100644 index 00000000..d4ec352c --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimePart.cs @@ -0,0 +1,22 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + public enum DateTimePart + { + Day, + DayName, + AmPmDesignator, + Millisecond, + Hour12, + Hour24, + Minute, + Month, + MonthName, + Other, + Period, + TimeZone, + Second, + Year + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeUpDown.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeUpDown.cs new file mode 100644 index 00000000..0af73e15 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/DateTimeUpDown.cs @@ -0,0 +1,445 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Windows; +using System.Windows.Input; + +namespace Microsoft.Windows.Controls +{ + public class DateTimeUpDown : UpDownBase + { + #region Members + + private List _dateTimeInfoList = new List(); + private DateTimeInfo _selectedDateTimeInfo; + private bool _fireSelectionChangedEvent = true; + + #endregion //Members + + #region Properties + + private DateTimeFormatInfo DateTimeFormatInfo { get; set; } + + #region Format + + public static readonly DependencyProperty FormatProperty = DependencyProperty.Register("Format", typeof(DateTimeFormat), typeof(DateTimeUpDown), new UIPropertyMetadata(DateTimeFormat.FullDateTime, OnFormatChanged)); + public DateTimeFormat Format + { + get { return (DateTimeFormat)GetValue(FormatProperty); } + set { SetValue(FormatProperty, value); } + } + + private static void OnFormatChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + DateTimeUpDown dateTimeUpDown = o as DateTimeUpDown; + if (dateTimeUpDown != null) + dateTimeUpDown.OnFormatChanged((DateTimeFormat)e.OldValue, (DateTimeFormat)e.NewValue); + } + + protected virtual void OnFormatChanged(DateTimeFormat oldValue, DateTimeFormat newValue) + { + InitializeDateTimeInfoList(); + } + + #endregion //Format + + #endregion //Properties + + #region Constructors + + static DateTimeUpDown() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(DateTimeUpDown), new FrameworkPropertyMetadata(typeof(DateTimeUpDown))); + ValueTypeProperty.OverrideMetadata(typeof(DateTimeUpDown), new FrameworkPropertyMetadata(typeof(Nullable))); + } + + public DateTimeUpDown() + { + DateTimeFormatInfo = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentCulture); + InitializeDateTimeInfoList(); + } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + TextBox.SelectionChanged += TextBox_SelectionChanged; + } + + protected override void OnPreviewKeyDown(KeyEventArgs e) + { + if (e.Key == Key.Enter) + return; + + base.OnPreviewKeyDown(e); + } + + protected override void OnValueChanged(object oldValue, object newValue) + { + //whenever the value changes we need to parse out the value into out DateTimeInfo segments so we can keep track of the individual pieces + ParseValueIntoDateTimeInfo(); + + base.OnValueChanged(oldValue, newValue); + } + + protected override object OnCoerceValue(object value) + { + //if the user entered a string value to represent a date or time, we need to parse that string into a valid DatTime value + if (value != null && !(value is DateTime)) + { + return DateTime.Parse(value.ToString(), DateTimeFormatInfo); + } + + return base.OnCoerceValue(value); + } + + #endregion //Base Class Overrides + + #region Event Hanlders + + void TextBox_SelectionChanged(object sender, RoutedEventArgs e) + { + if (_fireSelectionChangedEvent) + SelectDateTimePart(); + else + _fireSelectionChangedEvent = true; + } + + #endregion //Event Hanlders + + #region Methods + + #region Abstract + + protected override void OnIncrement() + { + UpdateDateTime(1); + } + + protected override void OnDecrement() + { + UpdateDateTime(-1); + } + + protected override object ConvertTextToValue(string text) + { + throw new NotImplementedException("ConvertTextToValue"); + } + + protected override string ConvertValueToText(object value) + { + if (value == null) return string.Empty; + + DateTime? dt = DateTime.Parse(value.ToString(), CultureInfo.CurrentCulture); + + if (dt.HasValue) + return dt.Value.ToString(GetFormatString(Format), CultureInfo.CurrentCulture); + else + return string.Empty; + } + + #endregion //Abstract + + private void InitializeDateTimeInfoList() + { + _dateTimeInfoList.Clear(); + + string format = GetFormatString(Format); + while (format.Length > 0) + { + int elementLength = GetElementLengthByFormat(format); + DateTimeInfo info = null; + + switch (format[0]) + { + case '"': + case '\'': + { + int closingQuotePosition = format.IndexOf(format[0], 1); + info = new DateTimeInfo { IsReadOnly = true, Type = DateTimePart.Other, Length = 1, Content = format.Substring(1, Math.Max(1, closingQuotePosition - 1)).ToString() }; + elementLength = Math.Max(1, closingQuotePosition + 1); + break; + } + case 'D': + case 'd': + { + string d = format.Substring(0, elementLength); + if (elementLength == 1) + d = "%" + d; + + if (elementLength > 2) + info = new DateTimeInfo { IsReadOnly = true, Type = DateTimePart.DayName, Format = d }; + else + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Day, Format = d }; + break; + } + case 'F': + case 'f': + { + string f = format.Substring(0, elementLength); + if (elementLength == 1) + f = "%" + f; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Millisecond, Format = f }; + break; + } + case 'h': + { + string h = format.Substring(0, elementLength); + if (elementLength == 1) + h = "%" + h; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Hour12, Format = h }; + break; + } + case 'H': + { + string H = format.Substring(0, elementLength); + if (elementLength == 1) + H = "%" + H; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Hour24, Format = H }; + break; + } + case 'M': + { + string M = format.Substring(0, elementLength); + if (elementLength == 1) + M = "%" + M; + + if (elementLength >= 3) + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.MonthName, Format = M }; + else + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Month, Format = M }; + break; + } + case 'S': + case 's': + { + string s = format.Substring(0, elementLength); + if (elementLength == 1) + s = "%" + s; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Second, Format = s }; + break; + } + case 'T': + case 't': + { + string t = format.Substring(0, elementLength); + if (elementLength == 1) + t = "%" + t; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.AmPmDesignator, Format = t }; + break; + } + case 'Y': + case 'y': + { + string y = format.Substring(0, elementLength); + if (elementLength == 1) + y = "%" + y; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Year, Format = y }; + break; + } + case '\\': + { + if (format.Length >= 2) + { + info = new DateTimeInfo { IsReadOnly = true, Content = format.Substring(1, 1), Length = 1, Type = DateTimePart.Other }; + elementLength = 2; + } + break; + } + case 'g': + { + string g = format.Substring(0, elementLength); + if (elementLength == 1) + g = "%" + g; + + info = new DateTimeInfo { IsReadOnly = true, Type = DateTimePart.Period, Format = format.Substring(0, elementLength) }; + break; + } + case 'm': + { + string m = format.Substring(0, elementLength); + if (elementLength == 1) + m = "%" + m; + + info = new DateTimeInfo { IsReadOnly = false, Type = DateTimePart.Minute, Format = m }; + break; + } + case 'z': + { + string z = format.Substring(0, elementLength); + if (elementLength == 1) + z = "%" + z; + + info = new DateTimeInfo { IsReadOnly = true, Type = DateTimePart.TimeZone, Format = z }; + break; + } + default: + { + elementLength = 1; + info = new DateTimeInfo { IsReadOnly = true, Length = 1, Content = format[0].ToString(), Type = DateTimePart.Other }; + break; + } + } + + _dateTimeInfoList.Add(info); + format = format.Substring(elementLength); + } + } + + private static int GetElementLengthByFormat(string format) + { + for (int i = 1; i < format.Length; i++) + { + if (String.Compare(format[i].ToString(), format[0].ToString(), false) != 0) + { + return i; + } + } + return format.Length; + } + + private void ParseValueIntoDateTimeInfo() + { + string text = string.Empty; + + _dateTimeInfoList.ForEach(info => + { + if (info.Format == null) + { + info.StartPosition = text.Length; + info.Length = info.Content.Length; + text += info.Content; + } + else + { + DateTime date = DateTime.Parse(Value.ToString()); + info.StartPosition = text.Length; + info.Content = date.ToString(info.Format, DateTimeFormatInfo); + info.Length = info.Content.Length; + text += info.Content; + } + }); + } + + private void SelectDateTimePart() + { + _dateTimeInfoList.ForEach(info => + { + if ((info.StartPosition <= TextBox.SelectionStart) && (TextBox.SelectionStart < (info.StartPosition + info.Length))) + { + _fireSelectionChangedEvent = false; + TextBox.Select(info.StartPosition, info.Length); + _fireSelectionChangedEvent = true; + _selectedDateTimeInfo = info; + return; + } + }); + } + + private string GetFormatString(DateTimeFormat dateTimeFormat) + { + switch (dateTimeFormat) + { + case DateTimeFormat.ShortDate: + return DateTimeFormatInfo.ShortDatePattern; + case DateTimeFormat.LongDate: + return DateTimeFormatInfo.LongDatePattern; + case DateTimeFormat.ShortTime: + return DateTimeFormatInfo.ShortTimePattern; + case DateTimeFormat.LongTime: + return DateTimeFormatInfo.LongTimePattern; + case DateTimeFormat.FullDateTime: + return DateTimeFormatInfo.FullDateTimePattern; + case DateTimeFormat.MonthDay: + return DateTimeFormatInfo.MonthDayPattern; + case DateTimeFormat.RFC1123: + return DateTimeFormatInfo.RFC1123Pattern; + case DateTimeFormat.SortableDateTime: + return DateTimeFormatInfo.SortableDateTimePattern; + case DateTimeFormat.UniversalSortableDateTime: + return DateTimeFormatInfo.UniversalSortableDateTimePattern; + case DateTimeFormat.YearMonth: + return DateTimeFormatInfo.YearMonthPattern; + default: + throw new ArgumentException("Not a supported format"); + } + } + + private void UpdateDateTime(int value) + { + _fireSelectionChangedEvent = false; + DateTimeInfo info = _selectedDateTimeInfo; + + //this only occurs when the user manually type in a value for the Value Property + if (info == null) + info = _dateTimeInfoList[0]; + + + switch (info.Type) + { + case DateTimePart.Year: + { + Value = ((DateTime)Value).AddYears(value); + break; + } + case DateTimePart.Month: + case DateTimePart.MonthName: + { + Value = ((DateTime)Value).AddMonths(value); + break; + } + case DateTimePart.Day: + case DateTimePart.DayName: + { + Value = ((DateTime)Value).AddDays(value); + break; + } + case DateTimePart.Hour12: + case DateTimePart.Hour24: + { + Value = ((DateTime)Value).AddHours(value); + break; + } + case DateTimePart.Minute: + { + Value = ((DateTime)Value).AddMinutes(value); + break; + } + case DateTimePart.Second: + { + Value = ((DateTime)Value).AddSeconds(value); + break; + } + case DateTimePart.Millisecond: + { + Value = ((DateTime)Value).AddMilliseconds(value); + break; + } + case DateTimePart.AmPmDesignator: + { + Value = ((DateTime)Value).AddHours(value * 12); + break; + } + default: + { + break; + } + } + + //we loose our selection when the Value is set so we need to reselect it without firing the selection changed event + TextBox.Select(info.StartPosition, info.Length); + _fireSelectionChangedEvent = true; + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/BorderThicknessToStrokeThicknessConverter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/BorderThicknessToStrokeThicknessConverter.cs new file mode 100644 index 00000000..1f672cda --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/BorderThicknessToStrokeThicknessConverter.cs @@ -0,0 +1,24 @@ +using System; +using System.Windows.Data; +using System.Windows; + +namespace Microsoft.Windows.Controls.Mag.Converters +{ + internal class BorderThicknessToStrokeThicknessConverter : IValueConverter + { + #region IValueConverter Members + + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + Thickness thickness = (Thickness)value; + return (thickness.Bottom + thickness.Left + thickness.Right + thickness.Top) / 4; + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/RadiusConverter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/RadiusConverter.cs new file mode 100644 index 00000000..532a3552 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Converters/RadiusConverter.cs @@ -0,0 +1,22 @@ +using System; +using System.Windows.Data; + +namespace Microsoft.Windows.Controls.Mag.Converters +{ + internal class RadiusConverter : IValueConverter + { + #region IValueConverter Members + + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return (double)value * 2; + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Magnifier.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Magnifier.cs new file mode 100644 index 00000000..2ea13e1b --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Magnifier.cs @@ -0,0 +1,166 @@ +using System; +using System.Windows; +using System.Windows.Controls; + +namespace Microsoft.Windows.Controls +{ + public class Magnifier : Control + { + #region Properties + + #region DefaultSize + + internal Size DefaultSize + { + get + { + return new Size(2 * Radius, 2 * Radius); + } + } + + #endregion //DefaultSize + + #region MagnifierWidth + + public static readonly DependencyProperty MagnifierWidthProperty = DependencyProperty.Register("MagnifierWidth", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0)); + internal double MagnifierWidth + { + get { return (double)GetValue(MagnifierWidthProperty); } + set { SetValue(MagnifierWidthProperty, value); } + } + + #endregion //MagnifierWidth + + #region MagnifierHeight + + public static readonly DependencyProperty MagnifierHeightProperty = DependencyProperty.Register("MagnifierHeight", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0)); + internal double MagnifierHeight + { + get { return (double)GetValue(MagnifierHeightProperty); } + set { SetValue(MagnifierHeightProperty, value); } + } + + #endregion //MagnifierWidth + + #region Radius + + public static readonly DependencyProperty RadiusProperty = DependencyProperty.Register("Radius", typeof(double), typeof(Magnifier), new FrameworkPropertyMetadata(50.0, new PropertyChangedCallback(OnRadiusPropertyChanged))); + public double Radius + { + get { return (double)GetValue(RadiusProperty); } + set { SetValue(RadiusProperty, value); } + } + + private static void OnRadiusPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + Magnifier m = (Magnifier)d; + m.OnRadiusChanged(e); + } + + protected virtual void OnRadiusChanged(DependencyPropertyChangedEventArgs e) + { + ResolveViewBox(); + } + + #endregion //Radius + + #region Target + + public static readonly DependencyProperty TargetProperty = DependencyProperty.Register("Target", typeof(UIElement), typeof(Magnifier)); + public UIElement Target + { + get { return (UIElement)GetValue(TargetProperty); } + set { SetValue(TargetProperty, value); } + } + + #endregion //Target + + #region ViewBox + + public static readonly DependencyProperty ViewBoxProperty = DependencyProperty.Register("ViewBox", typeof(Rect), typeof(Magnifier), new FrameworkPropertyMetadata(default(Rect))); + internal Rect ViewBox + { + get { return (Rect)GetValue(ViewBoxProperty); } + set { SetValue(ViewBoxProperty, value); } + } + + #endregion //ViewBox + + #region ZoomFactor + + public static readonly DependencyProperty ZoomFactorProperty = DependencyProperty.Register("ZoomFactor", typeof(double), typeof(Magnifier), new FrameworkPropertyMetadata(0.5, OnZoomFactorPropertyChanged, OnCoerceZoomFactorProperty)); + public double ZoomFactor + { + get { return (double)GetValue(ZoomFactorProperty); } + set { SetValue(ZoomFactorProperty, value); } + } + + private static void OnZoomFactorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + Magnifier m = (Magnifier)d; + m.OnZoomFactorChanged(e); + } + + protected virtual void OnZoomFactorChanged(DependencyPropertyChangedEventArgs e) + { + ResolveViewBox(); + } + + private static object OnCoerceZoomFactorProperty(DependencyObject d, object value) + { + Magnifier m = (Magnifier)d; + return m.OnCoerceZoomFactor(value); + } + + protected virtual object OnCoerceZoomFactor(object value) + { + double zoomFactor = (double)value; + + if (zoomFactor > 1) + zoomFactor = 1; + else if (zoomFactor < 0) + zoomFactor = 0; + + return zoomFactor; + } + + #endregion //ZoomFactor + + #endregion //Properties + + #region Constructors + + /// + /// Initializes static members of the class. + /// + static Magnifier() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(Magnifier), new FrameworkPropertyMetadata(typeof(Magnifier))); + } + + public Magnifier() + { + ResolveViewBox(); + } + + #endregion + + #region Methods + + private void ResolveViewBox() + { + double correction = (BorderThickness.Bottom + BorderThickness.Left + BorderThickness.Right + BorderThickness.Top == 0) ? 1 : 0; + + double width = DefaultSize.Width * ZoomFactor; + double height = DefaultSize.Height * ZoomFactor; + + MagnifierWidth = DefaultSize.Width - correction; + MagnifierHeight = DefaultSize.Height - correction; + + ViewBox = new Rect(ViewBox.Location, new Size(width, height)); + } + + #endregion //Methods + + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierAdorner.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierAdorner.cs new file mode 100644 index 00000000..2b31e80f --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierAdorner.cs @@ -0,0 +1,96 @@ +using System; +using System.Windows.Documents; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; + +namespace Microsoft.Windows.Controls +{ + public class MagnifierAdorner : Adorner + { + #region Members + + private Magnifier _magnifier; + private Point _currentMousePosition; + + #endregion + + #region Constructors + + public MagnifierAdorner(UIElement element, Magnifier magnifier) + : base(element) + { + InputManager.Current.PostProcessInput += Current_PostProcessInput; + _magnifier = magnifier; + UpdateViewBox(); + AddVisualChild(_magnifier); + } + + #endregion + + #region Private/Internal methods + + private void Current_PostProcessInput(object sender, ProcessInputEventArgs e) + { + Point pt = Mouse.GetPosition(this); + + if (_currentMousePosition == pt) + return; + + _currentMousePosition = pt; + UpdateViewBox(); + InvalidateArrange(); + } + + internal void UpdateViewBox() + { + var viewBoxLocation = CalculateViewBoxLocation(); + _magnifier.ViewBox = new Rect(viewBoxLocation, _magnifier.ViewBox.Size); + } + + private Point CalculateViewBoxLocation() + { + double offsetX = 0, offsetY = 0; + + Point adorner = Mouse.GetPosition(this); + Point element = Mouse.GetPosition(AdornedElement); + + offsetX = element.X - adorner.X; + offsetY = element.Y - adorner.Y; + + double left = _currentMousePosition.X - ((_magnifier.ViewBox.Width / 2) + offsetX); + double top = _currentMousePosition.Y - ((_magnifier.ViewBox.Height / 2) + offsetY); + return new Point(left, top); + } + + #endregion + + #region Overrides + + protected override Visual GetVisualChild(int index) + { + return _magnifier; + } + + protected override int VisualChildrenCount + { + get { return 1; } + } + + protected override Size MeasureOverride(Size constraint) + { + _magnifier.Measure(constraint); + return base.MeasureOverride(constraint); + } + + protected override Size ArrangeOverride(Size finalSize) + { + double x = _currentMousePosition.X - (_magnifier.DefaultSize.Width / 2); + double y = _currentMousePosition.Y - (_magnifier.DefaultSize.Height / 2); + _magnifier.Arrange(new Rect(x, y, _magnifier.DefaultSize.Width, _magnifier.DefaultSize.Height)); + return base.ArrangeOverride(finalSize); + } + + #endregion + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierManager.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierManager.cs new file mode 100644 index 00000000..eaaa2c7e --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/MagnifierManager.cs @@ -0,0 +1,98 @@ +using System; +using System.Windows; +using System.Windows.Documents; +using System.Windows.Input; + +namespace Microsoft.Windows.Controls +{ + public class MagnifierManager : DependencyObject + { + #region Members + + private MagnifierAdorner _adorner; + private UIElement _element; + + #endregion //Members + + #region Properties + + public static readonly DependencyProperty CurrentProperty = DependencyProperty.RegisterAttached("Magnifier", typeof(Magnifier), typeof(UIElement), new FrameworkPropertyMetadata(null, OnMagnifierChanged)); + public static void SetMagnifier(UIElement element, Magnifier value) + { + element.SetValue(CurrentProperty, value); + } + public static Magnifier GetMagnifier(UIElement element) + { + return (Magnifier)element.GetValue(CurrentProperty); + } + + private static void OnMagnifierChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + UIElement target = d as UIElement; + + if (target == null) + throw new ArgumentException("Magnifier can only be attached to a UIElement."); + + MagnifierManager manager = new MagnifierManager(); + manager.AttachToMagnifier(target, e.NewValue as Magnifier); + } + + #endregion //Properties + + #region Event Handlers + + void Element_MouseLeave(object sender, MouseEventArgs e) + { + HideAdorner(); + } + + void Element_MouseEnter(object sender, MouseEventArgs e) + { + ShowAdorner(); + } + + #endregion //Event Handlers + + #region Methods + + private void AttachToMagnifier(UIElement element, Magnifier magnifier) + { + _element = element; + _element.MouseEnter += Element_MouseEnter; + _element.MouseLeave += Element_MouseLeave; + + magnifier.Target = _element; + + _adorner = new MagnifierAdorner(_element, magnifier); + } + + void ShowAdorner() + { + VerifyAdornerLayer(); + _adorner.Visibility = Visibility.Visible; + } + + bool VerifyAdornerLayer() + { + if (_adorner.Parent != null) + return true; + + AdornerLayer layer = AdornerLayer.GetAdornerLayer(_element); + if (layer == null) + return false; + + layer.Add(_adorner); + return true; + } + + void HideAdorner() + { + if (_adorner.Visibility == Visibility.Visible) + { + _adorner.Visibility = Visibility.Collapsed; + } + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs new file mode 100644 index 00000000..18207980 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/MaskedTextBox.cs @@ -0,0 +1,274 @@ +using System; +using System.Windows.Controls; +using System.Windows; +using System.Windows.Input; +using System.ComponentModel; +using Microsoft.Windows.Controls.Primitives; + +namespace Microsoft.Windows.Controls +{ + + public class MaskedTextBox : InputBase + { + #region Properties + + protected MaskedTextProvider MaskProvider { get; set; } + private TextBox TextBox { get; set; } + + #region IncludePrompt + + public static readonly DependencyProperty IncludePromptProperty = DependencyProperty.Register("IncludePrompt", typeof(bool), typeof(MaskedTextBox), new UIPropertyMetadata(false, OnIncludePromptPropertyChanged)); + public bool IncludePrompt + { + get { return (bool)GetValue(IncludePromptProperty); } + set { SetValue(IncludePromptProperty, value); } + } + + private static void OnIncludePromptPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + MaskedTextBox maskedTextBox = o as MaskedTextBox; + if (maskedTextBox != null) + maskedTextBox.OnIncludePromptChanged((bool)e.OldValue, (bool)e.NewValue); + } + + protected virtual void OnIncludePromptChanged(bool oldValue, bool newValue) + { + ResolveMaskProvider(Mask); + } + + #endregion //IncludePrompt + + #region IncludeLiterals + + public static readonly DependencyProperty IncludeLiteralsProperty = DependencyProperty.Register("IncludeLiterals", typeof(bool), typeof(MaskedTextBox), new UIPropertyMetadata(true, OnIncludeLiteralsPropertyChanged)); + public bool IncludeLiterals + { + get { return (bool)GetValue(IncludeLiteralsProperty); } + set { SetValue(IncludeLiteralsProperty, value); } + } + + private static void OnIncludeLiteralsPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + MaskedTextBox maskedTextBox = o as MaskedTextBox; + if (maskedTextBox != null) + maskedTextBox.OnIncludeLiteralsChanged((bool)e.OldValue, (bool)e.NewValue); + } + + protected virtual void OnIncludeLiteralsChanged(bool oldValue, bool newValue) + { + ResolveMaskProvider(Mask); + } + + #endregion //IncludeLiterals + + #region Mask + + public static readonly DependencyProperty MaskProperty = DependencyProperty.Register("Mask", typeof(string), typeof(MaskedTextBox), new UIPropertyMetadata(default(String), OnMaskPropertyChanged)); + public string Mask + { + get { return (string)GetValue(MaskProperty); } + set { SetValue(MaskProperty, value); } + } + + private static void OnMaskPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + MaskedTextBox maskedTextBox = o as MaskedTextBox; + if (maskedTextBox != null) + maskedTextBox.OnMaskChanged((string)e.OldValue, (string)e.NewValue); + } + + protected virtual void OnMaskChanged(string oldValue, string newValue) + { + ResolveMaskProvider(newValue); + UpdateText(MaskProvider, 0); + } + + #endregion //Mask + + #endregion //Properties + + #region Constructors + + static MaskedTextBox() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(MaskedTextBox), new FrameworkPropertyMetadata(typeof(MaskedTextBox))); + } + + #endregion //Constructors + + #region Overrides + + public override void OnApplyTemplate() + { + TextBox = GetTemplateChild("TextBox") as TextBox; + TextBox.PreviewTextInput += TextBox_PreviewTextInput; + TextBox.PreviewKeyDown += TextBox_PreviewKeyDown; + } + + protected override object ConvertTextToValue(string text) + { + object convertedValue = null; + + Type dataType = ValueType; + + string valueToConvert = MaskProvider.ToString(); + + if (valueToConvert.GetType() == dataType || dataType.IsInstanceOfType(valueToConvert)) + { + convertedValue = valueToConvert; + } +#if !VS2008 + else if (String.IsNullOrWhiteSpace(valueToConvert)) + { + convertedValue = Activator.CreateInstance(dataType); + } +#else + else if (String.IsNullOrEmpty(valueToConvert)) + { + convertedValue = Activator.CreateInstance(dataType); + } +#endif + else if (null == convertedValue && valueToConvert is IConvertible) + { + convertedValue = Convert.ChangeType(valueToConvert, dataType); + } + + return convertedValue; + } + + protected override string ConvertValueToText(object value) + { + if (value == null) + value = string.Empty; + + //I have only seen this occur while in Blend, but we need it here so the Blend designer doesn't crash. + if (MaskProvider == null) + return value.ToString(); + + MaskProvider.Set(value.ToString()); + return MaskProvider.ToDisplayString(); + } + + #endregion + + #region Event Handlers + + void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) + { + //if the text is readonly do not add the text + if (TextBox.IsReadOnly) + { + e.Handled = true; + return; + } + + int position = TextBox.SelectionStart; + MaskedTextProvider provider = MaskProvider; + if (position < TextBox.Text.Length) + { + position = GetNextCharacterPosition(position); + + if (Keyboard.IsKeyToggled(Key.Insert)) + { + if (provider.Replace(e.Text, position)) + position++; + } + else + { + if (provider.InsertAt(e.Text, position)) + position++; + } + + position = GetNextCharacterPosition(position); + } + + UpdateText(provider, position); + e.Handled = true; + + base.OnPreviewTextInput(e); + } + + void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) + { + base.OnPreviewKeyDown(e); + MaskedTextProvider provider = MaskProvider; + int position = TextBox.SelectionStart; + int selectionlength = TextBox.SelectionLength; + // If no selection use the start position else use end position + int endposition = (selectionlength == 0) ? position : position + selectionlength - 1; + + if (e.Key == Key.Delete && position < TextBox.Text.Length)//handle the delete key + { + if (provider.RemoveAt(position, endposition)) + UpdateText(provider, position); + + e.Handled = true; + } + else if (e.Key == Key.Space) + { + if (provider.InsertAt(" ", position)) + UpdateText(provider, position); + e.Handled = true; + } + else if (e.Key == Key.Back)//handle the back space + { + if ((position > 0) && (selectionlength == 0)) + { + position--; + if (provider.RemoveAt(position)) + UpdateText(provider, position); + } + + if (selectionlength != 0) + { + if (provider.RemoveAt(position, endposition)) + { + if (position > 0) + position--; + + UpdateText(provider, position); + } + } + + e.Handled = true; + } + } + + #endregion //Event Handlers + + #region Methods + + private void UpdateText(MaskedTextProvider provider, int position) + { + if (provider == null) + throw new ArgumentNullException("MaskedTextProvider", "Mask cannot be null."); + + Text = provider.ToDisplayString(); + + if (TextBox != null) + TextBox.SelectionStart = position; + } + + private int GetNextCharacterPosition(int startPosition) + { + int position = MaskProvider.FindEditPositionFrom(startPosition, true); + return position == -1 ? startPosition : position; + } + + private void ResolveMaskProvider(string mask) + { + //do not create a mask provider if the Mask is empty, which can occur if the IncludePrompt and IncludeLiterals properties + //are set prior to the Mask. + if (String.IsNullOrEmpty(mask)) + return; + + MaskProvider = new MaskedTextProvider(mask) + { + IncludePrompt = this.IncludePrompt, + IncludeLiterals = this.IncludeLiterals + }; + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png new file mode 100644 index 0000000000000000000000000000000000000000..4304d43b5fb9ed5285608ab9a278e0eb8261b2ef GIT binary patch literal 4170 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 U78JaYB>(^b07*qoM6N<$f{feW*#H0l literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png new file mode 100644 index 0000000000000000000000000000000000000000..3507518716c6898b5526a9619a5e2605b8bb27f3 GIT binary patch literal 5101 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 NM_@h8a&_CV{{x~L{;>c6 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png new file mode 100644 index 0000000000000000000000000000000000000000..dad7dd09af4316e01b95d656b50d943f0f4ffe8d GIT binary patch literal 5492 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 P00000NkvXXu0mjf8D~qm literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.cs new file mode 100644 index 00000000..1ef568e2 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.cs @@ -0,0 +1,422 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Controls.Primitives; + +namespace Microsoft.Windows.Controls +{ + [TemplateVisualState(Name = VisualStates.OK, GroupName = VisualStates.MessageBoxButtonsGroup)] + [TemplateVisualState(Name = VisualStates.OKCancel, GroupName = VisualStates.MessageBoxButtonsGroup)] + [TemplateVisualState(Name = VisualStates.YesNo, GroupName = VisualStates.MessageBoxButtonsGroup)] + [TemplateVisualState(Name = VisualStates.YesNoCancel, GroupName = VisualStates.MessageBoxButtonsGroup)] + public class MessageBox : Control + { + #region Private Members + + /// + /// Tracks the MessageBoxButon value passed into the InitializeContainer method + /// + private MessageBoxButton _button = MessageBoxButton.OK; + + #endregion //Private Members + + #region Constructors + + static MessageBox() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(MessageBox), new FrameworkPropertyMetadata(typeof(MessageBox))); + } + + internal MessageBox() + { /*user cannot create instance */ } + + #endregion //Constructors + + #region Properties + + #region Protected Properties + + /// + /// A System.Windows.MessageBoxResult value that specifies which message box button was clicked by the user. + /// + protected MessageBoxResult MessageBoxResult = MessageBoxResult.None; + + protected Window Container { get; private set; } + protected Thumb DragWidget { get; private set; } + protected Button CloseButton { get; private set; } + + protected Button OkButton { get; private set; } + protected Button CancelButton { get; private set; } + protected Button YesButton { get; private set; } + protected Button NoButton { get; private set; } + + protected Button OkButton1 { get; private set; } + protected Button CancelButton1 { get; private set; } + protected Button YesButton1 { get; private set; } + protected Button NoButton1 { get; private set; } + + #endregion //Protected Properties + + #region Dependency Properties + + public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(MessageBox), new UIPropertyMetadata(String.Empty)); + public string Caption + { + get { return (string)GetValue(CaptionProperty); } + set { SetValue(CaptionProperty, value); } + } + + public static readonly DependencyProperty CaptionForegroundProperty = DependencyProperty.Register("CaptionForeground", typeof(Brush), typeof(MessageBox), new UIPropertyMetadata(null)); + public Brush CaptionForeground + { + get { return (Brush)GetValue(CaptionForegroundProperty); } + set { SetValue(CaptionForegroundProperty, value); } + } + + public static readonly DependencyProperty CloseButtonStyleProperty = DependencyProperty.Register("CloseButtonStyle", typeof(Style), typeof(MessageBox), new PropertyMetadata(null)); + public Style CloseButtonStyle + { + get { return (Style)GetValue(CloseButtonStyleProperty); } + set { SetValue(CloseButtonStyleProperty, value); } + } + + public static readonly DependencyProperty ImageSourceProperty = DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(MessageBox), new UIPropertyMetadata(default(ImageSource))); + public ImageSource ImageSource + { + get { return (ImageSource)GetValue(ImageSourceProperty); } + set { SetValue(ImageSourceProperty, value); } + } + + public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(MessageBox), new UIPropertyMetadata(String.Empty)); + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + public static readonly DependencyProperty WindowBackgroundProperty = DependencyProperty.Register("WindowBackground", typeof(Brush), typeof(MessageBox), new PropertyMetadata(null)); + public Brush WindowBackground + { + get { return (Brush)GetValue(WindowBackgroundProperty); } + set { SetValue(WindowBackgroundProperty, value); } + } + + public static readonly DependencyProperty WindowBorderBrushProperty = DependencyProperty.Register("WindowBorderBrush", typeof(Brush), typeof(MessageBox), new PropertyMetadata(null)); + public Brush WindowBorderBrush + { + get { return (Brush)GetValue(WindowBorderBrushProperty); } + set { SetValue(WindowBorderBrushProperty, value); } + } + + public static readonly DependencyProperty WindowOpacityProperty = DependencyProperty.Register("WindowOpacity", typeof(double), typeof(MessageBox), new PropertyMetadata(null)); + public double WindowOpacity + { + get { return (double)GetValue(WindowOpacityProperty); } + set { SetValue(WindowOpacityProperty, value); } + } + + #endregion //Dependency Properties + + #endregion //Properties + + #region Base Class Overrides + + /// + /// Overrides the OnApplyTemplate method. + /// + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + DragWidget = (Thumb)GetTemplateChild("PART_DragWidget"); + if (DragWidget != null) + DragWidget.DragDelta += (o, e) => ProcessMove(e); + + CloseButton = (Button)GetTemplateChild("PART_CloseButton"); + if (CloseButton != null) + CloseButton.Click += (o, e) => Close(); + + NoButton = (Button)GetTemplateChild("PART_NoButton"); + if (NoButton != null) + NoButton.Click += (o, e) => Button_Click(o, e); + + NoButton1 = (Button)GetTemplateChild("PART_NoButton1"); + if (NoButton1 != null) + NoButton1.Click += (o, e) => Button_Click(o, e); + + YesButton = (Button)GetTemplateChild("PART_YesButton"); + if (YesButton != null) + YesButton.Click += (o, e) => Button_Click(o, e); + + YesButton1 = (Button)GetTemplateChild("PART_YesButton1"); + if (YesButton1 != null) + YesButton1.Click += (o, e) => Button_Click(o, e); + + CancelButton = (Button)GetTemplateChild("PART_CancelButton"); + if (CancelButton != null) + CancelButton.Click += (o, e) => Button_Click(o, e); + + CancelButton1 = (Button)GetTemplateChild("PART_CancelButton1"); + if (CancelButton1 != null) + CancelButton1.Click += (o, e) => Button_Click(o, e); + + OkButton = (Button)GetTemplateChild("PART_OkButton"); + if (OkButton != null) + OkButton.Click += (o, e) => Button_Click(o, e); + + OkButton1 = (Button)GetTemplateChild("PART_OkButton1"); + if (OkButton1 != null) + OkButton1.Click += (o, e) => Button_Click(o, e); + + ChangeVisualState(_button.ToString(), true); + } + + #endregion //Base Class Overrides + + #region Methods + + #region Public Static + + /// + /// Displays a message box that has a message and that returns a result. + /// + /// A System.String that specifies the text to display. + /// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user. + public static MessageBoxResult Show(string messageText) + { + return Show(messageText, string.Empty, MessageBoxButton.OK); + } + + /// + /// Displays a message box that has a message and title bar caption; and that returns a result. + /// + /// A System.String that specifies the text to display. + /// A System.String that specifies the title bar caption to display. + /// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user. + public static MessageBoxResult Show(string messageText, string caption) + { + return Show(messageText, caption, MessageBoxButton.OK); + } + + /// + /// Displays a message box that has a message and that returns a result. + /// + /// A System.String that specifies the text to display. + /// A System.String that specifies the title bar caption to display. + /// A System.Windows.MessageBoxButton value that specifies which button or buttons to display. + /// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user. + public static MessageBoxResult Show(string messageText, string caption, MessageBoxButton button) + { + return ShowCore(messageText, caption, button, MessageBoxImage.None); + } + + /// + /// Displays a message box that has a message and that returns a result. + /// + /// A System.String that specifies the text to display. + /// A System.String that specifies the title bar caption to display. + /// A System.Windows.MessageBoxButton value that specifies which button or buttons to display. + /// A System.Windows.MessageBoxImage value that specifies the icon to display. + /// A System.Windows.MessageBoxResult value that specifies which message box button is clicked by the user. + public static MessageBoxResult Show(string messageText, string caption, MessageBoxButton button, MessageBoxImage icon) + { + return ShowCore(messageText, caption, button, icon); + } + + #endregion //Public Static + + #region Private Static + + private static MessageBoxResult ShowCore(string messageText, string caption, MessageBoxButton button, MessageBoxImage icon) + { + MessageBox msgBox = new MessageBox(); + msgBox.InitializeMessageBox(messageText, caption, button, icon); + msgBox.Show(); + return msgBox.MessageBoxResult; + } + + /// + /// Resolves the owner Window of the MessageBox. + /// + /// + private static FrameworkElement ResolveOwner() + { + FrameworkElement owner = null; + if (Application.Current != null) + { + foreach (Window w in Application.Current.Windows) + { + if (w.IsActive) + { + owner = w; + break; + } + } + } + return owner; + } + + #endregion //Private Static + + #region Protected + + /// + /// Shows the MessageBox + /// + protected void Show() + { + Container.ShowDialog(); + } + + /// + /// Initializes the MessageBox. + /// + /// The text. + /// The caption. + /// The button. + /// The image. + protected void InitializeMessageBox(string text, string caption, MessageBoxButton button, MessageBoxImage image) + { + Text = text; + Caption = caption; + _button = button; + SetImageSource(image); + Container = CreateContainer(); + } + + /// + /// Changes the control's visual state(s). + /// + /// name of the state + /// True if state transitions should be used. + protected void ChangeVisualState(string name, bool useTransitions) + { + VisualStateManager.GoToState(this, name, useTransitions); + } + + #endregion //Protected + + #region Private + + /// + /// Sets the message image source. + /// + /// The image to show. + private void SetImageSource(MessageBoxImage image) + { + String iconName = String.Empty; + + switch (image) + { + case MessageBoxImage.Error: + { + iconName = "Error48.png"; + break; + } + case MessageBoxImage.Information: + { + iconName = "Information48.png"; + break; + } + case MessageBoxImage.Question: + { + iconName = "Question48.png"; + break; + } + case MessageBoxImage.Warning: + { + iconName = "Warning48.png"; + break; + } + case MessageBoxImage.None: + default: + { + return; + } + } + + ImageSource = (ImageSource)new ImageSourceConverter().ConvertFromString(String.Format("pack://application:,,,/WPFToolkit.Extended;component/MessageBox/Icons/{0}", iconName)); + } + + /// + /// Creates the container which will host the MessageBox control. + /// + /// + private Window CreateContainer() + { + var newWindow = new Window(); + newWindow.AllowsTransparency = true; + newWindow.Background = Brushes.Transparent; + newWindow.Content = this; + + var owner = ResolveOwner(); + if (owner != null) + newWindow.Owner = Window.GetWindow(owner); + + newWindow.ShowInTaskbar = false; + newWindow.SizeToContent = System.Windows.SizeToContent.WidthAndHeight; + newWindow.ResizeMode = System.Windows.ResizeMode.NoResize; + newWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; + newWindow.WindowStyle = System.Windows.WindowStyle.None; + return newWindow; + } + + #endregion //Private + + #endregion //Methods + + #region Event Handlers + + /// + /// Processes the move of a drag operation on the header. + /// + /// The instance containing the event data. + private void ProcessMove(DragDeltaEventArgs e) + { + Container.Left = Container.Left + e.HorizontalChange; + Container.Top = Container.Top + e.VerticalChange; + } + + /// + /// Sets the MessageBoxResult according to the button pressed and then closes the MessageBox. + /// + /// The source of the event. + /// The instance containing the event data. + private void Button_Click(object sender, RoutedEventArgs e) + { + Button button = e.Source as Button; + switch (button.Name) + { + case "PART_NoButton": + case "PART_NoButton1": + MessageBoxResult = MessageBoxResult.No; + break; + case "PART_YesButton": + case "PART_YesButton1": + MessageBoxResult = MessageBoxResult.Yes; + break; + case "PART_CancelButton": + case "PART_CancelButton1": + MessageBoxResult = MessageBoxResult.Cancel; + break; + case "PART_OkButton": + case "PART_OkButton1": + MessageBoxResult = MessageBoxResult.OK; + break; + } + + Close(); + } + + /// + /// Closes the MessageBox. + /// + private void Close() + { + Container.Close(); + } + + #endregion //Event Handlers + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/VisualStates.MessageBox.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/VisualStates.MessageBox.cs new file mode 100644 index 00000000..d47fcb08 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/VisualStates.MessageBox.cs @@ -0,0 +1,17 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + internal static partial class VisualStates + { + public const string MessageBoxButtonsGroup = "MessageBoxButtonsGroup"; + + public const string OK = "OK"; + + public const string OKCancel = "OKCancel"; + + public const string YesNo = "YesNo"; + + public const string YesNoCancel = "YesNoCancel"; + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/NumericUpDown/NumericUpDown.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/NumericUpDown/NumericUpDown.cs new file mode 100644 index 00000000..a9e648cd --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/NumericUpDown/NumericUpDown.cs @@ -0,0 +1,297 @@ +using System; +using System.Windows; +using System.Globalization; +using System.Windows.Input; + +namespace Microsoft.Windows.Controls +{ + public class NumericUpDown : UpDownBase + { + #region Properties + + #region Minimum + + public static readonly DependencyProperty MinimumProperty = DependencyProperty.Register("Minimum", typeof(double), typeof(NumericUpDown), new PropertyMetadata(Double.MinValue, OnMinimumPropertyChanged)); + public double Minimum + { + get { return (double)GetValue(MinimumProperty); } + set { SetValue(MinimumProperty, value); } + } + + private static void OnMinimumPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + NumericUpDown nud = d as NumericUpDown; + nud.SetValidSpinDirection(); + } + + #endregion Minimum + + #region Maximum + + public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register("Maximum", typeof(double), typeof(NumericUpDown), new PropertyMetadata(Double.MaxValue, OnMaximumPropertyChanged)); + public double Maximum + { + get { return (double)GetValue(MaximumProperty); } + set { SetValue(MaximumProperty, value); } + } + + private static void OnMaximumPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + NumericUpDown nud = d as NumericUpDown; + nud.SetValidSpinDirection(); + } + + #endregion Maximum + + #region Increment + + public static readonly DependencyProperty IncrementProperty = DependencyProperty.Register("Increment", typeof(double), typeof(NumericUpDown), new PropertyMetadata(1.0)); + public double Increment + { + get { return (double)GetValue(IncrementProperty); } + set { SetValue(IncrementProperty, value); } + } + + #endregion + + #region FormatString + + public static readonly DependencyProperty StringFormatProperty = DependencyProperty.Register("FormatString", typeof(string), typeof(NumericUpDown), new PropertyMetadata("F0", OnStringFormatPropertyPropertyChanged)); + public string FormatString + { + get { return (string)GetValue(StringFormatProperty); } + set { SetValue(StringFormatProperty, value); } + } + + private static void OnStringFormatPropertyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + NumericUpDown nud = d as NumericUpDown; + nud.OnStringFormatChanged(e.OldValue.ToString(), e.NewValue.ToString()); + } + + protected virtual void OnStringFormatChanged(string oldValue, string newValue) + { + SyncTextAndValueProperties(NumericUpDown.TextProperty, Value); + } + + #endregion //FormatString + + #region SelectAllOnGotFocus + + public static readonly DependencyProperty SelectAllOnGotFocusProperty = DependencyProperty.Register("SelectAllOnGotFocus", typeof(bool), typeof(NumericUpDown), new PropertyMetadata(false)); + public bool SelectAllOnGotFocus + { + get { return (bool)GetValue(SelectAllOnGotFocusProperty); } + set { SetValue(SelectAllOnGotFocusProperty, value); } + } + + #endregion //SelectAllOnGotFocus + + #endregion + + #region Constructors + + static NumericUpDown() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(NumericUpDown), new FrameworkPropertyMetadata(typeof(NumericUpDown))); + ValueTypeProperty.OverrideMetadata(typeof(NumericUpDown), new FrameworkPropertyMetadata(typeof(double))); + ValueProperty.OverrideMetadata(typeof(NumericUpDown), new FrameworkPropertyMetadata(default(Double))); + } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + SetValidSpinDirection(); + + if (SelectAllOnGotFocus) + { + //in order to select all the text we must handle both the keybord (tabbing) and mouse (clicking) events + TextBox.GotKeyboardFocus += OnTextBoxGotKeyBoardFocus; + TextBox.PreviewMouseLeftButtonDown += OnTextBoxPreviewMouseLeftButtonDown; + } + } + + protected override void OnValueChanged(object oldValue, object newValue) + { + SetValidSpinDirection(); + base.OnValueChanged(oldValue, newValue); + } + + protected override object OnCoerceValue(object value) + { + if (value == null) return value; + + double val = Convert.ToDouble(value); + + if (val < Minimum) + { + return Minimum; + } + else if (val > Maximum) + { + return Maximum; + } + else + { + return value; + } + } + + protected override object ConvertTextToValue(string text) + { + object result = null; + + NumberFormatInfo info = NumberFormatInfo.GetInstance(CultureInfo.CurrentCulture); + + try + { + result = FormatString.Contains("P") ? ParsePercent(text, ValueType, info) : ParseDataValue(text, ValueType, info); + } + catch + { + TextBox.Text = Text = ConvertValueToText(Value); + return Value; + } + + return result; + } + + protected override string ConvertValueToText(object value) + { + return (Convert.ToDecimal(Value)).ToString(FormatString, CultureInfo.CurrentCulture); + } + + protected override void OnIncrement() + { + double newValue = (double)(Convert.ToDecimal(Value) + (decimal)Increment); + Value = ValueType != typeof(Double) ? Convert.ChangeType(newValue, ValueType) : newValue; + } + + protected override void OnDecrement() + { + double newValue = (double)(Convert.ToDecimal(Value) - (decimal)Increment); + Value = ValueType != typeof(Double) ? Convert.ChangeType(newValue, ValueType) : newValue; + } + + #endregion //Base Class Overrides + + #region Event Handlers + + private void OnTextBoxGotKeyBoardFocus(object sender, RoutedEventArgs e) + { + TextBox.SelectAll(); + } + + void OnTextBoxPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + if (!TextBox.IsKeyboardFocused) + { + e.Handled = true; + TextBox.Focus(); + } + } + + #endregion //Event Handlers + + #region Methods + + /// + /// Sets the valid spin direction based on current value, minimum and maximum. + /// + private void SetValidSpinDirection() + { + ValidSpinDirections validDirections = ValidSpinDirections.None; + + if (Convert.ToDouble(Value) < Maximum) + { + validDirections = validDirections | ValidSpinDirections.Increase; + } + + if (Convert.ToDouble(Value) > Minimum) + { + validDirections = validDirections | ValidSpinDirections.Decrease; + } + + if (Spinner != null) + { + Spinner.ValidSpinDirection = validDirections; + } + } + + #region Parsing + + private static object ParseDataValue(string text, Type dataType, NumberFormatInfo info) + { + try + { + if (typeof(double) == dataType) + { + return ParseDouble(text, info); + } + else if (typeof(float) == dataType) + { + return ParseFloat(text, info); + } + else if (typeof(byte) == dataType || typeof(sbyte) == dataType || + typeof(short) == dataType || typeof(ushort) == dataType || typeof(Int16) == dataType || + typeof(int) == dataType || typeof(uint) == dataType || typeof(Int32) == dataType || + typeof(long) == dataType || typeof(ulong) == dataType || typeof(Int64) == dataType) + { + return ParseWholeNumber(text, dataType, info); + } + else if (typeof(decimal) == dataType) + { + return ParseDecimal(text, info); + } + else + { + throw new ArgumentException("Type not supported"); + } + } + catch (Exception ex) + { + throw; + } + } + + private static double ParseDouble(string text, NumberFormatInfo info) + { + return double.Parse(text, NumberStyles.Any, info); + } + + private static float ParseFloat(string text, NumberFormatInfo info) + { + double result = double.Parse(text, NumberStyles.Any, info); + return (float)result; + } + + private static decimal ParseDecimal(string text, NumberFormatInfo info) + { + return decimal.Parse(text, NumberStyles.Any, info); + } + + private static object ParseWholeNumber(string text, Type dataType, NumberFormatInfo info) + { + decimal result = decimal.Parse(text, NumberStyles.Any, info); + return Convert.ChangeType(result, dataType, info); + } + + private static object ParsePercent(string text, Type dataType, NumberFormatInfo info) + { + text = text.Replace(info.PercentSymbol, null); + + decimal result = decimal.Parse(text, NumberStyles.Any, info); + result = result / 100; + + return Convert.ChangeType(result, dataType, info); + } + + #endregion + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..60f0e673 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs @@ -0,0 +1,59 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Markup; + +// 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. +[assembly: AssemblyTitle("Extended WPF Toolkit")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Extended WPF Toolkit")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] + +[assembly: XmlnsPrefix("http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended", "extToolkit")] +[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended", "Microsoft.Windows.Controls")] diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs new file mode 100644 index 00000000..eaf63633 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Windows.Controls.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Windows.Controls.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs new file mode 100644 index 00000000..4a0f1423 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Windows.Controls.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/ITextFormatter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/ITextFormatter.cs new file mode 100644 index 00000000..f8e22d41 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/ITextFormatter.cs @@ -0,0 +1,11 @@ +using System; +using System.Windows.Documents; + +namespace Microsoft.Windows.Controls +{ + public interface ITextFormatter + { + string GetText(FlowDocument document); + void SetText(FlowDocument document, string text); + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/PlainTextFormatter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/PlainTextFormatter.cs new file mode 100644 index 00000000..1c792a32 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/PlainTextFormatter.cs @@ -0,0 +1,21 @@ +using System; +using System.Windows.Documents; + +namespace Microsoft.Windows.Controls +{ + /// + /// Formats the RichTextBox text as plain text + /// + public class PlainTextFormatter : ITextFormatter + { + public string GetText(FlowDocument document) + { + return new TextRange(document.ContentStart, document.ContentEnd).Text; + } + + public void SetText(FlowDocument document, string text) + { + new TextRange(document.ContentStart, document.ContentEnd).Text = text; + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/RtfFormatter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/RtfFormatter.cs new file mode 100644 index 00000000..e5a1def6 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/RtfFormatter.cs @@ -0,0 +1,33 @@ +using System; +using System.Text; +using System.Windows.Documents; +using System.IO; +using System.Windows; + +namespace Microsoft.Windows.Controls +{ + /// + /// Formats the RichTextBox text as RTF + /// + public class RtfFormatter : ITextFormatter + { + public string GetText(FlowDocument document) + { + TextRange tr = new TextRange(document.ContentStart, document.ContentEnd); + using (MemoryStream ms = new MemoryStream()) + { + tr.Save(ms, DataFormats.Rtf); + return ASCIIEncoding.Default.GetString(ms.ToArray()); + } + } + + public void SetText(FlowDocument document, string text) + { + TextRange tr = new TextRange(document.ContentStart, document.ContentEnd); + using (MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(text))) + { + tr.Load(ms, DataFormats.Rtf); + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/XamlFormatter.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/XamlFormatter.cs new file mode 100644 index 00000000..07e1d31a --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/Formatters/XamlFormatter.cs @@ -0,0 +1,40 @@ +using System; +using System.Text; +using System.IO; +using System.Windows.Documents; +using System.Windows; + +namespace Microsoft.Windows.Controls +{ + /// + /// Formats the RichTextBox text as Xaml + /// + public class XamlFormatter : ITextFormatter + { + public string GetText(System.Windows.Documents.FlowDocument document) + { + TextRange tr = new TextRange(document.ContentStart, document.ContentEnd); + using (MemoryStream ms = new MemoryStream()) + { + tr.Save(ms, DataFormats.Xaml); + return ASCIIEncoding.Default.GetString(ms.ToArray()); + } + } + + public void SetText(System.Windows.Documents.FlowDocument document, string text) + { + try + { + TextRange tr = new TextRange(document.ContentStart, document.ContentEnd); + using (MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(text))) + { + tr.Load(ms, DataFormats.Xaml); + } + } + catch + { + throw new InvalidDataException("data provided is not in the correct Xaml format."); + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/RichTextBox.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/RichTextBox.cs new file mode 100644 index 00000000..88246526 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/RichTextBox.cs @@ -0,0 +1,117 @@ +using System; +using System.Windows; +using System.Windows.Data; + +namespace Microsoft.Windows.Controls +{ + public class RichTextBox : System.Windows.Controls.RichTextBox + { + #region Private Members + + private bool _textSetInternally; + + #endregion //Private Members + + #region Constructors + + public RichTextBox() + { + Loaded += RichTextBox_Loaded; + } + + public RichTextBox(System.Windows.Documents.FlowDocument document) + : base(document) + { + + } + + #endregion //Constructors + + #region Properties + + #region Text + + public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(RichTextBox), new FrameworkPropertyMetadata(String.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnTextPropertyChanged, CoerceTextProperty, true, UpdateSourceTrigger.LostFocus)); + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + private static void OnTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + RichTextBox rtb = (RichTextBox)d; + + // if the text is not being set internally then load the text into the RichTextBox + if (!rtb._textSetInternally) + rtb.TextFormatter.SetText(rtb.Document, (string)e.NewValue); + } + + private static object CoerceTextProperty(DependencyObject d, object value) + { + return value ?? ""; + } + + #endregion //Text + + #region TextFormatter + + private ITextFormatter _textFormatter; + /// + /// The ITextFormatter the is used to format the text of the RichTextBox. + /// Deafult formatter is the RtfFormatter + /// + public ITextFormatter TextFormatter + { + get + { + if (_textFormatter == null) + _textFormatter = new RtfFormatter(); //default is rtf + + return _textFormatter; + } + set + { + _textFormatter = value; + } + } + + #endregion //TextFormatter + + #endregion //Properties + + #region Methods + + private void UpdateText() + { + _textSetInternally = true; + + Text = TextFormatter.GetText(Document); + + _textSetInternally = false; + } + + #endregion //Methods + + #region Event Hanlders + + private void RichTextBox_Loaded(object sender, RoutedEventArgs e) + { + Binding binding = BindingOperations.GetBinding(this, TextProperty); + + if (binding != null) + { + if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default || binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus) + { + PreviewLostKeyboardFocus += (o, ea) => UpdateText(); + } + else + { + TextChanged += (o, ea) => UpdateText(); + } + } + } + + #endregion //Event Hanlders + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/IRichTextBoxFormatBar.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/IRichTextBoxFormatBar.cs new file mode 100644 index 00000000..46c38afe --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/IRichTextBoxFormatBar.cs @@ -0,0 +1,12 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + public interface IRichTextBoxFormatBar + { + /// + /// Represents the RichTextBox that will be the target for all text manipulations in the format bar. + /// + global::System.Windows.Controls.RichTextBox Target { get; set; } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb36a1ac4098fe00ceb7f03d8029e88a1366da4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(s(! z#WBRfKRH37?1B9S_a6pF17_O^Z9TToK R%>im;@O1TaS?83{1OWPcFI@lt literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png new file mode 100644 index 0000000000000000000000000000000000000000..73e7c15effc2a177b6536461d08ab0c48238c74d GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!8A`7#}EtuIllqDIG9v|jdsxaGe*3+}EP8Kspo?EtR*+qvXP6fxNpVjwR5%EFZWpb*F zN3p}f#{XPwtWTD@OgO7>_S3JQPj)uwqz8KoGpxQFu=(;aPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Sie)K~y+T-H|bF zgfJ9D_XhC|>?XC{tg_vA6D1uq5!*qxCEUO%)4>hQ4VEKtgK&f#!8dT`J8Yy~B?Q_a zjgZXD{D=Q;xA0{3*+S!zXYpI}HpaXeqVwGrj==<{f0+|E_g3siAX6_)VSvLi%*7HA2pA3w7 UIs4h+_y7O^07*qoM6N<$g0_X4*Z=?k literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png new file mode 100644 index 0000000000000000000000000000000000000000..8259a9e186c2fa7e4bc0b5ccd06149406666b59e GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P#H z#WBRfKRH3-+XMRx?Js7e_&4)rWM?y9T*A0QZ3ef;Wu8#mENe-{e%*VX{dSukWxvQ` ZVrVzly3eul87I&H22WQ%mvv4FO#t2EGt>Y8 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png new file mode 100644 index 0000000000000000000000000000000000000000..c5499bcebd7c86327e645c79e55217c18cdd104d GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(t0) z#WBRfKRH1{bP0l+XkK3cxM) literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png new file mode 100644 index 0000000000000000000000000000000000000000..51dffb73bf40ad7d85a7a5888300fc71c63ab757 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P8~ z#WBRfKRH1{=YjnN#TJ9yyIv>Caz0%t6*Saau&(#TGQr18C8jWLvp!G8Yx|mI%nWz0 WJMMq?;*}!M3L z#WBRfKRH2y=YjnN!6yl~cFv8s9&n!Z$gPfbeN}o6=A9AZfgrBMoWl)O3qAWh85Z-q V?>sR5)CHh+22WQ%mvv4FO#s$~Hhlm9 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3783f262e3954455bcbb062f2f05af8373442b GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4cwkCjv*HQZ-Z7B9X1fSqW(gd=d@CU#x;k7 znkY&XAeM`Hf8 zChY!wp-et8mSHbjPTalT5BY2{6DL3SiMT$!TJ+BzTM>DoIsO;cww{Q0<_@ir)waA} zXxF5?j3<{v*K$QEx8R`#2|fW=m-ydq_STejd>Nha;Z@?|qe~OFi%2XE*!NiSjMupY zvuUYXste!w+a0mcNGh=URcRo6r>b?%N@b;%WCyR6(`{GA%rEsh(Du`|l$ZU;x?Ock zUe8OnKl0v@)!6Z**u7{EP5(As&h+SlOOqQTvsdg+v#juJ{BIr1UdQ0lnB6S+xr7fG ORt%o5elF{r5}E**#gPmE literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png new file mode 100644 index 0000000000000000000000000000000000000000..7268948235e0649964391879234e19c349a01721 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P^M z#WBRfKRH37?1B9S_Y)FN9CMN?Z22xXtl^j~;pgne>(FAA+IZvIH8w6EHVxk(orLb{ o4T&X;FIMtN&)4HqyeGt9vc&A;o9y^aK;sxZUHx3vIVCg!0G@0(9{>OV literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml new file mode 100644 index 00000000..a2ebd824 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml.cs new file mode 100644 index 00000000..d7c65788 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBar.xaml.cs @@ -0,0 +1,232 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Media; +using System.Windows.Controls.Primitives; +using Microsoft.Windows.Controls.Core; + +namespace Microsoft.Windows.Controls +{ + /// + /// Interaction logic for RichTextBoxFormatBar.xaml + /// + public partial class RichTextBoxFormatBar : UserControl, IRichTextBoxFormatBar + { + #region Properties + + #region RichTextBox + + public static readonly DependencyProperty TargetProperty = DependencyProperty.Register("Target", typeof(global::System.Windows.Controls.RichTextBox), typeof(RichTextBoxFormatBar), new PropertyMetadata(null, OnRichTextBoxPropertyChanged)); + public global::System.Windows.Controls.RichTextBox Target + { + get { return (global::System.Windows.Controls.RichTextBox)GetValue(TargetProperty); } + set { SetValue(TargetProperty, value); } + } + + private static void OnRichTextBoxPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + RichTextBoxFormatBar formatBar = d as RichTextBoxFormatBar; + } + + #endregion //RichTextBox + + public static double[] FontSizes + { + get + { + return new double[] { + 3.0, 4.0, 5.0, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, + 10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 15.0, + 16.0, 17.0, 18.0, 19.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, + 32.0, 34.0, 36.0, 38.0, 40.0, 44.0, 48.0, 52.0, 56.0, 60.0, 64.0, 68.0, 72.0, 76.0, + 80.0, 88.0, 96.0, 104.0, 112.0, 120.0, 128.0, 136.0, 144.0 + }; + } + } + + #endregion + + #region Constructors + + public RichTextBoxFormatBar() + { + InitializeComponent(); + Loaded += FormatToolbar_Loaded; + + _cmbFontFamilies.ItemsSource = Fonts.SystemFontFamilies; + _cmbFontSizes.ItemsSource = FontSizes; + } + + #endregion //Constructors + + #region Event Hanlders + + void FormatToolbar_Loaded(object sender, RoutedEventArgs e) + { + UpdateVisualState(); + } + + private void FontFamily_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (e.AddedItems.Count == 0) + return; + + FontFamily editValue = (FontFamily)e.AddedItems[0]; + ApplyPropertyValueToSelectedText(TextElement.FontFamilyProperty, editValue); + } + + private void FontSize_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (e.AddedItems.Count == 0) + return; + + ApplyPropertyValueToSelectedText(TextElement.FontSizeProperty, e.AddedItems[0]); + } + + void FontColor_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs e) + { + Color selectedColor = (Color)e.NewValue; + ApplyPropertyValueToSelectedText(TextElement.ForegroundProperty, new SolidColorBrush(selectedColor)); + } + + private void FontBackgroundColor_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs e) + { + Color selectedColor = (Color)e.NewValue; + ApplyPropertyValueToSelectedText(TextElement.BackgroundProperty, new SolidColorBrush(selectedColor)); + } + + private void Bullets_Clicked(object sender, RoutedEventArgs e) + { + if (BothSelectionListsAreChecked()) + { + _btnNumbers.IsChecked = false; + } + } + + private void Numbers_Clicked(object sender, RoutedEventArgs e) + { + if (BothSelectionListsAreChecked()) + { + _btnBullets.IsChecked = false; + } + } + + private void DragWidget_DragDelta(object sender, DragDeltaEventArgs e) + { + ProcessMove(e); + } + + #endregion //Event Hanlders + + #region Methods + + private void UpdateVisualState() + { + UpdateToggleButtonState(); + UpdateSelectedFontFamily(); + UpdateSelectedFontSize(); + UpdateFontColor(); + UpdateFontBackgroundColor(); + UpdateSelectionListType(); + } + + private void UpdateToggleButtonState() + { + UpdateItemCheckedState(_btnBold, TextElement.FontWeightProperty, FontWeights.Bold); + UpdateItemCheckedState(_btnItalic, TextElement.FontStyleProperty, FontStyles.Italic); + UpdateItemCheckedState(_btnUnderline, Inline.TextDecorationsProperty, TextDecorations.Underline); + + UpdateItemCheckedState(_btnAlignLeft, Paragraph.TextAlignmentProperty, TextAlignment.Left); + UpdateItemCheckedState(_btnAlignCenter, Paragraph.TextAlignmentProperty, TextAlignment.Center); + UpdateItemCheckedState(_btnAlignRight, Paragraph.TextAlignmentProperty, TextAlignment.Right); + } + + void UpdateItemCheckedState(ToggleButton button, DependencyProperty formattingProperty, object expectedValue) + { + object currentValue = Target.Selection.GetPropertyValue(formattingProperty); + button.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != null && currentValue.Equals(expectedValue); + } + + private void UpdateSelectedFontFamily() + { + object value = Target.Selection.GetPropertyValue(TextElement.FontFamilyProperty); + FontFamily currentFontFamily = (FontFamily)((value == DependencyProperty.UnsetValue) ? null : value); + if (currentFontFamily != null) + { + _cmbFontFamilies.SelectedItem = currentFontFamily; + } + } + + private void UpdateSelectedFontSize() + { + object value = Target.Selection.GetPropertyValue(TextElement.FontSizeProperty); + _cmbFontSizes.SelectedValue = (value == DependencyProperty.UnsetValue) ? null : value; + } + + private void UpdateFontColor() + { + object value = Target.Selection.GetPropertyValue(TextElement.ForegroundProperty); + Color currentColor = (Color)((value == DependencyProperty.UnsetValue) ? Colors.Black : ((SolidColorBrush)value).Color); + _cmbFontColor.SelectedColor = currentColor; + } + + private void UpdateFontBackgroundColor() + { + object value = Target.Selection.GetPropertyValue(TextElement.BackgroundProperty); + Color currentColor = (Color)((value == null || value == DependencyProperty.UnsetValue) ? Colors.White : ((SolidColorBrush)value).Color); + _cmbFontBackgroundColor.SelectedColor = currentColor; + } + + /// + /// Updates the visual state of the List styles, such as Numbers and Bullets. + /// + private void UpdateSelectionListType() + { + //uncheck both + _btnBullets.IsChecked = false; + _btnNumbers.IsChecked = false; + + Paragraph startParagraph = Target.Selection.Start.Paragraph; + Paragraph endParagraph = Target.Selection.End.Paragraph; + if (startParagraph != null && endParagraph != null && (startParagraph.Parent is ListItem) && (endParagraph.Parent is ListItem) && object.ReferenceEquals(((ListItem)startParagraph.Parent).List, ((ListItem)endParagraph.Parent).List)) + { + TextMarkerStyle markerStyle = ((ListItem)startParagraph.Parent).List.MarkerStyle; + if (markerStyle == TextMarkerStyle.Disc) //bullets + { + _btnBullets.IsChecked = true; + } + else if (markerStyle == TextMarkerStyle.Decimal) //numbers + { + _btnNumbers.IsChecked = true; + } + } + } + + /// + /// Checks to see if both selection lists are checked. (Bullets and Numbers) + /// + /// + private bool BothSelectionListsAreChecked() + { + return _btnBullets.IsChecked == true && _btnNumbers.IsChecked == true; + } + + void ApplyPropertyValueToSelectedText(DependencyProperty formattingProperty, object value) + { + if (value == null) + return; + + Target.Selection.ApplyPropertyValue(formattingProperty, value); + } + + private void ProcessMove(DragDeltaEventArgs e) + { + AdornerLayer layer = AdornerLayer.GetAdornerLayer(Target); + UIElementAdorner adorner = layer.GetAdorners(Target)[0] as UIElementAdorner; + adorner.SetOffsets(adorner.OffsetLeft + e.HorizontalChange, adorner.OffsetTop + e.VerticalChange); + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs new file mode 100644 index 00000000..8fbc1e31 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBoxFormatBar/RichTextBoxFormatBarManager.cs @@ -0,0 +1,197 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using Microsoft.Windows.Controls.Core; +using System.Windows.Input; + +namespace Microsoft.Windows.Controls +{ + public class RichTextBoxFormatBarManager : DependencyObject + { + #region Members + + private global::System.Windows.Controls.RichTextBox _richTextBox; + private UIElementAdorner _adorner; + private IRichTextBoxFormatBar _toolbar; + + #endregion //Members + + #region Properties + + #region FormatBar + + public static readonly DependencyProperty FormatBarProperty = DependencyProperty.RegisterAttached("FormatBar", typeof(IRichTextBoxFormatBar), typeof(RichTextBox), new PropertyMetadata(null, OnFormatBarPropertyChanged)); + public static void SetFormatBar(UIElement element, IRichTextBoxFormatBar value) + { + element.SetValue(FormatBarProperty, value); + } + public static IRichTextBoxFormatBar GetFormatBar(UIElement element) + { + return (IRichTextBoxFormatBar)element.GetValue(FormatBarProperty); + } + + private static void OnFormatBarPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + global::System.Windows.Controls.RichTextBox rtb = d as global::System.Windows.Controls.RichTextBox; + if (rtb == null) + throw new Exception("A FormatBar can only be applied to a RichTextBox."); + + RichTextBoxFormatBarManager manager = new RichTextBoxFormatBarManager(); + manager.AttachFormatBarToRichtextBox(rtb, e.NewValue as IRichTextBoxFormatBar); + } + + #endregion //FormatBar + + public bool IsAdornerVisible + { + get { return _adorner.Visibility == Visibility.Visible; } + } + + #endregion //Properties + + #region Event Handlers + + void RichTextBox_MouseButtonUp(object sender, MouseButtonEventArgs e) + { + if (e.LeftButton == MouseButtonState.Released) + { + TextRange selectedText = new TextRange(_richTextBox.Selection.Start, _richTextBox.Selection.End); +#if !VS2008 + if (selectedText.Text.Length > 0 && !String.IsNullOrWhiteSpace(selectedText.Text)) + { + ShowAdorner(); + } +#else + if (selectedText.Text.Length > 0 && !String.IsNullOrEmpty(selectedText.Text)) + { + ShowAdorner(); + } +#endif + else + { + HideAdorner(); + } + } + + e.Handled = true; + } + + void RichTextBox_PreviewMouseMove(object sender, MouseEventArgs e) + { + //if the mouse moves outside the richtextbox bounds hide the adorner + //though this deosn't always work, especially if the user moves the mouse very quickly. + //need to find a better solution, but this will work for now. + Point p = e.GetPosition(_richTextBox); + if (p.X <= 5.0 || p.X >= _richTextBox.ActualWidth - 5 || p.Y <= 3.0 || p.Y >= _richTextBox.ActualHeight - 3) + HideAdorner(); + } + + void RichTextBox_TextChanged(object sender, TextChangedEventArgs e) + { + //this fixes the bug when applying text transformations the text would lose it's highlight. That was because the RichTextBox was losing focus + //so we just give it focus again and it seems to do the trick of re-highlighting it. + if (!_richTextBox.IsFocused && !_richTextBox.Selection.IsEmpty) + _richTextBox.Focus(); + } + + #endregion //Event Handlers + + #region Methods + + /// + /// Attaches a FormatBar to a RichtextBox + /// + /// The RichtextBox to attach to. + /// The Formatbar to attach. + private void AttachFormatBarToRichtextBox(global::System.Windows.Controls.RichTextBox richTextBox, IRichTextBoxFormatBar formatBar) + { + _richTextBox = richTextBox; + _richTextBox.PreviewMouseMove += RichTextBox_PreviewMouseMove; + //we cannot use the PreviewMouseLeftButtonUp event because of selection bugs. + //we cannot use the MouseLeftButtonUp event because it is handled by the RichTextBox and does not bubble up to here, so we must + //add a hander to the MouseUpEvent using the Addhandler syntax, and specify to listen for handled events too. + _richTextBox.AddHandler(Mouse.MouseUpEvent, new MouseButtonEventHandler(RichTextBox_MouseButtonUp), true); + _richTextBox.TextChanged += RichTextBox_TextChanged; + + _adorner = new UIElementAdorner(_richTextBox); + + formatBar.Target = _richTextBox; + _toolbar = formatBar; + } + + /// + /// Shows the FormatBar + /// + void ShowAdorner() + { + if (_adorner.Visibility == Visibility.Visible) + return; + + VerifyAdornerLayer(); + + Control adorningEditor = _toolbar as Control; + _adorner.Child = adorningEditor; + _adorner.Visibility = Visibility.Visible; + + PositionFormatBar(adorningEditor); + } + + /// + /// Positions the FormatBar so that is does not go outside the bounds of the RichTextBox or covers the selected text + /// + /// + private void PositionFormatBar(Control adorningEditor) + { + Point mousePosition = Mouse.GetPosition(_richTextBox); + + double left = mousePosition.X; + double top = (mousePosition.Y - 15) - adorningEditor.ActualHeight; + + //top + if (top < 0) + { + top = mousePosition.Y + 10; + } + + //right boundary + if (left + adorningEditor.ActualWidth > _richTextBox.ActualWidth - 20) + { + left = left - (adorningEditor.ActualWidth - (_richTextBox.ActualWidth - left)); + } + + _adorner.SetOffsets(left, top); + } + + /// + /// Ensures that the IRichTextFormatBar is in the adorner layer. + /// + /// True if the IRichTextFormatBar is in the adorner layer, else false. + bool VerifyAdornerLayer() + { + if (_adorner.Parent != null) + return true; + + AdornerLayer layer = AdornerLayer.GetAdornerLayer(_richTextBox); + if (layer == null) + return false; + + layer.Add(_adorner); + return true; + } + + /// + /// Hides the IRichTextFormatBar that is in the adornor layer. + /// + void HideAdorner() + { + if (IsAdornerVisible) + { + _adorner.Visibility = Visibility.Collapsed; + _adorner.Child = null; + } + } + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml new file mode 100644 index 00000000..96ac11a8 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml @@ -0,0 +1,1073 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collapsed + + + + + + + Collapsed + + + + + + + + + + + Visible + + + + + + + Visible + + + + + + + + + + + + + True + + + + + + + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/UpDownBase/UpDownBase.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/UpDownBase/UpDownBase.cs new file mode 100644 index 00000000..fb62b610 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/UpDownBase/UpDownBase.cs @@ -0,0 +1,162 @@ +using System; +using System.Windows.Controls; +using Microsoft.Windows.Controls.Primitives; +using System.Windows.Input; + +namespace Microsoft.Windows.Controls +{ + public abstract class UpDownBase : InputBase + { + #region Members + + /// + /// Name constant for Text template part. + /// + internal const string ElementTextName = "TextBox"; + + /// + /// Name constant for Spinner template part. + /// + internal const string ElementSpinnerName = "Spinner"; + + #endregion //Members + + #region Properties + + protected TextBox TextBox { get; private set; } + + private Spinner _spinner; + internal Spinner Spinner + { + get { return _spinner; } + private set + { + _spinner = value; + _spinner.Spin += OnSpinnerSpin; + } + } + + #endregion //Properties + + #region Constructors + + internal UpDownBase() { } + + #endregion //Constructors + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + TextBox = GetTemplateChild(ElementTextName) as TextBox; + Spinner = GetTemplateChild(ElementSpinnerName) as Spinner; + } + + protected override void OnPreviewKeyDown(KeyEventArgs e) + { + switch (e.Key) + { + case Key.Up: + { + DoIncrement(); + e.Handled = true; + break; + } + case Key.Down: + { + DoDecrement(); + e.Handled = true; + break; + } + case Key.Enter: + { + SyncTextAndValueProperties(UpDownBase.TextProperty, TextBox.Text); + break; + } + } + } + + protected override void OnMouseWheel(MouseWheelEventArgs e) + { + base.OnMouseWheel(e); + + if (!e.Handled) + { + if (e.Delta < 0) + { + DoDecrement(); + } + else if (0 < e.Delta) + { + DoIncrement(); + } + + e.Handled = true; + } + } + + #endregion //Base Class Overrides + + #region Event Handlers + + private void OnSpinnerSpin(object sender, SpinEventArgs e) + { + OnSpin(e); + } + + #endregion //Event Handlers + + #region Methods + + protected virtual void OnSpin(SpinEventArgs e) + { + if (e == null) + throw new ArgumentNullException("e"); + + if (e.Direction == SpinDirection.Increase) + DoIncrement(); + else + DoDecrement(); + } + + /// + /// Performs an increment if conditions allow it. + /// + private void DoDecrement() + { + if (Spinner == null || (Spinner.ValidSpinDirection & ValidSpinDirections.Decrease) == ValidSpinDirections.Decrease) + { + OnDecrement(); + } + } + + /// + /// Performs a decrement if conditions allow it. + /// + private void DoIncrement() + { + if (Spinner == null || (Spinner.ValidSpinDirection & ValidSpinDirections.Increase) == ValidSpinDirections.Increase) + { + OnIncrement(); + } + } + + #region Abstract + + /// + /// Called by OnSpin when the spin direction is SpinDirection.Increase. + /// + protected abstract void OnIncrement(); + + /// + /// Called by OnSpin when the spin direction is SpinDirection.Descrease. + /// + protected abstract void OnDecrement(); + + #endregion //Abstract + + #endregion //Methods + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/VisualStates.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/VisualStates.cs new file mode 100644 index 00000000..721a96e2 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/VisualStates.cs @@ -0,0 +1,9 @@ +using System; + +namespace Microsoft.Windows.Controls +{ + internal static partial class VisualStates + { + + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj new file mode 100644 index 00000000..f7b44fab --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj @@ -0,0 +1,174 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {72E591D6-8F83-4D8C-8F67-9C325E623234} + library + Properties + Microsoft.Windows.Controls + WPFToolkit.Extended + v4.0 + Client + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + 4.0 + + + + + + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + RichTextBoxFormatBar.xaml + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc new file mode 100644 index 00000000..feffdeca --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.sln b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.sln new file mode 100644 index 00000000..3a8496f2 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFToolkit.Extended", "Src\WPFToolkit.Extended\WPFToolkit.Extended.csproj", "{72E591D6-8F83-4D8C-8F67-9C325E623234}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFToolkit.Extended.Examples", "Src\WPFToolkit.Extended.Examples\WPFToolkit.Extended.Examples.csproj", "{747652D0-6AA6-4F96-99F7-0C834274FAB2}" +EndProject +Global + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = https://tfs.codeplex.com/tfs/TFS02 + SccLocalPath0 = . + SccProjectUniqueName1 = Src\\WPFToolkit.Extended\\WPFToolkit.Extended.csproj + SccProjectName1 = Src/WPFToolkit.Extended + SccLocalPath1 = Src\\WPFToolkit.Extended + SccProjectUniqueName2 = Src\\WPFToolkit.Extended.Examples\\WPFToolkit.Extended.Examples.csproj + SccProjectName2 = Src/WPFToolkit.Extended.Examples + SccLocalPath2 = Src\\WPFToolkit.Extended.Examples + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72E591D6-8F83-4D8C-8F67-9C325E623234}.Release|Any CPU.Build.0 = Release|Any CPU + {747652D0-6AA6-4F96-99F7-0C834274FAB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {747652D0-6AA6-4F96-99F7-0C834274FAB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {747652D0-6AA6-4F96-99F7-0C834274FAB2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {747652D0-6AA6-4F96-99F7-0C834274FAB2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.vssscc b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.vssscc new file mode 100644 index 00000000..794f014c --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/ExtendedWPFToolkit.vssscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml new file mode 100644 index 00000000..b6483ed1 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml.cs new file mode 100644 index 00000000..490ee2d0 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/App.xaml.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Windows; + +namespace WPFToolkit.Extended.Examples +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/AssemblyInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..af4eebe1 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// 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. +[assembly: AssemblyTitle("WPFToolkit.Extended.Examples")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("WPFToolkit.Extended.Examples")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.Designer.cs new file mode 100644 index 00000000..7a589ef7 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.4952 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Examples.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPFToolkit.Extended.Examples.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.resx b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.Designer.cs new file mode 100644 index 00000000..604a14c1 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.4952 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WPFToolkit.Extended.Examples.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.settings b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj new file mode 100644 index 00000000..9150807f --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj @@ -0,0 +1,113 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {747652D0-6AA6-4F96-99F7-0C834274FAB2} + WinExe + Properties + WPFToolkit.Extended.Examples + WPFToolkit.Extended.Examples + v3.5 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + Window1.xaml + Code + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + {72E591D6-8F83-4D8C-8F67-9C325E623234} + WPFToolkit.Extended + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj.vspscc b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj.vspscc new file mode 100644 index 00000000..feffdeca --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/WPFToolkit.Extended.Examples.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml new file mode 100644 index 00000000..78cc5db9 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml.cs new file mode 100644 index 00000000..009eb35f --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended.Examples/Window1.xaml.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WPFToolkit.Extended.Examples +{ + /// + /// Interaction logic for Window1.xaml + /// + public partial class Window1 : Window + { + public Window1() + { + InitializeComponent(); + Loaded += new RoutedEventHandler(Window1_Loaded); + } + + void Window1_Loaded(object sender, RoutedEventArgs e) + { + Microsoft.Windows.Controls.MessageBox.Show("MyStezt", "Test", MessageBoxButton.OKCancel, MessageBoxImage.Stop); + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Error48.png new file mode 100644 index 0000000000000000000000000000000000000000..4304d43b5fb9ed5285608ab9a278e0eb8261b2ef GIT binary patch literal 4170 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 U78JaYB>(^b07*qoM6N<$f{feW*#H0l literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Information48.png new file mode 100644 index 0000000000000000000000000000000000000000..3507518716c6898b5526a9619a5e2605b8bb27f3 GIT binary patch literal 5101 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 NM_@h8a&_CV{{x~L{;>c6 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/MessageBox/Icons/Question48.png new file mode 100644 index 0000000000000000000000000000000000000000..dad7dd09af4316e01b95d656b50d943f0f4ffe8d GIT binary patch literal 5492 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 P00000NkvXXu0mjf8D~qm literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..60f0e673 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/AssemblyInfo.cs @@ -0,0 +1,59 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Markup; + +// 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. +[assembly: AssemblyTitle("Extended WPF Toolkit")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Extended WPF Toolkit")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] + +[assembly: XmlnsPrefix("http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended", "extToolkit")] +[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended", "Microsoft.Windows.Controls")] diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs new file mode 100644 index 00000000..eaf63633 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Windows.Controls.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Windows.Controls.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.resx b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs new file mode 100644 index 00000000..4a0f1423 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Windows.Controls.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.settings b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.settings new file mode 100644 index 00000000..8f2fd95d --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bold16.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb36a1ac4098fe00ceb7f03d8029e88a1366da4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(s(! z#WBRfKRH37?1B9S_a6pF17_O^Z9TToK R%>im;@O1TaS?83{1OWPcFI@lt literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Bullets16.png new file mode 100644 index 0000000000000000000000000000000000000000..73e7c15effc2a177b6536461d08ab0c48238c74d GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!8A`7#}EtuIllqDIG9v|jdsxaGe*3+}EP8Kspo?EtR*+qvXP6fxNpVjwR5%EFZWpb*F zN3p}f#{XPwtWTD@OgO7>_S3JQPj)uwqz8KoGpxQFu=(;aPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Sie)K~y+T-H|bF zgfJ9D_XhC|>?XC{tg_vA6D1uq5!*qxCEUO%)4>hQ4VEKtgK&f#!8dT`J8Yy~B?Q_a zjgZXD{D=Q;xA0{3*+S!zXYpI}HpaXeqVwGrj==<{f0+|E_g3siAX6_)VSvLi%*7HA2pA3w7 UIs4h+_y7O^07*qoM6N<$g0_X4*Z=?k literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Italic16.png new file mode 100644 index 0000000000000000000000000000000000000000..8259a9e186c2fa7e4bc0b5ccd06149406666b59e GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P#H z#WBRfKRH3-+XMRx?Js7e_&4)rWM?y9T*A0QZ3ef;Wu8#mENe-{e%*VX{dSukWxvQ` ZVrVzly3eul87I&H22WQ%mvv4FO#t2EGt>Y8 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/JustifyAlign16.png new file mode 100644 index 0000000000000000000000000000000000000000..c5499bcebd7c86327e645c79e55217c18cdd104d GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(t0) z#WBRfKRH1{bP0l+XkK3cxM) literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/LeftAlign16.png new file mode 100644 index 0000000000000000000000000000000000000000..51dffb73bf40ad7d85a7a5888300fc71c63ab757 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P8~ z#WBRfKRH1{=YjnN#TJ9yyIv>Caz0%t6*Saau&(#TGQr18C8jWLvp!G8Yx|mI%nWz0 WJMMq?;*}!M3L z#WBRfKRH2y=YjnN!6yl~cFv8s9&n!Z$gPfbeN}o6=A9AZfgrBMoWl)O3qAWh85Z-q V?>sR5)CHh+22WQ%mvv4FO#s$~Hhlm9 literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3783f262e3954455bcbb062f2f05af8373442b GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4cwkCjv*HQZ-Z7B9X1fSqW(gd=d@CU#x;k7 znkY&XAeM`Hf8 zChY!wp-et8mSHbjPTalT5BY2{6DL3SiMT$!TJ+BzTM>DoIsO;cww{Q0<_@ir)waA} zXxF5?j3<{v*K$QEx8R`#2|fW=m-ydq_STejd>Nha;Z@?|qe~OFi%2XE*!NiSjMupY zvuUYXste!w+a0mcNGh=URcRo6r>b?%N@b;%WCyR6(`{GA%rEsh(Du`|l$ZU;x?Ock zUe8OnKl0v@)!6Z**u7{EP5(As&h+SlOOqQTvsdg+v#juJ{BIr1UdQ0lnB6S+xr7fG ORt%o5elF{r5}E**#gPmE literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/RichTextBoxFormatBar/Images/Underline16.png new file mode 100644 index 0000000000000000000000000000000000000000..7268948235e0649964391879234e19c349a01721 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{P^M z#WBRfKRH37?1B9S_Y)FN9CMN?Z22xXtl^j~;pgne>(FAA+IZvIH8w6EHVxk(orLb{ o4T&X;FIMtN&)4HqyeGt9vc&A;o9y^aK;sxZUHx3vIVCg!0G@0(9{>OV literal 0 HcmV?d00001 diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Themes/Generic.xaml b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Themes/Generic.xaml new file mode 100644 index 00000000..452b0bf8 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/Themes/Generic.xaml @@ -0,0 +1,1070 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collapsed + + + + + + + Collapsed + + + + + + + + + + + Visible + + + + + + + Visible + + + + + + + + + + + + + True + + + + + + + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj new file mode 100644 index 00000000..a6c2a166 --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj @@ -0,0 +1,242 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {72E591D6-8F83-4D8C-8F67-9C325E623234} + library + Properties + Microsoft.Windows.Controls + WPFToolkit.Extended + v3.5 + Client + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + TRACE;DEBUG;VS2008 + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE;VS2008 + prompt + 4 + + + + + + + 3.5 + + + + + 3.0 + + + 3.0 + + + 3.0 + + + 3.0 + + + + + + RichTextBoxFormatBar\RichTextBoxFormatBar.xaml + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + + + + + BusyIndicator\BusyIndicator.cs + + + BusyIndicator\VisualStates.BusyIndicator.cs + + + ButtonSpinner\ButtonSpinner.cs + + + ButtonSpinner\SpinDirection.cs + + + ButtonSpinner\SpinEventArgs.cs + + + ButtonSpinner\Spinner.cs + + + ButtonSpinner\ValidSpinDirections.cs + + + ChildWindow\ChildWindow.cs + + + ChildWindow\VisualStates.ChildWindow.cs + + + ChildWindow\WindowState.cs + + + ColorPicker\ColorItem.cs + + + ColorPicker\ColorPicker.cs + + + Core\Converters\InverseBoolConverter.cs + + + Core\Primitives\InputBase.cs + + + Core\UIElementAdorner.cs + + + DateTimeUpDown\DateTimeFormat.cs + + + DateTimeUpDown\DateTimeInfo.cs + + + DateTimeUpDown\DateTimePart.cs + + + DateTimeUpDown\DateTimeUpDown.cs + + + Magnifier\Converters\BorderThicknessToStrokeThicknessConverter.cs + + + Magnifier\Converters\RadiusConverter.cs + + + Magnifier\Magnifier.cs + + + Magnifier\MagnifierAdorner.cs + + + Magnifier\MagnifierManager.cs + + + MaskedTextBox\MaskedTextBox.cs + + + MessageBox\MessageBox.cs + + + MessageBox\VisualStates.MessageBox.cs + + + NumericUpDown\NumericUpDown.cs + + + RichTextBoxFormatBar\IRichTextBoxFormatBar.cs + + + RichTextBoxFormatBar\RichTextBoxFormatBar.xaml.cs + RichTextBoxFormatBar.xaml + + + RichTextBoxFormatBar\RichTextBoxFormatBarManager.cs + + + RichTextBox\Formatters\ITextFormatter.cs + + + RichTextBox\Formatters\PlainTextFormatter.cs + + + RichTextBox\Formatters\RtfFormatter.cs + + + RichTextBox\Formatters\XamlFormatter.cs + + + RichTextBox\RichTextBox.cs + + + UpDownBase\UpDownBase.cs + + + VisualStates.cs + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc new file mode 100644 index 00000000..feffdeca --- /dev/null +++ b/Release/v1.3.0/ExtendedWPFToolkitSolution_35/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +}