public WindowViewModel(IObjectProvider objectProvider, 
            IWindowFactory windowFactory, 
            ILogger logger,
            IWindowsController windowsController,
            RecentFilesViewModel recentFilesViewModel,
            GeneralOptionsViewModel generalOptionsViewModel,
            ISchedulerProvider schedulerProvider)
        {
            _logger = logger;
            _windowsController = windowsController;
            RecentFiles = recentFilesViewModel;
            GeneralOptions = generalOptionsViewModel;
            _schedulerProvider = schedulerProvider;
            _objectProvider = objectProvider;
            InterTabClient = new InterTabClient(windowFactory);
            OpenFileCommand =  new Command(OpenFile);
            ShowInGitHubCommand = new Command(()=>   Process.Start("https://github.com/RolandPheasant"));

            ZoomOutCommand= new Command(()=> { GeneralOptions.Scale = GeneralOptions.Scale + 5; });
            ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; });

            Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}";

            var fileDropped = DropMonitor.Dropped.Subscribe(OpenFile);
            var isEmptyChecker = Views.ToObservableChangeSet()
                                    .ToCollection()
                                    .Select(items=>items.Count)
                                    .StartWith(0)
                                    .Select(count=>count==0)
                                    .Subscribe(isEmpty=> IsEmpty = isEmpty);

            var openRecent = recentFilesViewModel.OpenFileRequest
                                .Subscribe(file =>
                                {
                                    MenuIsOpen = false;
                                    OpenFile(file);
                                });

            _cleanUp = new CompositeDisposable(recentFilesViewModel,
                isEmptyChecker,
                fileDropped,
                DropMonitor,
                openRecent,
                Disposable.Create(() =>
                {
                     Views.Select(vc => vc.Content)
                            .OfType<IDisposable>()
                            .ForEach(d=>d.Dispose());
                }));
        }
Esempio n. 2
0
        public WindowViewModel(IObjectProvider objectProvider,
                               IWindowFactory windowFactory,
                               ILogger logger,
                               IWindowsController windowsController,
                               RecentFilesViewModel recentFilesViewModel,
                               GeneralOptionsViewModel generalOptionsViewModel,
                               ISchedulerProvider schedulerProvider)
        {
            _logger             = logger;
            _windowsController  = windowsController;
            RecentFiles         = recentFilesViewModel;
            GeneralOptions      = generalOptionsViewModel;
            _schedulerProvider  = schedulerProvider;
            _objectProvider     = objectProvider;
            InterTabClient      = new InterTabClient(windowFactory);
            OpenFileCommand     = new Command(OpenFile);
            ShowInGitHubCommand = new Command(() => Process.Start("https://github.com/RolandPheasant"));

            ZoomOutCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale + 5; });
            ZoomInCommand  = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; });

            Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}";

            var fileDropped    = DropMonitor.Dropped.Subscribe(OpenFile);
            var isEmptyChecker = Views.ToObservableChangeSet()
                                 .ToCollection()
                                 .Select(items => items.Count)
                                 .StartWith(0)
                                 .Select(count => count == 0)
                                 .Subscribe(isEmpty => IsEmpty = isEmpty);

            var openRecent = recentFilesViewModel.OpenFileRequest
                             .Subscribe(file =>
            {
                MenuIsOpen = false;
                OpenFile(file);
            });

            _cleanUp = new CompositeDisposable(recentFilesViewModel,
                                               isEmptyChecker,
                                               fileDropped,
                                               DropMonitor,
                                               openRecent,
                                               Disposable.Create(() =>
            {
                Views.Select(vc => vc.Content)
                .OfType <IDisposable>()
                .ForEach(d => d.Dispose());
            }));
        }