///////////////////////////////////////////////////////////////////////////// // Name: src/osx/cocoa/printdlg.mm // Purpose: wxPrintDialog, wxPageSetupDialog // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" #if wxUSE_PRINTING_ARCHITECTURE #include "wx/printdlg.h" #include "wx/modalhook.h" #ifndef WX_PRECOMP #include "wx/object.h" #include "wx/dcprint.h" #include "wx/msgdlg.h" #include "wx/textctrl.h" #include "wx/sizer.h" #include "wx/stattext.h" #endif #include "wx/osx/printdlg.h" #include "wx/osx/private/print.h" #include "wx/osx/private.h" wxIMPLEMENT_CLASS(wxOSXCocoaPrintData, wxOSXPrintData); wxOSXCocoaPrintData::wxOSXCocoaPrintData() { m_macPrintInfo = [[NSPrintInfo alloc] init]; m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat]; m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings]; m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ; PMGetPageFormatPaper(m_macPageFormat, &m_macPaper); } wxOSXCocoaPrintData::~wxOSXCocoaPrintData() { [m_macPrintInfo release]; } void wxOSXCocoaPrintData::UpdateFromPMState() { [m_macPrintInfo updateFromPMPageFormat]; [m_macPrintInfo updateFromPMPrintSettings]; } void wxOSXCocoaPrintData::UpdateToPMState() { m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat]; m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings]; m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ; } int wxMacPrintDialog::ShowModal() { WX_HOOK_MODAL_DIALOG(); m_printDialogData.GetPrintData().ConvertToNative(); int result = wxID_CANCEL; NSPrintPanel* panel = [NSPrintPanel printPanel]; NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_printDialogData.GetPrintData().GetNativeData())->GetNSPrintInfo(); NSMutableDictionary* dict = [printInfo printSettings]; [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMinPage()] forKey:@"com_apple_print_PrintSettings_PMFirstPage"]; [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMaxPage()] forKey:@"com_apple_print_PrintSettings_PMLastPage"]; OSXBeginModalDialog(); if ( (NSInteger)[panel runModalWithPrintInfo:printInfo] == NSModalResponseOK ) { result = wxID_OK; m_printDialogData.GetPrintData().ConvertFromNative(); ((wxOSXPrintData*)m_printDialogData.GetPrintData().GetNativeData())->TransferTo( &m_printDialogData ); } OSXEndModalDialog(); return result; } int wxMacPageSetupDialog::ShowModal() { WX_HOOK_MODAL_DIALOG(); m_pageSetupData.GetPrintData().ConvertToNative(); ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->TransferFrom( &m_pageSetupData ); int result = wxID_CANCEL; NSPageLayout *pageLayout = [NSPageLayout pageLayout]; NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->GetNSPrintInfo(); OSXBeginModalDialog(); if ( [pageLayout runModalWithPrintInfo:printInfo] == NSModalResponseOK ) { result = wxID_OK; m_pageSetupData.GetPrintData().ConvertFromNative(); m_pageSetupData.SetPaperSize( m_pageSetupData.GetPrintData().GetPaperSize() ); } OSXEndModalDialog(); return result; } #endif