CEF4Delphi/source/uCEFCommandHandler.pas
salvadordf ca8bc9dff4 Added cef4delphi.chm help file
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
2023-08-09 19:38:57 +02:00

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.