diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs index 3e4e033..3b7c51f 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs @@ -17,6 +17,8 @@ using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner.Additionals; using AIStudio.Wpf.DiagramDesigner.Additionals.Commands; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; namespace AIStudio.Wpf.DiagramApp.ViewModels { diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs index 5f405c4..eb5803b 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs @@ -18,6 +18,8 @@ using System.Xml.Serialization; using AIStudio.Wpf.DiagramDesigner; using ZXing; using AIStudio.Wpf.DiagramDesigner.Helpers; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; namespace AIStudio.Wpf.DiagramApp.ViewModels { diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs index 8dd88f5..a7bae62 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs @@ -21,6 +21,8 @@ using AIStudio.Wpf.SFC.Models; using System.Windows; using System; using AIStudio.Wpf.DiagramDesigner.Models; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; namespace AIStudio.Wpf.DiagramApp.ViewModels { diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml index 5008c8e..e4f0d8d 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml +++ b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml @@ -9,7 +9,7 @@ Icon="A.ico" Identifier="RootWindow" Style="{StaticResource AIStudio.Styles.WindowBase}" - Height="600" Width="850"> + Height="800" Width="1000"> diff --git a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj index 0b20917..fc20e18 100644 --- a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj +++ b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj @@ -2,7 +2,7 @@ true - AIStudio.Wpf.Controls + AIStudio.Wpf.DiagramDesigner.Controls akwkevin https://gitee.com/akwkevin A.png diff --git a/AIStudio.Wpf.DiagramDesigner/Adorners/RubberbandAdorner.cs b/AIStudio.Wpf.DiagramDesigner/Adorners/RubberbandAdorner.cs index 2466d20..573d5b2 100644 --- a/AIStudio.Wpf.DiagramDesigner/Adorners/RubberbandAdorner.cs +++ b/AIStudio.Wpf.DiagramDesigner/Adorners/RubberbandAdorner.cs @@ -6,6 +6,8 @@ using System.Windows.Media; using System; using System.Collections.Generic; using System.Linq; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; namespace AIStudio.Wpf.DiagramDesigner { diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs index 04872b1..6a0060d 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs @@ -14,6 +14,8 @@ using System.Windows.Resources; using System.Runtime.InteropServices; using Newtonsoft.Json; using AIStudio.Wpf.DiagramDesigner.Models; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; namespace AIStudio.Wpf.DiagramDesigner { diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/AditionConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/AditionConverter.cs new file mode 100644 index 0000000..1e0fca8 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Converters/AditionConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public class AdditionConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if ((value != null) && (parameter != null)) + { + var firstValue = (double)value; + var secondValue = double.Parse(parameter?.ToString()); + + return firstValue + secondValue; + } + + return 0d; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/GridLengthConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/GridLengthConverter.cs new file mode 100644 index 0000000..f29ad7a --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Converters/GridLengthConverter.cs @@ -0,0 +1,67 @@ +using System; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Windows; +using System.Windows.Data; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public class GridLengthConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var length = value?.ToString(); + try + { + double add = 0; + double.TryParse(parameter?.ToString(), out add); + return new GridLength(double.Parse(length) + add, GridUnitType.Pixel); + } + catch + { + return new GridLength(1, GridUnitType.Auto); + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DependencyProperty.UnsetValue; + } + } + + public class GridLengthAutoConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var length = value?.ToString(); + try + { + if (Regex.IsMatch(length, @"^\d+(\.\d+)?$")) + { + return new GridLength(double.Parse(length), GridUnitType.Pixel); + } + else if (length == "*") + { + return new GridLength(1, GridUnitType.Star); + } + else if (Regex.IsMatch(length, @"^\d+(\.\d+)?\*$")) + { + return new GridLength(double.Parse(length.Substring(0, length.Length - 1)), GridUnitType.Star); + } + else + { + return new GridLength(1, GridUnitType.Auto); + } + } + catch + { + return new GridLength(1, GridUnitType.Auto); + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DependencyProperty.UnsetValue; + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DiagramServicesProvider.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramServicesProvider.cs similarity index 90% rename from AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DiagramServicesProvider.cs rename to AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramServicesProvider.cs index 90e08fb..e579807 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/DiagramServicesProvider.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramServicesProvider.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; -namespace AIStudio.Wpf.DiagramDesigner +namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel { /// /// Simple service locator @@ -18,14 +18,14 @@ namespace AIStudio.Wpf.DiagramDesigner _drawModeViewModel = new DrawModeViewModel(); _quickThemeViewModel = new QuickThemeViewModel(); - + _drawModeViewModel.PropertyChanged += ViewModel_PropertyChanged; _quickThemeViewModel.PropertyChanged += ViewModel_PropertyChanged; - SetOldValue(ColorViewModel, nameof(ColorViewModel)); - SetOldValue(FontViewModel, nameof(FontViewModel)); - SetOldValue(ShapeViewModel, nameof(ShapeViewModel)); - SetOldValue(LockObjectViewModel, nameof(LockObjectViewModel)); + SetOldValue(ColorViewModel, nameof(ColorViewModel)); + SetOldValue(FontViewModel, nameof(FontViewModel)); + SetOldValue(ShapeViewModel, nameof(ShapeViewModel)); + SetOldValue(LockObjectViewModel, nameof(LockObjectViewModel)); } private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) @@ -70,7 +70,7 @@ namespace AIStudio.Wpf.DiagramDesigner _colorViewModel.PropertyChanged += ViewModel_PropertyChanged; } } - } + } private IFontViewModel _fontViewModel; public IFontViewModel FontViewModel @@ -117,13 +117,19 @@ namespace AIStudio.Wpf.DiagramDesigner private IDrawModeViewModel _drawModeViewModel; public IDrawModeViewModel DrawModeViewModel { - get { return _drawModeViewModel; } + get + { + return _drawModeViewModel; + } } private IQuickThemeViewModel _quickThemeViewModel; public IQuickThemeViewModel QuickThemeViewModel { - get { return _quickThemeViewModel; } + get + { + return _quickThemeViewModel; + } } private ILockObjectViewModel _lockObjectViewModel; @@ -161,7 +167,7 @@ namespace AIStudio.Wpf.DiagramDesigner return _selectedItem; } set - { + { if (SetProperty(ref _selectedItem, value)) { if (_selectedItem == null) @@ -198,12 +204,18 @@ namespace AIStudio.Wpf.DiagramDesigner public IDiagramServiceProvider Provider { - get { return serviceProvider; } + get + { + return serviceProvider; + } } public static DiagramServicesProvider Instance { - get { return instance.Value; } + get + { + return instance.Value; + } } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs index ba5d57c..fda6d07 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs @@ -6,6 +6,8 @@ using System.Text; using System.Windows.Input; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner.Models; +using AIStudio.Wpf.DiagramDesigner.ViewModels; +using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; using Newtonsoft.Json; namespace AIStudio.Wpf.DiagramDesigner diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/Interface/IDiagramServiceProvider.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramServiceProvider.cs similarity index 95% rename from AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/Interface/IDiagramServiceProvider.cs rename to AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramServiceProvider.cs index 8934d26..6d82f1d 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/Interface/IDiagramServiceProvider.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramServiceProvider.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Text; -namespace AIStudio.Wpf.DiagramDesigner +namespace AIStudio.Wpf.DiagramDesigner.ViewModels { /// /// Simple service interface diff --git a/AIStudio.Wpf.Mind/Controls/ColorCanvas.xaml b/AIStudio.Wpf.Mind/Controls/ColorCanvas.xaml new file mode 100644 index 0000000..30840df --- /dev/null +++ b/AIStudio.Wpf.Mind/Controls/ColorCanvas.xaml @@ -0,0 +1,549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +