fpbrowser: Re-enables THTMLPort support, fixes identing and starts implementing back, forward and adds image support for ipro (although not working yet)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1928 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-09-09 09:30:37 +00:00
parent 2c00a1e9de
commit 6110aab762
5 changed files with 215 additions and 178 deletions

View File

@@ -91,7 +91,7 @@
<CompilerOptions> <CompilerOptions>
<Version Value="10"/> <Version Value="10"/>
<SearchPaths> <SearchPaths>
<OtherUnitFiles Value="../../Wcomponents/thtmlport/package"/> <OtherUnitFiles Value="../../components/thtmlport/package"/>
</SearchPaths> </SearchPaths>
<Parsing> <Parsing>
<SyntaxOptions> <SyntaxOptions>

View File

@@ -64,17 +64,16 @@ object formBrowser: TformBrowser
TabStop = False TabStop = False
TabOrder = 3 TabOrder = 3
end end
object ReloadButton: TButton object buttonReload: TButton
Left = 10 Left = 10
Height = 24 Height = 24
Top = 4 Top = 4
Width = 59 Width = 59
Caption = '&Reload' Caption = '&Reload'
Enabled = False OnClick = buttonReloadClick
OnClick = ReloadButtonClick
TabOrder = 0 TabOrder = 0
end end
object BackButton: TButton object buttonBack: TButton
Left = 69 Left = 69
Height = 24 Height = 24
Top = 4 Top = 4
@@ -84,7 +83,7 @@ object formBrowser: TformBrowser
OnClick = FwdBackClick OnClick = FwdBackClick
TabOrder = 1 TabOrder = 1
end end
object FwdButton: TButton object buttonForward: TButton
Left = 128 Left = 128
Height = 24 Height = 24
Top = 4 Top = 4

View File

