diff --git a/AIStudio.Wpf.DiagramApp/Styles/TabControl.xaml b/AIStudio.Wpf.DiagramApp/Styles/TabControl.xaml index cd4c8de..211eb38 100644 --- a/AIStudio.Wpf.DiagramApp/Styles/TabControl.xaml +++ b/AIStudio.Wpf.DiagramApp/Styles/TabControl.xaml @@ -23,7 +23,7 @@ - + @@ -143,7 +143,13 @@ - + diff --git a/AIStudio.Wpf.DiagramApp/Styles/ToggleButton.xaml b/AIStudio.Wpf.DiagramApp/Styles/ToggleButton.xaml index c0c0867..f7b48fd 100644 --- a/AIStudio.Wpf.DiagramApp/Styles/ToggleButton.xaml +++ b/AIStudio.Wpf.DiagramApp/Styles/ToggleButton.xaml @@ -37,7 +37,7 @@ - + diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs index 0f1d4f9..19d3573 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs @@ -39,9 +39,9 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { ToolBoxViewModel = new ToolBoxViewModel(this); - DiagramsViewModels = new ObservableCollection(); - DiagramsViewModels.Add(new PageViewModel("新建-1", "*", DiagramType.Normal)); - PageViewModel = DiagramsViewModels.FirstOrDefault(); + PageViewModels = new ObservableCollection(); + PageViewModels.Add(new PageViewModel("新建-1", "*", DiagramType.Normal)); + PageViewModel = PageViewModels.FirstOrDefault(); StandardColor = GenerateStandardGradients(); @@ -62,16 +62,16 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels get; private set; } - private ObservableCollection _diagramsViewModels; - public ObservableCollection DiagramsViewModels + private ObservableCollection _pageViewModels; + public ObservableCollection PageViewModels { get { - return _diagramsViewModels; + return _pageViewModels; } set { - SetProperty(ref _diagramsViewModels, value); + SetProperty(ref _pageViewModels, value); } } @@ -246,7 +246,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { return () => { - return new PageViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", DiagramType.Normal); + return new PageViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", DiagramType.Normal); }; } } @@ -511,7 +511,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels filename = para; } - var viewmodel = DiagramsViewModels.FirstOrDefault(p => p.FileName == filename); + var viewmodel = PageViewModels.FirstOrDefault(p => p.FileName == filename); if (viewmodel != null) { PageViewModel = viewmodel; @@ -549,7 +549,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { flow = new PageViewModel(filename, diagram); } - DiagramsViewModels.Add(flow); + PageViewModels.Add(flow); PageViewModel = flow; if (string.IsNullOrEmpty(para)) @@ -650,40 +650,40 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels IsOpenBackstage = false; if (type == DiagramType.FlowChart.ToString()) { - PageViewModel = new FlowchartViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new FlowchartViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } else if (type == DiagramType.Logical.ToString()) { - PageViewModel = new LogicalViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new LogicalViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } else if (type == DiagramType.SFC.ToString()) { - PageViewModel = new SFCViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new SFCViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } else if (type == DiagramType.Script.ToString()) { - PageViewModel = new ScriptViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new ScriptViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } else if (type == DiagramType.Drawing.ToString()) { - PageViewModel = new DrawingViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new DrawingViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } else { - PageViewModel = new PageViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); + PageViewModel = new PageViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", (DiagramType)Enum.Parse(typeof(DiagramType), type)); } - DiagramsViewModels.Add(PageViewModel); + PageViewModels.Add(PageViewModel); } private void NewMind_Executed(string mindtype = "Mind") { IsOpenBackstage = false; - PageViewModel = new MindViewModel(NewNameHelper.GetNewName(DiagramsViewModels.Select(p => p.Title), "新建-"), "*", DiagramType.Mind, mindtype.ToEnum()); + PageViewModel = new MindViewModel(NewNameHelper.GetNewName(PageViewModels.Select(p => p.Title), "新建-"), "*", DiagramType.Mind, mindtype.ToEnum()); - DiagramsViewModels.Add(PageViewModel); + PageViewModels.Add(PageViewModel); } private void ExitExecuted() diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs index 8ab2384..5c3c94c 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/PageViewModel.cs @@ -160,8 +160,9 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels if (_diagramViewModel != value) { if (_diagramViewModel != null) - { + { _diagramViewModel.PropertyChanged -= DiagramViewModel_PropertyChanged; + _diagramViewModel.SaveThumbnail(); } SetProperty(ref _diagramViewModel, value); if (_diagramViewModel != null) @@ -369,7 +370,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels List viewModels = new List(); foreach (var diagramItem in diagramDocument.DiagramItems) - { + { var viewModel = GetDiagramViewModel(diagramItem.Name, diagramItem.DiagramType, false); viewModel.DiagramOption.LayoutOption.ShowGrid = diagramItem.ShowGrid; viewModel.DiagramOption.LayoutOption.PhysicalGridCellSize = diagramItem.PhysicalGridCellSize; @@ -409,7 +410,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels viewModel.Items.Add(connectionVM); } - viewModel.Thumbnail = diagramItem.Thumbnail; + viewModel.Thumbnail = diagramItem.Thumbnail.ToBrush((int)viewModel.DiagramOption.LayoutOption.PageSize.Width / 4, (int)viewModel.DiagramOption.LayoutOption.PageSize.Height / 4); viewModels.Add(viewModel); } @@ -452,7 +453,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); - diagramItem.Thumbnail = viewModel.Thumbnail; + diagramItem.Thumbnail = viewModel.Thumbnail.ToBase64String(); diagramDocument.DiagramItems.Add(diagramItem); } @@ -505,7 +506,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); - diagramItem.Thumbnail = viewModel.Thumbnail; + diagramItem.Thumbnail = viewModel.Thumbnail.ToBase64String(); viewModel = new DiagramViewModel(diagramItem); viewModel.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"); @@ -535,7 +536,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels connectionVM.Id = Guid.NewGuid(); viewModel.Items.Add(connectionVM); } - viewModel.Thumbnail = diagramItem.Thumbnail; + viewModel.Thumbnail = diagramItem.Thumbnail.ToBrush((int)viewModel.DiagramOption.LayoutOption.PageSize.Width / 4, (int)viewModel.DiagramOption.LayoutOption.PageSize.Height / 4); DiagramViewModels.Add(viewModel); DiagramViewModel = viewModel; diff --git a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml index 8e90371..6338ccc 100644 --- a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml @@ -2617,7 +2617,7 @@ - + @@ -2625,7 +2625,7 @@ - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AIStudio.Wpf.DiagramApp/Views/PropertyControl.xaml b/AIStudio.Wpf.DiagramApp/Views/PropertyControl.xaml index 23fac91..31804b1 100644 --- a/AIStudio.Wpf.DiagramApp/Views/PropertyControl.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/PropertyControl.xaml @@ -21,7 +21,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -308,7 +308,7 @@ - + diff --git a/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml b/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml new file mode 100644 index 0000000..349620e --- /dev/null +++ b/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml.cs b/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml.cs new file mode 100644 index 0000000..30bf2a3 --- /dev/null +++ b/AIStudio.Wpf.DiagramApp/Views/SearchControl.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +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 AIStudio.Wpf.DiagramApp.Views +{ + /// + /// SearchControl.xaml 的交互逻辑 + /// + public partial class SearchControl : UserControl + { + public SearchControl() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml b/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml index 74ad368..48e506b 100644 --- a/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/ToolBoxControl.xaml @@ -9,18 +9,24 @@ xmlns:flowchartmodel="clr-namespace:AIStudio.Wpf.Flowchart.Models;assembly=AIStudio.Wpf.Flowchart" xmlns:sfcmodel="clr-namespace:AIStudio.Wpf.SFC.Models;assembly=AIStudio.Wpf.SFC" xmlns:dd="https://gitee.com/akwkevin/aistudio.-wpf.-diagram" + xmlns:drop="urn:gong-wpf-dragdrop" + xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:conventer="clr-namespace:AIStudio.Wpf.DiagramDesigner.Additionals.Converters;assembly=AIStudio.Wpf.DiagramDesigner.Additionals" xmlns:command="clr-namespace:AIStudio.Wpf.DiagramDesigner.Additionals.Commands;assembly=AIStudio.Wpf.DiagramDesigner.Additionals" xmlns:svg="https://gitee.com/akwkevin/aistudio.-wpf.-test/tree/master/Controls/AIStudio.Wpf.Svg2XamlExtension" + xmlns:binding="clr-namespace:AIStudio.Wpf.DiagramDesigner.Additionals.Commands;assembly=AIStudio.Wpf.DiagramDesigner.Additionals" + xmlns:Fluent="urn:fluent-ribbon" + xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> + - + @@ -382,11 +388,75 @@ - + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -408,7 +478,77 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Additionals/Controls/Carousel.xaml b/AIStudio.Wpf.DiagramDesigner.Additionals/Controls/Carousel.xaml new file mode 100644 index 0000000..c47377c --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Additionals/Controls/Carousel.xaml @@ -0,0 +1,100 @@ + + + M394.24 512L683.52 248.32c10.24-10.24 10.24-25.6 0-35.84-10.24-10.24-25.6-10.24-35.84 0l-307.2 279.04c-5.12 5.12-7.68 12.8-7.68 20.48 0 7.68 2.56 15.36 7.68 20.48l307.2 279.04c10.24 10.24 25.6 10.24 35.84 0 10.24-10.24 10.24-25.6 0-35.84L394.24 512z + M4.1666641,0 C5.2083321,0 6.25,0.41666794 7.0833321,1.25 L57.083331,46.666664 C57.916664,47.499998 58.33333,48.749998 58.333329,49.999998 58.33333,51.249997 57.916664,52.499997 57.083331,53.333331 L7.0833321,98.749996 C5.4166641,100.41666 2.9166641,100.41666 1.2499962,98.749996 -0.41666794,97.083328 -0.41666794,94.583328 1.2499962,92.916664 L48.333331,49.999998 1.2499962,7.0833321 C-0.41666794,5.4166641 -0.41666794,2.9166641 1.2499962,1.25 2.0833282,0.41666794 3.1249962,0 4.1666641,0 z + + + + + + + + + + + + + + + +