コード例 #1
0
        public OptionsViewModel(IVisibilitySettings settings)
        {
            var control = new ServiceControl();
            var items   = control.Services.Select(item => new ServiceSelectionItem(settings)
            {
                DisplayName = item.DisplayName,
                ServiceName = item.ServiceName
            });

            Services = new ObservableCollection <ServiceSelectionItem>(items);
        }
コード例 #2
0
        public MainViewModel(IVisibilitySettings settings)
        {
            _settings    = settings;
            _quitCommand = new ActionCommand(() =>
            {
                var evt = QuitEvent;
                if (evt != null)
                {
                    evt();
                }
            });

            Services         = new ObservableCollection <ServiceItem>();
            FilteredServices = new ObservableCollection <ServiceItem>();
            OptionsCommand   = new ActionCommand(() =>
            {
                if (_options == null || _options.IsClosed)
                {
                    _options = new Options(new OptionsViewModel(_settings));
                }

                if (!_options.IsVisible)
                {
                    _options.Show();
                }
                else
                {
                    _options.BringIntoView();
                }
            });

            ThreadPool.QueueUserWorkItem(cb =>
            {
                var services = ServiceController.GetServices();

                // Force creation of items with ToArray()
                var items = services.Select(
                    service => new ServiceItem(service, settings)).ToArray();

                App.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    foreach (var item in items)
                    {
                        Services.Add(item);
                        if (item.Visibility)
                        {
                            FilteredServices.Add(item);
                        }
                    }
                    ServicesPopulated = true;
                }));
            });
        }
コード例 #3
0
        // Avoid calling on UI thread.
        public ServiceItem(ServiceController service, IVisibilitySettings settings)
        {
            _settings = settings;
            Service   = service;

            DisplayName = service.DisplayName;
            ServiceName = service.ServiceName;
            Status      = service.Status.ToString();

            AttachName = "Attach";// TODO: attached or not, TODO part of the command?

            var process = ServiceControl.ServiceToProcess(Service);

            AttachCommand = new ActionCommand(() => { },
                                              Service.Status == ServiceControllerStatus.Running &&
                                              VsEnvironment.Debuggers.Any());

            var debugger = VsEnvironment.Debuggers.FirstOrDefault(p => p.IsAttachedTo(process.Id));

            DetachCommand = new ActionCommand(() => { Detach(debugger); },
                                              Service.Status == ServiceControllerStatus.Running &&
                                              VsEnvironment.Debuggers.Any());

            StartName           = Service.Status == ServiceControllerStatus.Running ? "Stop" : "Start"; // TODO: intermediate states
            StartServiceCommand = new ActionCommand(Start);
            StopServiceCommand  = new ActionCommand(Stop);

            SetPid();
            if (Service.Status == ServiceControllerStatus.Running)
            {
                StartVisibility = System.Windows.Visibility.Collapsed;
                StopVisibility  = System.Windows.Visibility.Visible;

                AttachVisibility = (debugger == null) ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
                DetachVisibility = (debugger == null) ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
            }
            else
            {
                StartVisibility = System.Windows.Visibility.Visible;
                StopVisibility  = System.Windows.Visibility.Collapsed;

                AttachVisibility = System.Windows.Visibility.Visible;
                DetachVisibility = System.Windows.Visibility.Collapsed;
            }
        }
コード例 #4
0
 public ServiceSelectionItem(IVisibilitySettings settings)
 {
     _settings = settings;
 }