예제 #1
0
 protected override void _Execute(atom.Trace context, int level, string url, string file)
 {
     {
         context.
         SetFontState(NAME.FONT_STATE.BLINK).
         SetProgress(NAME.PROGRESS.INFINITE).
         SendPreview(NAME.TYPE.INFO, url);
     }
     {
         context.Send(NAME.SOURCE.PREVIEW, NAME.TYPE.HEADER, level, "[[[Info]]]");
         {
             context.Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PARAMETER, level + 1, "[[[File Name]]]", url);
             context.Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PARAMETER, level + 1, "[[[File Size]]]", (new FileInfo(file)).Length.ToString());
             context.Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PARAMETER, level + 1, "[[[Raw Format]]]", "CSS");
         }
     }
     {
         context.
         SetControl(NAME.CONTROL.BROWSER).
         SetUrl(url).
         Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level).
         Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level);
     }
     {
         var a_Context = new Thread(__BrowserThread);
         {
             a_Context.SetApartmentState(ApartmentState.STA);
             a_Context.Start(new Tuple <string, string, int>(url, file, level));
         }
     }
 }
예제 #2
0
 private static void __Execute(atom.Trace context, int level, string url, string file, string name, IEnumerable <HtmlNode> nodes)
 {
     if ((nodes != null) && (nodes.Count() > 0))
     {
         context.
         SetFontState(NAME.FONT_STATE.BOLD).
         Send(NAME.SOURCE.PREVIEW, NAME.TYPE.FOLDER, level, name);
         foreach (var a_Context in nodes)
         {
             var a_Name = "";
             {
                 var a_Context1 = a_Context.Attributes.FirstOrDefault(n => n.Name == "src");
                 if (a_Context1 != null)
                 {
                     a_Name = a_Context1.Value;
                 }
             }
             if (string.IsNullOrEmpty(a_Name))
             {
                 var a_Context1 = a_Context.Descendants().FirstOrDefault(n => n.Attributes.Contains("src"));
                 if (a_Context1 != null)
                 {
                     a_Name = a_Context1.Attributes?.FirstOrDefault(n => n.Name == "src")?.Value;
                 }
             }
             if (string.IsNullOrEmpty(a_Name))
             {
                 var a_Context1 = a_Context.Attributes.FirstOrDefault(n => n.Name == "href");
                 if (a_Context1 != null)
                 {
                     a_Name = a_Context1.Value;
                 }
             }
             if (string.IsNullOrEmpty(a_Name) == false)
             {
                 context.
                 SetUrlInfo(__GetUrl(url, a_Name));
             }
             {
                 context.
                 SetUrl(file, a_Context.Line, a_Context.LinePosition).
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.OBJECT, level + 1, __GetText(a_Context.OuterHtml));
             }
             if (string.IsNullOrEmpty(__GetControl(a_Context.Name)) == false)
             {
                 context.
                 SetControl(__GetControl(a_Context.Name)).
                 SetUrlPreview(__GetUrl(url, a_Name)).
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level + 2).
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level + 2).
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level + 2).
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.PREVIEW, level + 2);
             }
             if (GetState() == NAME.STATE.CANCEL)
             {
                 break;
             }
         }
     }
 }
예제 #3
0
 private static void __Execute(atom.Trace context, int level, string url, string file)
 {
     context.
     Send(NAME.SOURCE.PREVIEW, NAME.TYPE.FOOTER, level, "[[[Document]]]");
     if (string.IsNullOrEmpty(url) == false)
     {
         var a_Context = new HtmlWeb().Load(url);
         {
             var a_Context1 = a_Context.DocumentNode.Descendants();
             {
                 __Execute(context, level + 1, url, file, "[[[Anchors]]]", a_Context1.Where(n => n.Name.ToLower() == "a"));
                 __Execute(context, level + 1, url, file, "[[[Audios]]]", a_Context1.Where(n => n.Name.ToLower() == "audio"));
                 __Execute(context, level + 1, url, file, "[[[Canvases]]]", a_Context1.Where(n => n.Name.ToLower() == "canvas"));
                 __Execute(context, level + 1, url, file, "[[[Forms]]]", a_Context1.Where(n => n.Name.ToLower() == "form"));
                 __Execute(context, level + 1, url, file, "[[[Images]]]", a_Context1.Where(n => n.Name.ToLower() == "img").Concat(a_Context1.Where(n => n.Name.ToLower() == "svg")));
                 __Execute(context, level + 1, url, file, "[[[Links]]]", a_Context1.Where(n => n.Name.ToLower() == "link"));
                 __Execute(context, level + 1, url, file, "[[[Metadata]]]", a_Context1.Where(n => n.Name.ToLower() == "meta"));
                 __Execute(context, level + 1, url, file, "[[[Frames]]]", a_Context1.Where(n => n.Name.ToLower() == "iframe"));
                 __Execute(context, level + 1, url, file, "[[[Scripts]]]", a_Context1.Where(n => n.Name.ToLower() == "script"));
                 __Execute(context, level + 1, url, file, "[[[Styles]]]", a_Context1.Where(n => n.Name.ToLower() == "style"));
                 __Execute(context, level + 1, url, file, "[[[Videos]]]", a_Context1.Where(n => n.Name.ToLower() == "video"));
             }
         }
         if (a_Context.ParseErrors != null && a_Context.ParseErrors?.Count() > 0)
         {
             var a_IsFound = false;
             {
                 context.
                 Send(NAME.SOURCE.PREVIEW, NAME.TYPE.FOLDER, level + 1, "[[[Errors]]]");
                 foreach (var a_Context1 in a_Context.ParseErrors)
                 {
                     if (GetState() == NAME.STATE.CANCEL)
                     {
                         break;
                     }
                     if (a_IsFound == false)
                     {
                         context.
                         SetComment("{" + a_Context1.Code.ToString() + "}", "[[[Error Code]]]").
                         SetUrl(file, a_Context1.Line, a_Context1.LinePosition).
                         SetUrlPreview(url);
                         a_IsFound = true;
                     }
                     {
                         context.
                         Send(NAME.SOURCE.PREVIEW, NAME.TYPE.ERROR, level + 2, a_Context1.Reason?.Trim());
                     }
                 }
             }
         }
     }
     {
         context.
         SetFontState(NAME.FONT_STATE.NONE).
         SetProgress(100).
         SendPreview(NAME.TYPE.INFO, url);
     }
 }