public StartupController(IObjectProvider objectProvider, ILogger logger, IApplicationStatePublisher applicationStatePublisher) { applicationStatePublisher.Publish(ApplicationState.Startup); logger.Info($"Starting Tail Blazer version v{Assembly.GetEntryAssembly().GetName().Version}"); logger.Info($"at {DateTime.UtcNow}"); //run start up jobs objectProvider.Get<FileHeaderNamingJob>(); objectProvider.Get<UhandledExceptionHandler>(); var settingsRegister = objectProvider.Get<ISettingsRegister>(); settingsRegister.Register(new GeneralOptionsConverter(), "GeneralOptions"); settingsRegister.Register(new RecentFilesToStateConverter(), "RecentFiles"); settingsRegister.Register(new StateBucketConverter(), "BucketOfState"); settingsRegister.Register(new RecentSearchToStateConverter(), "RecentSearch"); settingsRegister.Register(new TextAssociationToStateConverter(), "TextAssociation"); settingsRegister.Register(new SearchMetadataToStateConverter(), "GlobalSearch"); //TODO: Need type scanner then this code is not required var viewFactoryRegister = objectProvider.Get<IViewFactoryRegister>(); viewFactoryRegister.Register<TailViewModelFactory>(); objectProvider.Get<SystemSetterJob>(); logger.Info("Starting complete"); }
public StartupController(IObjectProvider objectProvider, ILogger logger, IApplicationStatePublisher applicationStatePublisher) { applicationStatePublisher.Publish(ApplicationState.Startup); logger.Info($"Starting Tail Blazer version v{Assembly.GetEntryAssembly().GetName().Version}"); logger.Info($"at {DateTime.Now}"); //run start up jobs objectProvider.Get <FileHeaderNamingJob>(); objectProvider.Get <UhandledExceptionHandler>(); var settingsRegister = objectProvider.Get <ISettingsRegister>(); settingsRegister.Register(new GeneralOptionsConverter(), "GeneralOptions"); settingsRegister.Register(new RecentFilesToStateConverter(), "RecentFiles"); settingsRegister.Register(new StateBucketConverter(), "BucketOfState"); settingsRegister.Register(new RecentSearchToStateConverter(), "RecentSearch"); settingsRegister.Register(new TextAssociationToStateConverter(), "TextAssociation"); //TODO: Need type scanner then this code is not required var viewFactoryRegister = objectProvider.Get <IViewFactoryRegister>(); viewFactoryRegister.Register <TailViewModelFactory>(); logger.Info("Starting complete"); }
public WindowViewModel(IObjectProvider objectProvider, IWindowFactory windowFactory, ILogger logger, IWindowsController windowsController, RecentFilesViewModel recentFilesViewModel, GeneralOptionsViewModel generalOptionsViewModel, ISchedulerProvider schedulerProvider, IApplicationStatePublisher applicationStatePublisher) { _logger = logger; _windowsController = windowsController; RecentFiles = recentFilesViewModel; GeneralOptions = generalOptionsViewModel; _schedulerProvider = schedulerProvider; _objectProvider = objectProvider; InterTabClient = new InterTabClient(windowFactory); OpenFileCommand = new Command(OpenFile); ShowInGitHubCommand = new Command(()=> Process.Start("https://github.com/RolandPheasant")); ZoomOutCommand= new Command(()=> { GeneralOptions.Scale = GeneralOptions.Scale + 5; }); ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; }); ExitCommmand = new Command(() => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); Application.Current.Shutdown(); }); WindowExiting = () => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); }; Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}"; var fileDropped = DropMonitor.Dropped.Subscribe(OpenFile); var isEmptyChecker = Views.ToObservableChangeSet() .ToCollection() .Select(items=>items.Count) .StartWith(0) .Select(count=>count==0) .LogErrors(logger) .Subscribe(isEmpty=> IsEmpty = isEmpty); var openRecent = recentFilesViewModel.OpenFileRequest .LogErrors(logger) .Subscribe(file => { MenuIsOpen = false; OpenFile(file); }); _cleanUp = new CompositeDisposable(recentFilesViewModel, isEmptyChecker, fileDropped, DropMonitor, openRecent, Disposable.Create(() => { Views.Select(vc => vc.Content) .OfType<IDisposable>() .ForEach(d=>d.Dispose()); })); }
public WindowViewModel(IObjectProvider objectProvider, IWindowFactory windowFactory, ILogger logger, IWindowsController windowsController, RecentFilesViewModel recentFilesViewModel, GeneralOptionsViewModel generalOptionsViewModel, ISchedulerProvider schedulerProvider, IApplicationStatePublisher applicationStatePublisher) { _logger = logger; _windowsController = windowsController; RecentFiles = recentFilesViewModel; GeneralOptions = generalOptionsViewModel; _schedulerProvider = schedulerProvider; _objectProvider = objectProvider; InterTabClient = new InterTabClient(windowFactory); OpenFileCommand = new Command(OpenFile); ShowInGitHubCommand = new Command(() => Process.Start("https://github.com/RolandPheasant")); ZoomOutCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale + 5; }); ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; }); CollectMemoryCommand = new Command(() => { //Diagnostics [useful for memory testing] GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); }); ExitCommmand = new Command(() => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); Application.Current.Shutdown(); }); WindowExiting = () => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); }; Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}"; var fileDropped = DropMonitor.Dropped.Subscribe(OpenFile); var isEmptyChecker = Views.ToObservableChangeSet() .ToCollection() .Select(items => items.Count) .StartWith(0) .Select(count => count == 0) .LogErrors(logger) .Subscribe(isEmpty => IsEmpty = isEmpty); var openRecent = recentFilesViewModel.OpenFileRequest .LogErrors(logger) .Subscribe(file => { MenuIsOpen = false; OpenFile(file); }); var selectedChange = this.WhenValueChanged(vm => vm.Selected) .Subscribe(selected => { var currentSelection = selected?.Content as ISelectedAware; Views.Where(hv => !hv.Equals(selected)) .Select(hv => hv.Content) .OfType <ISelectedAware>() .ForEach(selectedAware => selectedAware.IsSelected = false); if (currentSelection != null) { currentSelection.IsSelected = true; } }); _cleanUp = new CompositeDisposable(recentFilesViewModel, isEmptyChecker, fileDropped, DropMonitor, openRecent, selectedChange, Disposable.Create(() => { Views.Select(vc => vc.Content) .OfType <IDisposable>() .ForEach(d => d.Dispose()); })); }
public WindowViewModel(IObjectProvider objectProvider, IWindowFactory windowFactory, ILogger logger, IWindowsController windowsController, RecentFilesViewModel recentFilesViewModel, GeneralOptionsViewModel generalOptionsViewModel, ISchedulerProvider schedulerProvider, IApplicationStatePublisher applicationStatePublisher) { _logger = logger; _windowsController = windowsController; RecentFiles = recentFilesViewModel; GeneralOptions = generalOptionsViewModel; _schedulerProvider = schedulerProvider; _objectProvider = objectProvider; InterTabClient = new InterTabClient(windowFactory); OpenFileCommand = new Command(OpenFile); ShowInGitHubCommand = new Command(() => Process.Start("https://github.com/RolandPheasant")); ZoomOutCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale + 5; }); ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; }); ExitCommmand = new Command(() => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); Application.Current.Shutdown(); }); WindowExiting = () => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); }; Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}"; var fileDropped = DropMonitor.Dropped.Subscribe(OpenFile); var isEmptyChecker = Views.ToObservableChangeSet() .ToCollection() .Select(items => items.Count) .StartWith(0) .Select(count => count == 0) .LogErrors(logger) .Subscribe(isEmpty => IsEmpty = isEmpty); var openRecent = recentFilesViewModel.OpenFileRequest .LogErrors(logger) .Subscribe(file => { MenuIsOpen = false; OpenFile(file); }); _cleanUp = new CompositeDisposable(recentFilesViewModel, isEmptyChecker, fileDropped, DropMonitor, openRecent, Disposable.Create(() => { Views.Select(vc => vc.Content) .OfType <IDisposable>() .ForEach(d => d.Dispose()); })); }
public WindowViewModel(IObjectProvider objectProvider, IWindowFactory windowFactory, ILogger logger, IWindowsController windowsController, RecentFilesViewModel recentFilesViewModel, GeneralOptionsViewModel generalOptionsViewModel, ISchedulerProvider schedulerProvider, IApplicationStatePublisher applicationStatePublisher) { _logger = logger; _windowsController = windowsController; RecentFiles = recentFilesViewModel; GeneralOptions = generalOptionsViewModel; _schedulerProvider = schedulerProvider; _objectProvider = objectProvider; InterTabClient = new InterTabClient(windowFactory); OpenFileCommand = new Command(OpenFile); ShowInGitHubCommand = new Command(()=> Process.Start("https://github.com/RolandPheasant")); ZoomOutCommand= new Command(()=> { GeneralOptions.Scale = GeneralOptions.Scale + 5; }); ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; }); CollectMemoryCommand = new Command(() => { //Diagnostics [useful for memory testing] GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); }); ExitCommmand = new Command(() => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); Application.Current.Shutdown(); }); WindowExiting = () => { applicationStatePublisher.Publish(ApplicationState.ShuttingDown); }; Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}"; var fileDropped = DropMonitor.Dropped.Subscribe(OpenFile); var isEmptyChecker = Views.ToObservableChangeSet() .ToCollection() .Select(items=>items.Count) .StartWith(0) .Select(count=>count==0) .LogErrors(logger) .Subscribe(isEmpty=> IsEmpty = isEmpty); var openRecent = recentFilesViewModel.OpenFileRequest .LogErrors(logger) .Subscribe(file => { MenuIsOpen = false; OpenFile(file); }); var selectedChange = this.WhenValueChanged(vm => vm.Selected) .Subscribe(selected => { var currentSelection = selected?.Content as ISelectedAware; Views.Where(hv=> !hv.Equals(selected)) .Select(hv => hv.Content) .OfType<ISelectedAware>() .ForEach(selectedAware => selectedAware.IsSelected = false); if (currentSelection != null) currentSelection.IsSelected = true; }); _cleanUp = new CompositeDisposable(recentFilesViewModel, isEmptyChecker, fileDropped, DropMonitor, openRecent, selectedChange, Disposable.Create(() => { Views.Select(vc => vc.Content) .OfType<IDisposable>() .ForEach(d=>d.Dispose()); })); }