public MainViewModel(IEnumerable <IPlugin> plugins,
                             ObservableProgress progress,
                             EventSink eventSink,
                             MainSettings settings,
                             string logPath)
        {
            Plugins = plugins.OrderBy(a => a.Order);

            Settings = settings;

            SettingsList = new List <SettingsViewModel>()
            {
                new SettingsViewModel("View settings", new MainSettingsView
                {
                    DataContext = settings
                })
            }.Concat(ReadSettings(Plugins));

            Progress = progress;

            LogPath = logPath;

            eventSink.NotifyEvent += (s, e) =>
            {
                Notification = e;
            };
        }
        public MainViewModel(IEnumerable <IPlugin> plugins,
                             ObservableProgress progress,
                             EventSink eventSink,
                             MainSettings settings,
                             CommandManagerSettings commandSettings,
                             string logPath,
                             IDialogCoordinator dialogCoordinator,
                             ChocoUpdater chocoUpdater)
        {
            _dialogCoordinator = dialogCoordinator;

            CommandSettings = commandSettings;
#if DEBUG
            CheckUpdates(chocoUpdater);
#endif
            Plugins = plugins.OrderBy(a => a.Order);

            Settings = settings;

            // build settings list
            SettingsList = new List <SettingsViewModel>()
            {
                new SettingsViewModel("View settings", new MainSettingsView
                {
                    DataContext = settings
                })
            }
            .Concat(ReadSettings(Plugins));

            Progress = progress;

            LogPath = logPath;

            // subscribe to errors from serilog
            eventSink.NotifyEvent += (s, e) =>
            {
                Notification = e;
            };

            foreach (var plugin in Plugins)
            {
                plugin.OnStarted();
            }

            Services.CommandManager.Settings = commandSettings;
        }