1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/cocoa/printdlg.mm
3 // Purpose: wxPrintDialog, wxPageSetupDialog
4 // Author: Stefan Csomor
8 // Copyright: (c) Stefan Csomor
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
14 #if wxUSE_PRINTING_ARCHITECTURE
16 #include "wx/printdlg.h"
17 #include "wx/modalhook.h"
20 #include "wx/object.h"
21 #include "wx/dcprint.h"
22 #include "wx/msgdlg.h"
23 #include "wx/textctrl.h"
25 #include "wx/stattext.h"
28 #include "wx/osx/printdlg.h"
29 #include "wx/osx/private/print.h"
30 #include "wx/osx/private.h"
32 IMPLEMENT_CLASS(wxOSXCocoaPrintData, wxOSXPrintData)
34 wxOSXCocoaPrintData::wxOSXCocoaPrintData()
36 m_macPrintInfo = [[NSPrintInfo alloc] init];
37 m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat];
38 m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings];
39 m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ;
40 PMGetPageFormatPaper(m_macPageFormat, &m_macPaper);
43 wxOSXCocoaPrintData::~wxOSXCocoaPrintData()
45 [m_macPrintInfo release];
48 void wxOSXCocoaPrintData::UpdateFromPMState()
50 [m_macPrintInfo updateFromPMPageFormat];
51 [m_macPrintInfo updateFromPMPrintSettings];
54 void wxOSXCocoaPrintData::UpdateToPMState()
56 m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat];
57 m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings];
58 m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ;
61 int wxMacPrintDialog::ShowModal()
63 WX_HOOK_MODAL_DIALOG();
65 m_printDialogData.GetPrintData().ConvertToNative();
67 int result = wxID_CANCEL;
69 NSPrintPanel* panel = [NSPrintPanel printPanel];
70 NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_printDialogData.GetPrintData().GetNativeData())->GetNSPrintInfo();
72 NSMutableDictionary* dict = [printInfo printSettings];
73 [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMinPage()] forKey:@"com_apple_print_PrintSettings_PMFirstPage"];
74 [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMaxPage()] forKey:@"com_apple_print_PrintSettings_PMLastPage"];
76 if ( (NSInteger)[panel runModalWithPrintInfo:printInfo] == NSOKButton )
79 m_printDialogData.GetPrintData().ConvertFromNative();
80 ((wxOSXPrintData*)m_printDialogData.GetPrintData().GetNativeData())->TransferTo( &m_printDialogData );
86 int wxMacPageSetupDialog::ShowModal()
88 WX_HOOK_MODAL_DIALOG();
90 m_pageSetupData.GetPrintData().ConvertToNative();
91 ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->TransferFrom( &m_pageSetupData );
93 int result = wxID_CANCEL;
95 NSPageLayout *pageLayout = [NSPageLayout pageLayout];
96 NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->GetNSPrintInfo();
97 if ( [pageLayout runModalWithPrintInfo:printInfo] == NSOKButton )
100 m_pageSetupData.GetPrintData().ConvertFromNative();
101 m_pageSetupData.SetPaperSize( m_pageSetupData.GetPrintData().GetPaperSize() );