public static HashSet <string> GenerateTags(ImportFolderConfig folderConfig, string resourcePath)
        {
            var rootPath = folderConfig.FullPath;
            var fileName = Path.GetFileNameWithoutExtension(resourcePath);

            var tags = BuildDumbTags(GetTagGenerationString(folderConfig.AutoTagMode));

            foreach (var tag in folderConfig.AdditionalTags)
            {
                tags.Add(tag);
            }

            tags.Add("folder: " + rootPath.ToLowerInvariant());

            return(tags);

            string GetTagGenerationString(AutoTagMode mode)
            {
                switch (mode)
                {
                case AutoTagMode.ExplodeResourcePath: return(resourcePath);

                case AutoTagMode.ExplodeFileName: return(fileName);

                default: return(string.Empty);
                }
            }
        }
示例#2
0
        public async void Receive(AddImportFolderMessage message)
        {
            var newConfig = new ImportFolderConfig
            {
                FullPath           = Path.GetFullPath(message.FolderPath),
                ScanSubDirectories = message.ScanSubDirectories,
                AdditionalTags     = message.Tags.OrderBy(tag => tag).Distinct().ToList(),
                Rotation           = message.RotateOnImport ? message.Rotation : (Vector3?)null,
                Scale       = message.ScaleOnImport ? message.Scale : (Vector3?)null,
                AutoTagMode = AutoTagMode.ExplodeResourcePath
            };

            var folder = _importFolderFactory.Create(newConfig);

            var folders = SavedFolders
                          .Append(folder)
                          .OrderBy(f => f.DisplayName)
                          .ToList();

            await SaveAndRefreshAsync(folders);

            _ = folder.InitializeAsync();

            // Switch to added folder
            _relay.Send(this, new SearchChangedMessage {
                SearchTags = new[] { "folder: " + newConfig.FullPath.ToLowerInvariant() }
            });
        }
示例#3
0
        public IImportFolder Create(ImportFolderConfig folderConfig)
        {
            var folder = new ImportFolder(folderConfig, new FolderFileSystem(folderConfig.FullPath));

            folder.Subscribe(_subscriber);

            return(folder);
        }
示例#4
0
        public ImportFolder(
            [NotNull] ImportFolderConfig config,
            [NotNull] IFileSystem fileSystem)
        {
            _config     = config ?? throw new ArgumentNullException(nameof(config));
            _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));

            // _timer = new Timer(500) {AutoReset = false, Enabled = false};
            // _timer.Elapsed += TimerOnElapsed;
        }
示例#5
0
 public static string GetFolderTag(ImportFolderConfig config)
 {
     return("folder: " + config.FullPath.ToLowerInvariant());
 }