diff options
author | Silenio Quarti | 2008-07-23 14:37:31 +0000 |
---|---|---|
committer | Silenio Quarti | 2008-07-23 14:37:31 +0000 |
commit | 389adb00dc3aaa9a8f5a87ca149390abf76b86aa (patch) | |
tree | 9248cd7612b113eb91064976e69663e091cd4cec /bundles/org.eclipse.swt/Eclipse SWT Printing/carbon | |
parent | 8f175c0902b6952b9ad454b26d734bc7107ccafe (diff) | |
download | eclipse.platform.swt-389adb00dc3aaa9a8f5a87ca149390abf76b86aa.tar.gz eclipse.platform.swt-389adb00dc3aaa9a8f5a87ca149390abf76b86aa.tar.xz eclipse.platform.swt-389adb00dc3aaa9a8f5a87ca149390abf76b86aa.zip |
showing only one print dialog
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Printing/carbon')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java | 119 |
1 files changed, 61 insertions, 58 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java index 5b47739071..98cafd7de6 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Printing/carbon/org/eclipse/swt/printing/PrintDialog.java @@ -142,65 +142,68 @@ public PrinterData open() { OS.PMSetPageRange(printSettings, 1, OS.kPMPrintAllPages); } boolean[] accepted = new boolean [1]; - OS.PMSessionPageSetupDialog(printSession, pageFormat, accepted); - if (accepted[0]) { - OS.PMSessionPrintDialog(printSession, printSettings, pageFormat, accepted); - if (accepted[0]) { - short[] destType = new short[1]; - OS.PMSessionGetDestinationType(printSession, printSettings, destType); - String name = Printer.getCurrentPrinterName(printSession); - String driver = Printer.DRIVER; - switch (destType[0]) { - case OS.kPMDestinationFax: driver = Printer.FAX_DRIVER; break; - case OS.kPMDestinationFile: driver = Printer.FILE_DRIVER; break; - case OS.kPMDestinationPreview: driver = Printer.PREVIEW_DRIVER; break; - case OS.kPMDestinationPrinter: driver = Printer.PRINTER_DRIVER; break; - } - PrinterData data = new PrinterData(driver, name); - if (destType[0] == OS.kPMDestinationFile) { - data.printToFile = true; - OS.PMSessionCopyDestinationLocation(printSession, printSettings, buffer); - int fileName = OS.CFURLCopyFileSystemPath(buffer[0],OS.kCFURLPOSIXPathStyle); - OS.CFRelease(buffer[0]); - data.fileName = Printer.getString(fileName); - OS.CFRelease(fileName); - } - OS.PMGetCopies(printSettings, buffer); - data.copyCount = buffer[0]; - OS.PMGetFirstPage(printSettings, buffer); - data.startPage = buffer[0]; - OS.PMGetLastPage(printSettings, buffer); - data.endPage = buffer[0]; - OS.PMGetPageRange(printSettings, null, buffer); - if (data.startPage == 1 && data.endPage == OS.kPMPrintAllPages) { - data.scope = PrinterData.ALL_PAGES; - } else { - data.scope = PrinterData.PAGE_RANGE; - } - boolean[] collate = new boolean[1]; - OS.PMGetCollate(printSettings, collate); - data.collate = collate[0]; - - /* Serialize settings */ - int[] flatSettings = new int[1]; - OS.PMFlattenPrintSettings(printSettings, flatSettings); - int[] flatFormat = new int[1]; - OS.PMFlattenPageFormat(pageFormat, flatFormat); - int settingsLength = OS.GetHandleSize (flatSettings[0]); - int formatLength = OS.GetHandleSize (flatFormat[0]); - byte[] otherData = data.otherData = new byte[settingsLength + formatLength + 8]; - int offset = 0; - offset = Printer.packData(flatSettings[0], otherData, offset); - offset = Printer.packData(flatFormat[0], otherData, offset); - OS.DisposeHandle(flatSettings[0]); - OS.DisposeHandle(flatFormat[0]); - - scope = data.scope; - startPage = data.startPage; - endPage = data.endPage; - printToFile = data.printToFile; - return data; + if (OS.VERSION >= 0x1050) { + int printDialogOptions = OS.kPMShowDefaultInlineItems | OS.kPMShowPageAttributesPDE; + OS.PMShowPrintDialogWithOptions(printSession, printSettings, pageFormat, printDialogOptions, accepted); + } else { + OS.PMSessionPageSetupDialog(printSession, pageFormat, accepted); + if (accepted[0]) OS.PMSessionPrintDialog(printSession, printSettings, pageFormat, accepted); + } + if (accepted[0]) { + short[] destType = new short[1]; + OS.PMSessionGetDestinationType(printSession, printSettings, destType); + String name = Printer.getCurrentPrinterName(printSession); + String driver = Printer.DRIVER; + switch (destType[0]) { + case OS.kPMDestinationFax: driver = Printer.FAX_DRIVER; break; + case OS.kPMDestinationFile: driver = Printer.FILE_DRIVER; break; + case OS.kPMDestinationPreview: driver = Printer.PREVIEW_DRIVER; break; + case OS.kPMDestinationPrinter: driver = Printer.PRINTER_DRIVER; break; + } + PrinterData data = new PrinterData(driver, name); + if (destType[0] == OS.kPMDestinationFile) { + data.printToFile = true; + OS.PMSessionCopyDestinationLocation(printSession, printSettings, buffer); + int fileName = OS.CFURLCopyFileSystemPath(buffer[0],OS.kCFURLPOSIXPathStyle); + OS.CFRelease(buffer[0]); + data.fileName = Printer.getString(fileName); + OS.CFRelease(fileName); + } + OS.PMGetCopies(printSettings, buffer); + data.copyCount = buffer[0]; + OS.PMGetFirstPage(printSettings, buffer); + data.startPage = buffer[0]; + OS.PMGetLastPage(printSettings, buffer); + data.endPage = buffer[0]; + OS.PMGetPageRange(printSettings, null, buffer); + if (data.startPage == 1 && data.endPage == OS.kPMPrintAllPages) { + data.scope = PrinterData.ALL_PAGES; + } else { + data.scope = PrinterData.PAGE_RANGE; } + boolean[] collate = new boolean[1]; + OS.PMGetCollate(printSettings, collate); + data.collate = collate[0]; + + /* Serialize settings */ + int[] flatSettings = new int[1]; + OS.PMFlattenPrintSettings(printSettings, flatSettings); + int[] flatFormat = new int[1]; + OS.PMFlattenPageFormat(pageFormat, flatFormat); + int settingsLength = OS.GetHandleSize (flatSettings[0]); + int formatLength = OS.GetHandleSize (flatFormat[0]); + byte[] otherData = data.otherData = new byte[settingsLength + formatLength + 8]; + int offset = 0; + offset = Printer.packData(flatSettings[0], otherData, offset); + offset = Printer.packData(flatFormat[0], otherData, offset); + OS.DisposeHandle(flatSettings[0]); + OS.DisposeHandle(flatFormat[0]); + + scope = data.scope; + startPage = data.startPage; + endPage = data.endPage; + printToFile = data.printToFile; + return data; } OS.PMRelease(pageFormat); } |