mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2024-11-24 08:02:15 +02:00
ca8bc9dff4
Added the PDS file to extract the HTML Help files using PasDoc Added more XML documentation Fixed some XML errors. Removed the license copy from the pas units. Updated the LICENSE.md file
234 lines
8.5 KiB
ObjectPascal
234 lines
8.5 KiB
ObjectPascal
unit uCEFCommandHandler;
|
|
|
|
{$IFDEF FPC}
|
|
{$MODE OBJFPC}{$H+}
|
|
{$ENDIF}
|
|
|
|
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
|
|
{$MINENUMSIZE 4}
|
|
|
|
{$I cef.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
|
|
|
type
|
|
TCefCommandHandlerOwn = class(TCefBaseRefCountedOwn, ICefCommandHandler)
|
|
protected
|
|
function OnChromeCommand(const browser: ICefBrowser; command_id: integer; disposition: TCefWindowOpenDisposition): boolean; virtual;
|
|
function OnIsChromeAppMenuItemVisible(const browser: ICefBrowser; command_id: integer): boolean; virtual;
|
|
function OnIsChromeAppMenuItemEnabled(const browser: ICefBrowser; command_id: integer): boolean; virtual;
|
|
function OnIsChromePageActionIconVisible(icon_type: TCefChromePageActionIconType): boolean; virtual;
|
|
function OnIsChromeToolbarButtonVisible(button_type: TCefChromeToolbarButtonType): boolean; virtual;
|
|
|
|
procedure RemoveReferences; virtual;
|
|
|
|
public
|
|
constructor Create; virtual;
|
|
end;
|
|
|
|
TCustomCommandHandler = class(TCefCommandHandlerOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
function OnChromeCommand(const browser: ICefBrowser; command_id: integer; disposition: TCefWindowOpenDisposition): boolean; override;
|
|
function OnIsChromeAppMenuItemVisible(const browser: ICefBrowser; command_id: integer): boolean; override;
|
|
function OnIsChromeAppMenuItemEnabled(const browser: ICefBrowser; command_id: integer): boolean; override;
|
|
function OnIsChromePageActionIconVisible(icon_type: TCefChromePageActionIconType): boolean; override;
|
|
function OnIsChromeToolbarButtonVisible(button_type: TCefChromeToolbarButtonType): boolean; override;
|
|
|
|
procedure RemoveReferences; override;
|
|
|
|
public
|
|
constructor Create(const events : IChromiumEvents); reintroduce; virtual;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{$IFDEF DELPHI16_UP}
|
|
System.SysUtils,
|
|
{$ELSE}
|
|
SysUtils,
|
|
{$ENDIF}
|
|
uCEFMiscFunctions, uCEFLibFunctions, uCEFBrowser;
|
|
|
|
function cef_command_handler_on_chrome_command(self : PCefCommandHandler;
|
|
browser : PCefBrowser;
|
|
command_id : integer;
|
|
disposition : TCefWindowOpenDisposition): Integer; stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
Result := Ord(False);
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefCommandHandlerOwn) then
|
|
Result := Ord(TCefCommandHandlerOwn(TempObject).OnChromeCommand(TCefBrowserRef.UnWrap(browser),
|
|
command_id,
|
|
disposition));
|
|
end;
|
|
|
|
function cef_command_handler_is_chrome_app_menu_item_visible(self : PCefCommandHandler;
|
|
browser : PCefBrowser;
|
|
command_id : integer): integer; stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
Result := Ord(True);
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefCommandHandlerOwn) then
|
|
Result := Ord(TCefCommandHandlerOwn(TempObject).OnIsChromeAppMenuItemVisible(TCefBrowserRef.UnWrap(browser),
|
|
command_id));
|
|
end;
|
|
|
|
function cef_command_handler_is_chrome_app_menu_item_enabled(self : PCefCommandHandler;
|
|
browser : PCefBrowser;
|
|
command_id : integer): integer; stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
Result := Ord(True);
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefCommandHandlerOwn) then
|
|
Result := Ord(TCefCommandHandlerOwn(TempObject).OnIsChromeAppMenuItemEnabled(TCefBrowserRef.UnWrap(browser),
|
|
command_id));
|
|
end;
|
|
|
|
function cef_command_handler_is_chrome_page_action_icon_visible(self : PCefCommandHandler;
|
|
icon_type : TCefChromePageActionIconType): integer; stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
Result := Ord(True);
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefCommandHandlerOwn) then
|
|
Result := Ord(TCefCommandHandlerOwn(TempObject).OnIsChromePageActionIconVisible(icon_type));
|
|
end;
|
|
|
|
function cef_command_handler_is_chrome_toolbar_button_visible(self : PCefCommandHandler;
|
|
button_type : TCefChromeToolbarButtonType): integer; stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
Result := Ord(True);
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefCommandHandlerOwn) then
|
|
Result := Ord(TCefCommandHandlerOwn(TempObject).OnIsChromeToolbarButtonVisible(button_type));
|
|
end;
|
|
|
|
constructor TCefCommandHandlerOwn.Create;
|
|
begin
|
|
inherited CreateData(SizeOf(TCefCommandHandler));
|
|
|
|
with PCefCommandHandler(FData)^ do
|
|
begin
|
|
on_chrome_command := {$IFDEF FPC}@{$ENDIF}cef_command_handler_on_chrome_command;
|
|
is_chrome_app_menu_item_visible := {$IFDEF FPC}@{$ENDIF}cef_command_handler_is_chrome_app_menu_item_visible;
|
|
is_chrome_app_menu_item_enabled := {$IFDEF FPC}@{$ENDIF}cef_command_handler_is_chrome_app_menu_item_enabled;
|
|
is_chrome_page_action_icon_visible := {$IFDEF FPC}@{$ENDIF}cef_command_handler_is_chrome_page_action_icon_visible;
|
|
is_chrome_toolbar_button_visible := {$IFDEF FPC}@{$ENDIF}cef_command_handler_is_chrome_toolbar_button_visible;
|
|
end;
|
|
end;
|
|
|
|
function TCefCommandHandlerOwn.OnChromeCommand(const browser: ICefBrowser; command_id: integer; disposition: TCefWindowOpenDisposition): boolean;
|
|
begin
|
|
Result := False;
|
|
end;
|
|
|
|
function TCefCommandHandlerOwn.OnIsChromeAppMenuItemVisible(const browser: ICefBrowser; command_id: integer): boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
function TCefCommandHandlerOwn.OnIsChromeAppMenuItemEnabled(const browser: ICefBrowser; command_id: integer): boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
function TCefCommandHandlerOwn.OnIsChromePageActionIconVisible(icon_type: TCefChromePageActionIconType): boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
function TCefCommandHandlerOwn.OnIsChromeToolbarButtonVisible(button_type: TCefChromeToolbarButtonType): boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TCefCommandHandlerOwn.RemoveReferences;
|
|
begin
|
|
//
|
|
end;
|
|
|
|
|
|
// TCustomCommandHandler
|
|
|
|
constructor TCustomCommandHandler.Create(const events : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(events);
|
|
end;
|
|
|
|
destructor TCustomCommandHandler.Destroy;
|
|
begin
|
|
RemoveReferences;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TCustomCommandHandler.RemoveReferences;
|
|
begin
|
|
FEvents := nil;
|
|
end;
|
|
|
|
function TCustomCommandHandler.OnChromeCommand(const browser: ICefBrowser; command_id: integer; disposition: TCefWindowOpenDisposition): boolean;
|
|
begin
|
|
if (FEvents <> nil) then
|
|
Result := IChromiumEvents(FEvents).doOnChromeCommand(browser, command_id, disposition)
|
|
else
|
|
Result := inherited OnChromeCommand(browser, command_id, disposition);
|
|
end;
|
|
|
|
function TCustomCommandHandler.OnIsChromeAppMenuItemVisible(const browser: ICefBrowser; command_id: integer): boolean;
|
|
begin
|
|
if (FEvents <> nil) then
|
|
Result := IChromiumEvents(FEvents).doOnIsChromeAppMenuItemVisible(browser, command_id)
|
|
else
|
|
Result := inherited OnIsChromeAppMenuItemVisible(browser, command_id);
|
|
end;
|
|
|
|
function TCustomCommandHandler.OnIsChromeAppMenuItemEnabled(const browser: ICefBrowser; command_id: integer): boolean;
|
|
begin
|
|
if (FEvents <> nil) then
|
|
Result := IChromiumEvents(FEvents).doOnIsChromeAppMenuItemEnabled(browser, command_id)
|
|
else
|
|
Result := inherited OnIsChromeAppMenuItemEnabled(browser, command_id);
|
|
end;
|
|
|
|
function TCustomCommandHandler.OnIsChromePageActionIconVisible(icon_type: TCefChromePageActionIconType): boolean;
|
|
begin
|
|
if (FEvents <> nil) then
|
|
Result := IChromiumEvents(FEvents).doOnIsChromePageActionIconVisible(icon_type)
|
|
else
|
|
Result := inherited OnIsChromePageActionIconVisible(icon_type);
|
|
end;
|
|
|
|
function TCustomCommandHandler.OnIsChromeToolbarButtonVisible(button_type: TCefChromeToolbarButtonType): boolean;
|
|
begin
|
|
if (FEvents <> nil) then
|
|
Result := IChromiumEvents(FEvents).doOnIsChromeToolbarButtonVisible(button_type)
|
|
else
|
|
Result := inherited OnIsChromeToolbarButtonVisible(button_type);
|
|
end;
|
|
|
|
end.
|