Skip to content

Commit f44425b

Browse files
committed
some fix
1 parent 6493962 commit f44425b

File tree

6 files changed

+50
-74
lines changed

6 files changed

+50
-74
lines changed

SimpleStateMachineNodeEditor/View/ViewNode.xaml.cs

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,9 @@ private void SetupEvents()
102102
{
103103
this.WhenAnyValue(x=>x.IsMouseOver).Subscribe(value=> OnEventMouseOver(value)).DisposeWith(disposable);
104104
this.Events().MouseLeftButtonDown.Subscribe(e => OnEventMouseLeftDowns(e)).DisposeWith(disposable);
105-
//this.Events().MouseLeftButtonUp.Subscribe(e => OnEventMouseLeftUp(e)).DisposeWith(disposable);
106-
//this.Events().MouseRightButtonDown.Subscribe(e => OnEventMouseRightDown(e)).DisposeWith(disposable);
107-
//this.Events().MouseRightButtonUp.Subscribe(e => OnEventMouseRightUp(e)).DisposeWith(disposable);
108105
this.Events().MouseDown.Subscribe(e => OnEventMouseDown(e)).DisposeWith(disposable);
109106
this.Events().MouseUp.Subscribe(e => OnEventMouseUp(e)).DisposeWith(disposable);
110107
this.Events().MouseMove.Subscribe(e => OnMouseMove(e)).DisposeWith(disposable);
111-
//this.Events().MouseEnter.Subscribe(e => OnEventMouseEnter(e)).DisposeWith(disposable);
112-
//this.Events().MouseLeave.Subscribe(e => OnEventMouseMouseLeave(e)).DisposeWith(disposable);
113108

114109
this.NodeHeaderElement.ButtonCollapse.Events().Click.Subscribe(_ => ViewModel.IsCollapse=!ViewModel.IsCollapse).DisposeWith(disposable);
115110
this.NodeHeaderElement.Events().LostFocus.Subscribe(e => Validate(e)).DisposeWith(disposable);
@@ -135,17 +130,6 @@ private void Validate(RoutedEventArgs e)
135130
NodeHeaderElement.TextBox.Text = ViewModel.Name;
136131
}
137132