@@ -18,65 +18,65 @@ LazarusResources.Add('TformBrowser','FORMDATA',[
+'bvNone'#12'ClientHeight'#2'!'#11'ClientWidth'#3'm'#2#8'TabOrder'#2#1#0#5'TE' +'bvNone'#12'ClientHeight'#2'!'#11'ClientWidth'#3'm'#2#8'TabOrder'#2#1#0#5'TE'
+'dit'#7'editURL'#4'Left'#3#190#0#6'Height'#2#24#3'Top'#2#4#5'Width'#3'Q'#1#8 +'dit'#7'editURL'#4'Left'#3#190#0#6'Height'#2#24#3'Top'#2#4#5'Width'#3'Q'#1#8
+'AutoSize'#8#9'OnKeyDown'#7#14'editURLKeyDown'#7'TabStop'#8#8'TabOrder'#2#3#0 +'AutoSize'#8#9'OnKeyDown'#7#14'editURLKeyDown'#7'TabStop'#8#8'TabOrder'#2#3#0
+#0#7'TButton'#12'ReloadButton'#4'Left'#2#10#6'Height'#2#24#3'Top'#2#4#5'Widt' +#0#7'TButton'#12'buttonReload'#4'Left'#2#10#6'Height'#2#24#3'Top'#2#4#5'Widt'
+'h'#2';'#7'Caption'#6#7'&Reload'#7'Enabled'#8#7'OnClick'#7#17'ReloadButtonCl' +'h'#2';'#7'Caption'#6#7'&Reload'#7'OnClick'#7#17'buttonReloadClick'#8'TabOrd'
+'ick'#8'TabOrder'#2#0#0#0#7'TButton'#10'BackButton'#4'Left'#2'E'#6'Height'#2 +'er'#2#0#0#0#7'TButton'#10'buttonBack'#4'Left'#2'E'#6'Height'#2#24#3'Top'#2#4
+#24#3'Top'#2#4#5'Width'#2';'#7'Caption'#6#5'&Back'#7'Enabled'#8#7'OnClick'#7 +#5'Width'#2';'#7'Caption'#6#5'&Back'#7'Enabled'#8#7'OnClick'#7#12'FwdBackCli'
+#12'FwdBackClick'#8'TabOrder'#2#1#0#0#7'TButton'#9'FwdButton'#4'Left'#3#128#0 +'ck'#8'TabOrder'#2#1#0#0#7'TButton'#13'buttonForward'#4'Left'#3#128#0#6'Heig'
+#6'Height'#2#24#3'Top'#2#4#5'Width'#2';'#7'Caption'#6#8'&Forward'#7'Enabled' +'ht'#2#24#3'Top'#2#4#5'Width'#2';'#7'Caption'#6#8'&Forward'#7'Enabled'#8#7'O'
+#8#7'OnClick'#7#12'FwdBackClick'#8'TabOrder'#2#2#0#0#0#12'TPageControl'#11'p' +'nClick'#7#12'FwdBackClick'#8'TabOrder'#2#2#0#0#0#12'TPageControl'#11'pageBr'
+'ageBrowser'#4'Left'#2#0#6'Height'#3'i'#1#3'Top'#2'!'#5'Width'#3'm'#2#10'Act' +'owser'#4'Left'#2#0#6'Height'#3'i'#1#3'Top'#2'!'#5'Width'#3'm'#2#10'ActivePa'
+'ivePage'#7#10'tabBrowser'#5'Align'#7#8'alClient'#8'ShowTabs'#8#8'TabIndex'#2 +'ge'#7#10'tabBrowser'#5'Align'#7#8'alClient'#8'ShowTabs'#8#8'TabIndex'#2#0#8
+#0#8'TabOrder'#2#2#0#9'TTabSheet'#10'tabBrowser'#7'Caption'#6#7'Browser'#12 +'TabOrder'#2#2#0#9'TTabSheet'#10'tabBrowser'#7'Caption'#6#7'Browser'#12'Clie'
+'ClientHeight'#3'g'#1#11'ClientWidth'#3'k'#2#0#6'TPanel'#12'panelBrowser'#4 +'ntHeight'#3'g'#1#11'ClientWidth'#3'k'#2#0#6'TPanel'#12'panelBrowser'#4'Left'
+'Left'#2#0#6'Height'#3'g'#1#3'Top'#2#0#5'Width'#3'k'#2#5'Align'#7#8'alClient' +#2#0#6'Height'#3'g'#1#3'Top'#2#0#5'Width'#3'k'#2#5'Align'#7#8'alClient'#10'B'
+#10'BevelInner'#7#9'bvLowered'#10'BevelOuter'#7#6'bvNone'#7'Caption'#6#12'pa' +'evelInner'#7#9'bvLowered'#10'BevelOuter'#7#6'bvNone'#7'Caption'#6#12'panelB'
+'nelBrowser'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'tabDebug'#7'Caption'#6#5'D' +'rowser'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'tabDebug'#7'Caption'#6#5'Debug'
+'ebug'#12'ClientHeight'#3'g'#1#11'ClientWidth'#3'k'#2#0#5'TMemo'#9'memoDebug' +#12'ClientHeight'#3'g'#1#11'ClientWidth'#3'k'#2#0#5'TMemo'#9'memoDebug'#4'Le'
+#4'Left'#2#0#6'Height'#3'g'#1#3'Top'#2#0#5'Width'#3'k'#2#5'Align'#7#8'alClie' +'ft'#2#0#6'Height'#3'g'#1#3'Top'#2#0#5'Width'#3'k'#2#5'Align'#7#8'alClient'
+'nt'#13'Lines.Strings'#1#6#9'memoDebug'#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet' +#13'Lines.Strings'#1#6#9'memoDebug'#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#9't'
+#9'tabSource'#7'Caption'#6#6'Source'#12'ClientHeight'#3'g'#1#11'ClientWidth' +'abSource'#7'Caption'#6#6'Source'#12'ClientHeight'#3'g'#1#11'ClientWidth'#3
+#3'k'#2#0#5'TMemo'#10'memoSource'#4'Left'#2#0#6'Height'#3'g'#1#3'Top'#2#0#5 +'k'#2#0#5'TMemo'#10'memoSource'#4'Left'#2#0#6'Height'#3'g'#1#3'Top'#2#0#5'Wi'
+'Width'#3'k'#2#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#10'memoSource'#0 +'dth'#3'k'#2#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#10'memoSource'#0#8
+#8'TabOrder'#2#0#0#0#0#0#11'TOpenDialog'#10'OpenDialog'#10'DefaultExt'#6#4'.' +'TabOrder'#2#0#0#0#0#0#11'TOpenDialog'#10'OpenDialog'#10'DefaultExt'#6#4'.ht'
+'htm'#6'Filter'#6'%html files|*.htm;*.html|all files|*.*'#7'Options'#11#14'o' +'m'#6'Filter'#6'%html files|*.htm;*.html|all files|*.*'#7'Options'#11#14'ofH'
+'fHideReadOnly'#15'ofPathMustExist'#15'ofFileMustExist'#0#4'left'#3'I'#1#3't' +'ideReadOnly'#15'ofPathMustExist'#15'ofFileMustExist'#0#4'left'#3'I'#1#3'top'
+'op'#2#2#0#0#9'TMainMenu'#8'MainMenu'#4'left'#3'#'#1#3'top'#2#4#0#9'TMenuIte' +#2#2#0#0#9'TMainMenu'#8'MainMenu'#4'left'#3'#'#1#3'top'#2#4#0#9'TMenuItem'#5
+'m'#5'File1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#4'Open'#7'Caption'#6#5'&Op' +'File1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#4'Open'#7'Caption'#6#5'&Open'#8
+'en'#8'ShortCut'#2'r'#7'OnClick'#7#13'OpenFileClick'#0#0#9'TMenuItem'#12'Ope' +'ShortCut'#2'r'#7'OnClick'#7#13'OpenFileClick'#0#0#9'TMenuItem'#12'OpenTextF'
+'nTextFile'#7'Caption'#6#15'Open &Text File'#7'OnClick'#7#17'OpenTextFileCli' +'ile'#7'Caption'#6#15'Open &Text File'#7'OnClick'#7#17'OpenTextFileClick'#0#0
+'ck'#0#0#9'TMenuItem'#13'OpenImageFile'#7'Caption'#6#16'Open &Image File'#7 +#9'TMenuItem'#13'OpenImageFile'#7'Caption'#6#16'Open &Image File'#7'OnClick'
+'OnClick'#7#18'OpenImageFileClick'#0#0#9'TMenuItem'#13'PrinterSetup1'#7'Capt' +#7#18'OpenImageFileClick'#0#0#9'TMenuItem'#13'PrinterSetup1'#7'Caption'#6#16
+'ion'#6#16'Printer Setup...'#7'OnClick'#7#18'PrinterSetup1Click'#0#0#9'TMenu' +'Printer Setup...'#7'OnClick'#7#18'PrinterSetup1Click'#0#0#9'TMenuItem'#12'P'
+'Item'#12'Printpreview'#7'Caption'#6#14'Print pre&view'#7'Enabled'#8#7'OnCli' +'rintpreview'#7'Caption'#6#14'Print pre&view'#7'Enabled'#8#7'OnClick'#7#17'P'
+'ck'#7#17'PrintpreviewClick'#0#0#9'TMenuItem'#6'Print1'#7'Caption'#6#9'&Prin' +'rintpreviewClick'#0#0#9'TMenuItem'#6'Print1'#7'Caption'#6#9'&Print...'#7'En'
+'t...'#7'Enabled'#8#7'OnClick'#7#11'Print1Click'#0#0#9'TMenuItem'#2'N1'#7'Ca' +'abled'#8#7'OnClick'#7#11'Print1Click'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1
+'ption'#6#1'-'#0#0#9'TMenuItem'#5'Exit1'#7'Caption'#6#5'E&xit'#7'OnClick'#7 +'-'#0#0#9'TMenuItem'#5'Exit1'#7'Caption'#6#5'E&xit'#7'OnClick'#7#10'Exit1Cli'
+#10'Exit1Click'#0#0#0#9'TMenuItem'#5'Edit2'#7'Caption'#6#5'&Edit'#7'OnClick' +'ck'#0#0#0#9'TMenuItem'#5'Edit2'#7'Caption'#6#5'&Edit'#7'OnClick'#7#10'Edit2'
+#7#10'Edit2Click'#0#9'TMenuItem'#5'Find1'#7'Caption'#6#5'&Find'#7'Enabled'#8 +'Click'#0#9'TMenuItem'#5'Find1'#7'Caption'#6#5'&Find'#7'Enabled'#8#7'OnClick'
+#7'OnClick'#7#10'Find1Click'#0#0#9'TMenuItem'#8'CopyItem'#7'Caption'#6#5'&Co' +#7#10'Find1Click'#0#0#9'TMenuItem'#8'CopyItem'#7'Caption'#6#5'&Copy'#8'Short'
+'py'#8'ShortCut'#3'C@'#7'OnClick'#7#13'CopyItemClick'#0#0#9'TMenuItem'#2'N2' +'Cut'#3'C@'#7'OnClick'#7#13'CopyItemClick'#0#0#9'TMenuItem'#2'N2'#7'Caption'
+#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'SelectAllItem'#7'Caption'#6#11'Select' +#6#1'-'#0#0#9'TMenuItem'#13'SelectAllItem'#7'Caption'#6#11'Select &All'#7'En'
+' &All'#7'Enabled'#8#7'OnClick'#7#18'SelectAllItemClick'#0#0#0#9'TMenuItem'#8 +'abled'#8#7'OnClick'#7#18'SelectAllItemClick'#0#0#0#9'TMenuItem'#8'options1'
+'options1'#7'Caption'#6#6'&Tools'#0#9'TMenuItem'#10'ShowImages'#7'Caption'#6 +#7'Caption'#6#6'&Tools'#0#9'TMenuItem'#10'ShowImages'#7'Caption'#6#12'&Show '
+#12'&Show images'#7'OnClick'#7#15'ShowImagesClick'#0#0#9'TMenuItem'#5'Fonts' +'images'#7'OnClick'#7#15'ShowImagesClick'#0#0#9'TMenuItem'#5'Fonts'#7'Captio'
+#7'Caption'#6#23'Default &Font/Colors...'#7'OnClick'#7#15'FontColorsClick'#0 +'n'#6#23'Default &Font/Colors...'#7'OnClick'#7#15'FontColorsClick'#0#0#9'TMe'
+#0#9'TMenuItem'#13'menuViewDebug'#7'Caption'#6#26'View Source and Debug info' +'nuItem'#13'menuViewDebug'#7'Caption'#6#26'View Source and Debug info'#7'OnC'
+#7'OnClick'#7#18'menuViewDebugClick'#0#0#0#9'TMenuItem'#15'HistoryMenuItem'#7 +'lick'#7#18'menuViewDebugClick'#0#0#0#9'TMenuItem'#15'HistoryMenuItem'#7'Cap'
+'Caption'#6#8'&History'#7'Visible'#8#0#0#9'TMenuItem'#6'About1'#7'Caption'#6 +'tion'#6#8'&History'#7'Visible'#8#0#0#9'TMenuItem'#6'About1'#7'Caption'#6#6
+#6'&About'#7'OnClick'#7#11'About1Click'#0#0#0#12'TPrintDialog'#11'PrintDialo' +'&About'#7'OnClick'#7#11'About1Click'#0#0#0#12'TPrintDialog'#11'PrintDialog'
,'g'#8'FromPage'#2#1#7'MinPage'#2#1#7'MaxPage'#3#15''''#7'Options'#11#10'poPa' ,#8'FromPage'#2#1#7'MinPage'#2#1#7'MaxPage'#3#15''''#7'Options'#11#10'poPageN'
+'geNums'#0#6'ToPage'#2#1#4'left'#3'j'#1#3'top'#2#1#0#0#11'TFindDialog'#10'Fi' +'ums'#0#6'ToPage'#2#1#4'left'#3'j'#1#3'top'#2#1#0#0#11'TFindDialog'#10'FindD'
+'ndDialog'#7'Options'#11#6'frDown'#15'frHideWholeWord'#18'frDisableWholeWord' +'ialog'#7'Options'#11#6'frDown'#15'frHideWholeWord'#18'frDisableWholeWord'#0
+#0#6'OnFind'#7#14'FindDialogFind'#4'left'#3#248#0#3'top'#2#4#0#0#10'TPopupMe' +#6'OnFind'#7#14'FindDialogFind'#4'left'#3#248#0#3'top'#2#4#0#0#10'TPopupMenu'
+'nu'#9'PopupMenu'#4'left'#3#144#1#3'top'#2#1#0#9'TMenuItem'#9'Viewimage'#7'C' +#9'PopupMenu'#4'left'#3#144#1#3'top'#2#1#0#9'TMenuItem'#9'Viewimage'#7'Capti'
+'aption'#6#11'&View image'#7'OnClick'#7#14'ViewimageClick'#0#0#9'TMenuItem' +'on'#6#11'&View image'#7'OnClick'#7#14'ViewimageClick'#0#0#9'TMenuItem'#20'C'
+#20'CopyImageToClipboard'#7'Caption'#6#24'&Copy image to clipboard'#7'OnClic' +'opyImageToClipboard'#7'Caption'#6#24'&Copy image to clipboard'#7'OnClick'#7
+'k'#7#25'CopyImageToClipboardClick'#0#0#9'TMenuItem'#2'N3'#7'Caption'#6#1'-' +#25'CopyImageToClipboardClick'#0#0#9'TMenuItem'#2'N3'#7'Caption'#6#1'-'#0#0#9
+#0#0#9'TMenuItem'#15'OpenInNewWindow'#7'Caption'#6#19'&Open in new window'#7 +'TMenuItem'#15'OpenInNewWindow'#7'Caption'#6#19'&Open in new window'#7'OnCli'
+'OnClick'#7#20'OpenInNewWindowClick'#0#0#0#6'TTimer'#9'MetaTimer'#7'Enabled' +'ck'#7#20'OpenInNewWindowClick'#0#0#0#6'TTimer'#9'MetaTimer'#7'Enabled'#8#7
+#8#7'OnTimer'#7#14'MetaTimerTimer'#4'left'#3#242#0#3'top'#2'K'#0#0#6'TTimer' +'OnTimer'#7#14'MetaTimerTimer'#4'left'#3#242#0#3'top'#2'K'#0#0#6'TTimer'#6'T'
+#6'Timer1'#8'Interval'#3#200#0#7'OnTimer'#7#11'Timer1Timer'#4'left'#3'0'#1#3 +'imer1'#8'Interval'#3#200#0#7'OnTimer'#7#11'Timer1Timer'#4'left'#3'0'#1#3'to'
+'top'#2'G'#0#0#19'TPrinterSetupDialog'#18'PrinterSetupDialog'#4'left'#3#192#1 +'p'#2'G'#0#0#19'TPrinterSetupDialog'#18'PrinterSetupDialog'#4'left'#3#192#1#0
+#0#0#0 +#0#0
]); ]);

