2018-09-08 17:25:48 -04:00
|
|
|
|
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;
|
2015-06-24 16:24:38 -04:00
|
|
|
|
using Filtration.Properties;
|
2016-09-01 15:26:55 -04:00
|
|
|
|
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;
|
|
|
|
|
|
2018-09-08 17:25:48 -04:00
|
|
|
|
private async void Application_Startup(object sender, StartupEventArgs e)
|
2015-06-04 13:15:54 -04:00
|
|
|
|
{
|
|
|
|
|
_container = new WindsorContainer();
|
|
|
|
|
|
2016-01-31 05:51:53 -05:00
|
|
|
|
// Disable property injection
|
2015-06-04 13:15:54 -04:00
|
|
|
|
var propInjector = _container.Kernel.ComponentModelBuilder
|
2015-06-18 16:08:44 -04:00
|
|
|
|
.Contributors
|
|
|
|
|
.OfType<PropertiesDependenciesModelInspector>()
|
|
|
|
|
.Single();
|
2015-06-04 13:15:54 -04:00
|
|
|
|
|
|
|
|
|
_container.Kernel.ComponentModelBuilder.RemoveContributor(propInjector);
|
2017-05-09 16:41:51 -04:00
|
|
|
|
|
2015-06-26 12:42:20 -04:00
|
|
|
|
_container.AddFacility<TypedFactoryFacility>();
|
2015-06-26 05:17:32 -04:00
|
|
|
|
_container.Install(FromAssembly.InThisApplication());
|
2016-01-31 06:56:55 -05:00
|
|
|
|
_container.Install(FromAssembly.Named("Filtration.Parser")); // Not directly referenced so manually call its installers
|
|
|
|
|
|
2017-05-09 16:41:51 -04:00
|
|
|
|
Mapper.Initialize(cfg =>
|
|
|
|
|
{
|
|
|
|
|
cfg.ConstructServicesUsing(_container.Resolve);
|
|
|
|
|
cfg.CreateMap<Theme, IThemeEditorViewModel>().ConstructUsingServiceLocator();
|
|
|
|
|
cfg.CreateMap<ThemeComponent, ThemeComponentViewModel>().ReverseMap();
|
2018-08-24 15:07:24 -04:00
|
|
|
|
cfg.CreateMap<ColorThemeComponent, ColorThemeComponentViewModel>().ReverseMap();
|
2018-08-25 08:52:16 -04:00
|
|
|
|
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();
|
2017-05-09 16:41:51 -04:00
|
|
|
|
cfg.CreateMap<IThemeEditorViewModel, Theme>();
|
|
|
|
|
});
|
2015-07-01 17:28:29 -04:00
|
|
|
|
|
2015-06-26 12:42:20 -04:00
|
|
|
|
Mapper.AssertConfigurationIsValid();
|
2018-09-08 17:25:48 -04:00
|
|
|
|
|
|
|
|
|
var bootstrapper = _container.Resolve<IBootstrapper>();
|
|
|
|
|
await bootstrapper.GoAsync();
|
2015-07-01 17:26:00 -04:00
|
|
|
|
}
|
|
|
|
|
|
2015-06-04 13:15:54 -04:00
|
|
|
|
protected override void OnExit(ExitEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
_container.Dispose();
|
2015-06-24 16:24:38 -04:00
|
|
|
|
Settings.Default.Save();
|
2015-06-04 13:15:54 -04:00
|
|
|
|
base.OnExit(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|