Ejemplo n.º 1
0
 private void EndWindowFinding()
 {
     Debug.Assert(this.windowFinder.IsFinding, "Unexpected call of EndWindowFinding()");
     if (this.windowFinder.IsFinding)
     {
         Cursor.Current = Cursors.Default;
         IntPtr hWnd = this.windowFinder.EndFind();
         this.isSelectingTracker = false;
         if (hWnd != IntPtr.Zero)
         {
             this.prevTrackingWindowText = this.tsmiWindow.Text;
             this.UpdateTooltip();
             TrackingSettings trackerSettings = new TrackingSettings()
             {
                 Hwnd = hWnd,
                 Type = TrackingType.Window,
             };
             TrackerChangedEventArgs ea = new TrackerChangedEventArgs(trackerSettings);
             this.OnTrackerChanged(ea);
         }
         else
         {
             if (this.prevTrackingSettings.Type != TrackingType.Window)
             {
                 this.tsmiWindow.Text = trackingTypeWindow;
             }
             else
             {
                 this.tsmiWindow.Text = prevTrackingWindowText;
             }
             this.TrackingSettings = this.prevTrackingSettings;
         }
     }
 }
            private void OnDirtyTrackerNodeChanged(object sender, TrackerChangedEventArgs<DirtyTrackerNode> e)
            {
                var root = e.Root;

                lock (this.gate)
                {
                    // below is not perfect but catches simple cases of when target changes
                    if (this.processingNode == null &&
                        !ReferenceEquals(root.Node.X, root.EventArgs.Source) &&
                        ReferenceEquals(root.Node.Y, root.EventArgs.Source))
                    {
                        if (this.RootNode.AllChildNodes()
                                .All(x => !ReferenceEquals(x.X, root.EventArgs.Source)))
                        {
                            var message = "Target cannot be modified when a synchronizer is applied to it\r\n"
                                          + "The change would just trigger a dirty notification and the value would be updated with the value from source.";
                            throw new InvalidOperationException(message);
                        }
                    }

                    if (!root.Node.IsDirty)
                    {
                        return;
                    }

                    this.AddToSyncQueue(root.Node);
                }
            }
Ejemplo n.º 3
0
        private void OnTrackerChanged(TrackerChangedEventArgs ea)
        {
            TrackingSettings trackingSettings = ea.TrackingSettings;

            this.TrackingSettings = trackingSettings;
            if (this.TrackerChanged != null)
            {
                this.TrackerChanged(this, ea);
            }
        }
Ejemplo n.º 4
0
        private void Track(TrackingType trackingType)
        {
            TrackingSettings        trackingSettings;
            TrackerChangedEventArgs ea;
            frmTrackBounds          selectBoundsView;

            switch (trackingType)
            {
            case TrackingType.None:
            case TrackingType.Full:
                trackingSettings = new TrackingSettings()
                {
                    Type = trackingType,
                };
                ea = new TrackerChangedEventArgs(trackingSettings);
                this.OnTrackerChanged(ea);
                break;

            case TrackingType.Fixed:
            case TrackingType.MouseCursor:
                bool trackingMouseCursor = trackingType == TrackingType.MouseCursor;
                selectBoundsView        = new frmTrackBounds();
                this.isSelectingTracker = true;
                selectBoundsView.IsFixedAroundCursor = trackingMouseCursor;
                if (this.trackingSettings.Type == trackingType)
                {
                    selectBoundsView.Bounds = this.TrackingSettings.Bounds;
                }
                else
                {
                    Rectangle screenBounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
                    selectBoundsView.Bounds = new Rectangle(
                        screenBounds.Width / 4,
                        screenBounds.Height / 4,
                        screenBounds.Width / 2,
                        screenBounds.Height / 2);
                }
                if (selectBoundsView.ShowDialog())
                {
                    this.isSelectingTracker = false;
                    trackingSettings        = new TrackingSettings()
                    {
                        Bounds = selectBoundsView.Bounds,
                        Type   = trackingType,
                    };
                    ea = new TrackerChangedEventArgs(trackingSettings);
                    this.OnTrackerChanged(ea);
                }
                break;

            case TrackingType.Window:
                break;
            }
        }
Ejemplo n.º 5
0
 internal ItemGraphChangedEventArgs(T node, int index, TrackerChangedEventArgs <T> previous = null)
     : base(node, previous)
 {
     this.Index = index;
 }
Ejemplo n.º 6
0
 private void trackerSelector_TrackerChanged(object sender, TrackerChangedEventArgs e)
 {
     this.OnTrackerChanged(e);
 }
Ejemplo n.º 7
0
 protected GraphChangeEventArgs(T node, TrackerChangedEventArgs <T> previous = null)
     : base(node, previous)
 {
 }