usleep() prototype added for solaris
[wxWidgets.git] / src / mac / printdlg.cpp
index eae3b95568777cc53ac4ed40f4e0f8b6a778cd09..18c7a8427e244c53973cb4c1a70e6d3882ec41ba 100644 (file)
 #endif
 
 #include "wx/object.h"
-#include "wx/stubs/printdlg.h"
+#include "wx/mac/printdlg.h"
 #include "wx/dcprint.h"
 
 // Use generic page setup dialog: use your own native one if one exists.
-#include "wx/generic/prntdlgg.h"
 
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
@@ -29,7 +28,6 @@ wxPrintDialog::wxPrintDialog():
  wxDialog()
 {
     m_dialogParent = NULL;
-    m_printerDC = NULL;
 }
 
 wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data):
@@ -41,7 +39,6 @@ wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data):
 bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data)
 {
     m_dialogParent = p;
-    m_printerDC = NULL;
 
     if ( data )
         m_printData = *data;
@@ -51,26 +48,39 @@ bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data)
 
 wxPrintDialog::~wxPrintDialog()
 {
-    if (m_printerDC)
-        delete m_printerDC;
 }
 
 int wxPrintDialog::ShowModal()
 {
-    // TODO
-    return wxID_CANCEL;
+       int result = wxID_CANCEL ;
+       OSErr err ;
+       wxString message ;
+       ::PrOpen() ;
+       err = PrError() ;
+       
+       if ( !err )
+       {
+               m_printData.ConvertToNative() ;
+               if  ( m_printData.macPrintInfo && ::PrJobDialog( m_printData.macPrintInfo ) )
+               {
+                       m_printData.ConvertFromNative() ;
+                       result = wxID_OK ;
+               }
+
+       }
+       else
+       {
+               message.Printf( "Print Error %d", err ) ;
+               wxMessageDialog dialog( NULL , message  , "", wxICON_HAND | wxOK) ;
+       }
+       ::PrClose() ;
+
+       return result ;
 }
 
 wxDC *wxPrintDialog::GetPrintDC()
 {
-  if (m_printerDC)
-  {
-    wxDC* dc = m_printerDC;
-    m_printerDC = NULL;
-    return dc;
-  }
-  else
-    return NULL;
+    return new wxPrinterDC( m_printData ) ;
 }
 
 /*
@@ -105,11 +115,29 @@ wxPageSetupDialog::~wxPageSetupDialog()
 
 int wxPageSetupDialog::ShowModal()
 {
-    // Uses generic page setup dialog
-    wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData);
-    int ret = genericPageSetupDialog->ShowModal();
-    m_pageSetupData = genericPageSetupDialog->GetPageSetupData();
-    genericPageSetupDialog->Close(TRUE);
-    return ret;
+       int result = wxID_CANCEL ;
+       OSErr err ;
+       wxString message ;
+       ::PrOpen() ;
+       err = PrError() ;
+       
+       if ( !err )
+       {
+               m_pageSetupData.ConvertToNative() ;
+               if  ( m_pageSetupData.m_macPageSetupInfo && ::PrStlDialog( m_pageSetupData.m_macPageSetupInfo ) )
+               {
+                       m_pageSetupData.ConvertFromNative() ;
+                       result = wxID_OK ;
+               }
+
+       }
+       else
+       {
+               message.Printf( "Print Error %d", err ) ;
+               wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+       }
+       ::PrClose() ;
+
+       return result ;
 }