using AIStudio.Wpf.Flowchart; using AIStudio.Wpf.SFC; using System; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner.Helpers; using System.Windows; using System.Collections.Generic; using AIStudio.Wpf.DiagramDesigner.Models; using System.Linq; using System.Security.Cryptography.X509Certificates; namespace AIStudio.Wpf.DiagramApp.Models { public class PathToolBoxData : ToolBoxData { public PathToolBoxData(string icon, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(null, icon, type, width, height, desiredSize, description) { ColorViewModel.FillColor.Color = Colors.Orange; } } public class TextToolBoxData : ToolBoxData { public TextToolBoxData(string text, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(text, null, type, width, height, desiredSize, description) { ColorViewModel.FillColor.Color = Colors.Orange; } } public class EllipseTextToolBoxData : ToolBoxData { public EllipseTextToolBoxData(string text, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(text, null, type, width, height, desiredSize, description) { ColorViewModel.FillColor.Color = Colors.Orange; } } public class ImageToolBoxData : ToolBoxData { public ImageToolBoxData(string icon, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(null, icon, type, width, height, desiredSize, description) { } } public class DesignerItemToolBoxData : ToolBoxData { public string FileName { get; set; } public DesignerItemViewModelBase DesignerItemViewModel { get; set; } public DesignerItemToolBoxData(DesignerItemBase designerItemBase, string filename, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(null, null, type, width, height, desiredSize, description) { Addition = designerItemBase; DesignerItemViewModel = Activator.CreateInstance(type, null, designerItemBase) as DesignerItemViewModelBase; FileName = filename; } } public class MultipleDesignerItemToolBoxData : ToolBoxData { public string FileName { get; set; } public List SelectableDesignerItemViewModel { get; set; } public MultipleDesignerItemToolBoxData(DiagramItem designerItemBase, string filename, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(null, null, typeof(List), width, height, desiredSize, description) { List items = new List(); foreach (var diagramItemData in designerItemBase.DesignerItems) { Type itemtype = TypeHelper.GetType(diagramItemData.ModelTypeName); DesignerItemViewModelBase itemBase = Activator.CreateInstance(itemtype, null, diagramItemData, ".json") as DesignerItemViewModelBase; items.Add(itemBase); } List connects = new List(); foreach (var connection in designerItemBase.Connections) { Type itemtype = TypeHelper.GetType(connection.SerializableTypeName); var connectionItem = SerializeHelper.DeserializeObject(itemtype, connection.SerializableString, ".json") as ConnectionItem; connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName); connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName); DesignerItemViewModelBase sourceItem = DiagramViewModelHelper.GetConnectorDataItem(items, connectionItem.SourceId, connectionItem.SourceType); if (sourceItem == null) continue; ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation; FullyCreatedConnectorInfo sourceConnectorInfo = sourceItem.GetFullConnectorInfo(connectionItem.Id, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint, connectionItem.SourceInnerPoint); DesignerItemViewModelBase sinkItem = DiagramViewModelHelper.GetConnectorDataItem(items, connectionItem.SinkId, connectionItem.SinkType); if (sinkItem == null) continue; ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation; FullyCreatedConnectorInfo sinkConnectorInfo = sinkItem.GetFullConnectorInfo(connectionItem.Id, sinkConnectorOrientation, connectionItem.SinkXRatio, connectionItem.SinkYRatio, connectionItem.SinkInnerPoint, connectionItem.SinkInnerPoint); ConnectionViewModel connectionVM = new ConnectionViewModel(null, sourceConnectorInfo, sinkConnectorInfo, connectionItem); connects.Add(connectionVM); } var minleft = items.OfType().Min(p => p.Left); var mintop = items.OfType().Min(p => p.Top); foreach (var item in items) { item.Left -= minleft; item.Top -= mintop; } SelectableDesignerItemViewModel = new List(); SelectableDesignerItemViewModel.AddRange(items); SelectableDesignerItemViewModel.AddRange(connects); Addition = SelectableDesignerItemViewModel; FileName = filename; } } public class SvgToolBoxData : ToolBoxData { public SvgToolBoxData(string filename, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(null, filename, type, width, height, desiredSize, description) { ColorViewModel.FillColor.Color = Colors.Blue; } } public class MediaToolBoxData : ToolBoxData { public MediaToolBoxData(string icon, Type type, double width = 32, double height = 32, Size? desiredSize = null, string description = null) : base(icon, null, type, width, height, desiredSize, description) { } } }