138-
private void OnEventMouseLeftUp(MouseButtonEventArgs e)
139-
{
140-
}
141-
private void OnEventMouseRightDown(MouseButtonEventArgs e)
142-
{
143-
144-
}
145-
private void OnEventMouseRightUp(MouseButtonEventArgs e)
146-
{
147-
}
148-
149133
private void OnEventMouseDown(MouseButtonEventArgs e)
150134
{
151135
if (Mouse.Captured == null)
@@ -160,19 +144,6 @@ private void OnEventMouseUp(MouseButtonEventArgs e)
160144
{
161145
this.ReleaseMouseCapture();
162146
}
163-
164-
private void OnEventMouseEnter(MouseEventArgs e)
165-
{
166-
if (this.ViewModel.Selected != true)
167-
this.ViewModel.BorderBrush = Application.Current.Resources["ColorSelectedElement"] as SolidColorBrush;
168-
}
169-
private void OnEventMouseMouseLeave(MouseEventArgs e)
170-
{
171-
if (this.ViewModel.Selected != true)
172-
this.ViewModel.BorderBrush = Application.Current.Resources["ColorNodeBorderBrush"] as SolidColorBrush;
173-
}
174-
175-
176147
private void OnEventCollapse(bool isCollapse)
177148
{
178149
//bool visible = (this.NodeHeaderElement.ButtonRotate.Angle != 0);

SimpleStateMachineNodeEditor/View/ViewNodesCanvas.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<Rectangle Fill="{StaticResource IconAddNode}" Height="13" Width="13"/>
6060
</MenuItem.Icon>
6161
</MenuItem>
62-
<MenuItem Header="Delete" x:Name="ItemDeleteNode" InputGestureText="Delete" Style="{StaticResource StyleContextMenuItem}">
62+
<MenuItem Header="Delete" x:Name="ItemDelete" InputGestureText="Delete" Style="{StaticResource StyleContextMenuItem}">
6363
<MenuItem.Icon>
6464
<Rectangle Fill="{StaticResource IconDeleteScheme}" Height="15" Width="15"/>
6565
</MenuItem.Icon>

SimpleStateMachineNodeEditor/View/ViewNodesCanvas.xaml.cs

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private void SetupCommands()
107107
this.BindCommand(this.ViewModel, x => x.CommandSelectAll, x => x.ItemExpandDown).DisposeWith(disposable);
108108

109109
this.BindCommand(this.ViewModel, x => x.CommandDeleteSelectedElements, x => x.BindingDeleteSelectedElements).DisposeWith(disposable);
110-
110+
this.BindCommand(this.ViewModel, x => x.CommandDeleteSelectedElements, x => x.ItemDelete).DisposeWith(disposable);
111111

112112
this.BindCommand(this.ViewModel, x => x.CommandCollapseUpSelected, x => x.ItemCollapsUp).DisposeWith(disposable);
113113
this.BindCommand(this.ViewModel, x => x.CommandExpandDownSelected, x => x.ItemExpandDown).DisposeWith(disposable);
@@ -119,6 +119,8 @@ private void SetupCommands()
119119

120120
this.WhenAnyValue(x => x.ViewModel.JPEGPath).Where(x=>!string.IsNullOrEmpty(x)).Subscribe(value=> SaveCanvasToImage(value, ImageFormats.JPEG)).DisposeWith(disposable);
121121

122+
123+
122124
});
123125
}
124126
#endregion Setup Commands
@@ -131,15 +133,11 @@ private void SetupEvents()
131133
this.Events().MouseLeftButtonDown.Subscribe(e => OnEventMouseLeftDown(e)).DisposeWith(disposable);
132134
this.Events().MouseLeftButtonUp.Subscribe(e => OnEventMouseLeftUp(e));
133135
this.Events().MouseRightButtonDown.Subscribe(e => OnEventMouseRightDown(e)).DisposeWith(disposable);
134-
//this.Events().MouseRightButtonUp.Subscribe(e => OnEventMouseRightUp(e)).DisposeWith(disposable);
135-
//this.Events().MouseDown.Subscribe(e => OnEventMouseDown(e)).DisposeWith(disposable);
136136
this.Events().MouseUp.Subscribe(e => OnEventMouseUp(e)).DisposeWith(disposable);
137137
this.Events().MouseMove.Subscribe(e => OnEventMouseMove(e)).DisposeWith(disposable);
138138
this.Events().MouseWheel.Subscribe(e => OnEventMouseWheel(e)).DisposeWith(disposable);
139139
this.Events().DragOver.Subscribe(e => OnEventDragOver(e)).DisposeWith(disposable);
140-
//this.Events().DragEnter.Subscribe(e => OnEventDragEnter(e)).DisposeWith(disposable);
141-
//this.Events().DragLeave.Subscribe(e => OnEventDragLeave(e)).DisposeWith(disposable);
142-
//Эти события срабатывают раньше команд
140+
this.Cutter.Events().MouseLeftButtonUp.InvokeCommand(this.ViewModel.CommandDeleteSelectedConnectors).DisposeWith(disposable);
143141
this.Events().PreviewMouseLeftButtonDown.Subscribe(e => OnEventPreviewMouseLeftButtonDown(e)).DisposeWith(disposable);
144142
this.Events().PreviewMouseRightButtonDown.Subscribe(e => OnEventPreviewMouseRightButtonDown(e)).DisposeWith(disposable);
145143
this.WhenAnyValue(x => x.ViewModel.Scale.Value).Subscribe(value => { this.Canvas.Height /= value; this.Canvas.Width /= value; }).DisposeWith(disposable);
@@ -176,12 +174,6 @@ private void OnEventMouseRightDown(MouseButtonEventArgs e)
176174
{
177175
Keyboard.Focus(this);
178176

179-
}
180-
private void OnEventMouseRightUp(MouseButtonEventArgs e)
181-
{
182-
}
183-
private void OnEventMouseDown(MouseButtonEventArgs e)
184-
{
185177
}
186178
private void OnEventMouseWheel(MouseWheelEventArgs e)
187179
{
@@ -215,10 +207,6 @@ private void OnEventMouseMove(MouseEventArgs e)
215207
ViewModel.CommandPartMoveAllSelectedNode.ExecuteWithSubscribe(delta);
216208
Move = TypeMove.MoveSelected;
217209
}
218-
}
219-
private void OnEventDragEnter(DragEventArgs e)
220-
{
221-
222210
}
223211
private void OnEventDragOver(DragEventArgs e)
224212
{
@@ -228,10 +216,6 @@ private void OnEventDragOver(DragEventArgs e)
228216
point -= 2;
229217
this.ViewModel.DraggedConnect.EndPoint.Set(point / this.ViewModel.Scale.Value);
230218
}
231-
}
232-
private void OnEventDragLeave(DragEventArgs e)
233-
{
234-
235219
}
236220
private void OnEventPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
237221
{

SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/ViewModelNodesCanvas.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,27 @@ public partial class ViewModelNodesCanvas : ReactiveObject
3838
[Reactive] public string JPEGPath{ get; set; }
3939

4040
public int NodesCount = 0;
41+
public int TransitionsCount = 0;
4142
public double ScaleMax = 5;
4243
public double ScaleMin = 0.1;
4344
public double Scales { get; set; } = 0.05;
4445

4546

4647
public ViewModelNodesCanvas()
4748
{
49+
Cutter = new ViewModelCutter(this);
4850
SetupCommands();
51+
SetupSubscriptions();
4952
SetupStartState();
50-
Cutter = new ViewModelCutter(this);
51-
this.WhenAnyValue(x => x.Nodes.Count).Subscribe(value => UpdateCount(value));
5253
}
53-
public readonly object lockNodes = new object();
54-
public readonly object lockConnects = new object();
5554

55+
#region Setup Subscriptions
56+
57+
private void SetupSubscriptions()
58+
{
59+
this.WhenAnyValue(x => x.Nodes.Count).Buffer(2, 1).Select(x => (Previous: x[0], Current: x[1])).Subscribe(x => UpdateCount(x.Previous, x.Current));
60+
}
61+
#endregion Setup Subscriptions
5662
#region Setup Nodes
5763

5864
private void SetupStartState()
@@ -105,12 +111,11 @@ public void LogWarning(string message, params object[] args)
105111
}
106112

