Merge pull request #184 from Noggog/compilerVM-status-tracker

Compiler vm status tracker
This commit is contained in:
Timothy Baldridge 2019-11-17 06:55:08 -07:00 committed by GitHub
commit 7dfe295191
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 12 deletions

View File

@ -70,9 +70,6 @@
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="ReactiveUI">
<HintPath>..\..\..\Users\tbald\.nuget\packages\reactiveui\10.5.7\lib\net461\ReactiveUI.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />

View File

@ -29,6 +29,9 @@ namespace Wabbajack
private readonly ObservableAsPropertyHelper<ModlistSettingsEditorVM> _CurrentModlistSettings;
public ModlistSettingsEditorVM CurrentModlistSettings => _CurrentModlistSettings.Value;
private readonly ObservableAsPropertyHelper<StatusUpdateTracker> _CurrentStatusTracker;
public StatusUpdateTracker CurrentStatusTracker => _CurrentStatusTracker.Value;
public CompilerVM(MainWindowVM mainWindowVM)
{
this.MWVM = mainWindowVM;
@ -72,6 +75,10 @@ namespace Wabbajack
this._CurrentModlistSettings = this.WhenAny(x => x.Compiler.ModlistSettings)
.ToProperty(this, nameof(this.CurrentModlistSettings));
// Let sub VM determine what progress we're seeing
this._CurrentStatusTracker = this.WhenAny(x => x.Compiler.StatusTracker)
.ToProperty(this, nameof(this.CurrentStatusTracker));
this._Image = this.WhenAny(x => x.CurrentModlistSettings.ImagePath.TargetPath)
// Throttle so that it only loads image after any sets of swaps have completed
.Throttle(TimeSpan.FromMilliseconds(50), RxApp.MainThreadScheduler)

View File

@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Wabbajack.Common;
namespace Wabbajack
{
@ -13,6 +14,7 @@ namespace Wabbajack
IReactiveCommand BeginCommand { get; }
bool Compiling { get; }
ModlistSettingsEditorVM ModlistSettings { get; }
StatusUpdateTracker StatusTracker { get;}
void Unload();
}
}

View File

@ -36,6 +36,9 @@ namespace Wabbajack
private readonly ObservableAsPropertyHelper<ModlistSettingsEditorVM> _ModlistSettings;
public ModlistSettingsEditorVM ModlistSettings => _ModlistSettings.Value;
[Reactive]
public StatusUpdateTracker StatusTracker { get; private set; }
public MO2CompilerVM(CompilerVM parent)
{
this.ModlistLocation = new FilePickerVM()
@ -110,13 +113,6 @@ namespace Wabbajack
ModListWebsite = this.ModlistSettings.Website,
ModListReadme = this.ModlistSettings.ReadMeText.TargetPath,
};
var update_tracker = compiler.UpdateTracker;
update_tracker.Progress
.CombineLatest(update_tracker.StepName, update_tracker.MaxStep, update_tracker.Step,
(progress, name, max, step) => new {progress, name, max, step})
.Debounce(new TimeSpan(0, 0, 0, 0, 100))
.Subscribe(a =>
Utils.Log($"{a.progress} - ({a.step}/{a.max}) {a.name}"));
}
catch (Exception ex)
{
@ -128,6 +124,7 @@ namespace Wabbajack
{
try
{
this.StatusTracker = compiler.UpdateTracker;
compiler.Compile();
}
catch (Exception ex)
@ -135,6 +132,10 @@ namespace Wabbajack
while (ex.InnerException != null) ex = ex.InnerException;
Utils.Log($"Compiler error: {ex.ExceptionToString()}");
}
finally
{
this.StatusTracker = null;
}
});
});
this._Compiling = this.BeginCommand.IsExecuting

View File

@ -49,6 +49,9 @@ namespace Wabbajack
public ICommand FindGameInGogCommand { get; }
[Reactive]
public StatusUpdateTracker StatusTracker { get; private set; }
public VortexCompilerVM(CompilerVM parent)
{
this.GameLocation = new FilePickerVM()
@ -100,6 +103,7 @@ namespace Wabbajack
{
try
{
this.StatusTracker = compiler.UpdateTracker;
compiler.Compile();
}
catch (Exception ex)
@ -107,6 +111,10 @@ namespace Wabbajack
while (ex.InnerException != null) ex = ex.InnerException;
Utils.Log($"Compiler error: {ex.ExceptionToString()}");
}
finally
{
this.StatusTracker = null;
}
});
});
this._Compiling = this.BeginCommand.IsExecuting