mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 07:04:31 +02:00

* updated http dataprovider for lnet trunk. only enabled if the lnetvisual package is added as a requirement * some cleanup for chmcontentprovider git-svn-id: trunk@17842 -
144 lines
3.3 KiB
ObjectPascal
144 lines
3.3 KiB
ObjectPascal
unit HTTPContentProvider;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, BaseContentProvider, LNetHTTPDataProvider, IpHtml, ComCtrls,
|
|
Menus, Controls;
|
|
|
|
type
|
|
|
|
{ THTTPContentProvider }
|
|
|
|
THTTPContentProvider = class(TBaseContentProvider)
|
|
private
|
|
fHomeUrl: String;
|
|
fPopup: TPopupMenu;
|
|
fStatusBar: TStatusBar;
|
|
fHtml: TIpHtmlPanel;
|
|
fHttpDataProvider: TIpHTTPDataProvider;
|
|
procedure IpHtmlPanelHotChange(Sender: TObject);
|
|
procedure PopupCopyClick(Sender: TObject);
|
|
procedure SetTitle(ATitle: String);
|
|
public
|
|
function CanGoBack: Boolean; override;
|
|
function CanGoForward: Boolean; override;
|
|
function GetHistory: TStrings; override;
|
|
function LoadURL(const AURL: String; const AContext: THelpContext=-1): Boolean; override;
|
|
procedure GoHome; override;
|
|
procedure GoBack; override;
|
|
procedure GoForward; override;
|
|
class function GetProperContentProvider(const AURL: String): TBaseContentProviderClass; override;
|
|
constructor Create(AParent: TWinControl; AImageList: TImageList); override;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{ THTTPContentProvider }
|
|
|
|
procedure THTTPContentProvider.IpHtmlPanelHotChange(Sender: TObject);
|
|
begin
|
|
fStatusBar.SimpleText := fHtml.HotURL;
|
|
end;
|
|
|
|
procedure THTTPContentProvider.PopupCopyClick(Sender: TObject);
|
|
begin
|
|
fHtml.CopyToClipboard;
|
|
end;
|
|
|
|
procedure THTTPContentProvider.SetTitle(ATitle: String);
|
|
begin
|
|
if Parent = nil then exit;
|
|
TTabSheet(Parent).Caption := ATitle;
|
|
end;
|
|
|
|
function THTTPContentProvider.CanGoBack: Boolean;
|
|
begin
|
|
//Result:=inherited CanGoBack;
|
|
fHtml.canGoBack;
|
|
end;
|
|
|
|
function THTTPContentProvider.CanGoForward: Boolean;
|
|
begin
|
|
//Result:=inherited CanGoForward;
|
|
fHtml.canGoForward;
|
|
end;
|
|
|
|
function THTTPContentProvider.GetHistory: TStrings;
|
|
begin
|
|
//Result:=inherited GetHistory;
|
|
end;
|
|
|
|
function THTTPContentProvider.LoadURL(const AURL: String;
|
|
const AContext: THelpContext): Boolean;
|
|
begin
|
|
Result:=True;
|
|
SetTitle('Loading : ' + AURL );
|
|
//WriteLn('Loading URL:', AURL);
|
|
fHtml.OpenURL(AURL);
|
|
SetTitle(AURL);
|
|
if fHomeURL = '' then fHomeURL := AURL;
|
|
|
|
end;
|
|
|
|
procedure THTTPContentProvider.GoHome;
|
|
begin
|
|
LoadURL(fHomeURL);
|
|
end;
|
|
|
|
procedure THTTPContentProvider.GoBack;
|
|
begin
|
|
fHtml.GoBack;
|
|
end;
|
|
|
|
procedure THTTPContentProvider.GoForward;
|
|
begin
|
|
fHtml.GoForward;
|
|
end;
|
|
|
|
class function THTTPContentProvider.GetProperContentProvider(const AURL: String
|
|
): TBaseContentProviderClass;
|
|
begin
|
|
Result := THTTPContentProvider;
|
|
end;
|
|
|
|
constructor THTTPContentProvider.Create(AParent: TWinControl; AImageList: TImageList);
|
|
begin
|
|
inherited Create(AParent, AImageList);
|
|
fPopUp := TPopupMenu.Create(fHtml);
|
|
fPopUp.Items.Add(TMenuItem.Create(fPopup));
|
|
with fPopUp.Items.Items[0] do begin
|
|
Caption := 'Copy';
|
|
OnClick := @PopupCopyClick;
|
|
end;
|
|
|
|
fHttpDataProvider := TIpHTTPDataProvider.Create(AParent);
|
|
fHtml := TIpHtmlPanel.Create(Parent);
|
|
with fHtml do begin
|
|
DataProvider := fHttpDataProvider;
|
|
//OnDocumentOpen := @IpHtmlPanelDocumentOpen;
|
|
OnHotChange := @IpHtmlPanelHotChange;
|
|
PopupMenu := fPopUp;
|
|
Parent := AParent;
|
|
Align := alClient;
|
|
Visible := True;
|
|
end;
|
|
|
|
fStatusBar := TStatusBar.Create(AParent);
|
|
with fStatusBar do begin
|
|
Parent := AParent;
|
|
Align := alBottom;
|
|
SimplePanel := True;
|
|
end;
|
|
end;
|
|
|
|
initialization
|
|
RegisterContentProvider('http://', THTTPContentProvider);
|
|
end.
|
|
|