internal PageThemeCodeDomTreeGenerator(PageThemeParser parser) : base(parser) { this._controlSkinTypeNameCollection = new Hashtable(); this._controlSkinBuilderEntryList = new ArrayList(); this._controlSkinDelegateType = new CodeTypeReference(typeof(ControlSkinDelegate)); this._controlSkinType = new CodeTypeReference(typeof(ControlSkin)); this._themeParser = parser; }
public PageThemeCompiler(PageThemeParser parser) : base(parser) { this.parser = parser; }
protected override TemplateParser CreateParser(VirtualPath virtualPath, string inputFile, HttpContext context) { string vp = VirtualPathUtility.AppendTrailingSlash(virtualPath.Original); string physicalPath = virtualPath.PhysicalPath; if (!Directory.Exists(physicalPath)) { throw new HttpException(String.Concat("Theme '", virtualPath.Original, "' cannot be found in the application or global theme directories.")); } PageThemeParser ptp = new PageThemeParser(virtualPath, context); string[] css_files = Directory.GetFiles(physicalPath, "*.css"); string[] css_urls = new string [css_files.Length]; for (int i = 0; i < css_files.Length; i++) { css_urls [i] = VirtualPathUtility.Combine(vp, Path.GetFileName(css_files [i])); ptp.AddDependency(css_urls [i]); } Array.Sort(css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry(); ptp.RootBuilder = new RootBuilder(); string [] skin_files = Directory.GetFiles(physicalPath, "*.skin"); string skin_file_url; AspGenerator generator; foreach (string skin_file in skin_files) { skin_file_url = VirtualPathUtility.Combine(vp, Path.GetFileName(skin_file)); PageThemeFileParser ptfp = new PageThemeFileParser(new VirtualPath(skin_file_url), skin_file, context); ptp.AddDependency(skin_file_url); generator = new AspGenerator(ptfp, shared_foundry); generator.Parse(); if (ptfp.RootBuilder.Children != null) { foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) { continue; } ptp.RootBuilder.AppendSubBuilder((ControlBuilder)o); } } foreach (string ass in ptfp.Assemblies) { if (!ptp.Assemblies.Contains(ass)) { ptp.AddAssemblyByFileName(ass); } } } return(ptp); }
internal PageThemeCodeDomTreeGenerator(PageThemeParser parser) : base(parser) { _themeParser = parser; }