public ScreenshotViewModel(IScreenshotView view, IScreenshotService screenshotService) { _screenshotService = screenshotService; View = view; View.DataContext = this; StartCommand = new DelegateCommand(() => { var config = GetConfig(); if (config != null) { _screenshotService.Start(config.IP, config.User, config.Pass); Running = true; } }, () => !Running); StopCommand = new DelegateCommand(() => { _screenshotService.Stop(); Running = false; }, () => Running); _screenshotService.OnImageArrived += img => { ((UserControl)this.View).Dispatcher.BeginInvoke(new Action(() => { Image = CreateBitmapSourceFromGdiBitmap(img as Bitmap); })); }; }
public async void Initialize() { RegisterTelnet(RegionNames.OUTPUT_MAIN, 8085); RegisterTelnet(RegionNames.OUTPUT_SCENE_GRAPH, 8089); RegisterTelnet(RegionNames.OUTPUT_TASK_1, 8090); RegisterTelnet(RegionNames.OUTPUT_TASK_2, 8091); RegisterTelnet(RegionNames.OUTPUT_TASK_3, 8092); RegisterTelnet(RegionNames.OUTPUT_TASK_REST, 8093); //RegisterTelnet(RegionNames.OUTPUT_SPECIAL, 8080); _regionManager.RegisterViewWithRegion(RegionNames.OUTPUT_MAIN, () => { var vm = _container.Resolve <IOutputViewModel>(); vm.Port = 8085; return(vm.View); }); _regionManager.RegisterViewWithRegion(RegionNames.OUTPUT_SCENE_GRAPH, () => { var vm = _container.Resolve <IOutputViewModel>(); vm.Port = 8089; return(vm.View); }); _regionManager.RegisterViewWithRegion(RegionNames.TOOLBAR, () => { _toolbarViewModel = _container.Resolve <IToolbarViewModel>(); return(_toolbarViewModel.View); }); _regionManager.RegisterViewWithRegion(RegionNames.STACK_PANEL, () => _container.Resolve <IStackPanelViewModel>().View); //_regionManager.RegisterViewWithRegion(RegionNames.WATCH, () => _container.Resolve<IWatchViewModel>().View); _regionManager.RegisterViewWithRegion(RegionNames.LOCALS, () => _container.Resolve <ILocalsViewModel>().View); _regionManager.RegisterViewWithRegion(RegionNames.CONSOLE, () => _container.Resolve <IConsoleViewModel>().View); _regionManager.RegisterViewWithRegion(RegionNames.REMOTE, () => _container.Resolve <IRemoteViewModel>().View); _regionManager.RegisterViewWithRegion(RegionNames.CYGWIN, () => _container.Resolve <ICygwinViewModel>().View); _regionManager.RegisterViewWithRegion(RegionNames.SCREENSHOT, () => _container.Resolve <IScreenshotViewModel>().View); _eventAggregator.GetEvent <CommandEvent>().Subscribe(SendCommand); _eventAggregator.GetEvent <ConnectEvent>().Subscribe(ip => { _ip = ip; var args = JsonConvert.SerializeObject(new { ip = ip }); _remoteService.SetArgs(args); Task.Delay(1000).Wait(); Connect(ip, 8085).Wait(); }, ThreadOption.BackgroundThread); _eventAggregator.GetEvent <DisconnectEvent>().Subscribe(obj => { _telnetTasks.Values.ToList().ForEach(t => t.Disconnect()); _telnetTasks.Clear(); _parserTasks.Values.ToList().ForEach(p => p.Stop()); _parserTasks.Clear(); _screenshotService.Stop(); _connected = false; }, ThreadOption.BackgroundThread); _eventAggregator.GetEvent <SendCommandEvent>().Subscribe(cmd => { _remoteService.SendAsync(cmd); }); //_eventAggregator.GetEvent<DebugEvent>().Subscribe(enabled => _debug = enabled); _eventAggregator.GetEvent <DeployEvent>().Subscribe(model => Deploy(model.Ip, model.Folder), ThreadOption.BackgroundThread); _eventAggregator.GetEvent <ShowConfigEvent>().Subscribe(f => ShowConfig(f)); _eventAggregator.GetEvent <BusyShowEvent>().Subscribe(m => _screenshotService.Stop()); _eventAggregator.GetEvent <BusyHideEvent>().Subscribe(obj => { if (_screenshotRunning) { _screenshotService.Start(_ip); } }); _eventAggregator.GetEvent <ScreenshotStartEvent>().Subscribe(obj => { _screenshotRunning = true; _screenshotService.Start(_ip); }); _eventAggregator.GetEvent <ScreenshotStopEvent>().Subscribe(obj => { _screenshotRunning = false; _screenshotService.Stop(); }); _eventAggregator.GetEvent <OutputChangeEvent>().Subscribe(p => _selectedPort = p); _eventAggregator.GetEvent <OutputChangeEvent>().Publish(8085); RegisterCommands(); }