From f8340b58854bdbc26c2e5a298ed8dfab6c13d396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Wed, 19 Apr 2023 22:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=BB=E8=BE=91=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...udio.Wpf.DiagramApp_3fs0arq3_wpftmp.csproj | 1071 +++++++++++++++++ .../Converters/ConectorValueConverter.cs | 17 +- .../Enums/ValueTypePoint.cs | 3 +- .../Connector/LogicalConnectorInfoItem.cs | 11 +- .../Themes/ConnectorItem.xaml | 6 +- .../Themes/DesignerItem.xaml | 5 - .../UserControls/DiagramControl.xaml | 9 +- .../Connector/LogicalConnectorInfo.cs | 32 +- .../LogicalGateItemViewModelBase.cs | 24 +- .../ViewModels/LogicalGateItemViewModel.cs | 14 +- 10 files changed, 1141 insertions(+), 51 deletions(-) create mode 100644 AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_3fs0arq3_wpftmp.csproj diff --git a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_3fs0arq3_wpftmp.csproj b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_3fs0arq3_wpftmp.csproj new file mode 100644 index 0000000..3606cb3 --- /dev/null +++ b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_3fs0arq3_wpftmp.csproj @@ -0,0 +1,1071 @@ + + + AIStudio.Wpf.DiagramApp + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramApp\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.DiagramApp + + + + WinExe + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + 8.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs index 9be5f2f..5e831ef 100644 --- a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs +++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs @@ -14,27 +14,32 @@ namespace AIStudio.Wpf.DiagramDesigner { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { - if (values == null || values.Length < 1) + if (values == null || values.Length < 2) { throw new NotImplementedException(); } - if (values[0] is double && values[1] is ValueTypePoint) + if (values[0] is double && values[2] is ValueType) { double connectorValue = (double)values[0]; - ValueTypePoint valueTypePoint = (ValueTypePoint)values[1]; + string connectorString = values[1] as string; + ValueType valueTypePoint = (ValueType)values[2]; - if (valueTypePoint == ValueTypePoint.Bool) + if (valueTypePoint == ValueType.Bool) { return (connectorValue == 0) ? "F" : "T"; } - else if (valueTypePoint == ValueTypePoint.Int) + else if (valueTypePoint == ValueType.Int) { return connectorValue.ToString("0"); } - else + else if (valueTypePoint == ValueType.Real) { return connectorValue.ToString("f3"); } + else + { + return connectorString; + } } return null; } diff --git a/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs b/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs index 6c38d22..7133bc3 100644 --- a/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs +++ b/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs @@ -4,10 +4,11 @@ using System.Text; namespace AIStudio.Wpf.DiagramDesigner { - public enum ValueTypePoint + public enum ValueType { Real = 0, Int = 1, Bool = 2, + String = 3, } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs index 267667a..5ff9915 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs @@ -20,12 +20,13 @@ namespace AIStudio.Wpf.DiagramDesigner public LogicalConnectorInfoItem(LogicalConnectorInfo viewmodel) : base(viewmodel) { - ValueTypePoint = viewmodel.ValueTypePoint; + ValueType = viewmodel.ValueType; ConnectorValue = viewmodel.ConnectorValue; + ConnectorString = viewmodel.ConnectorString; } [XmlAttribute] - public ValueTypePoint ValueTypePoint + public ValueType ValueType { get; set; } @@ -35,6 +36,12 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } + + [XmlAttribute] + public string ConnectorString + { + get; set; + } } diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml index 8aba7ac..5b77ff9 100644 --- a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml +++ b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml @@ -59,7 +59,8 @@ - + + @@ -85,7 +86,8 @@ - + + diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/DesignerItem.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/DesignerItem.xaml index 7fba98c..cc89fa8 100644 --- a/AIStudio.Wpf.DiagramDesigner/Themes/DesignerItem.xaml +++ b/AIStudio.Wpf.DiagramDesigner/Themes/DesignerItem.xaml @@ -8,11 +8,6 @@ - - - - - diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml index 0929ad9..f9ddc64 100644 --- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml +++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml @@ -15,15 +15,8 @@ - - - - - - - + - diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs index f5a15a3..1f4c770 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs @@ -7,14 +7,14 @@ namespace AIStudio.Wpf.DiagramDesigner { public class LogicalConnectorInfo : FullyCreatedConnectorInfo { - public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ValueTypePoint valueTypePoint = ValueTypePoint.Real) : base(dataItem, orientation, isInnerPoint, isPortless) + public LogicalConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ValueType valueTypePoint = ValueType.Real) : base(dataItem, orientation, isInnerPoint, isPortless) { - this.ValueTypePoint = valueTypePoint; + this.ValueType = valueTypePoint; } - public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ValueTypePoint valueTypePoint = ValueTypePoint.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless) + public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, bool isPortless = false, ValueType valueTypePoint = ValueType.Real) : base(root, dataItem, orientation, isInnerPoint, isPortless) { - this.ValueTypePoint = valueTypePoint; + this.ValueType = valueTypePoint; } public LogicalConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SelectableItemBase designer) : base(root, dataItem, designer) @@ -37,7 +37,8 @@ namespace AIStudio.Wpf.DiagramDesigner if (designerbase is LogicalConnectorInfoItem designer) { ConnectorValue = designer.ConnectorValue; - ValueTypePoint = designer.ValueTypePoint; + ValueType = designer.ValueType; + ConnectorString = designer.ConnectorString; } } @@ -54,16 +55,29 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public ValueTypePoint _valueTypePoint; - public ValueTypePoint ValueTypePoint + public string _connectorString; + public string ConnectorString { get { - return _valueTypePoint; + return _connectorString; } set { - SetProperty(ref _valueTypePoint, value); + SetProperty(ref _connectorString, value); + } + } + + public ValueType _valueType; + public ValueType ValueType + { + get + { + return _valueType; + } + set + { + SetProperty(ref _valueType, value); } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs index 7a945e3..6805b5f 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs @@ -262,47 +262,47 @@ namespace AIStudio.Wpf.DiagramDesigner AddConnector(connector); } - public List ValueTypeInput + public List ValueTypeInput { get { if (LogicalType == LogicalType.NOT) { - return new List() { ValueTypePoint.Bool }; + return new List() { ValueType.Bool }; } else if (LogicalType == LogicalType.AND || LogicalType == LogicalType.OR || LogicalType == LogicalType.XOR || LogicalType == LogicalType.SHL || LogicalType == LogicalType.SHR || LogicalType == LogicalType.ROL || LogicalType == LogicalType.ROR) { - return new List() { ValueTypePoint.Int }; + return new List() { ValueType.Int }; } else if (LogicalType == LogicalType.SEL) { - return new List() { ValueTypePoint.Bool, ValueTypePoint.Real, ValueTypePoint.Real }; + return new List() { ValueType.Bool, ValueType.Real, ValueType.Real }; } else { - return new List() { ValueTypePoint.Real }; + return new List() { ValueType.Real }; } } } - public List ValueTypeOutput + public List ValueTypeOutput { get { if (LogicalType == LogicalType.GT || LogicalType == LogicalType.LT || LogicalType == LogicalType.GE || LogicalType == LogicalType.LE || LogicalType == LogicalType.EQ || LogicalType == LogicalType.NE || LogicalType == LogicalType.NOT) { - return new List() { ValueTypePoint.Bool }; + return new List() { ValueType.Bool }; } else if (LogicalType == LogicalType.AND || LogicalType == LogicalType.OR || LogicalType == LogicalType.XOR || LogicalType == LogicalType.SHL || LogicalType == LogicalType.SHR || LogicalType == LogicalType.ROL || LogicalType == LogicalType.ROR) { - return new List() { ValueTypePoint.Int }; + return new List() { ValueType.Int }; } else { - return new List() { ValueTypePoint.Real }; + return new List() { ValueType.Real }; } } } @@ -332,11 +332,11 @@ namespace AIStudio.Wpf.DiagramDesigner if (LogicalType == LogicalType.Output) { - input.Value.ValueTypePoint = (connector.SourceConnectorInfo as LogicalConnectorInfo).ValueTypePoint; + input.Value.ValueType = (connector.SourceConnectorInfo as LogicalConnectorInfo).ValueType; } else if (LogicalType == LogicalType.NOT) { - input.Value.ValueTypePoint = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ValueTypePoint == ValueTypePoint.Bool) ? ValueTypePoint.Bool : ValueTypePoint.Int; + input.Value.ValueType = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ValueType == ValueType.Bool) ? ValueType.Bool : ValueType.Int; } } } @@ -346,7 +346,7 @@ namespace AIStudio.Wpf.DiagramDesigner { foreach (var output in Output) { - if (output.Value.ValueTypePoint == ValueTypePoint.Bool) + if (output.Value.ValueType == ValueType.Bool) { if (output.Value.ConnectorValue == 0) { diff --git a/Extensions/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs b/Extensions/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs index c76c097..028e24d 100644 --- a/Extensions/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs +++ b/Extensions/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs @@ -13,12 +13,12 @@ namespace AIStudio.Wpf.Logical.ViewModels protected IUIVisualizerService visualiserService; public LogicalGateItemViewModel(LogicalType logicalType) : this(null, logicalType) { - ColorViewModel.FillColor.Color = Colors.Orange; + } public LogicalGateItemViewModel(IDiagramViewModel root, LogicalType logicalType) : base(root, logicalType) { - ColorViewModel.FillColor.Color = Colors.Orange; + } public LogicalGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) @@ -46,6 +46,8 @@ namespace AIStudio.Wpf.Logical.ViewModels protected override void InitNew() { base.InitNew(); + + ColorViewModel.FillColor.Color = Colors.Orange; } protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase) @@ -392,15 +394,15 @@ namespace AIStudio.Wpf.Logical.ViewModels { foreach (var output in Output) { - if (Input[0].ValueTypePoint == ValueTypePoint.Bool) + if (Input[0].ValueType == DiagramDesigner.ValueType.Bool) { output.Value.ConnectorValue = Convert.ToInt32(!Convert.ToBoolean(Input[0].ConnectorValue)); - output.Value.ValueTypePoint = ValueTypePoint.Bool; + output.Value.ValueType = DiagramDesigner.ValueType.Bool; } else { output.Value.ConnectorValue = ~Convert.ToInt32(Input[0].ConnectorValue); - output.Value.ValueTypePoint = ValueTypePoint.Int; + output.Value.ValueType = DiagramDesigner.ValueType.Int; } } base.CalculateOutput(); @@ -1393,7 +1395,7 @@ namespace AIStudio.Wpf.Logical.ViewModels foreach (var output in Output) { output.Value.ConnectorValue = first.ConnectorValue; - output.Value.ValueTypePoint = first.ValueTypePoint; + output.Value.ValueType = first.ValueType; } base.CalculateOutput(); }