You've already forked lazarus-ccr
fpbrowser: Starts the modules structure and now loads pages in a thread
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1921 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
65
applications/fpbrowser/browsermodules.pas
Normal file
65
applications/fpbrowser/browsermodules.pas
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
unit browsermodules;
|
||||||
|
|
||||||
|
{$mode delphi}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TBrowserModule }
|
||||||
|
|
||||||
|
TBrowserModule = class
|
||||||
|
public
|
||||||
|
ShortDescription: string;
|
||||||
|
Activated: Boolean;
|
||||||
|
constructor Create; virtual;
|
||||||
|
function HandleOnPageLoad(APage: TStream): string; virtual;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure RegisterBrowserModule(AModule: TBrowserModule);
|
||||||
|
function GetBrowserModule(AIndex: Integer): TBrowserModule;
|
||||||
|
function GetBrowserModuleCount(): Integer;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
var
|
||||||
|
gBrowserModules: TList;
|
||||||
|
|
||||||
|
procedure RegisterBrowserModule(AModule: TBrowserModule);
|
||||||
|
begin
|
||||||
|
if AModule = nil then raise Exception.Create('[RegisterBrowserModule] Attempted to register a nil Module');
|
||||||
|
gBrowserModules.Add(AModule);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetBrowserModule(AIndex: Integer): TBrowserModule;
|
||||||
|
begin
|
||||||
|
if AIndex < 0 then Exit(nil);
|
||||||
|
Result := TBrowserModule(gBrowserModules.Items[AIndex]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetBrowserModuleCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := gBrowserModules.Count;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBrowserModule }
|
||||||
|
|
||||||
|
constructor TBrowserModule.Create;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TBrowserModule.HandleOnPageLoad(APage: TStream): string;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
gBrowserModules := TList.Create;
|
||||||
|
finalization
|
||||||
|
gBrowserModules.Free;
|
||||||
|
end.
|
||||||
|
|
@ -2,6 +2,9 @@ program fpbrowser;
|
|||||||
{A program to demonstrate the ThtmlViewer component}
|
{A program to demonstrate the ThtmlViewer component}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
|
{$IFDEF UNIX}
|
||||||
|
cthreads,
|
||||||
|
{$ENDIF}
|
||||||
{$IFDEF LCL}
|
{$IFDEF LCL}
|
||||||
Interfaces,
|
Interfaces,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -15,7 +18,7 @@ uses
|
|||||||
Gopage in 'Gopage.pas' {GoPageForm},
|
Gopage in 'Gopage.pas' {GoPageForm},
|
||||||
PrintStatusForm in 'PrintStatusForm.pas' {PrnStatusForm},
|
PrintStatusForm in 'PrintStatusForm.pas' {PrnStatusForm},
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
ImgForm in 'ImgForm.pas', pageloader {ImageForm};
|
ImgForm in 'ImgForm.pas', pageloader, browsermodules {ImageForm};
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Application.Initialize;
|
Application.Initialize;
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
<DefaultFilename Value="../../components/thtmlport/package/htmlcomp.lpk" Prefer="True"/>
|
<DefaultFilename Value="../../components/thtmlport/package/htmlcomp.lpk" Prefer="True"/>
|
||||||
</Item4>
|
</Item4>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="6">
|
<Units Count="7">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="fpbrowser.dpr"/>
|
<Filename Value="fpbrowser.dpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -82,6 +82,11 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="pageloader"/>
|
<UnitName Value="pageloader"/>
|
||||||
</Unit5>
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="browsermodules.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="browsermodules"/>
|
||||||
|
</Unit6>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
object formBrowser: TformBrowser
|
object formBrowser: TformBrowser
|
||||||
Left = 372
|
Left = 327
|
||||||
Height = 439
|
Height = 439
|
||||||
Top = 267
|
Top = 186
|
||||||
Width = 621
|
Width = 621
|
||||||
ClientHeight = 419
|
ClientHeight = 439
|
||||||
ClientWidth = 621
|
ClientWidth = 621
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
@ -18,7 +18,7 @@ object formBrowser: TformBrowser
|
|||||||
object Panel1: TPanel
|
object Panel1: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 401
|
Top = 421
|
||||||
Width = 621
|
Width = 621
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Alignment = taLeftJustify
|
Alignment = taLeftJustify
|
||||||
@ -90,7 +90,7 @@ object formBrowser: TformBrowser
|
|||||||
end
|
end
|
||||||
object pageBrowser: TPageControl
|
object pageBrowser: TPageControl
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 368
|
Height = 388
|
||||||
Top = 33
|
Top = 33
|
||||||
Width = 621
|
Width = 621
|
||||||
ActivePage = tabBrowser
|
ActivePage = tabBrowser
|
||||||
@ -100,59 +100,18 @@ object formBrowser: TformBrowser
|
|||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object tabBrowser: TTabSheet
|
object tabBrowser: TTabSheet
|
||||||
Caption = 'Browser'
|
Caption = 'Browser'
|
||||||
ClientHeight = 360
|
ClientHeight = 381
|
||||||
ClientWidth = 613
|
ClientWidth = 613
|
||||||
object Panel3: TPanel
|
object Panel3: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 360
|
Height = 381
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 613
|
Width = 613
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BevelInner = bvLowered
|
BevelInner = bvLowered
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
Caption = 'Panel3'
|
Caption = 'Panel3'
|
||||||
ClientHeight = 360
|
|
||||||
ClientWidth = 613
|
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object Viewer: THTMLViewer
|
|
||||||
Left = 1
|
|
||||||
Height = 358
|
|
||||||
Top = 1
|
|
||||||
Width = 611
|
|
||||||
OnHotSpotCovered = HotSpotChange
|
|
||||||
OnHotSpotClick = HotSpotClick
|
|
||||||
OnImageRequest = ViewerImageRequest
|
|
||||||
OnFormSubmit = SubmitEvent
|
|
||||||
OnHistoryChange = HistoryChange
|
|
||||||
OnProgress = ViewerProgress
|
|
||||||
TabStop = True
|
|
||||||
TabOrder = 0
|
|
||||||
Align = alClient
|
|
||||||
DefBackground = clWindow
|
|
||||||
BorderStyle = htFocused
|
|
||||||
HistoryMaxCount = 6
|
|
||||||
DefFontName = 'Times New Roman'
|
|
||||||
DefPreFontName = 'Courier New'
|
|
||||||
DefFontColor = clWindowText
|
|
||||||
DefOverLinkColor = clFuchsia
|
|
||||||
ImageCacheCount = 6
|
|
||||||
NoSelect = False
|
|
||||||
CharSet = DEFAULT_CHARSET
|
|
||||||
PrintMarginLeft = 2
|
|
||||||
PrintMarginRight = 2
|
|
||||||
PrintMarginTop = 2
|
|
||||||
PrintMarginBottom = 2
|
|
||||||
PrintScale = 1
|
|
||||||
OnMouseMove = ViewerMouseMove
|
|
||||||
OnProcessing = ProcessingHandler
|
|
||||||
OnPrintHTMLHeader = ViewerPrintHTMLHeader
|
|
||||||
OnPrintHTMLFooter = ViewerPrintHTMLFooter
|
|
||||||
OnInclude = ViewerInclude
|
|
||||||
OnSoundRequest = SoundRequest
|
|
||||||
OnMetaRefresh = MetaRefreshEvent
|
|
||||||
OnObjectClick = ObjectClick
|
|
||||||
OnRightClick = RightClick
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object tabDebug: TTabSheet
|
object tabDebug: TTabSheet
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
{ This is an automatically generated lazarus resource file }
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
LazarusResources.Add('TformBrowser','FORMDATA',[
|
LazarusResources.Add('TformBrowser','FORMDATA',[
|
||||||
'TPF0'#12'TformBrowser'#11'formBrowser'#4'Left'#3't'#1#6'Height'#3#183#1#3'To'
|
'TPF0'#12'TformBrowser'#11'formBrowser'#4'Left'#3'G'#1#6'Height'#3#183#1#3'To'
|
||||||
+'p'#3#11#1#5'Width'#3'm'#2#12'ClientHeight'#3#163#1#11'ClientWidth'#3'm'#2#5
|
+'p'#3#186#0#5'Width'#3'm'#2#12'ClientHeight'#3#183#1#11'ClientWidth'#3'm'#2#5
|
||||||
+'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
|
+'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
|
||||||
+#243#9'Font.Name'#6#5'Arial'#4'Menu'#7#8'MainMenu'#8'OnCreate'#7#10'FormCrea'
|
+#243#9'Font.Name'#6#5'Arial'#4'Menu'#7#8'MainMenu'#8'OnCreate'#7#10'FormCrea'
|
||||||
+'te'#9'OnDestroy'#7#11'FormDestroy'#6'OnShow'#7#8'FormShow'#8'Position'#7#14
|
+'te'#9'OnDestroy'#7#11'FormDestroy'#6'OnShow'#7#8'FormShow'#8'Position'#7#14
|
||||||
+'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#6'Panel1'#4'Left'#2#0
|
+'poScreenCenter'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#6'Panel1'#4'Left'#2#0
|
||||||
+#6'Height'#2#18#3'Top'#3#145#1#5'Width'#3'm'#2#5'Align'#7#8'alBottom'#9'Alig'
|
+#6'Height'#2#18#3'Top'#3#165#1#5'Width'#3'm'#2#5'Align'#7#8'alBottom'#9'Alig'
|
||||||
+'nment'#7#13'taLeftJustify'#10'BevelInner'#7#9'bvLowered'#10'BevelOuter'#7#6
|
+'nment'#7#13'taLeftJustify'#10'BevelInner'#7#9'bvLowered'#10'BevelOuter'#7#6
|
||||||
+'bvNone'#12'ClientHeight'#2#18#11'ClientWidth'#3'm'#2#8'TabOrder'#2#0#0#12'T'
|
+'bvNone'#12'ClientHeight'#2#18#11'ClientWidth'#3'm'#2#8'TabOrder'#2#0#0#12'T'
|
||||||
+'ProgressBar'#11'ProgressBar'#4'Left'#3#214#1#6'Height'#2#16#3'Top'#2#1#5'Wi'
|
+'ProgressBar'#11'ProgressBar'#4'Left'#3#214#1#6'Height'#2#16#3'Top'#2#1#5'Wi'
|
||||||
@ -23,75 +23,58 @@ LazarusResources.Add('TformBrowser','FORMDATA',[
|
|||||||
+'Back'#7'Enabled'#8#7'OnClick'#7#12'FwdBackClick'#8'TabOrder'#2#1#0#0#7'TBut'
|
+'Back'#7'Enabled'#8#7'OnClick'#7#12'FwdBackClick'#8'TabOrder'#2#1#0#0#7'TBut'
|
||||||
+'ton'#9'FwdButton'#4'Left'#3#128#0#6'Height'#2#24#3'Top'#2#4#5'Width'#2';'#7
|
+'ton'#9'FwdButton'#4'Left'#3#128#0#6'Height'#2#24#3'Top'#2#4#5'Width'#2';'#7
|
||||||
+'Caption'#6#8'&Forward'#7'Enabled'#8#7'OnClick'#7#12'FwdBackClick'#8'TabOrde'
|
+'Caption'#6#8'&Forward'#7'Enabled'#8#7'OnClick'#7#12'FwdBackClick'#8'TabOrde'
|
||||||
+'r'#2#2#0#0#0#12'TPageControl'#11'pageBrowser'#4'Left'#2#0#6'Height'#3'p'#1#3
|
+'r'#2#2#0#0#0#12'TPageControl'#11'pageBrowser'#4'Left'#2#0#6'Height'#3#132#1
|
||||||
+'Top'#2'!'#5'Width'#3'm'#2#10'ActivePage'#7#10'tabBrowser'#5'Align'#7#8'alCl'
|
+#3'Top'#2'!'#5'Width'#3'm'#2#10'ActivePage'#7#10'tabBrowser'#5'Align'#7#8'al'
|
||||||
+'ient'#8'ShowTabs'#8#8'TabIndex'#2#0#8'TabOrder'#2#2#0#9'TTabSheet'#10'tabBr'
|
+'Client'#8'ShowTabs'#8#8'TabIndex'#2#0#8'TabOrder'#2#2#0#9'TTabSheet'#10'tab'
|
||||||
+'owser'#7'Caption'#6#7'Browser'#12'ClientHeight'#3'h'#1#11'ClientWidth'#3'e'
|
+'Browser'#7'Caption'#6#7'Browser'#12'ClientHeight'#3'}'#1#11'ClientWidth'#3
|
||||||
+#2#0#6'TPanel'#6'Panel3'#4'Left'#2#0#6'Height'#3'h'#1#3'Top'#2#0#5'Width'#3
|
+'e'#2#0#6'TPanel'#6'Panel3'#4'Left'#2#0#6'Height'#3'}'#1#3'Top'#2#0#5'Width'
|
||||||
+'e'#2#5'Align'#7#8'alClient'#10'BevelInner'#7#9'bvLowered'#10'BevelOuter'#7#6
|
+#3'e'#2#5'Align'#7#8'alClient'#10'BevelInner'#7#9'bvLowered'#10'BevelOuter'#7
|
||||||
+'bvNone'#7'Caption'#6#6'Panel3'#12'ClientHeight'#3'h'#1#11'ClientWidth'#3'e'
|
+#6'bvNone'#7'Caption'#6#6'Panel3'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#8'tabDe'
|
||||||
+#2#8'TabOrder'#2#0#0#11'THTMLViewer'#6'Viewer'#4'Left'#2#1#6'Height'#3'f'#1#3
|
+'bug'#7'Caption'#6#5'Debug'#12'ClientHeight'#3'h'#1#11'ClientWidth'#3'e'#2#0
|
||||||
+'Top'#2#1#5'Width'#3'c'#2#16'OnHotSpotCovered'#7#13'HotSpotChange'#14'OnHotS'
|
+#5'TMemo'#9'memoDebug'#4'Left'#2#0#6'Height'#3'h'#1#3'Top'#2#0#5'Width'#3'e'
|
||||||
+'potClick'#7#12'HotSpotClick'#14'OnImageRequest'#7#18'ViewerImageRequest'#12
|
+#2#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#9'memoDebug'#0#8'TabOrder'#2
|
||||||
+'OnFormSubmit'#7#11'SubmitEvent'#15'OnHistoryChange'#7#13'HistoryChange'#10
|
+#0#0#0#0#9'TTabSheet'#9'tabSource'#7'Caption'#6#9'tabSource'#12'ClientHeight'
|
||||||
+'OnProgress'#7#14'ViewerProgress'#7'TabStop'#9#8'TabOrder'#2#0#5'Align'#7#8
|
+#3'h'#1#11'ClientWidth'#3'e'#2#0#5'TMemo'#10'memoSource'#4'Left'#2#0#6'Heigh'
|
||||||
+'alClient'#13'DefBackground'#7#8'clWindow'#11'BorderStyle'#7#9'htFocused'#15
|
+'t'#3'h'#1#3'Top'#2#0#5'Width'#3'e'#2#5'Align'#7#8'alClient'#13'Lines.String'
|
||||||
+'HistoryMaxCount'#2#6#11'DefFontName'#6#15'Times New Roman'#14'DefPreFontNam'
|
+'s'#1#6#10'memoSource'#0#8'TabOrder'#2#0#0#0#0#0#11'TOpenDialog'#10'OpenDial'
|
||||||
+'e'#6#11'Courier New'#12'DefFontColor'#7#12'clWindowText'#16'DefOverLinkColo'
|
+'og'#10'DefaultExt'#6#4'.htm'#6'Filter'#6'%html files|*.htm;*.html|all files'
|
||||||
+'r'#7#9'clFuchsia'#15'ImageCacheCount'#2#6#8'NoSelect'#8#7'CharSet'#7#15'DEF'
|
+'|*.*'#7'Options'#11#14'ofHideReadOnly'#15'ofPathMustExist'#15'ofFileMustExi'
|
||||||
+'AULT_CHARSET'#15'PrintMarginLeft'#5#0#0#0#0#0#0#0#128#0'@'#16'PrintMarginRi'
|
+'st'#0#4'left'#3'I'#1#3'top'#2#2#0#0#9'TMainMenu'#8'MainMenu'#4'left'#3'#'#1
|
||||||
+'ght'#5#0#0#0#0#0#0#0#128#0'@'#14'PrintMarginTop'#5#0#0#0#0#0#0#0#128#0'@'#17
|
+#3'top'#2#4#0#9'TMenuItem'#5'File1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#4'O'
|
||||||
+'PrintMarginBottom'#5#0#0#0#0#0#0#0#128#0'@'#10'PrintScale'#5#0#0#0#0#0#0#0
|
+'pen'#7'Caption'#6#5'&Open'#8'ShortCut'#2'r'#7'OnClick'#7#13'OpenFileClick'#0
|
||||||
+#128#255'?'#11'OnMouseMove'#7#15'ViewerMouseMove'#12'OnProcessing'#7#17'Proc'
|
+#0#9'TMenuItem'#12'OpenTextFile'#7'Caption'#6#15'Open &Text File'#7'OnClick'
|
||||||
+'essingHandler'#17'OnPrintHTMLHeader'#7#21'ViewerPrintHTMLHeader'#17'OnPrint'
|
+#7#17'OpenTextFileClick'#0#0#9'TMenuItem'#13'OpenImageFile'#7'Caption'#6#16
|
||||||
+'HTMLFooter'#7#21'ViewerPrintHTMLFooter'#9'OnInclude'#7#13'ViewerInclude'#14
|
+'Open &Image File'#7'OnClick'#7#18'OpenImageFileClick'#0#0#9'TMenuItem'#13'P'
|
||||||
+'OnSoundRequest'#7#12'SoundRequest'#13'OnMetaRefresh'#7#16'MetaRefreshEvent'
|
+'rinterSetup1'#7'Caption'#6#16'Printer Setup...'#7'OnClick'#7#18'PrinterSetu'
|
||||||
+#13'OnObjectClick'#7#11'ObjectClick'#12'OnRightClick'#7#10'RightClick'#0#0#0
|
+'p1Click'#0#0#9'TMenuItem'#12'Printpreview'#7'Caption'#6#14'Print pre&view'#7
|
||||||
+#0#9'TTabSheet'#8'tabDebug'#7'Caption'#6#5'Debug'#12'ClientHeight'#3'h'#1#11
|
+'Enabled'#8#7'OnClick'#7#17'PrintpreviewClick'#0#0#9'TMenuItem'#6'Print1'#7
|
||||||
+'ClientWidth'#3'e'#2#0#5'TMemo'#9'memoDebug'#4'Left'#2#0#6'Height'#3'h'#1#3
|
+'Caption'#6#9'&Print...'#7'Enabled'#8#7'OnClick'#7#11'Print1Click'#0#0#9'TMe'
|
||||||
+'Top'#2#0#5'Width'#3'e'#2#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#9'mem'
|
+'nuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#5'Exit1'#7'Caption'#6#5'E&'
|
||||||
+'oDebug'#0#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#9'tabSource'#7'Caption'#6#9'ta'
|
+'xit'#7'OnClick'#7#10'Exit1Click'#0#0#0#9'TMenuItem'#5'Edit2'#7'Caption'#6#5
|
||||||
+'bSource'#12'ClientHeight'#3'h'#1#11'ClientWidth'#3'e'#2#0#5'TMemo'#10'memoS'
|
+'&Edit'#7'OnClick'#7#10'Edit2Click'#0#9'TMenuItem'#5'Find1'#7'Caption'#6#5'&'
|
||||||
+'ource'#4'Left'#2#0#6'Height'#3'h'#1#3'Top'#2#0#5'Width'#3'e'#2#5'Align'#7#8
|
+'Find'#7'Enabled'#8#7'OnClick'#7#10'Find1Click'#0#0#9'TMenuItem'#8'CopyItem'
|
||||||
+'alClient'#13'Lines.Strings'#1#6#10'memoSource'#0#8'TabOrder'#2#0#0#0#0#0#11
|
+#7'Caption'#6#5'&Copy'#8'ShortCut'#3'C@'#7'OnClick'#7#13'CopyItemClick'#0#0#9
|
||||||
+'TOpenDialog'#10'OpenDialog'#10'DefaultExt'#6#4'.htm'#6'Filter'#6'%html file'
|
+'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'SelectAllItem'#7'Cap'
|
||||||
+'s|*.htm;*.html|all files|*.*'#7'Options'#11#14'ofHideReadOnly'#15'ofPathMus'
|
+'tion'#6#11'Select &All'#7'Enabled'#8#7'OnClick'#7#18'SelectAllItemClick'#0#0
|
||||||
+'tExist'#15'ofFileMustExist'#0#4'left'#3'I'#1#3'top'#2#2#0#0#9'TMainMenu'#8
|
+#0#9'TMenuItem'#8'options1'#7'Caption'#6#6'&Tools'#0#9'TMenuItem'#10'ShowIma'
|
||||||
+'MainMenu'#4'left'#3'#'#1#3'top'#2#4#0#9'TMenuItem'#5'File1'#7'Caption'#6#5
|
+'ges'#7'Caption'#6#12'&Show images'#7'OnClick'#7#15'ShowImagesClick'#0#0#9'T'
|
||||||
+'&File'#0#9'TMenuItem'#4'Open'#7'Caption'#6#5'&Open'#8'ShortCut'#2'r'#7'OnCl'
|
+'MenuItem'#5'Fonts'#7'Caption'#6#23'Default &Font/Colors...'#7'OnClick'#7#15
|
||||||
+'ick'#7#13'OpenFileClick'#0#0#9'TMenuItem'#12'OpenTextFile'#7'Caption'#6#15
|
+'FontColorsClick'#0#0#9'TMenuItem'#13'menuViewDebug'#7'Caption'#6#26'View So'
|
||||||
+'Open &Text File'#7'OnClick'#7#17'OpenTextFileClick'#0#0#9'TMenuItem'#13'Ope'
|
+'urce and Debug info'#7'OnClick'#7#18'menuViewDebugClick'#0#0#0#9'TMenuItem'
|
||||||
+'nImageFile'#7'Caption'#6#16'Open &Image File'#7'OnClick'#7#18'OpenImageFile'
|
+#15'HistoryMenuItem'#7'Caption'#6#8'&History'#7'Visible'#8#0#0#9'TMenuItem'#6
|
||||||
+'Click'#0#0#9'TMenuItem'#13'PrinterSetup1'#7'Caption'#6#16'Printer Setup...'
|
+'About1'#7'Caption'#6#6'&About'#7'OnClick'#7#11'About1Click'#0#0#0#12'TPrint'
|
||||||
+#7'OnClick'#7#18'PrinterSetup1Click'#0#0#9'TMenuItem'#12'Printpreview'#7'Cap'
|
+'Dialog'#11'PrintDialog'#8'FromPage'#2#1#7'MinPage'#2#1#7'MaxPage'#3#15''''#7
|
||||||
+'tion'#6#14'Print pre&view'#7'Enabled'#8#7'OnClick'#7#17'PrintpreviewClick'#0
|
+'Options'#11#10'poPageNums'#0#6'ToPage'#2#1#4'left'#3'j'#1#3'top'#2#1#0#0#11
|
||||||
,#0#9'TMenuItem'#6'Print1'#7'Caption'#6#9'&Print...'#7'Enabled'#8#7'OnClick'#7
|
,'TFindDialog'#10'FindDialog'#7'Options'#11#6'frDown'#15'frHideWholeWord'#18
|
||||||
+#11'Print1Click'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#5
|
+'frDisableWholeWord'#0#6'OnFind'#7#14'FindDialogFind'#4'left'#3#248#0#3'top'
|
||||||
+'Exit1'#7'Caption'#6#5'E&xit'#7'OnClick'#7#10'Exit1Click'#0#0#0#9'TMenuItem'
|
+#2#4#0#0#10'TPopupMenu'#9'PopupMenu'#4'left'#3#144#1#3'top'#2#1#0#9'TMenuIte'
|
||||||
+#5'Edit2'#7'Caption'#6#5'&Edit'#7'OnClick'#7#10'Edit2Click'#0#9'TMenuItem'#5
|
+'m'#9'Viewimage'#7'Caption'#6#11'&View image'#7'OnClick'#7#14'ViewimageClick'
|
||||||
+'Find1'#7'Caption'#6#5'&Find'#7'Enabled'#8#7'OnClick'#7#10'Find1Click'#0#0#9
|
+#0#0#9'TMenuItem'#20'CopyImageToClipboard'#7'Caption'#6#24'&Copy image to cl'
|
||||||
+'TMenuItem'#8'CopyItem'#7'Caption'#6#5'&Copy'#8'ShortCut'#3'C@'#7'OnClick'#7
|
+'ipboard'#7'OnClick'#7#25'CopyImageToClipboardClick'#0#0#9'TMenuItem'#2'N3'#7
|
||||||
+#13'CopyItemClick'#0#0#9'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'
|
+'Caption'#6#1'-'#0#0#9'TMenuItem'#15'OpenInNewWindow'#7'Caption'#6#19'&Open '
|
||||||
+#13'SelectAllItem'#7'Caption'#6#11'Select &All'#7'Enabled'#8#7'OnClick'#7#18
|
+'in new window'#7'OnClick'#7#20'OpenInNewWindowClick'#0#0#0#6'TTimer'#9'Meta'
|
||||||
+'SelectAllItemClick'#0#0#0#9'TMenuItem'#8'options1'#7'Caption'#6#6'&Tools'#0
|
+'Timer'#7'Enabled'#8#7'OnTimer'#7#14'MetaTimerTimer'#4'left'#3#242#0#3'top'#2
|
||||||
+#9'TMenuItem'#10'ShowImages'#7'Caption'#6#12'&Show images'#7'OnClick'#7#15'S'
|
+'K'#0#0#6'TTimer'#6'Timer1'#8'Interval'#3#200#0#7'OnTimer'#7#11'Timer1Timer'
|
||||||
+'howImagesClick'#0#0#9'TMenuItem'#5'Fonts'#7'Caption'#6#23'Default &Font/Col'
|
+#4'left'#3'#'#1#3'top'#2'G'#0#0#19'TPrinterSetupDialog'#18'PrinterSetupDialo'
|
||||||
+'ors...'#7'OnClick'#7#15'FontColorsClick'#0#0#9'TMenuItem'#13'menuViewDebug'
|
+'g'#4'left'#3#192#1#0#0#0
|
||||||
+#7'Caption'#6#26'View Source and Debug info'#7'OnClick'#7#18'menuViewDebugCl'
|
|
||||||
+'ick'#0#0#0#9'TMenuItem'#15'HistoryMenuItem'#7'Caption'#6#8'&History'#7'Visi'
|
|
||||||
+'ble'#8#0#0#9'TMenuItem'#6'About1'#7'Caption'#6#6'&About'#7'OnClick'#7#11'Ab'
|
|
||||||
+'out1Click'#0#0#0#12'TPrintDialog'#11'PrintDialog'#8'FromPage'#2#1#7'MinPage'
|
|
||||||
+#2#1#7'MaxPage'#3#15''''#7'Options'#11#10'poPageNums'#0#6'ToPage'#2#1#4'left'
|
|
||||||
+#3'j'#1#3'top'#2#1#0#0#11'TFindDialog'#10'FindDialog'#7'Options'#11#6'frDown'
|
|
||||||
+#15'frHideWholeWord'#18'frDisableWholeWord'#0#6'OnFind'#7#14'FindDialogFind'
|
|
||||||
+#4'left'#3#248#0#3'top'#2#4#0#0#10'TPopupMenu'#9'PopupMenu'#4'left'#3#144#1#3
|
|
||||||
+'top'#2#1#0#9'TMenuItem'#9'Viewimage'#7'Caption'#6#11'&View image'#7'OnClick'
|
|
||||||
+#7#14'ViewimageClick'#0#0#9'TMenuItem'#20'CopyImageToClipboard'#7'Caption'#6
|
|
||||||
+#24'&Copy image to clipboard'#7'OnClick'#7#25'CopyImageToClipboardClick'#0#0
|
|
||||||
+#9'TMenuItem'#2'N3'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#15'OpenInNewWindow'#7
|
|
||||||
+'Caption'#6#19'&Open in new window'#7'OnClick'#7#20'OpenInNewWindowClick'#0#0
|
|
||||||
+#0#6'TTimer'#9'MetaTimer'#7'Enabled'#8#7'OnTimer'#7#14'MetaTimerTimer'#4'lef'
|
|
||||||
+'t'#3#242#0#3'top'#2'K'#0#0#6'TTimer'#6'Timer1'#8'Interval'#3#200#0#7'OnTime'
|
|
||||||
+'r'#7#11'Timer1Timer'#4'left'#3'#'#1#3'top'#2'G'#0#0#19'TPrinterSetupDialog'
|
|
||||||
+#18'PrinterSetupDialog'#4'left'#3#192#1#0#0#0
|
|
||||||
]);
|
]);
|
||||||
|
@ -23,12 +23,12 @@ uses
|
|||||||
Forms, Dialogs, ExtCtrls, Menus, Htmlview, StdCtrls,
|
Forms, Dialogs, ExtCtrls, Menus, Htmlview, StdCtrls,
|
||||||
Clipbrd, HTMLsubs, {$IFDEF MSWINDOWS} ShellAPI, {$ELSE} Unix, {$ENDIF}
|
Clipbrd, HTMLsubs, {$IFDEF MSWINDOWS} ShellAPI, {$ELSE} Unix, {$ENDIF}
|
||||||
{$IFDEF LCL} PrintersDlgs, {$ENDIF}
|
{$IFDEF LCL} PrintersDlgs, {$ENDIF}
|
||||||
{$ifdef UseXpMan} XpMan, {$endif} {$IFNDEF LCL} Gauges, {$ENDIF} ComCtrls;
|
{$ifdef UseXpMan} XpMan, {$endif} {$IFNDEF LCL} Gauges, {$ENDIF} ComCtrls,
|
||||||
|
pageloader;
|
||||||
|
|
||||||
const
|
const
|
||||||
MaxHistories = 6; {size of History list}
|
MaxHistories = 6; {size of History list}
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TformBrowser }
|
{ TformBrowser }
|
||||||
|
|
||||||
TformBrowser = class(TForm)
|
TformBrowser = class(TForm)
|
||||||
@ -63,15 +63,11 @@ type
|
|||||||
SelectAllItem: TMenuItem;
|
SelectAllItem: TMenuItem;
|
||||||
OpenTextFile: TMenuItem;
|
OpenTextFile: TMenuItem;
|
||||||
OpenImageFile: TMenuItem;
|
OpenImageFile: TMenuItem;
|
||||||
{$IFNDEF LCL}
|
|
||||||
MediaPlayer: TMediaPlayer;
|
|
||||||
{$ENDIF}
|
|
||||||
PopupMenu: TPopupMenu;
|
PopupMenu: TPopupMenu;
|
||||||
CopyImageToClipboard: TMenuItem;
|
CopyImageToClipboard: TMenuItem;
|
||||||
tabBrowser: TTabSheet;
|
tabBrowser: TTabSheet;
|
||||||
tabDebug: TTabSheet;
|
tabDebug: TTabSheet;
|
||||||
tabSource: TTabSheet;
|
tabSource: TTabSheet;
|
||||||
Viewer: THTMLViewer;
|
|
||||||
Viewimage: TMenuItem;
|
Viewimage: TMenuItem;
|
||||||
N3: TMenuItem;
|
N3: TMenuItem;
|
||||||
OpenInNewWindow: TMenuItem;
|
OpenInNewWindow: TMenuItem;
|
||||||
@ -153,6 +149,8 @@ type
|
|||||||
OldTitle: string;
|
OldTitle: string;
|
||||||
HintWindow: THintWindow;
|
HintWindow: THintWindow;
|
||||||
HintVisible: boolean;
|
HintVisible: boolean;
|
||||||
|
//
|
||||||
|
Viewer: THTMLViewer;
|
||||||
|
|
||||||
{$IFNDEF LCL}
|
{$IFNDEF LCL}
|
||||||
procedure wmDropFiles(var Message: TMessage); message wm_DropFiles;
|
procedure wmDropFiles(var Message: TMessage); message wm_DropFiles;
|
||||||
@ -163,7 +161,11 @@ type
|
|||||||
procedure CloseAll;
|
procedure CloseAll;
|
||||||
public
|
public
|
||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
|
MyPageLoaderThread: TPageLoaderThread;
|
||||||
|
MyPageLoader: TPageLoader;
|
||||||
procedure LoadURL(AURL: string);
|
procedure LoadURL(AURL: string);
|
||||||
|
procedure HandlePageLoaderProgress(APercent: Integer);
|
||||||
|
procedure HandlePageLoaderTerminated(APageLoader: TPageLoader);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -172,7 +174,7 @@ var
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
pageloader, {$IFNDEF LCL} PreviewForm, {$ENDIF} HTMLun2, HTMLabt, Submit, ImgForm, FontDlg;
|
{$IFNDEF LCL} PreviewForm, {$ENDIF} HTMLun2, HTMLabt, Submit, ImgForm, FontDlg;
|
||||||
|
|
||||||
{$IFNDEF LCL}
|
{$IFNDEF LCL}
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
@ -182,6 +184,48 @@ procedure TformBrowser.FormCreate(Sender: TObject);
|
|||||||
var
|
var
|
||||||
I: integer;
|
I: integer;
|
||||||
begin
|
begin
|
||||||
|
MyPageLoader := TPageLoader.Create;
|
||||||
|
|
||||||
|
Viewer := THTMLViewer.Create(Self);
|
||||||
|
Viewer.Left := 1;
|
||||||
|
Viewer.Height := 358;
|
||||||
|
Viewer.Top := 1;
|
||||||
|
Viewer.Width := 611;
|
||||||
|
Viewer.OnHotSpotCovered := HotSpotChange;
|
||||||
|
Viewer.OnHotSpotClick := HotSpotClick;
|
||||||
|
Viewer.OnImageRequest := ViewerImageRequest;
|
||||||
|
Viewer.OnFormSubmit := SubmitEvent;
|
||||||
|
Viewer.OnHistoryChange := HistoryChange;
|
||||||
|
Viewer.OnProgress := ViewerProgress;
|
||||||
|
Viewer.TabStop := True;
|
||||||
|
Viewer.TabOrder := 0;
|
||||||
|
Viewer.Align := alClient;
|
||||||
|
Viewer.DefBackground := clWindow;
|
||||||
|
Viewer.BorderStyle := htFocused;
|
||||||
|
Viewer.HistoryMaxCount := 6;
|
||||||
|
Viewer.DefFontName := 'Times New Roman';
|
||||||
|
Viewer.DefPreFontName := 'Courier New';
|
||||||
|
Viewer.DefFontColor := clWindowText;
|
||||||
|
Viewer.DefOverLinkColor := clFuchsia;
|
||||||
|
Viewer.ImageCacheCount := 6;
|
||||||
|
Viewer.NoSelect := False;
|
||||||
|
Viewer.CharSet := DEFAULT_CHARSET;
|
||||||
|
Viewer.PrintMarginLeft := 2;
|
||||||
|
Viewer.PrintMarginRight := 2;
|
||||||
|
Viewer.PrintMarginTop := 2;
|
||||||
|
Viewer.PrintMarginBottom := 2;
|
||||||
|
Viewer.PrintScale := 1;
|
||||||
|
Viewer.OnMouseMove := ViewerMouseMove;
|
||||||
|
Viewer.OnProcessing := ProcessingHandler;
|
||||||
|
Viewer.OnPrintHTMLHeader := ViewerPrintHTMLHeader;
|
||||||
|
Viewer.OnPrintHTMLFooter := ViewerPrintHTMLFooter;
|
||||||
|
Viewer.OnInclude := ViewerInclude;
|
||||||
|
Viewer.OnSoundRequest := SoundRequest;
|
||||||
|
Viewer.OnMetaRefresh := MetaRefreshEvent;
|
||||||
|
Viewer.OnObjectClick := ObjectClick;
|
||||||
|
Viewer.OnRightClick := RightClick;
|
||||||
|
Viewer.Parent := Panel3;
|
||||||
|
|
||||||
{$IFNDEF LCL}
|
{$IFNDEF LCL}
|
||||||
if Screen.Width <= 640 then
|
if Screen.Width <= 640 then
|
||||||
Position := poDefault; {keeps form on screen better}
|
Position := poDefault; {keeps form on screen better}
|
||||||
@ -848,6 +892,7 @@ end;
|
|||||||
procedure TformBrowser.FormDestroy(Sender: TObject);
|
procedure TformBrowser.FormDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
HintWindow.Free;
|
HintWindow.Free;
|
||||||
|
MyPageLoader.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TformBrowser.RightClick(Sender: TObject; Parameters: TRightClickParameters);
|
procedure TformBrowser.RightClick(Sender: TObject; Parameters: TRightClickParameters);
|
||||||
@ -993,15 +1038,30 @@ end;
|
|||||||
|
|
||||||
procedure TformBrowser.LoadURL(AURL: string);
|
procedure TformBrowser.LoadURL(AURL: string);
|
||||||
begin
|
begin
|
||||||
MyPageLoader.LoadFromURL(AURL);
|
MyPageLoaderThread := TPageLoaderThread.Create(True);
|
||||||
Viewer.LoadFromString(MyPageLoader.Contents);
|
MyPageLoaderThread.URL := AURL;
|
||||||
|
MyPageLoaderThread.PageLoader := MyPageLoader;
|
||||||
|
MyPageLoaderThread.OnPageLoadProgress := HandlePageLoaderProgress;
|
||||||
|
MyPageLoaderThread.OnPageLoadTerminated := HandlePageLoaderTerminated;
|
||||||
|
MyPageLoaderThread.FreeOnTerminate := True;
|
||||||
|
MyPageLoaderThread.Resume;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TformBrowser.HandlePageLoaderProgress(APercent: Integer);
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TformBrowser.HandlePageLoaderTerminated(APageLoader: TPageLoader);
|
||||||
|
begin
|
||||||
|
Viewer.LoadFromString(APageLoader.Contents);
|
||||||
Caption := Viewer.DocumentTitle;
|
Caption := Viewer.DocumentTitle;
|
||||||
|
|
||||||
// Load source and debug info
|
// Load source and debug info
|
||||||
memoSource.Lines.Clear();
|
memoSource.Lines.Clear();
|
||||||
memoSource.Lines.AddStrings(MyPageLoader.ContentsList);
|
memoSource.Lines.AddStrings(APageLoader.ContentsList);
|
||||||
memoDebug.Lines.Clear();
|
memoDebug.Lines.Clear();
|
||||||
memoDebug.Lines.AddStrings(MyPageLoader.DebugInfo);
|
memoDebug.Lines.AddStrings(APageLoader.DebugInfo);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TformBrowser.Timer1Timer(Sender: TObject);
|
procedure TformBrowser.Timer1Timer(Sender: TObject);
|
||||||
|
@ -24,13 +24,54 @@ type
|
|||||||
function URLToAbsoluteURL(AInput: string): string;
|
function URLToAbsoluteURL(AInput: string): string;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
TOnPageLoadProgress = procedure (APercent: Integer) of object;
|
||||||
MyPageLoader: TPageLoader;
|
TOnPageLoadTerminated = procedure (APageLoader: TPageLoader) of object;
|
||||||
|
|
||||||
|
{ TPageLoaderThread }
|
||||||
|
|
||||||
|
TPageLoaderThread = class(TThread)
|
||||||
|
private
|
||||||
|
FOnPageLoadProgress: TOnPageLoadProgress;
|
||||||
|
FOnPageLoadTerminated: TOnPageLoadTerminated;
|
||||||
|
public
|
||||||
|
PageLoader: TPageLoader;
|
||||||
|
Progress: Integer;
|
||||||
|
URL: string;
|
||||||
|
destructor Destroy; override;
|
||||||
|
procedure Execute; override;
|
||||||
|
procedure CallPageLoadProgress;
|
||||||
|
procedure CallPageLoadTerminated;
|
||||||
|
property OnPageLoadProgress: TOnPageLoadProgress read FOnPageLoadProgress write FOnPageLoadProgress;
|
||||||
|
property OnPageLoadTerminated: TOnPageLoadTerminated read FOnPageLoadTerminated write FOnPageLoadTerminated;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses httpsend;
|
uses httpsend;
|
||||||
|
|
||||||
|
{ TPageLoaderThread }
|
||||||
|
|
||||||
|
destructor TPageLoaderThread.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPageLoaderThread.Execute;
|
||||||
|
begin
|
||||||
|
PageLoader.LoadFromURL(URL);
|
||||||
|
Synchronize(CallPageLoadTerminated);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPageLoaderThread.CallPageLoadProgress;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPageLoaderThread.CallPageLoadTerminated;
|
||||||
|
begin
|
||||||
|
if Assigned(FOnPageLoadTerminated) then FOnPageLoadTerminated(PageLoader);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TPageLoader }
|
{ TPageLoader }
|
||||||
|
|
||||||
constructor TPageLoader.Create;
|
constructor TPageLoader.Create;
|
||||||
@ -127,13 +168,5 @@ begin
|
|||||||
Result := AInput;
|
Result := AInput;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
|
||||||
|
|
||||||
MyPageLoader := TPageLoader.Create;
|
|
||||||
|
|
||||||
finalization
|
|
||||||
|
|
||||||
MyPageLoader.Free;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user