├── Simple.Wpf.Exceptions
├── Services
│ ├── IService.cs
│ ├── IGestureService.cs
│ ├── IApplicationService.cs
│ ├── IOverlayService.cs
│ ├── IMessageService.cs
│ ├── ISchedulerService.cs
│ ├── OverlayService.cs
│ ├── SchedulerService.cs
│ ├── GesturesService.cs
│ ├── ApplicationService.cs
│ └── MessageService.cs
├── ViewModels
│ ├── IMainViewModel.cs
│ ├── ITransientViewModel.cs
│ ├── IExceptionViewModel.cs
│ ├── IViewModel.cs
│ ├── ICloseableViewModel.cs
│ ├── IChromeViewModel.cs
│ ├── OverlayViewModel.cs
│ ├── ChromeViewModel.cs
│ ├── CloseableViewModel.cs
│ ├── MainViewModel.cs
│ ├── ExceptionViewModel.cs
│ └── BaseViewModel.cs
├── Simple.Wpf.Exceptions.v2.ncrunchproject
├── Properties
│ ├── Settings.settings
│ ├── AssemblyInfo.cs
│ ├── Settings.Designer.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Views
│ ├── Converters.xaml
│ ├── Styles.xaml
│ ├── MessageDialog.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ └── Templates.xaml
├── Extensions
│ ├── UnitExtensions.cs
│ ├── AddRangeExtensions.cs
│ ├── ToObservableCollectionExtensions.cs
│ ├── CompositeDisposableExtensions.cs
│ ├── ForEachExtensions.cs
│ ├── NotifyCollectionChangedExtensions.cs
│ ├── SchedulerExtensions.cs
│ ├── NotifyPropertyChangedExtensions.cs
│ └── ObservableExtensions.cs
├── Models
│ ├── Message.cs
│ └── DisposableObject.cs
├── Helpers
│ ├── ExpressionHelper.cs
│ └── LogHelper.cs
├── Constants.cs
├── NLogFormattedThreadIdLayoutRenderer.cs
├── App.xaml
├── Duration.cs
├── NLog.config
├── Collections
│ └── RangeObservableCollection.cs
├── packages.config
├── Commands
│ └── ReactiveCommand.cs
├── app.config
├── BootStrapper.cs
├── App.xaml.cs
└── Simple.Wpf.Exceptions.csproj
├── Simple.Wpf.Exceptions.Tests
├── TestSchedulerExtensions.cs
├── NLog.config
├── TestHelper.cs
├── MockSchedulerService.cs
├── packages.config
├── Properties
│ └── AssemblyInfo.cs
├── app.config
├── MessageServiceFixtures.cs
├── MainViewModelFixtures.cs
├── ExceptionViewModelFixtures.cs
└── Simple.Wpf.Exceptions.Tests.csproj
├── Simple.Wpf.Exceptions.sln
├── README.md
└── .gitignore
/Simple.Wpf.Exceptions/Services/IService.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.Services
2 | {
3 | public interface IService
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/IMainViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | public interface IMainViewModel
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Simple.Wpf.Exceptions.v2.ncrunchproject:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oriches/Simple.Wpf.Exceptions/HEAD/Simple.Wpf.Exceptions/Simple.Wpf.Exceptions.v2.ncrunchproject
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/ITransientViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | public interface ITransientViewModel : IViewModel
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/IExceptionViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | public interface IExceptionViewModel : ICloseableViewModel
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Services/IGestureService.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.Services
2 | {
3 | public interface IGestureService : IService
4 | {
5 | void SetBusy();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/IViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | using System;
4 | using System.ComponentModel;
5 |
6 | public interface IViewModel : IDisposable, INotifyPropertyChanged
7 | {
8 | IDisposable SuspendNotifications();
9 | }
10 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Views/Converters.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Services/IApplicationService.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.Services
2 | {
3 | public interface IApplicationService : IService
4 | {
5 | string LogFolder { get; }
6 |
7 | void CopyToClipboard(string text);
8 | void Exit();
9 | void Restart();
10 | void OpenFolder(string folder);
11 | }
12 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Services/IOverlayService.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.Services
2 | {
3 | using System;
4 | using ViewModels;
5 |
6 | public interface IOverlayService : IService
7 | {
8 | IObservable Show { get; }
9 |
10 | void Post(string header, BaseViewModel viewModel, IDisposable lifetime);
11 | }
12 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/Services/IMessageService.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.Services
2 | {
3 | using System;
4 | using Models;
5 | using ViewModels;
6 |
7 | public interface IMessageService : IService
8 | {
9 | IObservable Show { get; }
10 |
11 | void Post(string header, ICloseableViewModel viewModel);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/ICloseableViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | using System;
4 | using System.Reactive;
5 |
6 | public interface ICloseableViewModel : ITransientViewModel
7 | {
8 | IObservable Closed { get; }
9 | IObservable Denied { get; }
10 | IObservable Confirmed { get; }
11 | }
12 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions.Tests/TestSchedulerExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Reactive.Testing;
3 |
4 | namespace Simple.Wpf.Exceptions.Tests
5 | {
6 | public static class TestSchedulerExtensions
7 | {
8 | public static void AdvanceBy(this TestScheduler testScheduler, TimeSpan timeSpan)
9 | {
10 | testScheduler.AdvanceBy(timeSpan.Ticks);
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/Simple.Wpf.Exceptions/ViewModels/IChromeViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Simple.Wpf.Exceptions.ViewModels
2 | {
3 | using Commands;
4 |
5 | public interface IChromeViewModel : IViewModel
6 | {
7 | IMainViewModel Main { get; }
8 | ReactiveCommand