public NxFile Load(string filePath) { _logger.LogInformation(LocalizationManager.Instance.Current.Keys.Log_OpeningFile.SafeFormat(filePath)); HashSet <MissingKey> missingKeys = new(); _fileItemLoader.MissingKey += (_, args) => { var ex = args.Exception; var missingKey = new MissingKey(ex.Name, ex.Type); missingKeys.Add(missingKey); }; IItem rootItem; FileOverview fileOverview; switch (_fileTypeAnalyzer.GetFileType(filePath)) { case FileType.UNKNOWN: throw new FileNotSupportedException(filePath); case FileType.XCI: var xciItem = _fileItemLoader.LoadXci(filePath); fileOverview = _fileOverviewLoader.Load(xciItem); rootItem = xciItem; break; case FileType.NSP: var nspItem = _fileItemLoader.LoadNsp(filePath); fileOverview = _fileOverviewLoader.Load(nspItem); rootItem = nspItem; break; default: throw new ArgumentOutOfRangeException(); } foreach (var missingKey in missingKeys) { fileOverview.MissingKeys.Add(missingKey); } var openedFile = new NxFile(filePath, rootItem, fileOverview); return(openedFile); }
private void OnMissingKey(string language, string @namespace, string key, List <string> possibleKeys) { if (MissingKey == null && MissingKeyHandlers.Count == 0) { return; } var args = new MissingKeyEventArgs(language, @namespace, key, possibleKeys.ToArray()); MissingKey?.Invoke(this, args); foreach (var missingKeyHandler in MissingKeyHandlers) { missingKeyHandler.HandleMissingKeyAsync(this, args); } }
private void NotifyMissingKey(MissingKeyException ex, IItem parentItem) { MissingKey?.Invoke(this, new MissingKeyExceptionHandlerArgs(ex, parentItem)); }