/* Function: AddAllFiles * Goes through all the files for all the used styles and calls <Files.Manager.AddOrUpdateFile()> on each one. */ override public void AddAllFiles(CancelDelegate cancelDelegate) { status.Reset(); Styles.FileSource stylesFileSource = (Styles.FileSource)FileSource; IList <Style> styles = stylesFileSource.Styles; // String stack instead of Path stack because the IO functions will return strings and there's no need to normalize // them all or otherwise use Path functions on them. Stack <string> foldersToSearch = new Stack <string>(); foldersToSearch.Push(EngineInstance.Config.SystemStyleFolder); foldersToSearch.Push(EngineInstance.Config.ProjectConfigFolder); status.AddFolders(Files.InputType.Style, 2); while (foldersToSearch.Count > 0) { string folder = foldersToSearch.Pop(); string[] subfolders = System.IO.Directory.GetDirectories(folder); status.AddFolders(Files.InputType.Style, subfolders.Length); if (cancelDelegate()) { return; } foreach (string subfolder in subfolders) { foldersToSearch.Push(subfolder); } string[] files = System.IO.Directory.GetFiles(folder); if (cancelDelegate()) { return; } foreach (string file in files) { if (cancelDelegate()) { return; } Path filePath = file; foreach (Style style in styles) { if (style.Contains(filePath)) { status.AddFiles(Files.FileType.Style, 1); Manager.AddOrUpdateFile(filePath, Files.FileType.Style, System.IO.File.GetLastWriteTimeUtc(file), stylesFileSource.ForceReparse); break; } } } } }
/* Function: Start * Initializes the manager and returns whether all the settings are correct and that execution is ready to begin. * If there are problems they are added as <Errors> to the errorList parameter. This class is *not* designed to allow * multiple attempts. If this function fails scrap the entire <Engine.Instance> and start again. */ public bool Start(ErrorList errorList) { bool success = true; fileSource = new Styles.FileSource(this); EngineInstance.Files.AddFileSource(fileSource); return(success); }
/* Function: FileSourceAdder */ public FileSourceAdder(Styles.FileSource fileSource, Engine.Instance engineInstance) : base(fileSource, engineInstance) { }