Ejemplo n.º 1
0
        void OpenViewport(VirtualDevice virtualDevice)
        {
            var viewport = CreateViewport(virtualDevice);

            _viewports.OnNext(_viewports.Value.Add(viewport));
            _focusedViewport.OnNext(Optional.Some(viewport));
        }
Ejemplo n.º 2
0
 IViewport CreateViewport(VirtualDevice virtualDevice)
 {
     return(_viewportFactory.Create(
                initialDevice: virtualDevice,
                onFocus: ViewportFocused,
                onClose: ViewportClosed,
                menu: self => CreateMenu(Observable.Return(Optional.Some(self)))));
 }
Ejemplo n.º 3
0
 public IViewport Create(
     VirtualDevice initialDevice,
     Action <IViewport> onFocus,
     Action <IViewport> onClose,
     Func <IViewport, Menu> menu)
 {
     return(new ViewportController(
                initialDevice, onFocus, onClose, menu,
                _preview, _assembly, _port, _fuse,
                unoHost => Gizmos.Initialize(unoHost, _selectionEnabled, _project),
                _glVersion));
 }
Ejemplo n.º 4
0
        public static VirtualDevice Resize(this VirtualDevice virtualDevice, Size <Points> newSize)
        {
            if (newSize == virtualDevice.GetOrientedSizeInPoints())
            {
                return(virtualDevice);
            }

            return(new VirtualDevice(
                       virtualDevice.Screen.With(
                           name: newSize.Round().ToString(),
                           size: newSize,
                           defaultOrientation: virtualDevice.Orientation),
                       virtualDevice.Orientation));
        }
Ejemplo n.º 5
0
        public ViewportController(
            VirtualDevice initialDevice,
            Action <ViewportController> onFocus,
            Action <ViewportController> onClose,
            Func <ViewportController, Menu> menu,
            ProjectPreview preview,
            IObservable <AssemblyBuilt> assembly,
            int port,
            IFuse fuse,
            Action <IUnoHostControl> initialize,
            IObserver <OpenGlVersion> glVersion)
        {
            VirtualDevice = new BehaviorSubject <VirtualDevice>(initialDevice);
            _onClose      = onClose;
            _onFocus      = onFocus;

            var simulatorControl = assembly
                                   .Select(assemblyPath =>
                                           Observable.Start(() =>
                                                            Observable.Using(() =>
                                                                             preview.LockBuild(assemblyPath.BuildDirectory),
                                                                             assemblyLock =>
                                                                             Observable.Using(() =>
                                                                                              SpawnUnoHost(assemblyPath, port, fuse, menu(this), initialize, glVersion),
                                                                                              unoHost =>
                                                                                              Observable
                                                                                              // never end stream, we don't want to dispose until we've gotten a new one
                                                                                              .Never <Optional <IUnoHostControl> >()
                                                                                              .StartWith(Optional.Some(unoHost)))))
                                           .Switch()
                                           .StartWith(Optional.None <IUnoHostControl>()))
                                   .Switch()
                                   .Replay(1);

            _subscription = simulatorControl.Connect();

            Control = simulatorControl
                      .StartWith(Optional.None <IUnoHostControl>())
                      .Select(c => c.Select(cc => cc.Control).Or(() => CreateLoadingIndicator()))
                      .Switch()
                      .WithBackground(Color.White);

            var realControl = simulatorControl.NotNone().Replay(1).RefCount();

            _send = message => realControl.Take(1).Subscribe(unoHost => unoHost.MessagesTo.OnNext(message));
        }
Ejemplo n.º 6
0
 public static Size <Points> GetOrientedSizeInPoints(this VirtualDevice virtualDevice)
 {
     return(virtualDevice.Orientation != virtualDevice.Screen.DefaultOrientation
                         ? virtualDevice.Screen.SizeInPoints.SwapWidthAndHeight()
                         : virtualDevice.Screen.SizeInPoints);
 }
Ejemplo n.º 7
0
 public static void Write(BinaryWriter writer, VirtualDevice virtualDevice)
 {
     DeviceScreen.Write(writer, virtualDevice.Screen);
     writer.Write((int)virtualDevice.Orientation);
 }