107113
#endregion Logging
108-
109-
private void UpdateCount(int count)
114+
private void UpdateCount(int oldValue, int newValue)
110115
{
111-
if (count > NodesCount)
116+
if (newValue > oldValue)
112117
{
113-
NodesCount = count;
118+
NodesCount++;
114119
}
115120
}
116121
private string SchemeName()

SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/ViewModelNodesCanvasCommands.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ private void SelectConnects()
205205
{
206206
connect.FromConnector.Selected = MyUtils.CheckIntersectCubicBezierCurveAndLine(connect.StartPoint, connect.Point1, connect.Point2, connect.EndPoint, cutterStartPoint, cutterEndPoint);
207207
}
208-
208+
209209
}
210210
private void SelectNodes()
211211
{
@@ -235,9 +235,10 @@ private void ClearScheme()
235235
{
236236
this.Nodes.Clear();
237237
this.Connects.Clear();
238-
this.SchemePath = "";
239238
this.NodesCount = 0;
240-
239+
this.TransitionsCount = 0;
240+
this.SchemePath = "";
241+
241242
this.SetupStartState();
242243
}
243244
private void Open()
@@ -515,6 +516,10 @@ private ViewModelNode AddNodeWithUndoRedo(MyPoint parameter, ViewModelNode resul
515516
Point1 = new MyPoint(myPoint)
516517
};
517518
}
519+
else
520+
{
521+
NodesCount--;
522+
}
518523
Nodes.Add(newNode);
519524
return newNode;
520525
}
@@ -527,6 +532,9 @@ private ViewModelConnector AddConnectorWithConnect(ViewModelConnector parameter,
527532
{
528533
if (result == null)
529534
return parameter;
535+
else
536+
TransitionsCount--;
537+
530538
result.Node.CommandAddConnectorWithConnect.ExecuteWithSubscribe((1, result));
531539
return result;
532540
}
@@ -607,6 +615,7 @@ private DeleteMode UnDeleteSelectedElements(DeleteMode parameter, DeleteMode res
607615
{
608616
foreach (var element in result)
609617
{
618+
TransitionsCount--;
610619
element.connector.Node.CommandAddConnectorWithConnect.ExecuteWithSubscribe((element.index, element.connector));
611620
}
612621

@@ -645,11 +654,13 @@ private ElementsForDelete DeleteSelectedNodes(ElementsForDelete parameter, Eleme
645654
}
646655
private ElementsForDelete UnDeleteSelectedNodes(ElementsForDelete parameter, ElementsForDelete result)
647656
{
657+
NodesCount -= result.NodesToDelete.Count;
648658
Nodes.AddRange(result.NodesToDelete);
649659
Connects.AddRange(result.ConnectsToDelete);
650660
result.ConnectsToDeleteWithConnectors.Sort(ElementsForDelete.Sort);
651661
foreach (var element in result.ConnectsToDeleteWithConnectors)
652662
{
663+
TransitionsCount--;
653664
element.connect.FromConnector.Node.CommandAddConnectorWithConnect.ExecuteWithSubscribe((element.connectorIndex, element.connect.FromConnector));
654665
}
655666

SimpleStateMachineNodeEditor/ViewModel/ViewModelNode.cs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ public class ViewModelNode : ReactiveValidationObject<ViewModelNode>
4141

4242
public IObservableCollection<ViewModelConnector> Transitions { get; set; } = new ObservableCollectionExtended<ViewModelConnector>();
4343
public int Zindex { get; private set; }
44-
45-
public int TransitionsCount = -1;
46-
4744

4845
private ViewModelNode()
4946
{
@@ -56,24 +53,30 @@ public ViewModelNode(ViewModelNodesCanvas nodesCanvas)
5653
{
5754
NodesCanvas = nodesCanvas;
5855
Zindex = nodesCanvas.Nodes.Count;
59-
56+
6057
SetupConnectors();
6158
SetupCommands();
62-
SetupBinding();
63-
59+
SetupBinding();
60+
SetupSubscriptions();
6461
}
6562

6663
#region SetupBinding
6764
private void SetupBinding()
65+
{
66+
}
67+
#endregion SetupBinding
68+
69+
#region Setup Subscriptions
70+
71+
private void SetupSubscriptions()
6872
{
6973
this.WhenAnyValue(x => x.Selected).Subscribe(value => { this.BorderBrush = value ? Application.Current.Resources["ColorSelectedElement"] as SolidColorBrush : Brushes.LightGray; });
70-
this.WhenAnyValue(x => x.Transitions.Count).Subscribe(value => UpdateCount(value));
74+
this.WhenAnyValue(x => x.Transitions.Count).Buffer(2, 1).Select(x => (Previous: x[0], Current: x[1])).Subscribe(x => UpdateCount(x.Previous, x.Current));
7175

7276
this.WhenAnyValue(x => x.Point1.Value, x => x.Size).Subscribe(_ => UpdatePoint2());
7377
this.WhenAnyValue(x => x.IsCollapse).Subscribe(value => Collapse(value));
7478
}
75-
#endregion SetupBinding
76-
79+
#endregion Setup Subscriptions
7780
#region Connectors
7881
private void SetupConnectors()
7982
{
@@ -128,10 +131,12 @@ private void NotSaved()
128131
{
129132
NodesCanvas.ItSaved = false;
130133
}
131-
private void UpdateCount(int count)
134+
private void UpdateCount(int oldValue, int newValue)
132135
{
133-
if (count > TransitionsCount)
134-
TransitionsCount = count;
136+
if (newValue > oldValue)
137+
{
138+
NodesCanvas.TransitionsCount++;
139+
}
135140
}
136141
#endregion Setup Commands
137142

@@ -205,7 +210,7 @@ private void AddEmptyConnector()
205210
CurrentConnector.TextEnable = true;
206211
CurrentConnector.FormEnable = false;
207212
if (string.IsNullOrEmpty(CurrentConnector.Name))
208-
CurrentConnector.Name = "Transition " + TransitionsCount.ToString();
213+
CurrentConnector.Name = "Transition " + NodesCanvas.TransitionsCount.ToString();
209214
}
210215
CurrentConnector = new ViewModelConnector(NodesCanvas, this)
211216
{

0 commit comments

Comments
 (0)