Example #1
0
        public MainViewModel(
            [NotNull] MainDataContext dataContext,
            [NotNull] ISystemTrayContextMenu trayMenu,
            [NotNull] IConsoleArgs consoleArgs,
            [NotNull] IWaVersionInfoProvider waVersionInfoProvider,
            [NotNull] MainForm mainForm)
        {
            if (dataContext == null)
            {
                throw new ArgumentNullException(nameof(dataContext));
            }
            if (trayMenu == null)
            {
                throw new ArgumentNullException(nameof(trayMenu));
            }
            if (consoleArgs == null)
            {
                throw new ArgumentNullException(nameof(consoleArgs));
            }
            if (waVersionInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(waVersionInfoProvider));
            }
            if (mainForm == null)
            {
                throw new ArgumentNullException(nameof(mainForm));
            }
            this.DataContext           = dataContext;
            this.trayMenu              = trayMenu;
            this.consoleArgs           = consoleArgs;
            this.waVersionInfoProvider = waVersionInfoProvider;
            this.mainForm              = mainForm;

            trayMenu.ShowMainWindowClicked    += ShowRestore;
            trayMenu.ExitWurmAssistantClicked += (sender, eventArgs) => this.TryClose();

            savedNonMinimizedWindowState = WindowState.Normal;

            if (consoleArgs.WurmUnlimitedMode)
            {
                WindowTitle = "Aldur's Wurm Assistant Unlimited";
                Icon        = Resources.WurmAssistantUnlimitedIcon.ToImageSource();
            }
            else
            {
                WindowTitle = "Aldur's Wurm Assistant";
                Icon        = Resources.WurmAssistantIcon.ToImageSource();
            }

            WindowTitle += string.Format(" ({0})", waVersionInfoProvider.Get());

            mainForm.Dock   = DockStyle.Fill;
            WinFormsContent = new WindowsFormsHost()
            {
                Child = mainForm,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch
            };
        }
        public FeaturesManager(
            [NotNull] IKernel kernel,
            [NotNull] ISystemTrayContextMenu systemTrayContextMenu,
            [NotNull] ILogger logger)
        {
            if (kernel == null)
            {
                throw new ArgumentNullException(nameof(kernel));
            }
            if (systemTrayContextMenu == null)
            {
                throw new ArgumentNullException(nameof(systemTrayContextMenu));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            this.kernel = kernel;
            this.systemTrayContextMenu = systemTrayContextMenu;
            this.logger = logger;

            var             allFeatureBindings = kernel.GetBindings(typeof(IFeature));
            List <IFeature> resolvedFeatures   = new List <IFeature>();

            foreach (var allFeatureBinding in allFeatureBindings)
            {
                try
                {
                    var feature = kernel.Get <IFeature>(allFeatureBinding.Metadata.Name);
                    resolvedFeatures.Add(feature);
                }
                catch (Exception exception)
                {
                    logger.Error(exception, $"Unable to resolve IFeature named {allFeatureBinding.Metadata.Name}");
                }
            }
            features = resolvedFeatures;

            Init();
        }