// Author: Julian Smart
// Modified by: Francesco Montorsi
// Created: 1995
-// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#error "You must set wxUSE_PRINTING_ARCHITECTURE to 1 in setup.h, and recompile the library."
#endif
-// Set this to 1 if you want to test PostScript printing under MSW.
-// However, you'll also need to edit src/msw/makefile.nt.
-#define wxTEST_POSTSCRIPT_IN_MSW 0
-
#include <ctype.h>
#include "wx/metafile.h"
#include "wx/print.h"
#include "wx/image.h"
#include "wx/accel.h"
-#if wxTEST_POSTSCRIPT_IN_MSW
+#if wxUSE_POSTSCRIPT
#include "wx/generic/printps.h"
#include "wx/generic/prntdlgg.h"
#endif
#include "printing.h"
-#if !defined(__WXMSW__) && !defined(__WXPM__)
+#ifndef wxHAS_IMAGES_IN_RESOURCES
#include "../sample.xpm"
#endif
dc.DrawText( wxT("Rectangle 200 by 80"), 40, 40);
- dc.SetPen( wxPen(*wxBLACK,0,wxDOT_DASH) );
+ dc.SetPen( wxPen(*wxBLACK, 0, wxPENSTYLE_DOT_DASH) );
dc.DrawEllipse(50, 140, 100, 50);
dc.SetPen(*wxRED_PEN);
EVT_MENU(wxID_PREVIEW, MyFrame::OnPrintPreview)
EVT_MENU(WXPRINT_PAGE_SETUP, MyFrame::OnPageSetup)
EVT_MENU(wxID_ABOUT, MyFrame::OnPrintAbout)
-#if defined(__WXMSW__) &&wxTEST_POSTSCRIPT_IN_MSW
+#if wxUSE_POSTSCRIPT
EVT_MENU(WXPRINT_PRINT_PS, MyFrame::OnPrintPS)
EVT_MENU(WXPRINT_PREVIEW_PS, MyFrame::OnPrintPreviewPS)
EVT_MENU(WXPRINT_PAGE_SETUP_PS, MyFrame::OnPageSetupPS)
#endif
EVT_MENU(WXPRINT_ANGLEUP, MyFrame::OnAngleUp)
EVT_MENU(WXPRINT_ANGLEDOWN, MyFrame::OnAngleDown)
+
+ EVT_MENU_RANGE(WXPRINT_FRAME_MODAL_APP,
+ WXPRINT_FRAME_MODAL_NON,
+ MyFrame::OnPreviewFrameModalityKind)
END_EVENT_TABLE()
MyFrame::MyFrame(wxFrame *frame, const wxString&title, const wxPoint&pos, const wxSize&size)
: wxFrame(frame, wxID_ANY, title, pos, size)
{
m_canvas = NULL;
+ m_previewModality = wxPreviewFrame_AppModal;
#if wxUSE_STATUSBAR
// Give us a status line
#endif
file_menu->Append(wxID_PREVIEW, wxT("Print Pre&view"), wxT("Preview"));
+ wxMenu * const menuModalKind = new wxMenu;
+ menuModalKind->AppendRadioItem(WXPRINT_FRAME_MODAL_APP, "&App modal");
+ menuModalKind->AppendRadioItem(WXPRINT_FRAME_MODAL_WIN, "&Window modal");
+ menuModalKind->AppendRadioItem(WXPRINT_FRAME_MODAL_NON, "&Not modal");
+ file_menu->AppendSubMenu(menuModalKind, "Preview frame &modal kind");
#if wxUSE_ACCEL
// Accelerators
wxAcceleratorEntry entries[1];
SetAcceleratorTable(accel);
#endif
-#if defined(__WXMSW__) &&wxTEST_POSTSCRIPT_IN_MSW
+#if wxUSE_POSTSCRIPT
file_menu->AppendSeparator();
file_menu->Append(WXPRINT_PRINT_PS, wxT("Print PostScript..."), wxT("Print (PostScript)"));
file_menu->Append(WXPRINT_PAGE_SETUP_PS, wxT("Page Setup PostScript..."), wxT("Page setup (PostScript)"));
wxPreviewFrame *frame =
new wxPreviewFrame(preview, this, wxT("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
- frame->Initialize();
+ frame->InitializeWithModality(m_previewModality);
frame->Show();
}
(*g_pageSetupData) = pageSetupDialog.GetPageSetupDialogData();
}
-#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW
+#if wxUSE_POSTSCRIPT
void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event))
{
- wxPostScriptPrinter printer(g_printData);
- MyPrintout printout(wxT("My printout"));
+ wxPrintDialogData printDialogData(* g_printData);
+
+ wxPostScriptPrinter printer(&printDialogData);
+ MyPrintout printout(this, wxT("My printout"));
printer.Print(this, &printout, true/*prompt*/);
- (*g_printData) = printer.GetPrintData();
+ (*g_printData) = printer.GetPrintDialogData().GetPrintData();
}
void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
{
// Pass two printout objects: for preview, and possible printing.
wxPrintDialogData printDialogData(* g_printData);
- wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout, &printDialogData);
+ wxPrintPreview *preview = new wxPrintPreview(new MyPrintout(this), new MyPrintout(this), &printDialogData);
wxPreviewFrame *frame =
new wxPreviewFrame(preview, this, wxT("Demo Print Preview"), wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
m_canvas->Refresh();
}
+void MyFrame::OnPreviewFrameModalityKind(wxCommandEvent& event)
+{
+ m_previewModality = static_cast<wxPreviewFrameModalityKind>(
+ wxPreviewFrame_AppModal +
+ (event.GetId() - WXPRINT_FRAME_MODAL_APP));
+}
// ----------------------------------------------------------------------------
// MyCanvas
int ppiPrinterX, ppiPrinterY;
GetPPIPrinter(&ppiPrinterX, &ppiPrinterY);
- // This scales the DC so that the printout roughly represents the the screen
+ // This scales the DC so that the printout roughly represents the screen
// scaling. The text point size _should_ be the right size but in fact is
// too small for some reason. This is a detail that will need to be
// addressed at some point but can be fudged for the moment.