]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/printdlg.cpp
fixed bug with adding new entries to a root group with subgroups but without any...
[wxWidgets.git] / src / msw / printdlg.cpp
index 17f7a55d2bee2371e8a87de63d5589b5546e348a..22b2fafd48f3a30c41b4b9a008f6b39b5680490e 100644 (file)
@@ -5,8 +5,8 @@
 // Modified by:
 // Created:     04/01/98
 // RCS-ID:      $Id$
 // 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
 // ---------------------------------------------------------------------------
 
 // headers
 // ---------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "printdlg.h"
 #endif
 
     #pragma implementation "printdlg.h"
 #endif
 
     #pragma hdrstop
 #endif
 
     #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
 
 #endif
 
+#include "wx/cmndata.h"
+#include "wx/printdlg.h"
+#include "wx/dcprint.h"
+
 #include <stdlib.h>
 
 #include "wx/msw/private.h"
 #include <stdlib.h>
 
 #include "wx/msw/private.h"
     #include <print.h>
 #endif
 
     #include <print.h>
 #endif
 
-// ---------------------------------------------------------------------------
-// wxWin macros
-// ---------------------------------------------------------------------------
-
-    IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
-    IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
-
-// ===========================================================================
-// implementation
-// ===========================================================================
-
 // ---------------------------------------------------------------------------
 // wxPrintDialog
 // ---------------------------------------------------------------------------
 
 // ---------------------------------------------------------------------------
 // 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);
 }
 
 {
     Create(p, data);
 }
 
-wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data)
+wxWindowsPrintDialog::wxWindowsPrintDialog(wxWindow *p, wxPrintData* data)
 {
     wxPrintDialogData data2;
     if ( data )
 {
     wxPrintDialogData data2;
     if ( data )
@@ -82,32 +70,43 @@ wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data)
     Create(p, &data2);
 }
 
     Create(p, &data2);
 }
 
-bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
+bool wxWindowsPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
 {
     m_dialogParent = p;
     m_printerDC = NULL;
 {
     m_dialogParent = p;
     m_printerDC = NULL;
-    m_destroyDC = TRUE;
+    m_destroyDC = true;
 
     if ( data )
         m_printDialogData = *data;
 
     m_printDialogData.SetOwnerWindow(p);
 
 
     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;
 }
 
 {
     if (m_destroyDC && m_printerDC)
         delete m_printerDC;
 }
 
-int wxPrintDialog::ShowModal()
+int wxWindowsPrintDialog::ShowModal()
 {
     m_printDialogData.ConvertToNative();
 
 {
     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;
     {
         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)
     {
 {
     if (m_printerDC)
     {
-        m_destroyDC = FALSE;
+        m_destroyDC = false;
         return m_printerDC;
     }
     else
         return m_printerDC;
     }
     else
@@ -135,6 +134,8 @@ wxDC *wxPrintDialog::GetPrintDC()
 // wxPageSetupDialog
 // ---------------------------------------------------------------------------
 
 // wxPageSetupDialog
 // ---------------------------------------------------------------------------
 
+IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
+
 wxPageSetupDialog::wxPageSetupDialog()
 {
     m_dialogParent = NULL;
 wxPageSetupDialog::wxPageSetupDialog()
 {
     m_dialogParent = NULL;
@@ -155,7 +156,7 @@ bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data)
 #if defined(__WIN95__)
     m_pageSetupData.SetOwnerWindow(p);
 #endif
 #if defined(__WIN95__)
     m_pageSetupData.SetOwnerWindow(p);
 #endif
-    return TRUE;
+    return true;
 }
 
 wxPageSetupDialog::~wxPageSetupDialog()
 }
 
 wxPageSetupDialog::~wxPageSetupDialog()
@@ -166,7 +167,16 @@ int wxPageSetupDialog::ShowModal()
 {
 #ifdef __WIN95__
     m_pageSetupData.ConvertToNative();
 {
 #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;
     {
         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();
     wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData);
     int ret = genericPageSetupDialog->ShowModal();
     m_pageSetupData = genericPageSetupDialog->GetPageSetupData();
-    genericPageSetupDialog->Close(TRUE);
+    genericPageSetupDialog->Close(true);
     return ret;
 #endif
 }
 
     return ret;
 #endif
 }
 
+#endif
+    // wxUSE_PRINTING_ARCHITECTURE