diff --git a/components/wiki/test/wikisearchdemo.lpi b/components/wiki/test/wikisearchdemo.lpi index 22f846c73a..17c2b7e119 100644 --- a/components/wiki/test/wikisearchdemo.lpi +++ b/components/wiki/test/wikisearchdemo.lpi @@ -30,19 +30,22 @@ - + - + - + - + - + + + + diff --git a/components/wiki/test/wikisearchmain.lfm b/components/wiki/test/wikisearchmain.lfm index deb16200f4..b156577129 100644 --- a/components/wiki/test/wikisearchmain.lfm +++ b/components/wiki/test/wikisearchmain.lfm @@ -55,8 +55,19 @@ object WikiSearchDemoForm: TWikiSearchDemoForm AutoSize = True Caption = 'Search' OnClick = ShowSearchToolButtonClick + ParentShowHint = False + ShowHint = True Visible = False end + object ShowHTMLToolButton: TToolButton + Left = 47 + Top = 2 + AutoSize = True + Caption = 'HTML' + OnClick = ShowHTMLToolButtonClick + ParentShowHint = False + ShowHint = True + end end end object Splitter1: TSplitter diff --git a/components/wiki/test/wikisearchmain.pas b/components/wiki/test/wikisearchmain.pas index 6c28763ff5..968f04bab1 100644 --- a/components/wiki/test/wikisearchmain.pas +++ b/components/wiki/test/wikisearchmain.pas @@ -28,7 +28,7 @@ uses Classes, SysUtils, math, FileUtil, LazLogger, LazUTF8, LazFileUtils, laz2_DOM, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, ComCtrls, LCLIntf, IpHtml, Ipfilebroker, IpMsg, - CodeToolManager, CodeCache, + CodeToolManager, CodeCache, SynEdit, SynHighlighterHTML, WikiHelpManager, WikiSearchOptions, WikiParser; type @@ -58,6 +58,7 @@ type Splitter1: TSplitter; Timer1: TTimer; ShowSearchToolButton: TToolButton; + ShowHTMLToolButton: TToolButton; function DataProviderCanHandle(Sender: TObject; const {%H-}URL: string): Boolean; procedure DataProviderGetImage(Sender: TIpHtmlNode; const URL: string; var Picture: TPicture); @@ -68,6 +69,7 @@ type procedure IpHtmlPanelHotClick(Sender: TObject); procedure OptionsButtonClick(Sender: TObject); procedure SearchEditChange(Sender: TObject); + procedure ShowHTMLToolButtonClick(Sender: TObject); procedure ShowSearchToolButtonClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private @@ -76,6 +78,8 @@ type fLastScoring: TWHScoring; FIdleConnected: boolean; FURLDataProvider: TWikiIpHtmlDataProvider; + FPageURL: string; + FPageSource: string; procedure QueryChanged; procedure SetIdleConnected(AValue: boolean); procedure UpdateProgress; @@ -132,6 +136,7 @@ begin // page panel ShowSearchToolButton.Caption:='Search'; + ShowHTMLToolButton.Hint:='View HTML Source'; FURLDataProvider:=TWikiIpHtmlDataProvider.Create(nil); ResultsIpHtmlPanel.DataProvider:=FURLDataProvider; @@ -276,7 +281,13 @@ begin end; WikiHelp.SavePageToStream(DocumentName,ms); ms.Position:=0; + SetLength(Src,ms.Size); + if Src<>'' then + ms.Read(Src[1],length(Src)); + ms.Position:=0; LoadHTML(PageIpHtmlPanel,ms); + FPageSource:=Src; + FPageURL:=HRef; except on E: Exception do begin Src:='Error: '+EncodeLesserAndGreaterThan(E.Message)+''; @@ -298,6 +309,36 @@ begin IdleConnected:=true; end; +procedure TWikiSearchDemoForm.ShowHTMLToolButtonClick(Sender: TObject); +var + ViewSrcForm: TForm; + SrcEdit: TSynEdit; + Highlighter: TSynHTMLSyn; +begin + if (FPageURL='') then exit; + ViewSrcForm:=TForm.Create(Self); + ViewSrcForm.DisableAutoSizing; + try + ViewSrcForm.Caption:='HTML Source of '+FPageURL; + ViewSrcForm.Position:=poScreenCenter; + ViewSrcForm.Width:=500; + ViewSrcForm.Height:=500; + + Highlighter:=TSynHTMLSyn.Create(ViewSrcForm); + + SrcEdit:=TSynEdit.Create(ViewSrcForm); + SrcEdit.Align:=alClient; + SrcEdit.Text:=FPageSource; + SrcEdit.Highlighter:=Highlighter; + SrcEdit.Parent:=ViewSrcForm; + SrcEdit.ReadOnly:=true; + + ViewSrcForm.Show; + finally + ViewSrcForm.EnableAutoSizing; + end; +end; + procedure TWikiSearchDemoForm.ShowSearchToolButtonClick(Sender: TObject); begin DisableAutoSizing;