mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-08 22:39:36 +01:00
Qt6: started printing support for Qt6.
This commit is contained in:
parent
293608b8ff
commit
80b197d439
@ -44,14 +44,14 @@ interface
|
|||||||
{$IFDEF LCLCocoa}
|
{$IFDEF LCLCocoa}
|
||||||
{$I cocoaprinters_h.inc}
|
{$I cocoaprinters_h.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters_h.inc}
|
{$I qtprinters_h.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IFDEF LCLGtk2}
|
{$IFDEF LCLGtk2}
|
||||||
{$I cupsprinters_h.inc}
|
{$I cupsprinters_h.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters_h.inc}
|
{$I qtprinters_h.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$I cupsprinters_h.inc}
|
{$I cupsprinters_h.inc}
|
||||||
@ -60,7 +60,7 @@ interface
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$IFDEF MSWindows}
|
{$IFDEF MSWindows}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters_h.inc}
|
{$I qtprinters_h.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$I winprinters_h.inc}
|
{$I winprinters_h.inc}
|
||||||
@ -81,14 +81,14 @@ implementation
|
|||||||
{$IFDEF LCLCocoa}
|
{$IFDEF LCLCocoa}
|
||||||
{$I cocoaprinters.inc}
|
{$I cocoaprinters.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters.inc}
|
{$I qtprinters.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IFDEF LCLGtk2}
|
{$IFDEF LCLGtk2}
|
||||||
{$I cupsprinters.inc}
|
{$I cupsprinters.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters.inc}
|
{$I qtprinters.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$I cupsprinters.inc}
|
{$I cupsprinters.inc}
|
||||||
@ -97,7 +97,7 @@ implementation
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$IFDEF MSWindows}
|
{$IFDEF MSWindows}
|
||||||
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5)}
|
{$IF DEFINED(LCLQt) OR DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
{$I qtprinters.inc}
|
{$I qtprinters.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$I winprinters.inc}
|
{$I winprinters.inc}
|
||||||
|
|||||||
@ -159,7 +159,11 @@ implementation
|
|||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
uses qtobjects, qt5, qtint, LazUTF8;
|
uses qtobjects, qt5, qtint, LazUTF8;
|
||||||
{$I qtprndialogs.inc}
|
{$I qtprndialogs.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
uses qtobjects, qt6, qtint, LazUTF8;
|
||||||
|
{$I qtprndialogs.inc}
|
||||||
|
{$ENDIF}
|
||||||
{$IFDEF LCLGtk2}
|
{$IFDEF LCLGtk2}
|
||||||
uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst;
|
uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst;
|
||||||
{$I cupsprndialogs.inc}
|
{$I cupsprndialogs.inc}
|
||||||
@ -172,11 +176,16 @@ implementation
|
|||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
uses qtobjects, qt5, qtint, LazUTF8;
|
uses qtobjects, qt5, qtint, LazUTF8;
|
||||||
{$I qtprndialogs.inc}
|
{$I qtprndialogs.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
uses qtobjects, qt6, qtint, LazUTF8;
|
||||||
|
{$I qtprndialogs.inc}
|
||||||
|
{$ELSE}
|
||||||
uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst;
|
uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst;
|
||||||
{$I cupsprndialogs.inc}
|
{$I cupsprndialogs.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$ENDIF}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
@ -190,11 +199,17 @@ implementation
|
|||||||
uses Windows,
|
uses Windows,
|
||||||
qtobjects, qtwidgets, qt5, LCLIntf, LCLType, LazUTF8;
|
qtobjects, qtwidgets, qt5, LCLIntf, LCLType, LazUTF8;
|
||||||
{$I qtprndialogs.inc}
|
{$I qtprndialogs.inc}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
uses Windows,
|
||||||
|
qtobjects, qtwidgets, qt6, LCLIntf, LCLType, LazUTF8;
|
||||||
|
{$I qtprndialogs.inc}
|
||||||
|
{$ELSE}
|
||||||
uses Windows, WinUtilPrn, InterfaceBase, LCLIntf, LCLType, WinVer;
|
uses Windows, WinUtilPrn, InterfaceBase, LCLIntf, LCLType, WinVer;
|
||||||
{$I winprndialogs.inc}
|
{$I winprndialogs.inc}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ begin
|
|||||||
if i>=0 then
|
if i>=0 then
|
||||||
result := FPapers[i].PageSize
|
result := FPapers[i].PageSize
|
||||||
else
|
else
|
||||||
Result := {$IFDEF LCLQt5}QPagedPaintDeviceA4{$ELSE}QPrinterA4{$ENDIF};
|
Result := {$IFDEF LCLQt6}QPageSizeId_A4{$ELSE}{$IFDEF LCLQt5}QPagedPaintDeviceA4{$ELSE}QPrinterA4{$ENDIF}{$ENDIF};
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TQtPrinters.BeginPage;
|
procedure TQtPrinters.BeginPage;
|
||||||
@ -56,7 +56,7 @@ procedure TQtPrinters.EnumQPrinters(Lst: TStrings);
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
PrnInfo: QPrinterInfoH;
|
PrnInfo: QPrinterInfoH;
|
||||||
{$IFDEF LCLQt5}
|
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
AList: QStringListH;
|
AList: QStringListH;
|
||||||
DefaultPrn: WideString;
|
DefaultPrn: WideString;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
@ -66,7 +66,7 @@ var
|
|||||||
PrnName: WideString;
|
PrnName: WideString;
|
||||||
begin
|
begin
|
||||||
inherited DoEnumPrinters(Lst);
|
inherited DoEnumPrinters(Lst);
|
||||||
{$IFDEF LCLQt5}
|
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
Lst.Clear;
|
Lst.Clear;
|
||||||
AList := QStringList_create();
|
AList := QStringList_create();
|
||||||
PrnInfo := QPrinterInfo_create();
|
PrnInfo := QPrinterInfo_create();
|
||||||
@ -142,6 +142,33 @@ end;
|
|||||||
|
|
||||||
procedure TQtPrinters.CachePapers(OnlySupportedByPrinter: boolean);
|
procedure TQtPrinters.CachePapers(OnlySupportedByPrinter: boolean);
|
||||||
const
|
const
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
ArrPapers: array[0..QPageSizeId_LastPageSize] of string[119] = (
|
||||||
|
'Letter', 'Legal', 'Executive', 'A0', 'A1', 'A2', 'A3',
|
||||||
|
'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10', 'B0', 'B1', 'B2',
|
||||||
|
'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10', 'C5E',
|
||||||
|
'Comm10E', 'DLE', 'Folio', 'Ledger', 'Tabloid', 'Custom',
|
||||||
|
'A3Extra', 'A4Extra', 'A4Plus', 'A4Small', 'A5Extra', 'B5Extra',
|
||||||
|
'JisB0', 'JisB1', 'JisB2', 'JisB3', 'JisB4', 'JisB5', 'JisB6',
|
||||||
|
'JisB7', 'JisB8', 'JisB9', 'JisB10', 'AnsiC', 'AnsiD', 'AnsiE' {51},
|
||||||
|
'LegalExtra', 'LetterExtra', 'LetterPlus', 'LetterSmall',
|
||||||
|
'TabloidExtra', 'ArchA', 'ArchB', 'ArchC', 'ArchD', 'ArchE',
|
||||||
|
'Imperial7x9', 'Imperial8x10', 'Imperial9x11', 'Imperial9x12', 'Imperial10x11',
|
||||||
|
'Imperial10x13', 'Imperial10x14', 'Imperial12x11', 'Imperial15x11',
|
||||||
|
'ExecutiveStandard' {71}, 'Note', 'Quarto', 'Statement', 'SuperA', 'SuperB',
|
||||||
|
'Postcard', 'DoublePostcard','Prc16K', 'Prc32K', 'Prc32KBig', 'FanFoldUS',
|
||||||
|
'FanFoldGerman', 'FanFoldGermanLegal',
|
||||||
|
'EnvelopeB4', 'EnvelopeB5', 'EnvelopeB6', 'EnvelopeC0', 'EnvelopeC1',
|
||||||
|
'EnvelopeC2', 'EnvelopeC3', 'EnvelopeC4', 'EnvelopeC6', 'EnvelopeC65' {94},
|
||||||
|
'EnvelopeC7', 'EnvelopeC9', 'EnvelopeC11', 'EnvelopeC12', 'EnvelopeC14',
|
||||||
|
'EnvelopeMonarch', 'EnvelopePersonal', 'EnvelopeChou3', 'EnvelopeChou4',
|
||||||
|
'EnvelopeInvite', 'EnvelopeItalian', 'EnvelopeKaku2', 'EnvelopeKaku3',
|
||||||
|
'EnvelopePrc1', 'EnvelopePrc2', 'EnvelopePrc3', 'EnvelopePrc4',
|
||||||
|
'EnvelopePrc5', 'EnvelopePrc6', 'EnvelopePrc7', 'EnvelopePrc8',
|
||||||
|
'EnvelopePrc9', 'EnvelopePrc10', 'EnvelopeYou4'
|
||||||
|
);
|
||||||
|
|
||||||
|
{$ELSE}
|
||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
ArrPapers: array[0..QPagedPaintDeviceCustom] of string[12] = (
|
ArrPapers: array[0..QPagedPaintDeviceCustom] of string[12] = (
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
@ -154,11 +181,12 @@ const
|
|||||||
'B6', 'B7', 'B8', 'B9', 'C5E',
|
'B6', 'B7', 'B8', 'B9', 'C5E',
|
||||||
'Comm10E', 'DLE', 'Folio', 'Ledger', 'Tabloid',
|
'Comm10E', 'DLE', 'Folio', 'Ledger', 'Tabloid',
|
||||||
'Custom');
|
'Custom');
|
||||||
|
{$ENDIF}
|
||||||
var
|
var
|
||||||
PrinterList: TStringList;
|
PrinterList: TStringList;
|
||||||
Info: QPrinterInfoH;
|
Info: QPrinterInfoH;
|
||||||
Arr: TPtrIntArray;
|
Arr: TPtrIntArray;
|
||||||
{$IFDEF LCLQt5}
|
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
APrnName: WideString;
|
APrnName: WideString;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CurrentPageSize, PageSize: QtLCLPrinterPageSize;
|
CurrentPageSize, PageSize: QtLCLPrinterPageSize;
|
||||||
@ -181,7 +209,12 @@ var
|
|||||||
// In the mean time, in order to not present the user with multiple
|
// In the mean time, in order to not present the user with multiple
|
||||||
// custom papers, just one is allowed.
|
// custom papers, just one is allowed.
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
if (PgSize = QPageSizeId_Custom) and customPaperAdded then
|
||||||
|
{$ELSE}
|
||||||
if (pgSize=30) and customPaperAdded then
|
if (pgSize=30) and customPaperAdded then
|
||||||
|
{$ENDIF}
|
||||||
exit;
|
exit;
|
||||||
i := Length(FPapers);
|
i := Length(FPapers);
|
||||||
SetLength(FPapers, i+1);
|
SetLength(FPapers, i+1);
|
||||||
@ -220,10 +253,17 @@ var
|
|||||||
procedure AddAll;
|
procedure AddAll;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
{$IFDEF LCLQt5}
|
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
oldPageSize: QPagedPaintDevicePageSize;
|
oldPageSize: QtLCLPrinterPageSize;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
oldPageSize := QtDefaultPrinter.PageSize;
|
||||||
|
for i := QPageSizeId_Letter to QPageSizeId_LastPageSize do
|
||||||
|
Add(ArrPapers[i], i);
|
||||||
|
if oldPageSize <> QtDefaultPrinter.PageSize then
|
||||||
|
QtDefaultPrinter.PageSize := oldPageSize;
|
||||||
|
{$ELSE}
|
||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
oldPageSize := QtDefaultPrinter.PageSize;
|
oldPageSize := QtDefaultPrinter.PageSize;
|
||||||
for i:=QPagedPaintDeviceA4 to QPagedPaintDeviceCustom do
|
for i:=QPagedPaintDeviceA4 to QPagedPaintDeviceCustom do
|
||||||
@ -234,6 +274,7 @@ var
|
|||||||
for i:=QPrinterA4 to QPrinterCustom do
|
for i:=QPrinterA4 to QPrinterCustom do
|
||||||
Add(ArrPapers[i], i);
|
Add(ArrPapers[i], i);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -253,23 +294,33 @@ begin
|
|||||||
Index := PrinterList.IndexOf(UTF8Encode(QtDefaultPrinter.PrinterName));
|
Index := PrinterList.IndexOf(UTF8Encode(QtDefaultPrinter.PrinterName));
|
||||||
if Index>=0 then
|
if Index>=0 then
|
||||||
begin
|
begin
|
||||||
{$IFDEF LCLQt5}
|
{$IF DEFINED(LCLQt5) OR DEFINED(LCLQt6)}
|
||||||
Info := QPrinterInfo_create();
|
Info := QPrinterInfo_create();
|
||||||
APrnName := PrinterList{%H-}[Index];
|
APrnName := PrinterList{%H-}[Index];
|
||||||
QPrinterInfo_printerInfo(Info, @APrnName);
|
QPrinterInfo_printerInfo(Info, @APrnName);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
Info := QPrinterInfoH(PrinterList.Objects[Index]);
|
Info := QPrinterInfoH(PrinterList.Objects[Index]);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
// rewrite in qt62.pas
|
||||||
|
QPrinterInfo_supportedPaperSizes(Info, Arr);
|
||||||
|
{$ELSE}
|
||||||
QPrinterInfo_supportedPaperSizes(Info, @Arr);
|
QPrinterInfo_supportedPaperSizes(Info, @Arr);
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
QPrinterInfo_destroy(Info);
|
QPrinterInfo_destroy(Info);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
for PageSize in Arr do
|
for PageSize in Arr do
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
for Index := QPageSizeId_Letter to QPageSizeId_LastPageSize do
|
||||||
|
{$ELSE}
|
||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
for Index := QPagedPaintDeviceA4 to QPagedPaintDeviceCustom do
|
for Index := QPagedPaintDeviceA4 to QPagedPaintDeviceCustom do
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
for Index := QPrinterA4 to QPrinterCustom do
|
for Index := QPrinterA4 to QPrinterCustom do
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$ENDIF}
|
||||||
begin
|
begin
|
||||||
if Index=PageSize then
|
if Index=PageSize then
|
||||||
Add(ArrPapers[Index], PageSize);
|
Add(ArrPapers[Index], PageSize);
|
||||||
|
|||||||
@ -1,20 +1,21 @@
|
|||||||
{%MainUnit ../osprinters.pas}
|
{%MainUnit ../osprinters.pas}
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Printers, {$IFDEF LCLQt5}qt5{$ELSE}qt4{$ENDIF}, qtobjects,
|
Classes, SysUtils, Printers,
|
||||||
|
{$IFDEF LCLQt6}qt6{$ELSE}{$IFDEF LCLQt5}qt5{$ELSE}qt4{$ENDIF}{$ENDIF}, qtobjects,
|
||||||
LCLType, LCLProc, LazUTF8;
|
LCLType, LCLProc, LazUTF8;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
QtLCLPrinterPageSize = QPageSizeId;
|
||||||
|
{$ELSE}
|
||||||
{$IFDEF LCLQt5}
|
{$IFDEF LCLQt5}
|
||||||
QtLCLPrinterPageSize = QPagedPaintDevicePageSize;
|
QtLCLPrinterPageSize = QPagedPaintDevicePageSize;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
QtLCLPrinterPageSize = QPrinterPageSize;
|
QtLCLPrinterPageSize = QPrinterPageSize;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
{$ENDIF}
|
||||||
TPaperRec = record
|
TPaperRec = record
|
||||||
{$IFDEF LCLQt5}
|
PageSize: QtLCLPrinterPageSize;
|
||||||
PageSize: QPagedPaintDevicePageSize;
|
|
||||||
{$ELSE}
|
|
||||||
PageSize: QPrinterPageSize;
|
|
||||||
{$ENDIF}
|
|
||||||
PaperName: string;
|
PaperName: string;
|
||||||
PageRect: TRect;
|
PageRect: TRect;
|
||||||
PaperRect: TRect;
|
PaperRect: TRect;
|
||||||
|
|||||||
@ -130,7 +130,11 @@ begin
|
|||||||
PrnOptions := PrnOptions or QAbstractPrintDialogPrintPageRange;
|
PrnOptions := PrnOptions or QAbstractPrintDialogPrintPageRange;
|
||||||
|
|
||||||
{this function does not have effect on Darwin}
|
{this function does not have effect on Darwin}
|
||||||
|
{$IFDEF LCLQt6}
|
||||||
|
QPrintDialog_setOptions(QtPrnDlg, PrnOptions);
|
||||||
|
{$ELSE}
|
||||||
QAbstractPrintDialog_setEnabledOptions(QtPrnDlg, PrnOptions);
|
QAbstractPrintDialog_setEnabledOptions(QtPrnDlg, PrnOptions);
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
QtDefaultPrinter.numCopies := Copies;
|
QtDefaultPrinter.numCopies := Copies;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user