mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-14 13:12:45 +02:00
wiki test: back, forward
git-svn-id: trunk@35861 -
This commit is contained in:
parent
be7753bef1
commit
0221e91fe4
@ -33,6 +33,7 @@ object WikiSearchDemoForm: TWikiSearchDemoForm
|
||||
DefaultTypeFace = 'default'
|
||||
DefaultFontSize = 10
|
||||
FlagErrors = False
|
||||
PopupMenu = PagePopupMenu
|
||||
PrintSettings.MarginLeft = 0.5
|
||||
PrintSettings.MarginTop = 0.5
|
||||
PrintSettings.MarginRight = 0.5
|
||||
@ -47,32 +48,39 @@ object WikiSearchDemoForm: TWikiSearchDemoForm
|
||||
Top = 1
|
||||
Width = 336
|
||||
Caption = 'PageToolBar'
|
||||
Images = ImageList1
|
||||
ShowCaptions = True
|
||||
TabOrder = 1
|
||||
object ShowSearchToolButton: TToolButton
|
||||
Left = 1
|
||||
Top = 2
|
||||
AutoSize = True
|
||||
Caption = 'Search'
|
||||
ImageIndex = 1
|
||||
OnClick = ShowSearchToolButtonClick
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Visible = False
|
||||
end
|
||||
object ShowHTMLToolButton: TToolButton
|
||||
Left = 47
|
||||
object SearchSepToolButton: TToolButton
|
||||
Left = 24
|
||||
Top = 2
|
||||
AutoSize = True
|
||||
Caption = 'HTML'
|
||||
OnClick = ShowHTMLToolButtonClick
|
||||
Width = 5
|
||||
Caption = 'SearchSepToolButton'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object BackToolButton: TToolButton
|
||||
Left = 29
|
||||
Top = 2
|
||||
ImageIndex = 2
|
||||
OnClick = BackToolButtonClick
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
end
|
||||
object ShowWikiSrcToolButton: TToolButton
|
||||
Left = 85
|
||||
object ForwardToolButton: TToolButton
|
||||
Left = 52
|
||||
Top = 2
|
||||
Caption = 'Source'
|
||||
OnClick = ShowWikiSrcToolButtonClick
|
||||
ImageIndex = 3
|
||||
OnClick = ForwardToolButtonClick
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
end
|
||||
@ -210,4 +218,152 @@ object WikiSearchDemoForm: TWikiSearchDemoForm
|
||||
left = 411
|
||||
top = 139
|
||||
end
|
||||
object ImageList1: TImageList
|
||||
left = 211
|
||||
top = 175
|
||||
Bitmap = {
|
||||
4C69040000001000000010000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000858A884C858A
|
||||
88FF858A884C0000000000000000000000000000000000000000000000000000
|
||||
004C858A88FF858A884C00000000000000000000000000000000858A88FFE9EB
|
||||
ECFF858A88FF858A884C000000000000000000000000000000000000004C858A
|
||||
88FFEEEFEFFC858A88FF0000000000000000000000000000000000000000858A
|
||||
88FFEEF0F0FF858A88FF00000000000000000000000000000000858A88FFF0F0
|
||||
F0FF858A88FF0000004C00000000858A884C858A88FF00000000858A884C858A
|
||||
88FFFAFAFAFF858A88FF000000000000000000000000858A884C858A88FF878C
|
||||
8AFF0000004C0000000000000000858A88FFF5F6F6FEA9ACABFF858A88FFF7F7
|
||||
F7FFE2E3E5FFAAADADFFECEEEE8100000000858A884C858A88FF858A884C0000
|
||||
0000000000000000000000000000858A884C858A88FFF3F3F3FEEFF0F0FFEDEE
|
||||
EEFEEAECECFEB6B9BAFF858A88FF858A884C858A88FF858A884C000000000000
|
||||
000000000000000000000000000000000000858A884C858A88FF858A88FF858A
|
||||
88FF858A88FFD0D1D2FFA3A4A4FF858A88FF858A888100000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000B5B7B8FF858A88FFB7B8B9FF858A88FF858A884C000000020000
|
||||
00000000000000000000000000000000000000000000874A2019874A20FF874A
|
||||
20FF874A20FF85837DFFAAADADFFC8C9CAFFBDBEBFFF858A88FF858A884C0000
|
||||
000000000000000000000000000000000000874A2019874A20FFCCBBADFFCCBB
|
||||
ADFFB3937CFF874A20FF858A8881858A88FFD3D3D4FFBDBEBFFF858A88FF858A
|
||||
884C000000020000000000000000874A2030874A20FFD4C8BDFFA48D78FFA48D
|
||||
78FFBEA592FF874A20FF00000000858A884C858A88FFE2E3E4FFC2C4C6FF858A
|
||||
88FF858A88810000000000000000874A20FFCCBBADFFA48D78FFA28A74FFB495
|
||||
7AFFB3937CFF874A20FF0000000000000000858A884C858A88FFD2D3D4FFC2C3
|
||||
C4FF858A88FF0000000000000000874A20FFCCBBADFFA7917DFFB5957AFFAE8B
|
||||
72FF874A20FF874A2044000000000000000000000000858A884C858A88FF9EA1
|
||||
A0FF858A88FF0000000000000000874A20FFBEA592FFB89C86FFB89C86FF874A
|
||||
20FF874A20440000000000000000000000000000000000000000858A8881858A
|
||||
88D3858A88810000000000000000874A2056874A20FF874A20FF874A20FF874A
|
||||
2044000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009C8F
|
||||
83E2BCB0A4FF9D9185FFFFFFFF00AEA093FF9D9185FF655D55DAFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008E83
|
||||
78E2C3B8AEFF655D55FFFFFFFF007C7268FFA89B8EFF9C8F83E4FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00746B62FFA4978AFF9589
|
||||
7DFF9F9286FF3E3934FFFFFFFF004C4640FF7E746AFF857A70FF3E3934FF453F
|
||||
3AA72522200C15131102FFFFFF00B9ACA008877D72489B8E82FF9D9185FF867B
|
||||
71FF564F48FF504A44FF80766CFF6E665DFF826C58FFA6917DFF948474FF564F
|
||||
48FF0C0B0B7A07070601FFFFFF00AB9D9004AFA194E1BAAEA2FF82776DFF8277
|
||||
6DFFAA917BFFBAA794FFB7A48EFAB09781FF9F8D7DFF836D5BFF716357FF9589
|
||||
7DFF040403E000000003FFFFFF009F9286059D9185FFB1A396FF7F756BFF7C72
|
||||
68FF776D64FF6C635BFF2E2A26FF564F48FF80766CFF7C7268FF776D64FF7067
|
||||
5EFF000000FE00000005FFFFFF00797066055C554EF9423D38FF58514AFF3D38
|
||||
33FF332F2BFF23201DE5171614301E1C19B51A1816FF252220FF191715FF0F0E
|
||||
0DFF010101EE00000002FFFFFF00FFFFFF005A524CC39F9286FFCCC3BAFFC0B4
|
||||
AAFFA6988BFF3E3934A8FFFFFF002C2925A8908479FFC2B8ADFFC0B4AAFFA89B
|
||||
8EFF110F0EC3FFFFFF00FFFFFF00FFFFFF00534C46FC83786FFFCCC3BAFF7970
|
||||
66FF71685FFF37332ED5FFFFFF00252220D5857A70FFC2B8ADFF786F65FF7B71
|
||||
67FF0A0908FCFFFFFF00FFFFFF00FFFFFF004D4741FF83786FFFCCC3BAFF786F
|
||||
65FF7B7167FF2F2B28F9272421011D1B18EE95897DFFC2B8ADFF786F65FF7C72
|
||||
68FF060505FFFFFFFF00FFFFFF00FFFFFF0046413BFF857A70FFC3B8AEFF7C72
|
||||
68FF7F756BFF36322DFF1E1C190F282522D495897DFFBAAEA2FF7C7268FF7F75
|
||||
6BFF010101FFFFFFFF00FFFFFF00FFFFFF003E3934FF393430FF332F2BFF2C29
|
||||
25FF272421FF201D1BFF1716141A110F0EDB0B0A09FF070706FF040403FF0000
|
||||
00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C7740668C7
|
||||
74BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774DB65C3
|
||||
71F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774D180CD8BFF7CC9
|
||||
87FF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
|
||||
3BFF2F7835FF2A702FFFFFFFFF00FFFFFF0068C774C97FCC8AFFA2D8ABFF9ED6
|
||||
A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA90FF85C78BFF81C587FF7DC2
|
||||
82FF78C07EFF256929FFFFFFFF00FFFFFF0065C371C47BC886FF9CD5A5FF98D3
|
||||
A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C689FF7EC384FF7AC180FF76BE
|
||||
7CFF72BD78FF216324FFFFFFFF00FFFFFF00FFFFFF005DB868CF71BE7BFF7AC1
|
||||
83FF5BAA64FF47994FFF419149FF3B8842FF35803BFF2F7835FF2A702FFF2569
|
||||
29FF216324FF1D5E20FFFFFFFF00FFFFFF00FFFFFF00FFFFFF0053A95CD94DA1
|
||||
56F747994F38FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004DA156064799
|
||||
4FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0047994FBB4191
|
||||
4906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00419149F73B88
|
||||
42DBFFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774FF68C774FF65C371FF61BE
|
||||
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF5AA362FF559D
|
||||
5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF0068C774FFA5DAAEFFA2D8ABFF9ED6
|
||||
A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA90FF85C78BFF81C587FF7DC2
|
||||
82FF4A9150FF256929C9FFFFFF00FFFFFF0065C371FFA0D7A9FF9CD5A5FF98D3
|
||||
A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C689FF7EC384FF7AC180FF76BE
|
||||
7CFF458C4AFF216324C4FFFFFF00FFFFFF0061BE6DFF5DB868FF58B162FF53A9
|
||||
5CFF4DA156FF47994FFF419149FF3B8842FF35803BFF3F8845FF59A15EFF448B
|
||||
49FF216324CFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002A702F38256929F72163
|
||||
24D9FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00216324B81D5E
|
||||
2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
end
|
||||
object PagePopupMenu: TPopupMenu
|
||||
OnPopup = PagePopupMenuPopup
|
||||
left = 456
|
||||
top = 139
|
||||
object ViewHTMLMenuItem: TMenuItem
|
||||
Caption = 'ViewHTMLMenuItem'
|
||||
OnClick = ViewHTMLMenuItemClick
|
||||
end
|
||||
object ViewWikiSourceMenuItem: TMenuItem
|
||||
Caption = 'ViewWikiSourceMenuItem'
|
||||
OnClick = ViewWikiSourceMenuItemClick
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -27,9 +27,9 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, math, FileUtil, LazLogger, LazUTF8, LazFileUtils, laz2_DOM,
|
||||
Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, ComCtrls, LCLIntf,
|
||||
IpHtml, Ipfilebroker, IpMsg,
|
||||
CodeToolManager, CodeCache, SynEdit, SynHighlighterHTML, SynEditHighlighter,
|
||||
WikiHelpManager, WikiSearchOptions, WikiParser, WikiFormat;
|
||||
Menus, IpHtml, Ipfilebroker, IpMsg, CodeToolManager, CodeCache, SynEdit,
|
||||
SynHighlighterHTML, SynEditHighlighter, WikiHelpManager, WikiSearchOptions,
|
||||
WikiParser, WikiFormat;
|
||||
|
||||
type
|
||||
|
||||
@ -42,13 +42,49 @@ type
|
||||
public
|
||||
end;
|
||||
|
||||
{ TWikiPageHistoryItem }
|
||||
|
||||
TWikiPageHistoryItem = class
|
||||
public
|
||||
DocumentName: string;
|
||||
Anchor: string;
|
||||
Title: string;
|
||||
constructor Create(TheDocumentName, TheAnchor, TheTitle: string);
|
||||
end;
|
||||
|
||||
TWikiPageHistory = class
|
||||
private
|
||||
FCurrentIndex: integer;
|
||||
FItems: TFPList; // list of TWikiPageHistoryItem
|
||||
FMaxCount: integer;
|
||||
function GetCurrent: TWikiPageHistoryItem;
|
||||
function GetItems(Index: integer): TWikiPageHistoryItem;
|
||||
procedure SetCurrentIndex(AValue: integer);
|
||||
procedure SetMaxCount(AValue: integer);
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure Clear;
|
||||
property CurrentIndex: integer read FCurrentIndex write SetCurrentIndex;
|
||||
property Current: TWikiPageHistoryItem read GetCurrent;
|
||||
property Items[Index: integer]: TWikiPageHistoryItem read GetItems; default;
|
||||
function Count: integer;
|
||||
property MaxCount: integer read FMaxCount write SetMaxCount;
|
||||
function AddAfterCurrent(DocumentName, Anchor, Title: string): TWikiPageHistoryItem;
|
||||
procedure Delete(Index: integer);
|
||||
end;
|
||||
|
||||
{ TWikiSearchDemoForm }
|
||||
|
||||
TWikiSearchDemoForm = class(TForm)
|
||||
HideSearchButton: TButton;
|
||||
ImageList1: TImageList;
|
||||
ViewWikiSourceMenuItem: TMenuItem;
|
||||
ViewHTMLMenuItem: TMenuItem;
|
||||
OptionsButton: TButton;
|
||||
PagePanel: TPanel;
|
||||
PageIpHtmlPanel: TIpHtmlPanel;
|
||||
PagePopupMenu: TPopupMenu;
|
||||
PageToolBar: TToolBar;
|
||||
ProgressLabel: TLabel;
|
||||
ResultsIpHtmlPanel: TIpHtmlPanel;
|
||||
@ -59,45 +95,55 @@ type
|
||||
SynHTMLSyn1: TSynHTMLSyn;
|
||||
Timer1: TTimer;
|
||||
ShowSearchToolButton: TToolButton;
|
||||
ShowHTMLToolButton: TToolButton;
|
||||
ShowWikiSrcToolButton: TToolButton;
|
||||
SearchSepToolButton: TToolButton;
|
||||
BackToolButton: TToolButton;
|
||||
ForwardToolButton: TToolButton;
|
||||
procedure BackToolButtonClick(Sender: TObject);
|
||||
function DataProviderCanHandle(Sender: TObject; const {%H-}URL: string): Boolean;
|
||||
procedure DataProviderGetImage(Sender: TIpHtmlNode; const URL: string;
|
||||
var Picture: TPicture);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure ForwardToolButtonClick(Sender: TObject);
|
||||
procedure HideSearchButtonClick(Sender: TObject);
|
||||
procedure LanguagesEditChange(Sender: TObject);
|
||||
procedure IpHtmlPanelHotClick(Sender: TObject);
|
||||
procedure OptionsButtonClick(Sender: TObject);
|
||||
procedure PagePopupMenuPopup(Sender: TObject);
|
||||
procedure SearchEditChange(Sender: TObject);
|
||||
procedure ShowHTMLToolButtonClick(Sender: TObject);
|
||||
procedure ViewHTMLMenuItemClick(Sender: TObject);
|
||||
procedure ShowSearchToolButtonClick(Sender: TObject);
|
||||
procedure ShowWikiSrcToolButtonClick(Sender: TObject);
|
||||
procedure ViewWikiSourceMenuItemClick(Sender: TObject);
|
||||
procedure Timer1Timer(Sender: TObject);
|
||||
private
|
||||
fLastSearchText: string;
|
||||
fLastLanguages: string;
|
||||
fLastScoring: TWHScoring;
|
||||
FIdleConnected: boolean;
|
||||
FPageHistory: TWikiPageHistory;
|
||||
FURLDataProvider: TWikiIpHtmlDataProvider;
|
||||
FPageDocumentName: string;
|
||||
FPageAnchor: string;
|
||||
FPageSource: string;
|
||||
FPageTitle: string;
|
||||
procedure GoToHistoryPage(Index: integer);
|
||||
procedure QueryChanged;
|
||||
procedure SetIdleConnected(AValue: boolean);
|
||||
procedure UpdateHistoryButtons;
|
||||
procedure UpdateProgress;
|
||||
procedure LoadWikiPage(Documentname, Anchor: string; AddToHistory: boolean);
|
||||
procedure LoadHTML(Target: TIpHtmlPanel; HTML: string); overload;
|
||||
procedure LoadHTML(Target: TIpHtmlPanel; aStream: TStream); overload;
|
||||
procedure ShowOptions;
|
||||
procedure ViewSource(aTitle, aSource: string; aHighlighter: TSynCustomHighlighter);
|
||||
procedure WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
||||
procedure WikiHelpScanned(Sender: TObject);
|
||||
procedure WikiHelpSearched(Sender: TObject);
|
||||
procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean);
|
||||
function GetLanguages: string;
|
||||
public
|
||||
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
|
||||
procedure ShowOptions;
|
||||
function GetLanguages: string;
|
||||
property PageHistory: TWikiPageHistory read FPageHistory;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -105,6 +151,89 @@ var
|
||||
|
||||
implementation
|
||||
|
||||
function TWikiPageHistory.GetItems(Index: integer): TWikiPageHistoryItem;
|
||||
begin
|
||||
Result:=TWikiPageHistoryItem(FItems[Index]);
|
||||
end;
|
||||
|
||||
function TWikiPageHistory.GetCurrent: TWikiPageHistoryItem;
|
||||
begin
|
||||
if (CurrentIndex>=0) and (CurrentIndex<Count) then
|
||||
Result:=Items[CurrentIndex]
|
||||
else
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
procedure TWikiPageHistory.SetCurrentIndex(AValue: integer);
|
||||
var
|
||||
NewValue: Integer;
|
||||
begin
|
||||
NewValue:=AValue;
|
||||
if NewValue<-1 then NewValue:=-1;
|
||||
if NewValue>=Count then NewValue:=Count-1;
|
||||
if FCurrentIndex=NewValue then Exit;
|
||||
FCurrentIndex:=NewValue;
|
||||
end;
|
||||
|
||||
procedure TWikiPageHistory.SetMaxCount(AValue: integer);
|
||||
begin
|
||||
if FMaxCount=AValue then Exit;
|
||||
FMaxCount:=AValue;
|
||||
end;
|
||||
|
||||
constructor TWikiPageHistory.Create;
|
||||
begin
|
||||
FItems:=TFPList.Create;
|
||||
end;
|
||||
|
||||
destructor TWikiPageHistory.Destroy;
|
||||
begin
|
||||
Clear;
|
||||
FreeAndNil(FItems);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TWikiPageHistory.Clear;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i:=0 to FItems.Count-1 do
|
||||
TObject(FItems[i]).Free;
|
||||
FItems.Clear;
|
||||
FCurrentIndex:=-1;
|
||||
end;
|
||||
|
||||
function TWikiPageHistory.Count: integer;
|
||||
begin
|
||||
Result:=FItems.Count;
|
||||
end;
|
||||
|
||||
function TWikiPageHistory.AddAfterCurrent(DocumentName, Anchor, Title: string
|
||||
): TWikiPageHistoryItem;
|
||||
begin
|
||||
while Count>CurrentIndex+1 do
|
||||
Delete(Count-1);
|
||||
Result:=TWikiPageHistoryItem.Create(DocumentName,Anchor,Title);
|
||||
FItems.Add(Result);
|
||||
FCurrentIndex:=FItems.Count-1;
|
||||
end;
|
||||
|
||||
procedure TWikiPageHistory.Delete(Index: integer);
|
||||
begin
|
||||
TObject(FItems[Index]).Free;
|
||||
FItems.Delete(Index);
|
||||
end;
|
||||
|
||||
{ TWikiPageHistoryItem }
|
||||
|
||||
constructor TWikiPageHistoryItem.Create(TheDocumentName, TheAnchor,
|
||||
TheTitle: string);
|
||||
begin
|
||||
DocumentName:=TheDocumentName;
|
||||
Anchor:=TheAnchor;
|
||||
Title:=TheTitle;
|
||||
end;
|
||||
|
||||
{ TWikiIpHtmlDataProvider }
|
||||
|
||||
function TWikiIpHtmlDataProvider.DoGetStream(const URL: string): TStream;
|
||||
@ -130,6 +259,8 @@ procedure TWikiSearchDemoForm.FormCreate(Sender: TObject);
|
||||
var
|
||||
Code: TCodeBuffer;
|
||||
begin
|
||||
FPageHistory:=TWikiPageHistory.Create;
|
||||
|
||||
Caption:='Search Wiki (Proof of concept)';
|
||||
|
||||
// search panel
|
||||
@ -140,10 +271,11 @@ begin
|
||||
OptionsButton.Caption:='Options';
|
||||
|
||||
// page panel
|
||||
ShowSearchToolButton.Caption:='Search';
|
||||
ShowHTMLToolButton.Hint:='View HTML Source';
|
||||
ShowWikiSrcToolButton.Caption:='Source';
|
||||
ShowWikiSrcToolButton.Hint:='View Wiki Source';
|
||||
ShowSearchToolButton.Hint:='Search';
|
||||
BackToolButton.Hint:='Go back one page';
|
||||
ForwardToolButton.Hint:='Go forward one page';
|
||||
ViewHTMLMenuItem.Caption:='View HTML Source';
|
||||
ViewWikiSourceMenuItem.Caption:='View Wiki Source';
|
||||
|
||||
FURLDataProvider:=TWikiIpHtmlDataProvider.Create(nil);
|
||||
ResultsIpHtmlPanel.DataProvider:=FURLDataProvider;
|
||||
@ -165,6 +297,7 @@ begin
|
||||
if Code<>nil then
|
||||
WikiHelp.ResultsCSS:=Code.Source;
|
||||
|
||||
UpdateHistoryButtons;
|
||||
LoadHTML(ResultsIpHtmlPanel,'');
|
||||
LoadHTML(PageIpHtmlPanel,'');
|
||||
|
||||
@ -180,6 +313,12 @@ begin
|
||||
Result:=false;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.BackToolButtonClick(Sender: TObject);
|
||||
begin
|
||||
if PageHistory.CurrentIndex<=0 then exit;
|
||||
GoToHistoryPage(PageHistory.CurrentIndex-1);
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.DataProviderGetImage(Sender: TIpHtmlNode;
|
||||
const URL: string; var Picture: TPicture);
|
||||
var
|
||||
@ -209,15 +348,26 @@ end;
|
||||
procedure TWikiSearchDemoForm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
IdleConnected:=false;
|
||||
|
||||
// free tool windows
|
||||
FreeAndNil(WikiSearchOptsWnd);
|
||||
|
||||
// free pages before dataprovider
|
||||
FreeAndNil(ResultsIpHtmlPanel);
|
||||
FreeAndNil(PageIpHtmlPanel);
|
||||
FreeAndNil(FURLDataProvider);
|
||||
|
||||
FreeAndNil(FPageHistory);
|
||||
FreeAndNil(WikiHelp);
|
||||
FreeAndNil(fLastScoring);
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.ForwardToolButtonClick(Sender: TObject);
|
||||
begin
|
||||
if PageHistory.CurrentIndex>=PageHistory.Count-1 then exit;
|
||||
GoToHistoryPage(PageHistory.CurrentIndex+1);
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.HideSearchButtonClick(Sender: TObject);
|
||||
begin
|
||||
DisableAutoSizing;
|
||||
@ -255,8 +405,6 @@ var
|
||||
HotNode: TIpHtmlNode;
|
||||
HRef: String;
|
||||
Panel: TIpHtmlPanel;
|
||||
ms: TMemoryStream;
|
||||
Src: String;
|
||||
DocumentName: String;
|
||||
p: SizeInt;
|
||||
AnchorName: String;
|
||||
@ -277,39 +425,14 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
// open page in PageIpHtmlPanel
|
||||
ms:=TMemoryStream.Create;
|
||||
try
|
||||
try
|
||||
DocumentName:=HRef;
|
||||
p:=Pos('#',DocumentName);
|
||||
if p>0 then begin
|
||||
DocumentName:=LeftStr(DocumentName,p-1);
|
||||
AnchorName:=copy(DocumentName,p+1,length(DocumentName));
|
||||
// ToDo: anchor
|
||||
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);
|
||||
FPageDocumentName:=DocumentName;
|
||||
FPageAnchor:=AnchorName;
|
||||
FPageSource:=Src;
|
||||
except
|
||||
on E: Exception do begin
|
||||
Src:='<html><body>Error: '+EncodeLesserAndGreaterThan(E.Message)+'</body></html>';
|
||||
LoadHTML(PageIpHtmlPanel,Src);
|
||||
FPageDocumentName:='';
|
||||
FPageAnchor:='';
|
||||
FPageSource:=Src;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
ms.Free;
|
||||
// load wiki page
|
||||
DocumentName:=HRef;
|
||||
p:=Pos('#',DocumentName);
|
||||
if p>0 then begin
|
||||
DocumentName:=LeftStr(DocumentName,p-1);
|
||||
AnchorName:=copy(DocumentName,p+1,length(DocumentName));
|
||||
end;
|
||||
LoadWikiPage(DocumentName,AnchorName,true);
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.OptionsButtonClick(Sender: TObject);
|
||||
@ -317,12 +440,18 @@ begin
|
||||
ShowOptions;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.PagePopupMenuPopup(Sender: TObject);
|
||||
begin
|
||||
ViewHTMLMenuItem.Enabled:=FPageDocumentName<>'';
|
||||
ViewWikiSourceMenuItem.Enabled:=FPageDocumentName<>'';
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.SearchEditChange(Sender: TObject);
|
||||
begin
|
||||
IdleConnected:=true;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.ShowHTMLToolButtonClick(Sender: TObject);
|
||||
procedure TWikiSearchDemoForm.ViewHTMLMenuItemClick(Sender: TObject);
|
||||
begin
|
||||
if (FPageDocumentName='') then exit;
|
||||
ViewSource('HTML of '+FPageDocumentName,FPageSource,SynHTMLSyn1);
|
||||
@ -342,7 +471,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.ShowWikiSrcToolButtonClick(Sender: TObject);
|
||||
procedure TWikiSearchDemoForm.ViewWikiSourceMenuItemClick(Sender: TObject);
|
||||
var
|
||||
Page: TW2FormatPage;
|
||||
begin
|
||||
@ -404,6 +533,16 @@ begin
|
||||
Timer1.Enabled:=true;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.GoToHistoryPage(Index: integer);
|
||||
var
|
||||
CurPage: TWikiPageHistoryItem;
|
||||
begin
|
||||
PageHistory.CurrentIndex:=Index;
|
||||
CurPage:=PageHistory.Current;
|
||||
LoadWikiPage(CurPage.DocumentName, CurPage.Anchor, false);
|
||||
UpdateHistoryButtons;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.SetIdleConnected(AValue: boolean);
|
||||
begin
|
||||
if FIdleConnected=AValue then Exit;
|
||||
@ -414,12 +553,64 @@ begin
|
||||
Application.RemoveOnIdleHandler(@OnIdle);
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.UpdateHistoryButtons;
|
||||
begin
|
||||
BackToolButton.Visible:=PageHistory.CurrentIndex>0;
|
||||
ForwardToolButton.Visible:=PageHistory.CurrentIndex+1<PageHistory.Count;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.UpdateProgress;
|
||||
begin
|
||||
ProgressLabel.Caption:=WikiHelp.GetProgressCaption;
|
||||
Timer1.Enabled:=WikiHelp.Busy;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.LoadWikiPage(Documentname, Anchor: string;
|
||||
AddToHistory: boolean);
|
||||
var
|
||||
ms: TMemoryStream;
|
||||
Src: string;
|
||||
Page: TW2FormatPage;
|
||||
begin
|
||||
// open page in PageIpHtmlPanel
|
||||
ms:=TMemoryStream.Create;
|
||||
try
|
||||
try
|
||||
WikiHelp.SavePageToStream(DocumentName,ms);
|
||||
Page:=WikiHelp.Converter.GetPageWithDocumentName(Documentname);
|
||||
ms.Position:=0;
|
||||
SetLength(Src,ms.Size);
|
||||
if Src<>'' then
|
||||
ms.Read(Src[1],length(Src));
|
||||
ms.Position:=0;
|
||||
// ToDo: anchor
|
||||
LoadHTML(PageIpHtmlPanel,ms);
|
||||
FPageDocumentName:=DocumentName;
|
||||
FPageAnchor:=Anchor;
|
||||
FPageSource:=Src;
|
||||
if (Page<>nil) and (Page.WikiPage<>nil) then
|
||||
FPageTitle:=Page.WikiPage.Title
|
||||
else
|
||||
FPageTitle:=Documentname;
|
||||
except
|
||||
on E: Exception do begin
|
||||
FPageDocumentName:='';
|
||||
FPageAnchor:='';
|
||||
FPageSource:=Src;
|
||||
FPageTitle:='Error: '+E.Message;
|
||||
Src:='<html><body>'+EncodeLesserAndGreaterThan(FPageTitle)+'</body></html>';
|
||||
LoadHTML(PageIpHtmlPanel,Src);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
ms.Free;
|
||||
end;
|
||||
if AddToHistory and (FPageDocumentName<>'') then begin
|
||||
PageHistory.AddAfterCurrent(FPageDocumentName,FPageAnchor,FPageTitle);
|
||||
UpdateHistoryButtons;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWikiSearchDemoForm.LoadHTML(Target: TIpHtmlPanel; HTML: string);
|
||||
var
|
||||
ms: TMemoryStream;
|
||||
|
Loading…
Reference in New Issue
Block a user