From 8826f46f0d755eba7996920da2aee45946bc6144 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 29 Mar 1999 16:43:40 +0000 Subject: [PATCH] more backwards compatibility git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1997 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/cmndata.cpp | 251 ++++++++++++++++++---------------- src/common/prntbase.cpp | 197 +++++++++++++++------------ src/generic/dcpsg.cpp | 2 +- src/generic/printps.cpp | 132 +++++++++++------- src/generic/prntdlgg.cpp | 284 ++++++++++++++++++++++----------------- 5 files changed, 490 insertions(+), 376 deletions(-) diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 08bd0fa4de..14f157d3fe 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -9,66 +9,82 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "cmndata.h" + #pragma implementation "cmndata.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP -#include -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/app.h" + #include + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/app.h" #endif #include "wx/gdicmn.h" #include "wx/cmndata.h" + #include "wx/paper.h" // For compatibility #if (defined(__WXMOTIF__) || defined(__WXGTK__)) && wxUSE_POSTSCRIPT -#include "wx/generic/dcpsg.h" + #define wxCOMPATIBILITY_WITH_PRINTSETUPDATA 1 #endif -#ifdef __WXMSW__ -#include - -#if !defined(__WIN32__) -#include -#include +#if wxCOMPATIBILITY_WITH_PRINTSETUPDATA + #include "wx/generic/dcpsg.h" #endif -#if defined(__WATCOMC__) || defined(__SC__) || defined(__SALFORDC__) -#include -#include -#endif +#ifdef __WXMSW__ + #include -#endif + #if !defined(__WIN32__) + #include + #include + #endif // Win16 + + #if defined(__WATCOMC__) || defined(__SC__) || defined(__SALFORDC__) + #include + #include + #endif +#endif // MSW #if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) #endif -/* -* wxColourData -*/ +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// wxColourData +// ---------------------------------------------------------------------------- wxColourData::wxColourData() { int i; for (i = 0; i < 16; i++) custColours[i].Set(255, 255, 255); - + chooseFull = FALSE; dataColour.Set(0,0,0); } @@ -86,7 +102,7 @@ void wxColourData::SetCustomColour(int i, wxColour& colour) { if (i > 15 || i < 0) return; - + custColours[i] = colour; } @@ -94,7 +110,7 @@ wxColour wxColourData::GetCustomColour(int i) { if (i > 15 || i < 0) return wxColour(0,0,0); - + return custColours[i]; } @@ -103,20 +119,20 @@ void wxColourData::operator=(const wxColourData& data) int i; for (i = 0; i < 16; i++) custColours[i] = data.custColours[i]; - + dataColour = (wxColour&)data.dataColour; chooseFull = data.chooseFull; } -/* -* Font data -*/ +// ---------------------------------------------------------------------------- +// Font data +// ---------------------------------------------------------------------------- wxFontData::wxFontData() { // Intialize colour to black. fontColour.Set(0, 0, 0); - + showHelp = FALSE; allowSymbols = TRUE; enableEffects = TRUE; @@ -145,9 +161,9 @@ void wxFontData::operator=(const wxFontData& data) maxSize = data.maxSize; } -/* -* Print data -*/ +// ---------------------------------------------------------------------------- +// Print data +// ---------------------------------------------------------------------------- wxPrintData::wxPrintData() { @@ -157,7 +173,7 @@ wxPrintData::wxPrintData() m_printOrientation = wxPORTRAIT; m_printNoCopies = 1; m_printCollate = FALSE; - + // New, 24/3/99 m_printerName = ""; m_colour = TRUE; @@ -209,7 +225,7 @@ void wxPrintData::ConvertToNative() { // Use PRINTDLG as a way of creating a DEVMODE object PRINTDLG *pd = new PRINTDLG; - + // GNU-WIN32 has the wrong size PRINTDLG - can't work out why. #ifdef __GNUWIN32__ pd->lStructSize = 66 ; @@ -222,10 +238,10 @@ void wxPrintData::ConvertToNative() pd->hwndOwner = (HWND)NULL; pd->hDevMode = NULL; // Will be created by PrintDlg pd->hDevNames = NULL; // Ditto - + pd->Flags = PD_RETURNDEFAULT; pd->nCopies = 1; - + // Fill out the DEVMODE structure // so we can use it as input in the 'real' PrintDlg if (!PrintDlg(pd)) @@ -250,28 +266,28 @@ void wxPrintData::ConvertToNative() delete pd; } - + if ( hDevMode ) { DEVMODE *devMode = (DEVMODE*) GlobalLock(hDevMode); - + //// Orientation - + devMode->dmOrientation = m_printOrientation; devMode->dmFields = DM_ORIENTATION; - + //// Collation - + devMode->dmCollate = (m_printCollate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE); devMode->dmFields |= DM_COLLATE; - + //// Number of copies - + devMode->dmCopies = m_printNoCopies; devMode->dmFields |= DM_COPIES; - + //// Printer name - + if (m_printerName != "") { // TODO: make this Unicode compatible @@ -281,18 +297,18 @@ void wxPrintData::ConvertToNative() devMode->dmDeviceName[i] = m_printerName.GetChar(i); devMode->dmDeviceName[i] = 0; } - + //// Colour - + if (m_colour) devMode->dmColor = DMCOLOR_COLOR; else devMode->dmColor = DMCOLOR_MONOCHROME; - + devMode->dmFields |= DM_COLOR; - + //// Paper size - + if (m_paperId == wxPAPER_NONE) { devMode->dmPaperWidth = m_paperSize.x * 10; @@ -312,9 +328,9 @@ void wxPrintData::ConvertToNative() } } } - + //// Duplex - + int duplex; switch (m_duplexMode) { @@ -331,9 +347,9 @@ void wxPrintData::ConvertToNative() } devMode->dmDuplex = duplex; devMode->dmFields |= DM_DUPLEX; - + //// Quality - + int quality; switch (m_printQuality) { @@ -355,7 +371,7 @@ void wxPrintData::ConvertToNative() } devMode->dmPrintQuality = quality; devMode->dmFields |= DM_PRINTQUALITY; - + GlobalUnlock(hDevMode); } } @@ -370,14 +386,14 @@ void wxPrintData::ConvertFromNative() if ( hDevMode ) { DEVMODE *devMode = (DEVMODE*) GlobalLock(hDevMode); - + //// Orientation - + if (devMode->dmFields & DM_ORIENTATION) m_printOrientation = devMode->dmOrientation; - + //// Collation - + if (devMode->dmFields & DM_COLLATE) { if (devMode->dmCollate == DMCOLLATE_TRUE) @@ -385,16 +401,16 @@ void wxPrintData::ConvertFromNative() else m_printCollate = FALSE; } - + //// Number of copies - + if (devMode->dmFields & DM_COPIES) { m_printNoCopies = devMode->dmCopies; } - + //// Printer name - + if (devMode->dmDeviceName[0] != 0) { // TODO: make this Unicode compatible @@ -406,12 +422,12 @@ void wxPrintData::ConvertFromNative() i ++; } buf[i] = 0; - + m_printerName = buf; } - + //// Colour - + if (devMode->dmFields & DM_COLOR) { if (devMode->dmColor == DMCOLOR_COLOR) @@ -421,9 +437,9 @@ void wxPrintData::ConvertFromNative() } else m_colour = TRUE; - + //// Paper size - + if (devMode->dmFields & DM_PAPERSIZE) { if (wxThePrintPaperDatabase) @@ -439,7 +455,7 @@ void wxPrintData::ConvertFromNative() { // Shouldn't really get here wxFAIL_MSG("Couldn't find paper size in paper database."); - + m_paperId = wxPAPER_NONE; m_paperSize.x = 0; m_paperSize.y = 0; @@ -449,7 +465,7 @@ void wxPrintData::ConvertFromNative() { // Shouldn't really get here wxFAIL_MSG("Paper database wasn't initialized in wxPrintData::ConvertFromNative."); - + m_paperId = wxPAPER_NONE; m_paperSize.x = 0; m_paperSize.y = 0; @@ -465,15 +481,15 @@ void wxPrintData::ConvertFromNative() { // Shouldn't really get here wxFAIL_MSG("Couldn't find paper size from DEVMODE."); - + m_paperSize.x = 0; m_paperSize.y = 0; m_paperId = wxPAPER_NONE; } - - + + //// Duplex - + if (devMode->dmFields & DM_DUPLEX) { switch (devMode->dmDuplex) @@ -492,9 +508,9 @@ void wxPrintData::ConvertFromNative() } else m_duplexMode = wxDUPLEX_SIMPLEX; - + //// Quality - + if (devMode->dmFields & DM_PRINTQUALITY) { switch (devMode->dmPrintQuality) @@ -517,13 +533,13 @@ void wxPrintData::ConvertFromNative() // will the application know if it's high, low, draft etc.?? // wxFAIL_MSG("Warning: DM_PRINTQUALITY was not one of the standard values."); m_printQuality = devMode->dmPrintQuality; break; - + } } } else m_printQuality = wxPRINT_QUALITY_HIGH; - + GlobalUnlock(hDevMode); } } @@ -556,7 +572,7 @@ void wxPrintData::operator=(const wxPrintData& data) } // For compatibility -#if (defined(__WXMOTIF__) || defined(__WXGTK__)) && wxUSE_POSTSCRIPT +#if wxCOMPATIBILITY_WITH_PRINTSETUPDATA void wxPrintData::operator=(const wxPrintSetupData& setupData) { SetPrinterCommand(setupData.GetPrinterCommand()); @@ -579,12 +595,12 @@ void wxPrintData::operator=(const wxPrintSetupData& setupData) SetColour(setupData.GetColour()); SetFilename(setupData.GetPrinterFile()); } -#endif - +#endif // wxCOMPATIBILITY_WITH_PRINTSETUPDATA -/* - * Print dialog data - */ + +// ---------------------------------------------------------------------------- +// Print dialog data +// ---------------------------------------------------------------------------- wxPrintDialogData::wxPrintDialogData() { @@ -689,7 +705,7 @@ void wxPrintDialogData::ConvertToNative() pd->nMinPage = (UINT)m_printMinPage; pd->nMaxPage = (UINT)m_printMaxPage; pd->nCopies = (UINT)m_printNoCopies; - + pd->Flags = PD_RETURNDC ; #ifdef __GNUWIN32__ @@ -708,7 +724,7 @@ void wxPrintDialogData::ConvertToNative() pd->lpSetupTemplateName = NULL; pd->hPrintTemplate = (HGLOBAL) NULL; pd->hSetupTemplate = (HGLOBAL) NULL; - + if ( m_printAllPages ) pd->Flags |= PD_ALLPAGES; if ( m_printCollate ) @@ -754,7 +770,7 @@ void wxPrintDialogData::ConvertFromNative() m_printMinPage = pd->nMinPage ; m_printMaxPage = pd->nMaxPage ; m_printNoCopies = pd->nCopies ; - + m_printAllPages = ((pd->Flags & PD_ALLPAGES) == PD_ALLPAGES); m_printCollate = ((pd->Flags & PD_COLLATE) == PD_COLLATE); m_printToFile = ((pd->Flags & PD_PRINTTOFILE) == PD_PRINTTOFILE); @@ -773,7 +789,7 @@ void wxPrintDialogData::ConvertFromNative() m_printData.SetPortName((LPSTR)lpDevNames + lpDevNames->wDriverOffset); wxString devName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset; GlobalUnlock(pd->hDevNames); - + // wxASSERT_MSG( (m_printerName == "" || (devName == m_printerName)), "Printer name obtained from DEVMODE and DEVNAMES were different!"); } } @@ -784,14 +800,14 @@ void wxPrintDialogData::SetOwnerWindow(wxWindow* win) { if ( m_printDlgData == NULL ) ConvertToNative(); - + if ( m_printDlgData != NULL && win != NULL) { PRINTDLG *pd = (PRINTDLG *) m_printDlgData ; pd->hwndOwner=(HWND) win->GetHWND(); } } -#endif +#endif // MSW void wxPrintDialogData::operator=(const wxPrintDialogData& data) { @@ -817,9 +833,9 @@ void wxPrintDialogData::operator=(const wxPrintData& data) m_printData = data; } -/* - * wxPageSetupDialogData - */ +// ---------------------------------------------------------------------------- +// wxPageSetupDialogData +// ---------------------------------------------------------------------------- wxPageSetupDialogData::wxPageSetupDialogData() { @@ -911,7 +927,7 @@ void wxPageSetupDialogData::operator=(const wxPrintData& data) m_printData = data; } -#if defined(__WXMSW__) && defined(__WIN95__) +#if defined(__WIN95__) void wxPageSetupDialogData::ConvertToNative() { m_printData.ConvertToNative(); @@ -945,7 +961,7 @@ void wxPageSetupDialogData::ConvertToNative() // pd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, sizeof(DEVMODE)); pd->Flags = PSD_MARGINS|PSD_MINMARGINS; - + if ( m_defaultMinMargins ) pd->Flags |= PSD_DEFAULTMINMARGINS; if ( !m_enableMargins ) @@ -968,27 +984,27 @@ void wxPageSetupDialogData::ConvertToNative() pd->hwndOwner=(HWND)NULL; pd->hDevNames=(HWND)NULL; pd->hInstance=(HINSTANCE)NULL; - + pd->ptPaperSize.x = m_paperSize.x * 100; pd->ptPaperSize.y = m_paperSize.y * 100; - + pd->rtMinMargin.left = m_minMarginTopLeft.x * 100; pd->rtMinMargin.top = m_minMarginTopLeft.y * 100; pd->rtMinMargin.right = m_minMarginBottomRight.x * 100; pd->rtMinMargin.bottom = m_minMarginBottomRight.y * 100; - + pd->rtMargin.left = m_marginTopLeft.x * 100; pd->rtMargin.top = m_marginTopLeft.y * 100; pd->rtMargin.right = m_marginBottomRight.x * 100; pd->rtMargin.bottom = m_marginBottomRight.y * 100; - + pd->lCustData = 0; pd->lpfnPageSetupHook = NULL; pd->lpfnPagePaintHook = NULL; pd->hPageSetupTemplate = NULL; pd->lpPageSetupTemplateName = NULL; -/* +/* if ( pd->hDevMode ) { DEVMODE *devMode = (DEVMODE*) GlobalLock(pd->hDevMode); @@ -1006,7 +1022,7 @@ void wxPageSetupDialogData::ConvertFromNative() PAGESETUPDLG *pd = (PAGESETUPDLG *) m_pageSetupData ; if ( !pd ) return; - + // Pass the devmode data back to the wxPrintData structure where it really belongs. if (pd->hDevMode) { @@ -1022,7 +1038,7 @@ void wxPageSetupDialogData::ConvertFromNative() m_printData.ConvertFromNative(); pd->Flags = PSD_MARGINS|PSD_MINMARGINS; - + m_defaultMinMargins = ((pd->Flags & PSD_DEFAULTMINMARGINS) == PSD_DEFAULTMINMARGINS); m_enableMargins = ((pd->Flags & PSD_DISABLEMARGINS) != PSD_DISABLEMARGINS); m_enableOrientation = ((pd->Flags & PSD_DISABLEORIENTATION) != PSD_DISABLEORIENTATION); @@ -1030,15 +1046,15 @@ void wxPageSetupDialogData::ConvertFromNative() m_enablePrinter = ((pd->Flags & PSD_DISABLEPRINTER) != PSD_DISABLEPRINTER); m_getDefaultInfo = ((pd->Flags & PSD_RETURNDEFAULT) == PSD_RETURNDEFAULT); m_enableHelp = ((pd->Flags & PSD_SHOWHELP) == PSD_SHOWHELP); - + m_paperSize.x = pd->ptPaperSize.x / 100; m_paperSize.y = pd->ptPaperSize.y / 100; - + m_minMarginTopLeft.x = pd->rtMinMargin.left / 100; m_minMarginTopLeft.y = pd->rtMinMargin.top / 100; m_minMarginBottomRight.x = pd->rtMinMargin.right / 100; m_minMarginBottomRight.y = pd->rtMinMargin.bottom / 100; - + m_marginTopLeft.x = pd->rtMargin.left / 100 ; m_marginTopLeft.y = pd->rtMargin.top / 100 ; m_marginBottomRight.x = pd->rtMargin.right / 100 ; @@ -1049,14 +1065,14 @@ void wxPageSetupDialogData::SetOwnerWindow(wxWindow* win) { if ( m_pageSetupData == NULL ) ConvertToNative(); - + if ( m_pageSetupData != NULL && win != NULL) { PAGESETUPDLG *pd = (PAGESETUPDLG *) m_pageSetupData ; pd->hwndOwner=(HWND) win->GetHWND(); } } -#endif +#endif // Win95 // If a corresponding paper type is found in the paper database, will set the m_printData // paper size id member as well. @@ -1079,7 +1095,9 @@ void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) // paper id void wxPageSetupDialogData::CalculateIdFromPaperSize() { - wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), "wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects." ); + wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), + "wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects." ); wxSize sz = GetPaperSize(); @@ -1089,11 +1107,13 @@ void wxPageSetupDialogData::CalculateIdFromPaperSize() m_printData.SetPaperId(id); } } - + // Use paper id in wxPrintData to set this object's paper size void wxPageSetupDialogData::CalculatePaperSizeFromId() { - wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), "wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects." ); + wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), + "wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects." ); wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId()); @@ -1104,3 +1124,4 @@ void wxPageSetupDialogData::CalculatePaperSizeFromId() m_paperSize.y = sz.y * 10; } } + diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index be9ab9a52f..26a1a2f52a 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -110,12 +110,12 @@ wxWindow *wxPrinterBase::CreateAbortWindow(wxWindow *parent, wxPrintout *WXUNUSE { wxPrintAbortDialog *dialog = new wxPrintAbortDialog(parent, _("Printing"), wxPoint(0, 0), wxSize(400, 400), wxDEFAULT_DIALOG_STYLE); (void) new wxStaticText(dialog, -1, _("Please wait..."), wxPoint(5, 5)); - + wxButton *button = new wxButton(dialog, wxID_CANCEL, _("Cancel"), wxPoint(5, 30)); - + dialog->Fit(); button->Centre(wxHORIZONTAL); - + dialog->Centre(); return dialog; } @@ -189,7 +189,7 @@ wxScrolledWindow(parent, -1, pos, size, style, name) { m_printPreview = preview; SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - + SetScrollbars(15, 18, 100, 100); } @@ -201,7 +201,7 @@ void wxPreviewCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); PrepareDC( dc ); - + if (m_printPreview) { m_printPreview->PaintPage(this, dc); @@ -213,7 +213,7 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) { SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); Refresh(); - + // Propagate the event to the non-top-level children wxWindow::OnSysColourChanged(event); } @@ -223,12 +223,12 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) */ BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel) -EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose) -EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) -EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) -EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) -EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) -EVT_PAINT(wxPreviewControlBar::OnPaint) + EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose) + EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) + EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) + EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) + EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) + EVT_PAINT(wxPreviewControlBar::OnPaint) END_EVENT_TABLE() wxPreviewControlBar::wxPreviewControlBar(wxPrintPreviewBase *preview, long buttons, @@ -252,7 +252,7 @@ wxPreviewControlBar::~wxPreviewControlBar() void wxPreviewControlBar::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); - + int w, h; GetSize(&w, &h); dc.SetPen(*wxBLACK_PEN); @@ -312,60 +312,60 @@ void wxPreviewControlBar::OnZoom(wxCommandEvent& WXUNUSED(event)) void wxPreviewControlBar::CreateButtons() { SetSize(0, 0, 400, 40); - + /* #ifdef __WXMSW__ int fontSize = 9; #else int fontSize = 10; #endif - + wxFont buttonFont(fontSize, wxSWISS, wxNORMAL, wxBOLD); SetFont(buttonFont); */ - + int buttonWidth = 65; #ifdef __WXGTK__ int buttonHeight = -1; #else int buttonHeight = 24; #endif - + int x = 5; int y = 5; - + #ifdef __WXMOTIF__ int gap = 15; #else int gap = 5; #endif - + m_closeButton = new wxButton(this, wxID_PREVIEW_CLOSE, _("Close"), wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); - + x += gap + buttonWidth; - + if (m_buttonFlags & wxPREVIEW_PRINT) { m_printButton = new wxButton(this, wxID_PREVIEW_PRINT, _("Print..."), wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); x += gap + buttonWidth; } - + if (m_buttonFlags & wxPREVIEW_PREVIOUS) { m_previousPageButton = new wxButton(this, wxID_PREVIEW_PREVIOUS, "<<", wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); x += gap + buttonWidth; } - + if (m_buttonFlags & wxPREVIEW_NEXT) { m_nextPageButton = new wxButton(this, wxID_PREVIEW_NEXT, ">>", wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); x += gap + buttonWidth; } - + // Yes, this look stupid, but this is because gcc gives up otherwise. wxString *choices = new wxString[23]; choices[0] = "10%"; @@ -391,7 +391,7 @@ void wxPreviewControlBar::CreateButtons() choices[20] = "120%"; choices[21] = "150%"; choices[22] = "200%"; - + int n = 23; if (m_buttonFlags & wxPREVIEW_ZOOM) { @@ -399,9 +399,9 @@ void wxPreviewControlBar::CreateButtons() wxSize(100, -1), n, (wxString *)choices); SetZoomControl(m_printPreview->GetZoom()); } - + delete[] choices; - + // m_closeButton->SetDefault(); } @@ -450,7 +450,7 @@ wxPreviewFrame::~wxPreviewFrame() void wxPreviewFrame::OnCloseWindow(wxCloseEvent& event) { MakeModal(FALSE); - + // Need to delete the printout and the print preview wxPrintout *printout = m_printPreview->GetPrintout(); if (printout) @@ -461,22 +461,22 @@ void wxPreviewFrame::OnCloseWindow(wxCloseEvent& event) m_printPreview->SetFrame(NULL); } delete m_printPreview; - + Destroy(); } void wxPreviewFrame::Initialize() { CreateStatusBar(); - + CreateCanvas(); CreateControlBar(); - + m_printPreview->SetCanvas(m_previewCanvas); m_printPreview->SetFrame(this); - + // Set layout constraints here - + // Control bar constraints wxLayoutConstraints *c1 = new wxLayoutConstraints; // int w, h; @@ -487,28 +487,28 @@ void wxPreviewFrame::Initialize() #else h = 60; #endif - + c1->left.SameAs (this, wxLeft); c1->top.SameAs (this, wxTop); c1->right.SameAs (this, wxRight); c1->height.Absolute (h); - + m_controlBar->SetConstraints(c1); - + // Canvas constraints wxLayoutConstraints *c2 = new wxLayoutConstraints; - + c2->left.SameAs (this, wxLeft); c2->top.Below (m_controlBar); c2->right.SameAs (this, wxRight); c2->bottom.SameAs (this, wxBottom); - + m_previewCanvas->SetConstraints(c2); - + SetAutoLayout(TRUE); - + MakeModal(TRUE); - + Layout(); } @@ -522,7 +522,7 @@ void wxPreviewFrame::CreateControlBar() long buttons = wxPREVIEW_DEFAULT; if (m_printPreview->GetPrintoutForPrinting()) buttons |= wxPREVIEW_PRINT; - + m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0, 0), wxSize(400, 40)); m_controlBar->CreateButtons(); } @@ -531,17 +531,36 @@ void wxPreviewFrame::CreateControlBar() * Print preview */ -wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintDialogData *data) +wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, + wxPrintout *printoutForPrinting, + wxPrintData *data) +{ + if (data) + m_printDialogData = (*data); + + Init(printout, printoutForPrinting); +} + +wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, + wxPrintout *printoutForPrinting, + wxPrintDialogData *data) +{ + if (data) + m_printDialogData = (*data); + + Init(printout, printoutForPrinting); +} + +void wxPrintPreviewBase::Init(wxPrintout *printout, + wxPrintout *printoutForPrinting) { m_isOk = TRUE; m_previewPrintout = printout; if (m_previewPrintout) m_previewPrintout->SetIsPreview(TRUE); - + m_printPrintout = printoutForPrinting; - if (data) - m_printDialogData = (*data); - + m_previewCanvas = NULL; m_previewFrame = NULL; m_previewBitmap = NULL; @@ -551,9 +570,9 @@ wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printou m_leftMargin = 40; m_pageWidth = 0; m_pageHeight = 0; - + printout->OnPreparePrinting(); - + // Get some parameters from the printout, if defined int selFrom, selTo; printout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo); @@ -573,14 +592,14 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum) { if (m_currentPage == pageNum) return TRUE; - + m_currentPage = pageNum; if (m_previewBitmap) { delete m_previewBitmap; m_previewBitmap = NULL; } - + if (m_previewCanvas) { RenderPage(pageNum); @@ -592,42 +611,42 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum) bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc) { DrawBlankPage(canvas, dc); - + if (!m_previewBitmap) RenderPage(m_currentPage); - + if (!m_previewBitmap) return FALSE; - + if (!canvas) return FALSE; - + int canvasWidth, canvasHeight; canvas->GetSize(&canvasWidth, &canvasHeight); - + double zoomScale = ((float)m_currentZoom/(float)100); double actualWidth = (zoomScale*m_pageWidth*m_previewScale); // float actualHeight = (float)(zoomScale*m_pageHeight*m_previewScale); - + int x = (int) ((canvasWidth - actualWidth)/2.0); if (x < m_leftMargin) x = m_leftMargin; int y = m_topMargin; - + wxMemoryDC temp_dc; temp_dc.SelectObject(*m_previewBitmap); - + dc.Blit(x, y, m_previewBitmap->GetWidth(), m_previewBitmap->GetHeight(), &temp_dc, 0, 0); - + temp_dc.SelectObject(wxNullBitmap); - + return TRUE; } bool wxPrintPreviewBase::RenderPage(int pageNum) { int canvasWidth, canvasHeight; - + if (!m_previewCanvas) { wxMessageBox(_("wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to let me know about the canvas!"), @@ -635,17 +654,17 @@ bool wxPrintPreviewBase::RenderPage(int pageNum) return FALSE; } m_previewCanvas->GetSize(&canvasWidth, &canvasHeight); - + double zoomScale = (m_currentZoom/100.0); int actualWidth = (int)(zoomScale*m_pageWidth*m_previewScale); int actualHeight = (int)(zoomScale*m_pageHeight*m_previewScale); - + int x = (int)((canvasWidth - actualWidth)/2.0); if (x < m_leftMargin) x = m_leftMargin; // int y = m_topMargin; - - + + if (!m_previewBitmap) { m_previewBitmap = new wxBitmap((int)actualWidth, (int)actualHeight); @@ -657,44 +676,44 @@ bool wxPrintPreviewBase::RenderPage(int pageNum) return FALSE; } } - + wxMemoryDC memoryDC; memoryDC.SelectObject(*m_previewBitmap); - + memoryDC.Clear(); - + m_previewPrintout->SetDC(&memoryDC); m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); - + m_previewPrintout->OnBeginPrinting(); if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage())) { wxMessageBox(_("Could not start document preview."), _("Print Preview Failure"), wxOK); - + memoryDC.SelectObject(wxNullBitmap); - + delete m_previewBitmap; return FALSE; } - + m_previewPrintout->OnPrintPage(pageNum); m_previewPrintout->OnEndDocument(); m_previewPrintout->OnEndPrinting(); - + m_previewPrintout->SetDC(NULL); - + memoryDC.SelectObject(wxNullBitmap); - + char buf[200]; if (m_maxPage != 0) sprintf(buf, _("Page %d of %d"), pageNum, m_maxPage); else sprintf(buf, _("Page %d"), pageNum); - + if (m_previewFrame) m_previewFrame->SetStatusText(buf); - + return TRUE; } @@ -703,16 +722,16 @@ bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc) { int canvasWidth, canvasHeight; canvas->GetSize(&canvasWidth, &canvasHeight); - + float zoomScale = (float)((float)m_currentZoom/(float)100); float actualWidth = zoomScale*m_pageWidth*m_previewScale; float actualHeight = zoomScale*m_pageHeight*m_previewScale; - + float x = (float)((canvasWidth - actualWidth)/2.0); if (x < m_leftMargin) x = (float)m_leftMargin; float y = (float)m_topMargin; - + // Draw shadow, allowing for 1-pixel border AROUND the actual page int shadowOffset = 4; dc.SetPen(*wxBLACK_PEN); @@ -722,20 +741,20 @@ bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc) */ dc.DrawRectangle((int)(x + shadowOffset), (int)(y + actualHeight+1), (int)(actualWidth), shadowOffset); dc.DrawRectangle((int)(x + actualWidth), (int)(y + shadowOffset), shadowOffset, (int)(actualHeight)); - + // Draw blank page allowing for 1-pixel border AROUND the actual page dc.SetPen(*wxBLACK_PEN); dc.SetBrush(*wxWHITE_BRUSH); - + /* wxRegion update_region = canvas->GetUpdateRegion(); wxRect r = update_region.GetBox(); - + printf( "x: %d y: %d w: %d h: %d.\n", (int)r.x, (int)r.y, (int)r.width, (int)r.height ); */ - + dc.DrawRectangle((int)(x-2), (int)(y-1), (int)(actualWidth+3), (int)(actualHeight+2)); - + return TRUE; } @@ -743,7 +762,7 @@ void wxPrintPreviewBase::SetZoom(int percent) { if (m_currentZoom == percent) return; - + m_currentZoom = percent; if (m_previewBitmap) { @@ -751,7 +770,7 @@ void wxPrintPreviewBase::SetZoom(int percent) m_previewBitmap = NULL; } RenderPage(m_currentPage); - + if (m_previewCanvas) { m_previewCanvas->Clear(); diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index 725f9565be..d8b97e48f7 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -1935,7 +1935,7 @@ wxPostScriptPrintDialog::wxPostScriptPrintDialog (wxWindow *parent, const wxStri radio0->SetSelection((int)wxThePrintSetupData->GetPrinterOrientation() - 1); // @@@ Configuration hook - if (wxThePrintSetupData->GetPrintPreviewCommand() == NULL) + if ( !wxThePrintSetupData->GetPrintPreviewCommand() ) wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG); // wxGetResource ("wxWindows", "PSView", &wxThePrintSetupData->m_previewCommand); diff --git a/src/generic/printps.cpp b/src/generic/printps.cpp index f64a03b5e4..389fb5c7e1 100644 --- a/src/generic/printps.cpp +++ b/src/generic/printps.cpp @@ -6,28 +6,36 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "printps.h" + #pragma implementation "printps.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #include "wx/defs.h" #ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#include + #include "wx/utils.h" + #include "wx/dc.h" + #include "wx/app.h" + #include "wx/msgdlg.h" + #include #endif #include "wx/generic/printps.h" @@ -38,21 +46,29 @@ #include +// ---------------------------------------------------------------------------- +// wxWin macros +// ---------------------------------------------------------------------------- + #if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase) + IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase) + IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase) #endif -/* -* Printer -*/ +// ============================================================================ +// implementation +// ============================================================================ -wxPostScriptPrinter::wxPostScriptPrinter(wxPrintDialogData *data): -wxPrinterBase(data) +// ---------------------------------------------------------------------------- +// Printer +// ---------------------------------------------------------------------------- + +wxPostScriptPrinter::wxPostScriptPrinter(wxPrintDialogData *data) + : wxPrinterBase(data) { } -wxPostScriptPrinter::~wxPostScriptPrinter(void) +wxPostScriptPrinter::~wxPostScriptPrinter() { } @@ -60,21 +76,21 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro { sm_abortIt = FALSE; sm_abortWindow = (wxWindow *) NULL; - + if (!printout) return FALSE; - + printout->SetIsPreview(FALSE); printout->OnPreparePrinting(); - + // Get some parameters from the printout, if defined int fromPage, toPage; int minPage, maxPage; printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage); - + if (maxPage == 0) return FALSE; - + m_printDialogData.SetMinPage(minPage); m_printDialogData.SetMaxPage(maxPage); if (fromPage != 0) @@ -97,7 +113,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro else m_printDialogData.EnablePageNumbers(FALSE); - // Create a suitable device context + // Create a suitable device context wxDC *dc = (wxDC *) NULL; if (prompt) { @@ -109,50 +125,50 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro { dc = new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), FALSE, (wxWindow *) NULL); } - + // May have pressed cancel. if (!dc || !dc->Ok()) { if (dc) delete dc; return FALSE; } - + int logPPIScreenX = 0; int logPPIScreenY = 0; int logPPIPrinterX = 0; int logPPIPrinterY = 0; - + logPPIScreenX = 100; logPPIScreenY = 100; - + /* // Correct values for X/PostScript? logPPIPrinterX = 100; logPPIPrinterY = 100; */ - + logPPIPrinterX = 72; logPPIPrinterY = 72; - + printout->SetPPIScreen(logPPIScreenX, logPPIScreenY); printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY); - - // Set printout parameters + + // Set printout parameters printout->SetDC(dc); - + int w, h; dc->GetSize(&w, &h); printout->SetPageSizePixels((int)w, (int)h); dc->GetSizeMM(&w, &h); printout->SetPageSizeMM((int)w, (int)h); - + // Create an abort window wxBeginBusyCursor(); - + printout->OnBeginPrinting(); - + bool keepGoing = TRUE; - + int copyCount; for (copyCount = 1; copyCount <= m_printDialogData.GetNoCopies(); copyCount ++) { @@ -164,7 +180,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro } if (sm_abortIt) break; - + int pn; for (pn = m_printDialogData.GetFromPage(); keepGoing && (pn <= m_printDialogData.GetToPage()) && printout->HasPage(pn); pn++) @@ -183,13 +199,13 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro } printout->OnEndDocument(); } - + printout->OnEndPrinting(); - + wxEndBusyCursor(); - + delete dc; - + return TRUE; } @@ -225,18 +241,34 @@ bool wxPostScriptPrinter::Setup(wxWindow *parent) return (ret == wxID_OK); } -/* -* Print preview -*/ +// ---------------------------------------------------------------------------- +// Print preview +// ---------------------------------------------------------------------------- -wxPostScriptPrintPreview::wxPostScriptPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintDialogData *data): -wxPrintPreviewBase(printout, printoutForPrinting, data) +void wxPostScriptPrintPreview::Init(wxPrintout * WXUNUSED(printout), + wxPrintout * WXUNUSED(printoutForPrinting)) { // Have to call it here since base constructor can't call it DetermineScaling(); } -wxPostScriptPrintPreview::~wxPostScriptPrintPreview(void) +wxPostScriptPrintPreview::wxPostScriptPrintPreview(wxPrintout *printout, + wxPrintout *printoutForPrinting, + wxPrintDialogData *data) + : wxPrintPreviewBase(printout, printoutForPrinting, data) +{ + Init(printout, printoutForPrinting); +} + +wxPostScriptPrintPreview::wxPostScriptPrintPreview(wxPrintout *printout, + wxPrintout *printoutForPrinting, + wxPrintData *data) + : wxPrintPreviewBase(printout, printoutForPrinting, data) +{ + Init(printout, printoutForPrinting); +} + +wxPostScriptPrintPreview::~wxPostScriptPrintPreview() { } @@ -248,12 +280,12 @@ bool wxPostScriptPrintPreview::Print(bool interactive) return printer.Print(m_previewFrame, m_printPrintout, interactive); } -void wxPostScriptPrintPreview::DetermineScaling(void) +void wxPostScriptPrintPreview::DetermineScaling() { wxPaperSize paperType = m_printDialogData.GetPrintData().GetPaperId(); if (paperType == wxPAPER_NONE) paperType = wxPAPER_NONE; - + wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(paperType); if (!paper) paper = wxThePrintPaperDatabase->FindPaperType(wxPAPER_A4); @@ -263,7 +295,7 @@ void wxPostScriptPrintPreview::DetermineScaling(void) m_previewPrintout->SetPPIScreen(100, 100); // m_previewPrintout->SetPPIPrinter(100, 100); m_previewPrintout->SetPPIPrinter(72, 72); - + wxSize sizeDevUnits(paper->GetSizeDeviceUnits()); wxSize sizeTenthsMM(paper->GetSize()); wxSize sizeMM(sizeTenthsMM.x / 10, sizeTenthsMM.y / 10); @@ -283,7 +315,7 @@ void wxPostScriptPrintPreview::DetermineScaling(void) m_previewPrintout->SetPageSizeMM(sizeMM.x, sizeMM.y); m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); } - + // At 100%, the page should look about page-size on the screen. m_previewScale = (float)0.8; } diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp index 688edb11da..c5ea11ae15 100644 --- a/src/generic/prntdlgg.cpp +++ b/src/generic/prntdlgg.cpp @@ -6,42 +6,50 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "prntdlgg.h" + #pragma implementation "prntdlgg.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #include "wx/defs.h" #ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/stattext.h" -#include "wx/statbox.h" -#include "wx/button.h" -#include "wx/checkbox.h" -#include "wx/textctrl.h" -#include "wx/radiobox.h" -#include "wx/filedlg.h" -#include "wx/choice.h" -#include + #include "wx/utils.h" + #include "wx/dc.h" + #include "wx/app.h" + #include "wx/frame.h" + #include "wx/stattext.h" + #include "wx/statbox.h" + #include "wx/button.h" + #include "wx/checkbox.h" + #include "wx/textctrl.h" + #include "wx/radiobox.h" + #include "wx/filedlg.h" + #include "wx/choice.h" + #include #endif #include "wx/generic/prntdlgg.h" #if wxUSE_POSTSCRIPT -#include "wx/generic/dcpsg.h" + #include "wx/generic/dcpsg.h" #endif #include "wx/printdlg.h" @@ -53,79 +61,114 @@ #include #include +// ---------------------------------------------------------------------------- +// wxWin macros +// ---------------------------------------------------------------------------- + #if wxUSE_POSTSCRIPT #if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPageSetupDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog) -EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK) -EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup) -EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxGenericPageSetupDialog, wxDialog) -EVT_BUTTON(wxPRINTID_SETUP, wxGenericPageSetupDialog::OnPrinter) -END_EVENT_TABLE() -#endif + IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog) + IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) + IMPLEMENT_CLASS(wxGenericPageSetupDialog, wxDialog) + + BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog) + EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK) + EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup) + EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange) + END_EVENT_TABLE() + + BEGIN_EVENT_TABLE(wxGenericPageSetupDialog, wxDialog) + EVT_BUTTON(wxPRINTID_SETUP, wxGenericPageSetupDialog::OnPrinter) + END_EVENT_TABLE() +#endif // USE_SHARED_LIBRARY + +// ---------------------------------------------------------------------------- +// global vars +// ---------------------------------------------------------------------------- extern wxPrintPaperDatabase *wxThePrintPaperDatabase; -/* -* Generic print dialog for non-Windows printing use. -*/ +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// Generic print dialog for non-Windows printing use. +// ---------------------------------------------------------------------------- + +wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, + wxPrintDialogData* data) + : wxDialog(parent, -1, _("Print"), + wxPoint(0, 0), wxSize(600, 600), + wxDEFAULT_DIALOG_STYLE | + wxDIALOG_MODAL | + wxTAB_TRAVERSAL) +{ + if ( data ) + m_printDialogData = *data; + Init(parent); +} -wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintDialogData* data): -wxDialog(parent, -1, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL) +wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, + wxPrintData* data) { if ( data ) m_printDialogData = *data; - + + Init(parent); +} + +void wxGenericPrintDialog::Init(wxWindow *parent) +{ + wxDialog::Create(parent, -1, _("Print"), wxPoint(0, 0), wxSize(600, 600), + wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL | wxTAB_TRAVERSAL); + (void)new wxStaticBox( this, -1, _( "Printer options" ), wxPoint( 5, 5), wxSize( 300, 60 ) ); - + m_printToFileCheckBox = new wxCheckBox(this, wxPRINTID_PRINTTOFILE, _("Print to File"), wxPoint(20, 25) ); - + m_setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup..."), wxPoint(160, 25), wxSize(100, -1)); - + wxString *choices = new wxString[2]; choices[0] = _("All"); choices[1] = _("Pages"); - + m_fromText = (wxTextCtrl*)NULL; - + if (m_printDialogData.GetFromPage() != 0) { m_rangeRadioBox = new wxRadioBox(this, wxPRINTID_RANGE, _("Print Range"), - wxPoint(5, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL); + wxPoint(5, 80), wxSize(-1, -1), + 2, choices, + 1, wxRA_VERTICAL); m_rangeRadioBox->SetSelection(1); } - + if(m_printDialogData.GetFromPage() != 0) { (void) new wxStaticText(this, wxPRINTID_STATIC, _("From:"), wxPoint(5, 135)); - + m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxPoint(45, 130), wxSize(40, -1)); - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("To:"), wxPoint(100, 135)); - + m_toText = new wxTextCtrl(this, wxPRINTID_TO, "", wxPoint(133, 130), wxSize(40, -1)); } - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Copies:"), wxPoint(200, 135)); - + m_noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, "", wxPoint(252, 130), wxSize(40, -1)); - + wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(40, 180), wxSize(100, -1)); (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(180, 180), wxSize(100, -1)); - + okButton->SetDefault(); okButton->SetFocus(); Fit(); Centre(wxBOTH); - + // Calls wxWindow::OnInitDialog and then wxGenericPrintDialog::TransferDataToWindow InitDialog(); delete[] choices; @@ -171,7 +214,7 @@ wxGenericPrintDialog::~wxGenericPrintDialog() void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { TransferDataFromWindow(); - + // There are some interactions between the global setup data // and the standard print dialog. The global printing 'mode' // is determined by whether the user checks Print to file @@ -180,27 +223,27 @@ void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_FILE); wxThePrintSetupData->SetPrinterMode(wxPRINT_MODE_FILE); - + wxString f = wxFileSelector(_("PostScript file"), wxPathOnly(wxThePrintSetupData->GetPrinterFile()), wxFileNameFromPath(wxThePrintSetupData->GetPrinterFile()), "ps", "*.ps", 0, this); if ( f.IsEmpty() ) return; - + m_printDialogData.GetPrintData().SetFilename(f); wxThePrintSetupData->SetPrinterFile(f); } else wxThePrintSetupData->SetPrinterMode(wxPRINT_MODE_PRINTER); - + EndModal(wxID_OK); } void wxGenericPrintDialog::OnRange(wxCommandEvent& event) { if (!m_fromText) return; - + if (event.GetInt() == 0) { m_fromText->Enable(FALSE); @@ -223,26 +266,26 @@ void wxGenericPrintDialog::OnSetup(wxCommandEvent& WXUNUSED(event)) *wxThePrintSetupData = genericPrintSetupDialog->GetPrintData(); m_printDialogData = genericPrintSetupDialog->GetPrintData(); } - + genericPrintSetupDialog->Close(TRUE); } bool wxGenericPrintDialog::TransferDataToWindow() { char buf[10]; - + if(m_printDialogData.GetFromPage() != 0) { if (m_printDialogData.GetEnablePageNumbers()) { m_fromText->Enable(TRUE); m_toText->Enable(TRUE); - + sprintf(buf, "%d", m_printDialogData.GetFromPage()); m_fromText->SetValue(buf); sprintf(buf, "%d", m_printDialogData.GetToPage()); m_toText->SetValue(buf); - + if (m_printDialogData.GetAllPages()) m_rangeRadioBox->SetSelection(0); else @@ -258,7 +301,7 @@ bool wxGenericPrintDialog::TransferDataToWindow() } sprintf(buf, "%d", m_printDialogData.GetNoCopies()); m_noCopiesText->SetValue(buf); - + m_printToFileCheckBox->SetValue(m_printDialogData.GetPrintToFile()); m_printToFileCheckBox->Enable(m_printDialogData.GetEnablePrintToFile()); return TRUE; @@ -299,9 +342,9 @@ wxDC *wxGenericPrintDialog::GetPrintDC() return new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), FALSE, (wxWindow *) NULL); } -/* -* Generic print setup dialog -*/ +// ---------------------------------------------------------------------------- +// Generic print setup dialog +// ---------------------------------------------------------------------------- wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintData* data): wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL) @@ -328,50 +371,50 @@ void wxGenericPrintSetupDialog::Init(wxPrintData* data) m_printData = *data; int staticBoxWidth = 300; - + (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Paper size"), wxPoint(10, 10), wxSize(staticBoxWidth, 60) ); - + int xPos = 20; int yPos = 30; m_paperTypeChoice = CreatePaperTypeChoice(&xPos, &yPos); - + wxString *choices = new wxString[2]; choices[0] = _("Portrait"); choices[1] = _("Landscape"); - + m_orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"), wxPoint(10, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL ); m_orientationRadioBox->SetSelection(0); - + (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Options"), wxPoint(10, 130), wxSize(staticBoxWidth, 50) ); - + int colourYPos = 145; - + #ifdef __WXMOTIF__ colourYPos = 150; #endif - + m_colourCheckBox = new wxCheckBox(this, wxPRINTID_PRINTCOLOUR, _("Print in colour"), wxPoint(15, colourYPos)); (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Print spooling"), wxPoint(330, 10), wxSize(200,170) ); - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer command:"), wxPoint(340, 30)); - + m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, "", wxPoint(360, 55), wxSize(150, -1)); - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer options:"), wxPoint(340, 110)); - + m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, "", wxPoint(360, 135), wxSize(150, -1)); - + wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(130, 200), wxSize(100, -1)); (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(320, 200), wxSize(100, -1)); - + okButton->SetDefault(); okButton->SetFocus(); - + Fit(); Centre(wxBOTH); - + InitDialog(); delete[] choices; } @@ -388,7 +431,7 @@ bool wxGenericPrintSetupDialog::TransferDataToWindow() m_printerOptionsText->SetValue(m_printData.GetPrinterOptions()); if (m_colourCheckBox) m_colourCheckBox->SetValue(m_printData.GetColour()); - + if (m_orientationRadioBox) { if (m_printData.GetOrientation() == wxPORTRAIT) @@ -447,7 +490,7 @@ wxChoice *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y) if (m_printData.GetPaperId() == paper->GetId()) sel = i; } - + int width = 250; wxChoice *choice = new wxChoice(this, wxPRINTID_PAPERSIZE, wxPoint(*x, *y), wxSize(width, -1), n, @@ -456,16 +499,15 @@ wxChoice *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y) // SetFont(thisFont); delete[] choices; - + choice->SetSelection(sel); return choice; } -#endif -// wxUSE_POSTSCRIPT +#endif // wxUSE_POSTSCRIPT -/* - * Generic page setup dialog - */ +// ---------------------------------------------------------------------------- +// Generic page setup dialog +// ---------------------------------------------------------------------------- void wxGenericPageSetupDialog::OnPrinter(wxCommandEvent& WXUNUSED(event)) { @@ -503,89 +545,89 @@ wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_ { if ( data ) m_pageData = *data; - + int buttonWidth = 75; int buttonHeight = 25; int spacing = 5; #ifdef __WXMOTIF__ spacing = 15; #endif - + int yPos = 5; int xPos = 5; - + wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(5, yPos), wxSize(buttonWidth, buttonHeight)); (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(buttonWidth + 5 + spacing, yPos), wxSize(buttonWidth, buttonHeight)); - + m_printerButton = new wxButton(this, wxPRINTID_SETUP, _("Printer..."), wxPoint(buttonWidth*2 + 5 + 2*spacing, yPos), wxSize(buttonWidth, buttonHeight)); - + if ( !m_pageData.GetEnablePrinter() ) m_printerButton->Enable(FALSE); - + // if (m_printData.GetEnableHelp()) // wxButton *helpButton = new wxButton(this, (wxFunction)wxGenericPageSetupHelpProc, _("Help"), -1, -1, buttonWidth, buttonHeight); - + okButton->SetDefault(); okButton->SetFocus(); - + xPos = 5; yPos += 35; - + #ifdef __WXMOTIF__ yPos += 10; #endif - + m_paperTypeChoice = CreatePaperTypeChoice(&xPos, &yPos); - + xPos = 5; - + wxString *choices = new wxString[2]; choices[0] = _("Portrait"); choices[1] = _("Landscape"); m_orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"), wxPoint(xPos, yPos), wxSize(-1, -1), 2, choices, 2); m_orientationRadioBox->SetSelection(0); - + xPos = 5; yPos += 60; - + int staticWidth = 110; #ifdef __WXMOTIF__ staticWidth += 20; #endif - + int textWidth = 60; spacing = 10; - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Left margin (mm):"), wxPoint(xPos, yPos)); xPos += staticWidth; - + m_marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); xPos += textWidth + spacing; - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Right margin (mm):"), wxPoint(xPos, yPos)); xPos += staticWidth; - + m_marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); xPos += textWidth + spacing; - + yPos += 35; xPos = 5; - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Top margin (mm):"), wxPoint(xPos, yPos)); xPos += staticWidth; - + m_marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); xPos += textWidth + spacing; - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Bottom margin (mm):"), wxPoint(xPos, yPos)); xPos += staticWidth; - + m_marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); - + Fit(); Centre(wxBOTH); - + InitDialog(); delete [] choices; } @@ -604,7 +646,7 @@ bool wxGenericPageSetupDialog::TransferDataToWindow() m_marginRightText->SetValue(IntToString((int) m_pageData.GetMarginBottomRight().x)); if (m_marginBottomText) m_marginBottomText->SetValue(IntToString((int) m_pageData.GetMarginBottomRight().y)); - + if (m_orientationRadioBox) { if (m_pageData.GetPrintData().GetOrientation() == wxPORTRAIT) @@ -636,7 +678,7 @@ bool wxGenericPageSetupDialog::TransferDataFromWindow() m_pageData.SetMarginTopLeft(wxPoint(atoi((const char *)m_marginLeftText->GetValue()),atoi((const char *)m_marginTopText->GetValue()))); if (m_marginRightText && m_marginBottomText) m_pageData.SetMarginBottomRight(wxPoint(atoi((const char *)m_marginRightText->GetValue()),atoi((const char *)m_marginBottomText->GetValue()))); - + if (m_orientationRadioBox) { int sel = m_orientationRadioBox->GetSelection(); @@ -668,7 +710,7 @@ bool wxGenericPageSetupDialog::TransferDataFromWindow() } } } - + return TRUE; } @@ -690,15 +732,15 @@ wxChoice *wxGenericPageSetupDialog::CreatePaperTypeChoice(int *x, int *y) wxPrintPaperType *paper = (wxPrintPaperType *)wxThePrintPaperDatabase->Nth(i)->Data(); choices[i] = paper->GetName(); } - + (void) new wxStaticText(this, wxPRINTID_STATIC, _("Paper size"), wxPoint(*x, *y)); *y += 25; - + wxChoice *choice = new wxChoice(this, wxPRINTID_PAPERSIZE, wxPoint(*x, *y), wxSize(300, -1), n, choices); *y += 35; delete[] choices; - + // choice->SetSelection(sel); return choice; } -- 2.45.2