diff options
author | Carolyn MacLeod <carolyn> | 2010-12-06 20:21:34 +0000 |
---|---|---|
committer | Carolyn MacLeod <carolyn> | 2010-12-06 20:21:34 +0000 |
commit | b2b34fbc2579012e9628a9fa709c082791d6ec37 (patch) | |
tree | 004d31e15e91444f6238a73b851c760ca1b9601a /bundles/org.eclipse.swt/Eclipse SWT Printing/cocoa | |
parent | 3654966d37611f4d9d2c9f01b9ca8fa3554b426a (diff) | |
download | eclipse.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')
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); |