@@ -16,71 +16,54 @@ namespace SimpleStateMachineNodeEditor.ViewModel
1616{
1717 public class ViewModelMainWindow : ReactiveObject
1818 {
19- //public ReadOnlyObservableCollection<ViewModelMessage> Messages;
20- //[Reactive] public ObservableCollection<ViewModelMessage> Messages { get { return new ObservableCollection<ViewModelMessage>(NodesCanvas.Messages.Where(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All)); } set { } }
2119 public ObservableCollectionExtended < ViewModelMessage > Messages { get ; set ; } = new ObservableCollectionExtended < ViewModelMessage > ( ) ;
22- //public ReadOnlyObservableCollection<ViewModelMessage> Messages;
20+
2321 [ Reactive ] public ViewModelNodesCanvas NodesCanvas { get ; set ; }
22+
2423 [ Reactive ] public TypeMessage DisplayMessageType { get ; set ; }
2524
25+ [ Reactive ] public bool ? DebugEnable { get ; set ; }
26+
2627 private IDisposable ConnectToMessages ;
2728
2829 public double MaxHeightMessagePanel = 150 ;
2930
30- public int CountShowingMessage = 5 ;
31-
3231 public ViewModelMainWindow ( )
3332 {
3433 SetupCommands ( ) ;
35- SetupSubscriptions ( ) ;
36-
34+ SetupSubscriptions ( ) ;
3735 }
36+
3837 #region Setup Subscriptions
3938
4039 private void SetupSubscriptions ( )
4140 {
42- this . WhenAnyValue ( x => x . NodesCanvas ) . Where ( x=> x != null ) . Subscribe ( _ => UpdateMessages ( ) ) ;
43- this . WhenAnyValue ( x => x . NodesCanvas . DisplayMessageType ) . Subscribe ( _ => Test ( ) ) ;
44- //this.WhenAnyValue(x => x.NodesCanvas.DisplayMessageType).Subscribe(_ => Test());
45- //this.WhenAnyValue(x => x.NodesCanvas.Messages).Subscribe(_ => Test());
41+ this . WhenAnyValue ( x => x . NodesCanvas . DisplayMessageType ) . Subscribe ( _ => UpdateMessages ( ) ) ;
4642
4743 }
48- private void Test ( )
44+ private void UpdateMessages ( )
4945 {
5046 ConnectToMessages ? . Dispose ( ) ;
5147 Messages . Clear ( ) ;
52- //Messages.AddRange(this.NodesCanvas.Messages.Where(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All));
53- ConnectToMessages = this . NodesCanvas . Messages . ToObservableChangeSet ( ) . Filter ( x => x . TypeMessage == this . NodesCanvas . DisplayMessageType || this . NodesCanvas . DisplayMessageType == TypeMessage . All ) .
54- ObserveOnDispatcher ( ) . Bind ( Messages ) . DisposeMany ( ) . Subscribe ( ) ;
55- }
56- private void UpdateMessages ( )
57- {
5848
59- //var t = NodesCanvas.Messages.Where(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType).ToList();
60- //Messages = t ;
61-
62- //var observable = this.NodesCanvas.ObservableForProperty(x => x.DisplayMessageType).Select(x => x.Value);
63- //this.NodesCanvas.DisplayMessageType.T
64- // Observable
65- //var observable = this.NodesCanvas.ObservableForProperty(x => x.DisplayMessageType);
66- //NodesCanvas.Messages.Connect().Filter(x=>x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType==TypeMessage.All).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
67- //NodesCanvas.Messages.Connect().Filter(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
68- //NodesCanvas.Messages.Connect().Filter(x => x!=null).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
69- //Messages = ;
70- //NodesCanvas.Messages.
71- //NodesCanvas.Messages.Connect().ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
72- //NodesCanvas.Messages.Where(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).ToObservable().\
73-
74- //Correct for new
75- //NodesCanvas.Messages.ToObservableChangeSet().Filter(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
76- //NodesCanvas.Messages.Connect(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
77- //var mySource = NodesCanvas.Messages.Connect().Filter(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All);
78- //var myBindingOperation = mySource.ObserveOn(RxApp.MainThreadScheduler).Bind(out Messages).Subscribe();
79-
80- //NodesCanvas.Messages.All(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).ObservableForProperty(x=>x.M)
81- //NodesCanvas.Messages.ToObservableChangeSet().Filter(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType).ObserveOnDispatcher().Bind(out Messages).DisposeMany().Subscribe();
82- //NodesCanvas.Messages.Connect().Filter(x => x.TypeMessage == this.NodesCanvas.DisplayMessageType || this.NodesCanvas.DisplayMessageType == TypeMessage.All).Bind(out Messages).Subscribe();
49+ bool debugEnable = DebugEnable . HasValue && DebugEnable . Value ;
50+ bool displayAll = this . NodesCanvas . DisplayMessageType == TypeMessage . All ;
51+
52+ ConnectToMessages = this . NodesCanvas . Messages . ToObservableChangeSet ( ) . Filter ( x=> CheckForDisplay ( x . TypeMessage ) ) . ObserveOnDispatcher ( ) . Bind ( Messages ) . DisposeMany ( ) . Subscribe ( ) ;
53+
54+ bool CheckForDisplay ( TypeMessage typeMessage )
55+ {
56+ if ( typeMessage == this . NodesCanvas . DisplayMessageType )
57+ {
58+ return true ;
59+ }
60+ else if ( typeMessage == TypeMessage . Debug )
61+ {
62+ return debugEnable && displayAll ;
63+ }
8364
65+ return displayAll ;
66+ }
8467 }
8568 #endregion Setup Subscriptions
8669 #region Setup Commands
0 commit comments