1 /////////////////////////////////////////////////////////////////////////////
 
   2 // Name:        src/osx/cocoa/printdlg.mm
 
   3 // Purpose:     wxPrintDialog, wxPageSetupDialog
 
   4 // Author:      Stefan Csomor
 
   7 // Copyright:   (c) Stefan Csomor
 
   8 // Licence:     wxWindows licence
 
   9 /////////////////////////////////////////////////////////////////////////////
 
  11 #include "wx/wxprec.h"
 
  13 #if wxUSE_PRINTING_ARCHITECTURE
 
  15 #include "wx/printdlg.h"
 
  16 #include "wx/modalhook.h"
 
  19     #include "wx/object.h"
 
  20     #include "wx/dcprint.h"
 
  21     #include "wx/msgdlg.h"
 
  22     #include "wx/textctrl.h"
 
  24     #include "wx/stattext.h"
 
  27 #include "wx/osx/printdlg.h"
 
  28 #include "wx/osx/private/print.h"
 
  29 #include "wx/osx/private.h"
 
  31 IMPLEMENT_CLASS(wxOSXCocoaPrintData, wxOSXPrintData)
 
  33 wxOSXCocoaPrintData::wxOSXCocoaPrintData()
 
  35     m_macPrintInfo = [[NSPrintInfo alloc] init];
 
  36     m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat];
 
  37     m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings];
 
  38     m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ;
 
  39     PMGetPageFormatPaper(m_macPageFormat, &m_macPaper);
 
  42 wxOSXCocoaPrintData::~wxOSXCocoaPrintData()
 
  44     [m_macPrintInfo release];
 
  47 void wxOSXCocoaPrintData::UpdateFromPMState()
 
  49     [m_macPrintInfo updateFromPMPageFormat];
 
  50     [m_macPrintInfo updateFromPMPrintSettings];
 
  53 void wxOSXCocoaPrintData::UpdateToPMState()
 
  55     m_macPageFormat = (PMPageFormat) [m_macPrintInfo PMPageFormat];
 
  56     m_macPrintSettings = (PMPrintSettings) [m_macPrintInfo PMPrintSettings];
 
  57     m_macPrintSession = (PMPrintSession) [m_macPrintInfo PMPrintSession] ;
 
  60 int wxMacPrintDialog::ShowModal()
 
  62     WX_HOOK_MODAL_DIALOG();
 
  64     m_printDialogData.GetPrintData().ConvertToNative();
 
  66     int result = wxID_CANCEL;
 
  68     NSPrintPanel* panel = [NSPrintPanel printPanel];
 
  69     NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_printDialogData.GetPrintData().GetNativeData())->GetNSPrintInfo();
 
  71     NSMutableDictionary* dict = [printInfo printSettings];
 
  72     [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMinPage()] forKey:@"com_apple_print_PrintSettings_PMFirstPage"];
 
  73     [dict setValue:[NSNumber numberWithInt:m_printDialogData.GetMaxPage()] forKey:@"com_apple_print_PrintSettings_PMLastPage"];
 
  75     if ( (NSInteger)[panel runModalWithPrintInfo:printInfo] == NSOKButton )
 
  78         m_printDialogData.GetPrintData().ConvertFromNative();
 
  79         ((wxOSXPrintData*)m_printDialogData.GetPrintData().GetNativeData())->TransferTo( &m_printDialogData );
 
  85 int wxMacPageSetupDialog::ShowModal()
 
  87     WX_HOOK_MODAL_DIALOG();
 
  89     m_pageSetupData.GetPrintData().ConvertToNative();
 
  90     ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->TransferFrom( &m_pageSetupData );
 
  92     int result = wxID_CANCEL;
 
  94     NSPageLayout *pageLayout = [NSPageLayout pageLayout];
 
  95     NSPrintInfo* printInfo = ((wxOSXCocoaPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->GetNSPrintInfo();
 
  96     if ( [pageLayout runModalWithPrintInfo:printInfo] == NSOKButton )
 
  99         m_pageSetupData.GetPrintData().ConvertFromNative();
 
 100         m_pageSetupData.SetPaperSize( m_pageSetupData.GetPrintData().GetPaperSize() );