Example #1
0
        public virtual void OnImportsSatisfied()
        {
            var windowMessages = Observable.FromEventPattern <WindowEventArgs>(FHost, "WindowAdded")
                                 .Select(p => p.EventArgs.Window)
                                 .Merge(
                Observable.FromEventPattern <ComponentModeEventArgs>(FHost, "AfterComponentModeChange")
                .Select(p => p.EventArgs.Window)
                )
                                 .OfType <Window>()
                                 .Where(w => w.UserInputWindow != null && w.UserInputWindow.InputWindowHandle != IntPtr.Zero)
                                 .Where(w => !FSubclasses.Any(s => s.HWnd == w.UserInputWindow.InputWindowHandle))
                                 .Select(w => new { subclass = Subclass.Create(w.UserInputWindow.InputWindowHandle), sender = w.UserInputWindow })
                                 .Do(_ =>
            {
                _.subclass.Disposed += HandleSubclassDisposed;
                FSubclasses.Add(_.subclass);
                SubclassCreated(_.subclass);
            }
                                     )
                                 .SelectMany(_ => Observable.FromEventPattern <WMEventArgs>(_.subclass, "WindowMessage"),
                                             (_, evp) => new EventPattern <WMEventArgs>(_.sender, evp.EventArgs))
                                 .Where(_ => FEnabledIn.SliceCount > 0 && FEnabledIn[0]);
            var disabled = FEnabledIn.ToObservable(1)
                           .DistinctUntilChanged()
                           .Where(enabled => !enabled);

            Initialize(windowMessages, disabled);
        }
Example #2
0
        public virtual void OnImportsSatisfied()
        {
            FWMService.SubclassCreated   += FWMService_SubclassCreated;
            FWMService.SubclassDestroyed += FWMService_SubclassDestroyed;

            var disabled = FEnabledIn.ToObservable(1)
                           .DistinctUntilChanged()
                           .Where(enabled => !enabled);
            var windowsMessages = FWMService.MessageNotifications
                                  .Where(_ => FEnabledIn.SliceCount > 0 && FEnabledIn[0]);

            Initialize(windowsMessages, disabled);
        }
Example #3
0
 public void Evaluate(int spreadMax)
 {
     MouseOut.ResizeAndDismiss(
         spreadMax,
         slice =>
     {
         var mouseMoves = XIn.ToObservable(slice)
                          .CombineLatest(YIn.ToObservable(slice), (x, y) => new Vector2D(x, y))
                          .Select(v => new MouseMoveNotification(ToMousePoint(v), FClientArea, this));
         var mouseButtons = Observable.Merge(
             LeftButtonIn.ToObservable(slice).Select(x => Tuple.Create(x, MouseButtons.Left)),
             MiddleButtonIn.ToObservable(slice).Select(x => Tuple.Create(x, MouseButtons.Middle)),
             RightButtonIn.ToObservable(slice).Select(x => Tuple.Create(x, MouseButtons.Right)),
             X1ButtonIn.ToObservable(slice).Select(x => Tuple.Create(x, MouseButtons.XButton1)),
             X2ButtonIn.ToObservable(slice).Select(x => Tuple.Create(x, MouseButtons.XButton2))
             );
         var mouseDowns = mouseButtons.Where(x => x.Item1)
                          .Select(x => x.Item2)
                          .Select(x => new MouseDownNotification(ToMousePoint(new Vector2D(XIn[slice], YIn[slice])), FClientArea, x, this));
         var mouseUps = mouseButtons.Where(x => !x.Item1)
                        .Select(x => x.Item2)
                        .Select(x => new MouseUpNotification(ToMousePoint(new Vector2D(XIn[slice], YIn[slice])), FClientArea, x, this));
         var mouseWheelDeltas = MouseWheelIn.ToObservable(0)
                                .StartWith(0)
                                .Buffer(2, 1)
                                .Select(b => b[1] - b[0])
                                .Select(d => new MouseWheelNotification(ToMousePoint(new Vector2D(XIn[slice], YIn[slice])), FClientArea, d * Const.WHEEL_DELTA, this))
                                .Cast <MouseNotification>();
         var notifications = Observable.Merge <MouseNotification>(
             mouseMoves,
             mouseDowns,
             mouseUps,
             mouseWheelDeltas);
         return(new Mouse(notifications));
     }
         );
 }
Example #4
0
 protected IObservable <bool> GetDisabledNotifications(int slice)
 {
     return(EnabledIn.ToObservable(slice)
            .DistinctUntilChanged()
            .Where(enabled => !enabled));
 }