コード例 #1
0
        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);
                }));
            };
        }
コード例 #2
0
        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();
        }