Filtration/Filtration/App.xaml.cs

63 lines
2.5 KiB
C#
Raw Normal View History

using System.Linq;
2015-06-04 13:15:54 -04:00
using System.Windows;
2015-06-26 12:42:20 -04:00
using AutoMapper;
using Castle.Facilities.TypedFactory;
2015-06-04 13:15:54 -04:00
using Castle.MicroKernel.ModelBuilder.Inspectors;
using Castle.Windsor;
using Castle.Windsor.Installer;
2015-07-01 17:28:29 -04:00
using Filtration.ObjectModel.ThemeEditor;
using Filtration.Properties;
using Filtration.Services;
2015-07-01 17:28:29 -04:00
using Filtration.ThemeEditor.ViewModels;
2015-06-04 13:15:54 -04:00
namespace Filtration
{
2015-07-25 14:02:42 -04:00
public partial class App
2015-06-04 13:15:54 -04:00
{
private IWindsorContainer _container;
private async void Application_Startup(object sender, StartupEventArgs e)
2015-06-04 13:15:54 -04:00
{
_container = new WindsorContainer();
// Disable property injection
2015-06-04 13:15:54 -04:00
var propInjector = _container.Kernel.ComponentModelBuilder
.Contributors
.OfType<PropertiesDependenciesModelInspector>()
.Single();
2015-06-04 13:15:54 -04:00
_container.Kernel.ComponentModelBuilder.RemoveContributor(propInjector);
2015-06-26 12:42:20 -04:00
_container.AddFacility<TypedFactoryFacility>();
_container.Install(FromAssembly.InThisApplication());
_container.Install(FromAssembly.Named("Filtration.Parser")); // Not directly referenced so manually call its installers
Mapper.Initialize(cfg =>
{
cfg.ConstructServicesUsing(_container.Resolve);
cfg.CreateMap<Theme, IThemeEditorViewModel>().ConstructUsingServiceLocator();
cfg.CreateMap<ThemeComponent, ThemeComponentViewModel>().ReverseMap();
cfg.CreateMap<ColorThemeComponent, ColorThemeComponentViewModel>().ReverseMap();
cfg.CreateMap<IntegerThemeComponent, IntegerThemeComponentViewModel>().ReverseMap();
2018-08-26 13:24:13 -04:00
cfg.CreateMap<StrIntThemeComponent, StrIntThemeComponentViewModel>().ReverseMap();
2018-08-29 06:11:41 -04:00
cfg.CreateMap<StringThemeComponent, StringThemeComponentViewModel>().ReverseMap();
2018-08-29 13:12:02 -04:00
cfg.CreateMap<IconThemeComponent, IconThemeComponentViewModel>().ReverseMap();
cfg.CreateMap<EffectColorThemeComponent, EffectColorThemeComponentViewModel>().ReverseMap();
cfg.CreateMap<IThemeEditorViewModel, Theme>();
});
2015-07-01 17:28:29 -04:00
2015-06-26 12:42:20 -04:00
Mapper.AssertConfigurationIsValid();
var bootstrapper = _container.Resolve<IBootstrapper>();
await bootstrapper.GoAsync();
}
2015-06-04 13:15:54 -04:00
protected override void OnExit(ExitEventArgs e)
{
_container.Dispose();
Settings.Default.Save();
2015-06-04 13:15:54 -04:00
base.OnExit(e);
}
}
}