View File

@@ -21,8 +21,6 @@ uses
HTMLabt, HTMLabt,
pageloader; pageloader;
const
MaxHistories = 6; {size of History list}
type type
{$ifdef FPBROWSER_TURBOPOWERIPRO} {$ifdef FPBROWSER_TURBOPOWERIPRO}
@@ -54,9 +52,9 @@ type
ShowImages: TMenuItem; ShowImages: TMenuItem;
Fonts: TMenuItem; Fonts: TMenuItem;
editURL: TEdit; editURL: TEdit;
ReloadButton: TButton; buttonReload: TButton;
BackButton: TButton; buttonBack: TButton;
FwdButton: TButton; buttonForward: TButton;
HistoryMenuItem: TMenuItem; HistoryMenuItem: TMenuItem;
Exit1: TMenuItem; Exit1: TMenuItem;
PrintDialog: TPrintDialog; PrintDialog: TPrintDialog;
@@ -88,7 +86,7 @@ type
procedure menuViewDebugClick(Sender: TObject); procedure menuViewDebugClick(Sender: TObject);
procedure OpenFileClick(Sender: TObject); procedure OpenFileClick(Sender: TObject);
procedure ShowImagesClick(Sender: TObject); procedure ShowImagesClick(Sender: TObject);
procedure ReloadButtonClick(Sender: TObject); procedure buttonReloadClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FwdBackClick(Sender: TObject); procedure FwdBackClick(Sender: TObject);
procedure HistoryClick(Sender: TObject); procedure HistoryClick(Sender: TObject);
@@ -128,7 +126,8 @@ type
{$IFDEF LCLCarbon} {$IFDEF LCLCarbon}
AppMenu : TMenuItem; AppMenu : TMenuItem;
{$ENDIF} {$ENDIF}
Histories: array[0..MaxHistories-1] of TMenuItem; History: TStringList;
HistoryIndex: Integer;
MediaCount: integer; MediaCount: integer;
NewWindowFile: string; NewWindowFile: string;
NextFile, PresentFile: string; NextFile, PresentFile: string;
@@ -181,6 +180,7 @@ type
MyPageLoaderThread: TPageLoaderThread; MyPageLoaderThread: TPageLoaderThread;
MyPageLoader: TPageLoader; MyPageLoader: TPageLoader;
procedure LoadURL(AURL: string); procedure LoadURL(AURL: string);
procedure AddURLToHistory(AURL: string);
procedure HandlePageLoaderProgress(APercent: Integer); procedure HandlePageLoaderProgress(APercent: Integer);
procedure HandlePageLoaderTerminated(Sender: TObject); procedure HandlePageLoaderTerminated(Sender: TObject);
end; end;
@@ -217,14 +217,14 @@ end;
function TformBrowser.DataProvider1CanHandle(Sender: TObject; const URL: string function TformBrowser.DataProvider1CanHandle(Sender: TObject; const URL: string
): Boolean; ): Boolean;
begin begin
WriteLn('TForm1.DataProvider1CanHandle ',URL); WriteLn('TformBrowser.DataProvider1CanHandle ',URL);
Result:=True; Result:=True;
end; end;
procedure TformBrowser.DataProvider1CheckURL(Sender: TObject; const URL: string; procedure TformBrowser.DataProvider1CheckURL(Sender: TObject; const URL: string;
var Available: Boolean; var ContentType: string); var Available: Boolean; var ContentType: string);
begin begin
WriteLn('TForm1.DataProvider1CheckURL ',URL); WriteLn('TformBrowser.DataProvider1CheckURL ',URL);
Available:=True; Available:=True;
ContentType:='text/html'; ContentType:='text/html';
end; end;
@@ -234,17 +234,39 @@ procedure TformBrowser.DataProvider1GetHtml(Sender: TObject; const URL: string;
var var
lStream: TMemoryStream; lStream: TMemoryStream;
begin begin
WriteLn('TForm1.DataProvider1GetHtml ',URL); WriteLn('TformBrowser.DataProvider1GetHtml ',URL);
MyPageLoader.LoadBinaryResource(URL, lStream); { MyPageLoader.LoadBinaryResource(URL, lStream);
Stream := lStream; Stream := lStream;
lStream.Position := 0; lStream.Position := 0;}
Stream := nil;
LoadURL(URL);
end; end;
procedure TformBrowser.DataProvider1GetImage(Sender: TIpHtmlNode; const URL: string; procedure TformBrowser.DataProvider1GetImage(Sender: TIpHtmlNode; const URL: string;
var Picture: TPicture); var Picture: TPicture);
var
lStream: TMemoryStream = nil;
lStr: String;
begin begin
//debugln(['TForm1.DataProvider1GetImage ',URL]); WriteLn('TformBrowser.DataProvider1GetImage ',URL);
lStr := ExtractFileExt(URL);
if (lStr = '.jpeg') or (lStr = '.jpg') then
begin
try
MyPageLoader.LoadBinaryResource(URL, lStream);
Picture := TPicture.Create;
Picture.Jpeg.LoadFromStream(lStream);
finally
lStream.Free
end;
end
else
begin
WriteLn('TformBrowser.DataProvider1GetImage Unsupported format: ', lStr);
Picture := nil; Picture := nil;
Exit;
end;
// and (lStr <> '.bmp') and (lStr <> '.png')
end; end;
procedure TformBrowser.DataProvider1Leave(Sender: TIpHtml); procedure TformBrowser.DataProvider1Leave(Sender: TIpHtml);
@@ -282,6 +304,7 @@ var
I: integer; I: integer;
begin begin
MyPageLoader := TPageLoader.Create; MyPageLoader := TPageLoader.Create;
History := TStringList.Create;
{$ifdef FPBROWSER_TURBOPOWERIPRO} {$ifdef FPBROWSER_TURBOPOWERIPRO}
DataProvider1:=TMyIpHtmlDataProvider.Create(Self); DataProvider1:=TMyIpHtmlDataProvider.Create(Self);
@@ -336,7 +359,7 @@ begin
Viewer.OnPrintHTMLHeader := ViewerPrintHTMLHeader; Viewer.OnPrintHTMLHeader := ViewerPrintHTMLHeader;
Viewer.OnPrintHTMLFooter := ViewerPrintHTMLFooter; Viewer.OnPrintHTMLFooter := ViewerPrintHTMLFooter;
Viewer.OnInclude := ViewerInclude; Viewer.OnInclude := ViewerInclude;
Viewer.OnSoundRequest := SoundRequest; //Viewer.OnSoundRequest := SoundRequest;
Viewer.OnMetaRefresh := MetaRefreshEvent; Viewer.OnMetaRefresh := MetaRefreshEvent;
Viewer.OnObjectClick := ObjectClick; Viewer.OnObjectClick := ObjectClick;
Viewer.OnRightClick := RightClick; Viewer.OnRightClick := RightClick;
@@ -356,7 +379,7 @@ begin
Caption := 'HTML Demo, Version '+HTMLAbt.Version; Caption := 'HTML Demo, Version '+HTMLAbt.Version;
for I := 0 to MaxHistories-1 do (*for I := 0 to MaxHistories-1 do
begin {create the MenuItems for the history list} begin {create the MenuItems for the history list}
Histories[I] := TMenuItem.Create(HistoryMenuItem); Histories[I] := TMenuItem.Create(HistoryMenuItem);
HistoryMenuItem.Insert(I, Histories[I]); HistoryMenuItem.Insert(I, Histories[I]);
@@ -366,7 +389,7 @@ begin
OnClick := HistoryClick; OnClick := HistoryClick;
Tag := I; Tag := I;
end; end;
end; end;*)
{$IFDEF LCLCarbon} {$IFDEF LCLCarbon}
AppMenu := TMenuItem.Create(Self); //Application menu AppMenu := TMenuItem.Create(Self); //Application menu
@@ -582,13 +605,13 @@ begin
{$endif} {$endif}
end; end;
procedure TformBrowser.ReloadButtonClick(Sender: TObject); procedure TformBrowser.buttonReloadClick(Sender: TObject);
{the Reload button was clicked} {the Reload button was clicked}
begin begin
{$ifdef FPBROWSER_THTMLCOMP} {$ifdef FPBROWSER_THTMLCOMP}
Viewer.ReLoadButton.Enabled := False; buttonReload.Enabled := False;
Viewer.ReLoad; Viewer.ReLoad;
Viewer.ReLoadButton.Enabled := CurrentFile <> ''; buttonReload.Enabled := Viewer.CurrentFile <> '';
Viewer.SetFocus; Viewer.SetFocus;
{$endif} {$endif}
end; end;
@@ -597,15 +620,24 @@ procedure TformBrowser.FwdBackClick(Sender: TObject);
{Either the Forward or Back button was clicked} {Either the Forward or Back button was clicked}
begin begin
{$ifdef FPBROWSER_THTMLCOMP} {$ifdef FPBROWSER_THTMLCOMP}
with Viewer do { if Sender = buttonBack then
begin Viewer.HistoryIndex := Viewer.HistoryIndex +1
if Sender = BackButton then
HistoryIndex := HistoryIndex +1
else else
HistoryIndex := HistoryIndex -1; Viewer.HistoryIndex := Viewer.HistoryIndex -1;
Self.Caption := DocumentTitle; Self.Caption := Viewer.DocumentTitle;}
end;
{$endif} {$endif}
LoadURL(History.Strings[HistoryIndex]);
if Sender = buttonBack then
begin
HistoryIndex := HistoryIndex-1;
if HistoryIndex < 0 then buttonBack.Enabled := False;
buttonForward.Enabled := True;
end
else
begin
HistoryIndex := HistoryIndex+1;
if HistoryIndex >= History.Count then buttonForward.Enabled := False;
end;
end; end;
procedure TformBrowser.HistoryChange(Sender: TObject); procedure TformBrowser.HistoryChange(Sender: TObject);
@@ -618,8 +650,8 @@ begin
with Sender as ThtmlViewer do with Sender as ThtmlViewer do
begin begin
{check to see which buttons are to be enabled} {check to see which buttons are to be enabled}
FwdButton.Enabled := HistoryIndex > 0; buttonForward.Enabled := HistoryIndex > 0;
BackButton.Enabled := HistoryIndex < History.Count-1; buttonBack.Enabled := HistoryIndex < History.Count-1;
{Enable and caption the appropriate history menuitems} {Enable and caption the appropriate history menuitems}
HistoryMenuItem.Visible := History.Count > 0; HistoryMenuItem.Visible := History.Count > 0;
@@ -716,17 +748,14 @@ finally
end; end;
procedure TformBrowser.SubmitEvent(Sender: TObject; const AnAction, Target, EncType, Method: String; procedure TformBrowser.SubmitEvent(Sender: TObject; const AnAction, Target,
Results: TStringList); EncType, Method: String; Results: TStringList);
begin begin
with SubmitForm do SubmitForm.ActionText.Text := AnAction;
begin SubmitForm.MethodText.Text := Method;
ActionText.Text := AnAction; SubmitForm.ResultBox.Items := Results;
MethodText.Text := Method;
ResultBox.Items := Results;
Results.Free; Results.Free;
Show; SubmitForm.Show;
end;
end; end;
procedure TformBrowser.Find1Click(Sender: TObject); procedure TformBrowser.Find1Click(Sender: TObject);
@@ -750,9 +779,9 @@ begin
{$ifdef FPBROWSER_THTMLCOMP} {$ifdef FPBROWSER_THTMLCOMP}
if ProcessingOn then if ProcessingOn then
begin {disable various buttons and menuitems during processing} begin {disable various buttons and menuitems during processing}
FwdButton.Enabled := False; buttonForward.Enabled := False;
BackButton.Enabled := False; buttonBack.Enabled := False;
ReLoadButton.Enabled := False; buttonReload.Enabled := False;
Print1.Enabled := False; Print1.Enabled := False;
PrintPreview.Enabled := False; PrintPreview.Enabled := False;
Find1.Enabled := False; Find1.Enabled := False;
@@ -762,9 +791,9 @@ if ProcessingOn then
end end
else else
begin begin
FwdButton.Enabled := Viewer.HistoryIndex > 0; buttonForward.Enabled := Viewer.HistoryIndex > 0;
BackButton.Enabled := Viewer.HistoryIndex < Viewer.History.Count-1; buttonBack.Enabled := Viewer.HistoryIndex < Viewer.History.Count-1;
ReLoadButton.Enabled := Viewer.CurrentFile <> ''; buttonReload.Enabled := Viewer.CurrentFile <> '';
Print1.Enabled := Viewer.CurrentFile <> ''; Print1.Enabled := Viewer.CurrentFile <> '';
PrintPreview.Enabled := Viewer.CurrentFile <> ''; PrintPreview.Enabled := Viewer.CurrentFile <> '';
Find1.Enabled := Viewer.CurrentFile <> ''; Find1.Enabled := Viewer.CurrentFile <> '';
@@ -805,13 +834,13 @@ OpenDialog.Filter := 'HTML Files (*.htm,*.html)|*.htm;*.html'+
'|All Files (*.*)|*.*'; '|All Files (*.*)|*.*';
if OpenDialog.Execute then if OpenDialog.Execute then
begin begin
ReloadButton.Enabled := False; buttonReload.Enabled := False;
Update; Update;
Viewer.LoadTextFile(OpenDialog.Filename); Viewer.LoadTextFile(OpenDialog.Filename);
if Viewer.CurrentFile <> '' then if Viewer.CurrentFile <> '' then
begin begin
Caption := Viewer.DocumentTitle; Caption := Viewer.DocumentTitle;
ReLoadButton.Enabled := True; buttonReload.Enabled := True;
end; end;
end; end;
{$endif} {$endif}
@@ -827,12 +856,12 @@ OpenDialog.Filter := 'Graphics Files (*.bmp,*.gif,*.jpg,*.jpeg,*.png)|'+
'All Files (*.*)|*.*'; 'All Files (*.*)|*.*';
if OpenDialog.Execute then if OpenDialog.Execute then
begin begin
ReloadButton.Enabled := False; buttonReload.Enabled := False;
Viewer.LoadImageFile(OpenDialog.Filename); Viewer.LoadImageFile(OpenDialog.Filename);
if Viewer.CurrentFile <> '' then if Viewer.CurrentFile <> '' then
begin begin
Caption := Viewer.DocumentTitle; Caption := Viewer.DocumentTitle;
ReLoadButton.Enabled := True; buttonReload.Enabled := True;
end; end;
end; end;
{$endif} {$endif}
@@ -965,6 +994,7 @@ procedure TformBrowser.FormDestroy(Sender: TObject);
begin begin
HintWindow.Free; HintWindow.Free;
MyPageLoader.Free; MyPageLoader.Free;
History.Free;
end; end;
{$ifdef FPBROWSER_THTMLCOMP} {$ifdef FPBROWSER_THTMLCOMP}
@@ -1127,6 +1157,13 @@ begin
MyPageLoaderThread.Resume; MyPageLoaderThread.Resume;
end; end;
procedure TformBrowser.AddURLToHistory(AURL: string);
begin
History.Add(AURL);
HistoryIndex := History.Count-1;
buttonBack.Enabled := True;
end;
procedure TformBrowser.HandlePageLoaderProgress(APercent: Integer); procedure TformBrowser.HandlePageLoaderProgress(APercent: Integer);
begin begin
labelProgress.Caption := 'Loading a Page'; labelProgress.Caption := 'Loading a Page';
@@ -1151,6 +1188,7 @@ begin
memoSource.Lines.AddStrings(MyPageLoader.ContentsList); memoSource.Lines.AddStrings(MyPageLoader.ContentsList);
memoDebug.Lines.Clear(); memoDebug.Lines.Clear();
memoDebug.Lines.AddStrings(MyPageLoader.DebugInfo); memoDebug.Lines.AddStrings(MyPageLoader.DebugInfo);
AddURLToHistory(MyPageLoader.LastPageURL);
end; end;
procedure TformBrowser.Timer1Timer(Sender: TObject); procedure TformBrowser.Timer1Timer(Sender: TObject);

View File

@@ -82,7 +82,7 @@ constructor TPageLoader.Create;
begin begin
ContentsList := TStringList.Create; ContentsList := TStringList.Create;
DebugInfo := TStringList.Create; DebugInfo := TStringList.Create;
UserAgent := 'FPBrowser/1.0 (X11; Linux i686; Mobile; U; en-GB)'; UserAgent := 'FPBrowser/1.0 (Mobile; U; en-GB)';
end; end;
destructor TPageLoader.Destroy; destructor TPageLoader.Destroy;