lazarus/components/printers/cocoa/cocoaprndialogs.inc
2018-11-08 21:54:32 +00:00

81 lines
1.7 KiB
PHP

{%MainUnit ../printersdlgs.pp}
const
SExecute = 'Execute';
{ TPageSetupDialog }
function TPageSetupDialog.DoExecute: Boolean;
var
CocoaPrinter: TCocoaPrinter;
pageLayout: NSPageLayout;
pInfo: NSPrintInfo;
begin
if not Assigned(Printer) then Exit;
CocoaPrinter := Printer as TCocoaPrinter;
pInfo := NSPrintInfo.sharedPrintInfo;
pageLayout := NSPageLayout.pageLayout;
result := pageLayout.runModalWithPrintInfo(pInfo)=NSOKButton;
if result then
CocoaPrinter.Validate;
// TODO: make it through the delegate for sheet support
end;
{ TPrinterSetupDialog }
function TPrinterSetupDialog.DoExecute: Boolean;
var
delegate: PrintDialogDelegate;
window: NSWindow = nil;
begin
Result := False;
if not Assigned(Printer) then Exit;
if Printer.Printers.Count <= 0 then Exit;
if AttachTo<>nil then
window := NSView(AttachTo.Handle).window;
delegate := PrintDialogDelegate.alloc.init;
delegate.sender := self;
delegate.response := OnDialogResult;
delegate.attachToWindow := window;
result := delegate.RunSetupPrinter;
end;
{ TPrintDialog }
function TPrintDialog.DoExecute: Boolean;
var
window: NSWindow = nil;
begin
Result := False;
// TODO: Options, Title
if not Assigned(Printer) then Exit;
if AttachTo<>nil then
window := NSView(AttachTo.Handle).window;
printDelegate := PrintDialogDelegate.alloc.init;
printDelegate.renderView := nil;
printDelegate.sender := self;
printDelegate.response := OnDialogResult;
printDelegate.attachToWindow := window;
printDelegate.printDialog := Self;
if poBeforeBeginDoc in Options then
begin
result := printDelegate.RunPrintJob;
printDelegate := nil;
end
else
result := true;
end;