예제 #1
0
        public OpenedFileViewModel(NxFile nxFile, IServiceProvider serviceProvider)
        {
            serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            _nxFile         = nxFile ?? throw new ArgumentNullException(nameof(nxFile));
            Content         = new ContentViewModel(_nxFile.RootItem, serviceProvider);
            FileOverview    = new FileOverviewViewModel(_nxFile.Overview, serviceProvider);

            OpenFileLocationCommand          = serviceProvider.GetRequiredService <IOpenFileLocationCommand>();
            OpenFileLocationCommand.FilePath = _nxFile.Path;
        }
예제 #2
0
        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);
        }