summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa
diff options
context:
space:
mode:
authorCarolyn MacLeod <carolyn>2010-12-06 20:21:34 +0000
committerCarolyn MacLeod <carolyn>2010-12-06 20:21:34 +0000
commitb2b34fbc2579012e9628a9fa709c082791d6ec37 (patch)
tree004d31e15e91444f6238a73b851c760ca1b9601a /bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa
parent3654966d37611f4d9d2c9f01b9ca8fa3554b426a (diff)
downloadeclipse.platform.swt-b2b34fbc2579012e9628a9fa709c082791d6ec37.tar.gz
eclipse.platform.swt-b2b34fbc2579012e9628a9fa709c082791d6ec37.tar.xz
eclipse.platform.swt-b2b34fbc2579012e9628a9fa709c082791d6ec37.zip
Adding duplex API
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java21
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java11
2 files changed, 28 insertions, 4 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java
index a7da03662f..2332e621c9 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java
@@ -155,10 +155,19 @@ public PrinterData open() {
PrinterData data = null;
NSPrintPanel panel = NSPrintPanel.printPanel();
NSPrintInfo printInfo = new NSPrintInfo(NSPrintInfo.sharedPrintInfo().copy());
- printInfo.setOrientation(printerData.orientation == PrinterData.LANDSCAPE ? OS.NSLandscapeOrientation : OS.NSPortraitOrientation);
- NSMutableDictionary dict = printInfo.dictionary();
+ if (printerData.duplex != SWT.DEFAULT) {
+ int /*long*/ settings = printInfo.PMPrintSettings();
+ int duplex = printerData.duplex == PrinterData.DUPLEX_SHORT_EDGE ? OS.kPMDuplexTumble
+ : printerData.duplex == PrinterData.DUPLEX_LONG_EDGE ? OS.kPMDuplexNoTumble
+ : OS.kPMDuplexNone;
+ OS.PMSetDuplex(settings, duplex);
+ }
+ /* Updating printInfo from PMPrintSettings overrides values in the printInfo dictionary. */
+ printInfo.updateFromPMPrintSettings();
+ NSMutableDictionary dict = printInfo.dictionary();
dict.setValue(NSNumber.numberWithBool(printerData.collate), OS.NSPrintMustCollate);
dict.setValue(NSNumber.numberWithInt(printerData.copyCount), OS.NSPrintCopies);
+ dict.setValue(NSNumber.numberWithInt(printerData.orientation == PrinterData.LANDSCAPE ? OS.NSLandscapeOrientation : OS.NSPortraitOrientation), OS.NSPrintOrientation);
if (printerData.printToFile) {
dict.setValue(OS.NSPrintSaveJob, OS.NSPrintJobDisposition);
}
@@ -211,7 +220,13 @@ public PrinterData open() {
data.collate = false; //TODO: Only set to false if the printer does the collate internally (most printers do)
data.copyCount = new NSNumber(dict.objectForKey(OS.NSPrintCopies)).intValue();
data.copyCount = 1; //TODO: Only set to 1 if the printer does the copy internally (most printers do)
- data.orientation = printInfo.orientation() == OS.NSLandscapeOrientation ? PrinterData.LANDSCAPE : PrinterData.PORTRAIT;
+ data.orientation = new NSNumber(dict.objectForKey(OS.NSPrintOrientation)).intValue() == OS.NSLandscapeOrientation ? PrinterData.LANDSCAPE : PrinterData.PORTRAIT;
+ int /*long*/ settings = printInfo.PMPrintSettings();
+ int outDuplexSetting[] = new int[1];
+ OS.PMGetDuplex(settings, outDuplexSetting);
+ data.duplex = outDuplexSetting[0] == OS.kPMDuplexTumble ? PrinterData.DUPLEX_SHORT_EDGE
+ : outDuplexSetting[0] == OS.kPMDuplexNoTumble ? PrinterData.DUPLEX_LONG_EDGE
+ : PrinterData.DUPLEX_NONE;
NSData nsData = NSKeyedArchiver.archivedDataWithRootObject(printInfo);
data.otherData = new byte[(int)/*64*/nsData.length()];
OS.memmove(data.otherData, nsData.bytes(), data.otherData.length);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java b/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java
index f47295d667..c5a4310e98 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java
@@ -211,10 +211,19 @@ protected void create(DeviceData deviceData) {
printer.retain();
printInfo.setPrinter(printer);
}
- printInfo.setOrientation(data.orientation == PrinterData.LANDSCAPE ? OS.NSLandscapeOrientation : OS.NSPortraitOrientation);
+ if (data.duplex != SWT.DEFAULT) {
+ int /*long*/ settings = printInfo.PMPrintSettings();
+ int duplex = data.duplex == PrinterData.DUPLEX_SHORT_EDGE ? OS.kPMDuplexTumble
+ : data.duplex == PrinterData.DUPLEX_LONG_EDGE ? OS.kPMDuplexNoTumble
+ : OS.kPMDuplexNone;
+ OS.PMSetDuplex(settings, duplex);
+ }
+ /* Updating printInfo from PMPrintSettings overrides values in the printInfo dictionary. */
+ printInfo.updateFromPMPrintSettings();
NSMutableDictionary dict = printInfo.dictionary();
if (data.collate != false) dict.setValue(NSNumber.numberWithBool(data.collate), OS.NSPrintMustCollate);
if (data.copyCount != 1) dict.setValue(NSNumber.numberWithInt(data.copyCount), OS.NSPrintCopies);
+ dict.setValue(NSNumber.numberWithInt(data.orientation == PrinterData.LANDSCAPE ? OS.NSLandscapeOrientation : OS.NSPortraitOrientation), OS.NSPrintOrientation);
if (data.printToFile) {
dict.setValue(OS.NSPrintSaveJob, OS.NSPrintJobDisposition);
if (data.fileName != null) dict.setValue(NSString.stringWith(data.fileName), OS.NSPrintSavePath);