X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ca65c0440a7163e4e37e48b1c4329709d722db47..6cb5e50b0d2259de305f273d2be3d28d7e84dc6a:/src/generic/prntdlgg.cpp diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp index 8639cffdc4..42a2299da4 100644 --- a/src/generic/prntdlgg.cpp +++ b/src/generic/prntdlgg.cpp @@ -56,6 +56,7 @@ #include "wx/generic/dcpsg.h" #endif +#include "wx/prntbase.h" #include "wx/printdlg.h" #include "wx/paper.h" #include "wx/filename.h" @@ -67,44 +68,76 @@ #include // ---------------------------------------------------------------------------- -// wxWin macros +// global vars // ---------------------------------------------------------------------------- +extern wxPrintPaperDatabase *wxThePrintPaperDatabase; #if wxUSE_POSTSCRIPT -IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) +//---------------------------------------------------------------------------- +// wxPostScriptNativeData +//---------------------------------------------------------------------------- -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() +IMPLEMENT_CLASS(wxPostScriptPrintNativeData, wxPrintNativeDataBase) -#endif // wxUSE_POSTSCRIPT +wxPostScriptPrintNativeData::wxPostScriptPrintNativeData() +{ + m_previewCommand = wxT(""); +#ifdef __VMS__ + m_printerCommand = wxT("print"); + m_printerOptions = wxT("/nonotify/queue=psqueue"); + m_afmPath = wxT("sys$ps_font_metrics:"); +#endif -IMPLEMENT_CLASS(wxGenericPageSetupDialog, wxDialog) +#ifdef __WXMSW__ + m_printerCommand = wxT("print"); + m_printerOptions = wxT(""); + m_afmPath = wxT("c:\\windows\\system\\"); +#endif -BEGIN_EVENT_TABLE(wxGenericPageSetupDialog, wxDialog) - EVT_BUTTON(wxPRINTID_SETUP, wxGenericPageSetupDialog::OnPrinter) -END_EVENT_TABLE() +#if !defined(__VMS__) && !defined(__WXMSW__) + m_printerCommand = wxT("lpr"); + m_printerOptions = wxT(""); + m_afmPath = wxT(""); +#endif -// ---------------------------------------------------------------------------- -// global vars -// ---------------------------------------------------------------------------- + m_printerScaleX = 1.0; + m_printerScaleY = 1.0; + m_printerTranslateX = 0; + m_printerTranslateY = 0; + m_printMode = wxPRINT_MODE_FILE; +} -extern wxPrintPaperDatabase *wxThePrintPaperDatabase; +wxPostScriptPrintNativeData::~wxPostScriptPrintNativeData() +{ +} -#if wxUSE_POSTSCRIPT +bool wxPostScriptPrintNativeData::TransferTo( wxPrintData &data ) +{ + return true; +} + +bool wxPostScriptPrintNativeData::TransferFrom( const wxPrintData &data ) +{ + return true; +} // ---------------------------------------------------------------------------- // Generic print dialog for non-Windows printing use. // ---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxGenericPrintDialog, wxPrintDialogBase) + +BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxPrintDialogBase) + EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK) + EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup) + EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange) +END_EVENT_TABLE() + wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintDialogData* data) - : wxDialog(parent, wxID_ANY, _("Print"), + : wxPrintDialogBase(parent, wxID_ANY, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL) @@ -117,7 +150,7 @@ wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintData* data) - : wxDialog(parent, wxID_ANY, _("Print"), + : wxPrintDialogBase(parent, wxID_ANY, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL) @@ -177,16 +210,16 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent)) if (m_printDialogData.GetFromPage() != 0) { bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("From:") ), 0, wxCENTER|wxALL, 5 ); - m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, wxEmptyString, wxDefaultPosition, wxSize(40, wxDefaultSize.y)); + m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, wxEmptyString, wxDefaultPosition, wxSize(40, wxDefaultCoord)); bottomsizer->Add( m_fromText, 1, wxCENTER|wxRIGHT, 10 ); bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("To:") ), 0, wxCENTER|wxALL, 5); - m_toText = new wxTextCtrl(this, wxPRINTID_TO, wxEmptyString, wxDefaultPosition, wxSize(40, wxDefaultSize.y)); + m_toText = new wxTextCtrl(this, wxPRINTID_TO, wxEmptyString, wxDefaultPosition, wxSize(40, wxDefaultCoord)); bottomsizer->Add( m_toText, 1, wxCENTER|wxRIGHT, 10 ); } bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("Copies:") ), 0, wxCENTER|wxALL, 5 ); - m_noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, wxEmptyString, wxPoint(252, 130), wxSize(40, wxDefaultSize.y)); + m_noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, wxEmptyString, wxPoint(252, 130), wxSize(40, wxDefaultCoord)); bottomsizer->Add( m_noCopiesText, 1, wxCENTER|wxRIGHT, 10 ); mainsizer->Add( bottomsizer, 0, wxTOP|wxLEFT|wxRIGHT, 12 ); @@ -220,18 +253,16 @@ int wxGenericPrintDialog::ShowModal() // present, but there might be in future. // TransferDataFromWindow(); - wxGenericPrintSetupDialog *genericPrintSetupDialog = - new wxGenericPrintSetupDialog(this, & m_printDialogData.GetPrintData()); - int ret = genericPrintSetupDialog->ShowModal(); - if ( ret != wxID_CANCEL ) + wxGenericPrintSetupDialog genericPrintSetupDialog( this, &m_printDialogData.GetPrintData() ); + int ret = genericPrintSetupDialog.ShowModal(); + if (ret != wxID_CANCEL) { // Transfer settings to the print dialog's print data. - m_printDialogData.GetPrintData() = genericPrintSetupDialog->GetPrintData(); + m_printDialogData.GetPrintData() = genericPrintSetupDialog.GetPrintData(); } - genericPrintSetupDialog->Destroy(); - // Restore the wxPrintData settings again (uncomment if any settings become common - // to both dialogs) + // Restore the wxPrintData settings again (uncomment if any settings become + // common to both dialogs) // TransferDataToWindow(); return ret; @@ -255,25 +286,28 @@ void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event)) if (m_printDialogData.GetToPage() < 1) m_printDialogData.SetToPage(m_printDialogData.GetFromPage()); + wxPostScriptPrintNativeData *data = + (wxPostScriptPrintNativeData *) m_printDialogData.GetPrintData().GetNativeData(); + // 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 // or not. if (m_printDialogData.GetPrintToFile()) { - m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_FILE); + data->SetPrintMode(wxPRINT_MODE_FILE); wxFileName fname( m_printDialogData.GetPrintData().GetFilename() ); wxFileDialog dialog( this, _("PostScript file"), fname.GetPath(), fname.GetFullName(), wxT("*.ps"), wxOPEN | wxOVERWRITE_PROMPT ); if (dialog.ShowModal() != wxID_OK) return; - + m_printDialogData.GetPrintData().SetFilename( dialog.GetPath() ); } else { - m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_PRINTER); + data->SetPrintMode(wxPRINT_MODE_PRINTER); } EndModal(wxID_OK); @@ -402,6 +436,8 @@ wxDC *wxGenericPrintDialog::GetPrintDC() // Generic print setup dialog // ---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) + wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintData* data): wxDialog(parent, wxID_ANY, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxTAB_TRAVERSAL) { @@ -443,14 +479,14 @@ void wxGenericPrintSetupDialog::Init(wxPrintData* data) (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer command:"), wxPoint(340, 30)); - m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, wxEmptyString, wxPoint(360, 55), wxSize(150, wxDefaultSize.y)); + m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, wxEmptyString, wxPoint(360, 55), wxSize(150, wxDefaultCoord)); (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer options:"), wxPoint(340, 110)); - m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, wxEmptyString, wxPoint(360, 135), wxSize(150, wxDefaultSize.y)); + m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, wxEmptyString, wxPoint(360, 135), wxSize(150, wxDefaultCoord)); - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(130, 200), wxSize(80, wxDefaultSize.y)); - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(320, 200), wxSize(80, wxDefaultSize.y)); + wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(130, 200), wxSize(80, wxDefaultCoord)); + (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(320, 200), wxSize(80, wxDefaultCoord)); okButton->SetDefault(); okButton->SetFocus(); @@ -468,10 +504,13 @@ wxGenericPrintSetupDialog::~wxGenericPrintSetupDialog() bool wxGenericPrintSetupDialog::TransferDataToWindow() { - if (m_printerCommandText && m_printData.GetPrinterCommand()) - m_printerCommandText->SetValue(m_printData.GetPrinterCommand()); - if (m_printerOptionsText && m_printData.GetPrinterOptions()) - m_printerOptionsText->SetValue(m_printData.GetPrinterOptions()); + wxPostScriptPrintNativeData *data = + (wxPostScriptPrintNativeData *) m_printData.GetNativeData(); + + if (m_printerCommandText && data->GetPrinterCommand()) + m_printerCommandText->SetValue(data->GetPrinterCommand()); + if (m_printerOptionsText && data->GetPrinterOptions()) + m_printerOptionsText->SetValue(data->GetPrinterOptions()); if (m_colourCheckBox) m_colourCheckBox->SetValue(m_printData.GetColour()); @@ -487,10 +526,13 @@ bool wxGenericPrintSetupDialog::TransferDataToWindow() bool wxGenericPrintSetupDialog::TransferDataFromWindow() { + wxPostScriptPrintNativeData *data = + (wxPostScriptPrintNativeData *) m_printData.GetNativeData(); + if (m_printerCommandText) - m_printData.SetPrinterCommand(m_printerCommandText->GetValue()); + data->SetPrinterCommand(m_printerCommandText->GetValue()); if (m_printerOptionsText) - m_printData.SetPrinterOptions(m_printerOptionsText->GetValue()); + data->SetPrinterOptions(m_printerOptionsText->GetValue()); if (m_colourCheckBox) m_printData.SetColour(m_colourCheckBox->GetValue()); if (m_orientationRadioBox) @@ -542,7 +584,7 @@ wxComboBox *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y) wxPRINTID_PAPERSIZE, _("Paper Size"), wxPoint(*x, *y), - wxSize(width, wxDefaultSize.y), + wxSize(width, wxDefaultCoord), n, choices ); // SetFont(thisFont); @@ -558,6 +600,12 @@ wxComboBox *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y) // Generic page setup dialog // ---------------------------------------------------------------------------- +IMPLEMENT_CLASS(wxGenericPageSetupDialog, wxDialog) + +BEGIN_EVENT_TABLE(wxGenericPageSetupDialog, wxDialog) + EVT_BUTTON(wxPRINTID_SETUP, wxGenericPageSetupDialog::OnPrinter) +END_EVENT_TABLE() + void wxGenericPageSetupDialog::OnPrinter(wxCommandEvent& WXUNUSED(event)) { // We no longer query GetPrintMode, so we can eliminate the need @@ -575,16 +623,14 @@ void wxGenericPageSetupDialog::OnPrinter(wxCommandEvent& WXUNUSED(event)) wxPrintDialogData data; data = GetPageSetupData().GetPrintData(); data.SetSetupDialog(true); - wxPrintDialog *printDialog = new wxPrintDialog(this, & data); - printDialog->ShowModal(); + wxPrintDialog printDialog(this, & data); + printDialog.ShowModal(); // Transfer the page setup print settings from the page dialog to this dialog again, in case // the page setup dialog changed something. - GetPageSetupData().GetPrintData() = printDialog->GetPrintDialogData().GetPrintData(); + GetPageSetupData().GetPrintData() = printDialog.GetPrintDialogData().GetPrintData(); GetPageSetupData().CalculatePaperSizeFromId(); // Make sure page size reflects the id in wxPrintData - printDialog->Destroy(); - // Now update the dialog in case the page setup dialog changed some of our settings. TransferDataToWindow(); } @@ -622,7 +668,7 @@ wxGenericPageSetupDialog::wxGenericPageSetupDialog( wxWindow *parent, wxPRINTID_PAPERSIZE, _("Paper Size"), wxDefaultPosition, - wxSize(300, wxDefaultSize.y), + wxSize(300, wxDefaultCoord), n, choices ); topsizer->Add( m_paperTypeChoice, 1, wxEXPAND|wxALL, 5 ); // m_paperTypeChoice->SetSelection(sel); @@ -650,8 +696,8 @@ wxGenericPageSetupDialog::wxGenericPageSetupDialog( wxWindow *parent, table->Add( column1, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer *column2 = new wxBoxSizer( wxVERTICAL ); - m_marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultSize.y)); - m_marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultSize.y)); + m_marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultCoord)); + m_marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultCoord)); column2->Add( m_marginLeftText, 1, wxALL, 5 ); column2->Add( m_marginTopText, 1, wxALL, 5 ); table->Add( column2, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, 5 ); @@ -662,8 +708,8 @@ wxGenericPageSetupDialog::wxGenericPageSetupDialog( wxWindow *parent, table->Add( column3, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer *column4 = new wxBoxSizer( wxVERTICAL ); - m_marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultSize.y)); - m_marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultSize.y)); + m_marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultCoord)); + m_marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, wxEmptyString, wxDefaultPosition, wxSize(textWidth, wxDefaultCoord)); column4->Add( m_marginRightText, 1, wxALL, 5 ); column4->Add( m_marginBottomText, 1, wxALL, 5 ); table->Add( column4, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, 5 ); @@ -683,7 +729,7 @@ wxGenericPageSetupDialog::wxGenericPageSetupDialog( wxWindow *parent, if ( !m_pageData.GetEnablePrinter() ) m_printerButton->Enable(false); // if (m_printData.GetEnableHelp()) - // wxButton *helpButton = new wxButton(this, (wxFunction)wxGenericPageSetupHelpProc, _("Help"), wxDefaultPosition.x, wxDefaultPosition.y, buttonWidth, buttonHeight); + // wxButton *helpButton = new wxButton(this, (wxFunction)wxGenericPageSetupHelpProc, _("Help"), wxDefaultCoord, wxDefaultCoord, buttonWidth, buttonHeight); mainsizer->Add( buttonsizer, 0, wxCENTER|wxALL, 10 ); @@ -810,7 +856,7 @@ wxComboBox *wxGenericPageSetupDialog::CreatePaperTypeChoice(int *x, int *y) wxPRINTID_PAPERSIZE, _("Paper Size"), wxPoint(*x, *y), - wxSize(300, wxDefaultSize.y), + wxSize(300, wxDefaultCoord), n, choices ); *y += 35; delete[] choices;