private void Patch(DirectoryInfo translationDir, GameLocationInfo gameLocation) { if (CancelEvent.IsSet()) return; Dictionary<string, string> dic = ReadStrings(translationDir); if (CancelEvent.IsSet()) return; FileSystemInjectionSource source = new FileSystemInjectionSource(); source.RegisterStrings(dic); UiArchiveTreeBuilder builder = new UiArchiveTreeBuilder(gameLocation); UiArchives archives = builder.Build(); Position = 0; Maximum = archives.Count; foreach (UiContainerNode archive in archives) { Check(archive); OnProgress(1); } if (CancelEvent.IsSet()) return; IUiLeafsAccessor[] accessors = archives.AccessToCheckedLeafs(new Wildcard("*"), null, false).ToArray(); Position = 0; Maximum = accessors.Length; UiInjectionManager manager = new UiInjectionManager(); foreach (IUiLeafsAccessor accessor in accessors) { accessor.Inject(source, manager); OnProgress(1); } manager.WriteListings(); }
private async Task RefreshContent(GameLocationInfo obj) { try { if (CheckAccess()) { _treeNodes = await InteractionService.GameLocation.Provide().ArchivesTree; _treeView.ItemsSource = _treeNodes; SelectNode(); IsEnabled = true; } else { await Dispatcher.Invoke(async () => await RefreshContent(obj)); } } catch (Exception ex) { ClearContent(); UiHelper.ShowError(this, ex); } }