X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..0da888ae90df3e86180eb03c1203a424c66153ab:/src/msw/printdlg.cpp diff --git a/src/msw/printdlg.cpp b/src/msw/printdlg.cpp index 17f7a55d2b..22b2fafd48 100644 --- a/src/msw/printdlg.cpp +++ b/src/msw/printdlg.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -17,7 +17,7 @@ // headers // --------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "printdlg.h" #endif @@ -28,14 +28,18 @@ #pragma hdrstop #endif -#include "wx/printdlg.h" -#include "wx/dcprint.h" +// Don't use the Windows print dialog if we're in wxUniv mode and using +// the PostScript architecture +#if wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXUNIVERSAL__) || !wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW) -// Have to emulate page setup dialog for Win16 -#if !defined(__WIN95__) - #include "wx/generic/prntdlgg.h" +#ifndef WX_PRECOMP + #include "wx/app.h" #endif +#include "wx/cmndata.h" +#include "wx/printdlg.h" +#include "wx/dcprint.h" + #include #include "wx/msw/private.h" @@ -46,34 +50,18 @@ #include #endif -// --------------------------------------------------------------------------- -// wxWin macros -// --------------------------------------------------------------------------- - - IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) - IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) - -// =========================================================================== -// implementation -// =========================================================================== - // --------------------------------------------------------------------------- // wxPrintDialog // --------------------------------------------------------------------------- -wxPrintDialog::wxPrintDialog() -{ - m_dialogParent = NULL; - m_printerDC = NULL; - m_destroyDC = TRUE; -} +IMPLEMENT_CLASS(wxWindowsPrintDialog, wxPrintDialogBase) -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data) +wxWindowsPrintDialog::wxWindowsPrintDialog(wxWindow *p, wxPrintDialogData* data) { Create(p, data); } -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data) +wxWindowsPrintDialog::wxWindowsPrintDialog(wxWindow *p, wxPrintData* data) { wxPrintDialogData data2; if ( data ) @@ -82,32 +70,43 @@ wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data) Create(p, &data2); } -bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data) +bool wxWindowsPrintDialog::Create(wxWindow *p, wxPrintDialogData* data) { m_dialogParent = p; m_printerDC = NULL; - m_destroyDC = TRUE; + m_destroyDC = true; if ( data ) m_printDialogData = *data; m_printDialogData.SetOwnerWindow(p); - return TRUE; + return true; } -wxPrintDialog::~wxPrintDialog() +wxWindowsPrintDialog::~wxWindowsPrintDialog() { if (m_destroyDC && m_printerDC) delete m_printerDC; } -int wxPrintDialog::ShowModal() +int wxWindowsPrintDialog::ShowModal() { m_printDialogData.ConvertToNative(); - bool ret = (PrintDlg( (PRINTDLG *)m_printDialogData.GetNativeData() ) != 0); - if ( ret != FALSE && ((PRINTDLG *)m_printDialogData.GetNativeData())->hDC) + PRINTDLG* p = (PRINTDLG *)m_printDialogData.GetNativeData() ; + if (m_dialogParent) + p->hwndOwner = (HWND) m_dialogParent->GetHWND(); + else if (wxTheApp->GetTopWindow()) + p->hwndOwner = (HWND) wxTheApp->GetTopWindow()->GetHWND(); + else + p->hwndOwner = 0; + + bool ret = (PrintDlg( p ) != 0); + + p->hwndOwner = 0; + + if ( ret != false && ((PRINTDLG *)m_printDialogData.GetNativeData())->hDC) { wxPrinterDC *pdc = new wxPrinterDC((WXHDC) ((PRINTDLG *)m_printDialogData.GetNativeData())->hDC); m_printerDC = pdc; @@ -120,11 +119,11 @@ int wxPrintDialog::ShowModal() } } -wxDC *wxPrintDialog::GetPrintDC() +wxDC *wxWindowsPrintDialog::GetPrintDC() { if (m_printerDC) { - m_destroyDC = FALSE; + m_destroyDC = false; return m_printerDC; } else @@ -135,6 +134,8 @@ wxDC *wxPrintDialog::GetPrintDC() // wxPageSetupDialog // --------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) + wxPageSetupDialog::wxPageSetupDialog() { m_dialogParent = NULL; @@ -155,7 +156,7 @@ bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) #if defined(__WIN95__) m_pageSetupData.SetOwnerWindow(p); #endif - return TRUE; + return true; } wxPageSetupDialog::~wxPageSetupDialog() @@ -166,7 +167,16 @@ int wxPageSetupDialog::ShowModal() { #ifdef __WIN95__ m_pageSetupData.ConvertToNative(); - if (PageSetupDlg( (PAGESETUPDLG *)m_pageSetupData.GetNativeData() )) + PAGESETUPDLG *p = (PAGESETUPDLG *)m_pageSetupData.GetNativeData(); + if (m_dialogParent) + p->hwndOwner = (HWND) m_dialogParent->GetHWND(); + else if (wxTheApp->GetTopWindow()) + p->hwndOwner = (HWND) wxTheApp->GetTopWindow()->GetHWND(); + else + p->hwndOwner = 0; + BOOL retVal = PageSetupDlg( p ) ; + p->hwndOwner = 0; + if (retVal) { m_pageSetupData.ConvertFromNative(); return wxID_OK; @@ -177,8 +187,10 @@ int wxPageSetupDialog::ShowModal() wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); int ret = genericPageSetupDialog->ShowModal(); m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); + genericPageSetupDialog->Close(true); return ret; #endif } +#endif + // wxUSE_PRINTING_ARCHITECTURE