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;