From eba330067e87ccec9c8af7bd8b1023044e6d39e3 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sat, 17 Aug 2002 16:29:05 +0000 Subject: [PATCH] Removed all deprecated printing code. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cmndata.h | 49 ++- include/wx/generic/dcpsg.h | 173 +--------- samples/dialogs/dialogs.cpp | 4 +- samples/printing/printing.cpp | 12 - samples/text/text.cpp | 5 +- src/common/cmndata.cpp | 60 ++-- src/generic/dcpsg.cpp | 630 ++++------------------------------ src/generic/prntdlgg.cpp | 84 ++--- src/html/htmprint.cpp | 3 - 9 files changed, 153 insertions(+), 867 deletions(-) diff --git a/include/wx/cmndata.h b/include/wx/cmndata.h index 7e7e16ce55..61f5a204bd 100644 --- a/include/wx/cmndata.h +++ b/include/wx/cmndata.h @@ -21,13 +21,8 @@ #include "wx/colour.h" #include "wx/gdicmn.h" -#if (defined(__WXMOTIF__) || defined(__WXMGL__) || defined(__WXX11__) || defined(__WXGTK__) || defined(__WXPM__) || defined(__WXMAC__)) && wxUSE_POSTSCRIPT -class WXDLLEXPORT wxPrintSetupData; -#endif - class WXDLLEXPORT wxColourData: public wxObject { - DECLARE_DYNAMIC_CLASS(wxColourData) public: wxColourData(); wxColourData(const wxColourData& data); @@ -49,11 +44,13 @@ public: wxColour dataColour; wxColour custColours[16]; bool chooseFull; + +private: + DECLARE_DYNAMIC_CLASS(wxColourData) }; class WXDLLEXPORT wxFontData: public wxObject { - DECLARE_DYNAMIC_CLASS(wxFontData) public: wxFontData(); ~wxFontData(); @@ -130,6 +127,9 @@ public: private: wxFontEncoding m_encoding; wxNativeEncodingInfo m_encodingInfo; + +private: + DECLARE_DYNAMIC_CLASS(wxFontData) }; #if wxUSE_PRINTING_ARCHITECTURE @@ -140,8 +140,7 @@ private: class WXDLLEXPORT wxPrintData: public wxObject { - DECLARE_DYNAMIC_CLASS(wxPrintData) - +public: wxPrintData(); wxPrintData(const wxPrintData& printData); ~wxPrintData(); @@ -199,11 +198,6 @@ class WXDLLEXPORT wxPrintData: public wxObject void operator=(const wxPrintData& data); - // For compatibility -#if (defined(__WXMOTIF__) || defined(__WXMGL__) || defined(__WXX11__) || defined(__WXGTK__) || defined(__WXPM__) || defined(__WXMAC__)) && wxUSE_POSTSCRIPT - void operator=(const wxPrintSetupData& setupData); -#endif - #if defined(__WXMSW__) // Convert to/from the DEVMODE structure void ConvertToNative(); @@ -227,7 +221,6 @@ public: #endif private: - int m_printNoCopies; int m_printOrientation; bool m_printCollate; @@ -251,6 +244,9 @@ private: long m_printerTranslateX; long m_printerTranslateY; wxPrintMode m_printMode; + +private: + DECLARE_DYNAMIC_CLASS(wxPrintData) }; /* @@ -262,8 +258,7 @@ private: class WXDLLEXPORT wxPrintDialogData: public wxObject { - DECLARE_DYNAMIC_CLASS(wxPrintDialogData) - +public: wxPrintDialogData(); wxPrintDialogData(const wxPrintDialogData& dialogData); wxPrintDialogData(const wxPrintData& printData); @@ -317,8 +312,8 @@ class WXDLLEXPORT wxPrintDialogData: public wxObject void SetOwnerWindow(wxWindow* win); void* GetNativeData() const { return m_printDlgData; } #elif defined(__WXMAC__) - void ConvertToNative(); - void ConvertFromNative(); + void ConvertToNative(); + void ConvertFromNative(); #endif #ifdef __WXMSW__ @@ -326,7 +321,6 @@ class WXDLLEXPORT wxPrintDialogData: public wxObject #endif private: - int m_printFromPage; int m_printToPage; int m_printMinPage; @@ -341,8 +335,10 @@ private: bool m_printEnableHelp; bool m_printEnablePrintToFile; bool m_printSetupDialog; - wxPrintData m_printData; + +private: + DECLARE_DYNAMIC_CLASS(wxPrintDialogData) }; /* @@ -354,8 +350,6 @@ private: class WXDLLEXPORT wxPageSetupDialogData: public wxObject { - DECLARE_DYNAMIC_CLASS(wxPageSetupDialogData) - public: wxPageSetupDialogData(); wxPageSetupDialogData(const wxPageSetupDialogData& dialogData); @@ -409,8 +403,8 @@ public: void SetOwnerWindow(wxWindow* win); void* GetNativeData() const { return m_pageSetupData; } #elif defined(__WXMAC__) - void ConvertToNative(); - void ConvertFromNative(); + void ConvertToNative(); + void ConvertFromNative(); #endif // Use paper size defined in this object to set the wxPrintData @@ -431,14 +425,11 @@ public: #endif private: - wxSize m_paperSize; // The dimensions selected by the user (on return, same as in wxPrintData?) wxPoint m_minMarginTopLeft; wxPoint m_minMarginBottomRight; wxPoint m_marginTopLeft; wxPoint m_marginBottomRight; - - // Flags bool m_defaultMinMargins; bool m_enableMargins; bool m_enableOrientation; @@ -446,8 +437,10 @@ private: bool m_enablePrinter; bool m_getDefaultInfo; // Equiv. to PSD_RETURNDEFAULT bool m_enableHelp; - wxPrintData m_printData; + +private: + DECLARE_DYNAMIC_CLASS(wxPageSetupDialogData) }; #endif // wxUSE_PRINTING_ARCHITECTURE diff --git a/include/wx/generic/dcpsg.h b/include/wx/generic/dcpsg.h index 049af7267f..e35809d16c 100644 --- a/include/wx/generic/dcpsg.h +++ b/include/wx/generic/dcpsg.h @@ -37,28 +37,16 @@ class wxPostScriptDC; class WXDLLEXPORT wxPostScriptDC: public wxDC { - DECLARE_DYNAMIC_CLASS(wxPostScriptDC) - public: - wxPostScriptDC(); - // Deprecated constructor - wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - // Recommended constructor wxPostScriptDC(const wxPrintData& printData); ~wxPostScriptDC(); - // Deprecated - bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - virtual bool Ok() const; - // Deprecated: use wxGenericPrintDialog instead - virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL); - virtual void BeginDrawing() {} virtual void EndDrawing() {} @@ -135,157 +123,24 @@ public: static int GetResolution(); private: - static float ms_PSScaleFactor; + static float ms_PSScaleFactor; protected: - - FILE* m_pstream; // PostScript output stream - wxString m_title; - unsigned char m_currentRed; - unsigned char m_currentGreen; - unsigned char m_currentBlue; - int m_pageNumber; - bool m_clipping; - double m_underlinePosition; - double m_underlineThickness; - wxPrintData m_printData; -}; - -// Deprecated: should use wxGenericPrintDialog instead. -#if 1 -enum -{ - wxID_PRINTER_COMMAND = 1, - wxID_PRINTER_OPTIONS, - wxID_PRINTER_ORIENTATION, - wxID_PRINTER_MODES, - wxID_PRINTER_X_SCALE, - wxID_PRINTER_Y_SCALE, - wxID_PRINTER_X_TRANS, - wxID_PRINTER_Y_TRANS -}; - -class WXDLLEXPORT wxPostScriptPrintDialog: public wxDialog -{ -DECLARE_CLASS(wxPostScriptPrintDialog) -public: - wxPostScriptPrintDialog (wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - wxCoord style = wxDEFAULT_DIALOG_STYLE); - - virtual int ShowModal(); -}; -#endif // 1 - -// Print Orientation (Should also add Left, Right) -enum -{ - PS_PORTRAIT = 1, - PS_LANDSCAPE = 2 -};// ps_orientation = PS_PORTRAIT; - -// Print Actions -enum -{ - PS_NONE, - PS_PREVIEW, - PS_FILE, - PS_PRINTER -};// ps_action = PS_PREVIEW; - -// PostScript printer settings -WXDLLEXPORT void wxSetPrinterCommand(const wxString& cmd); -WXDLLEXPORT void wxSetPrintPreviewCommand(const wxString& cmd); -WXDLLEXPORT void wxSetPrinterOptions(const wxString& flags); -WXDLLEXPORT void wxSetPrinterOrientation(int orientation); -WXDLLEXPORT void wxSetPrinterScaling(double x, double y); -WXDLLEXPORT void wxSetPrinterTranslation(wxCoord x, wxCoord y); -WXDLLEXPORT void wxSetPrinterMode(int mode); -WXDLLEXPORT void wxSetPrinterFile(const wxString& f); -WXDLLEXPORT void wxSetAFMPath(const wxString& f); - -// Get current values -WXDLLEXPORT wxString wxGetPrinterCommand(); -WXDLLEXPORT wxString wxGetPrintPreviewCommand(); -WXDLLEXPORT wxString wxGetPrinterOptions(); -WXDLLEXPORT int wxGetPrinterOrientation(); -WXDLLEXPORT void wxGetPrinterScaling(double* x, double* y); -WXDLLEXPORT void wxGetPrinterTranslation(wxCoord *x, wxCoord *y); -WXDLLEXPORT int wxGetPrinterMode(); -WXDLLEXPORT wxString wxGetPrinterFile(); -WXDLLEXPORT wxString wxGetAFMPath(); - -/* - * PostScript print setup information. - * This is now obsolete, but retained for a while for compatibility - */ - -class WXDLLEXPORT wxPrintSetupData: public wxObject -{ -public: - wxPrintSetupData(); - ~wxPrintSetupData(); - - void SetPrinterCommand(const wxString& cmd) { m_printerCommand = cmd; }; - void SetPaperName(const wxString& paper) { m_paperName = paper; }; - void SetPrintPreviewCommand(const wxString& cmd) { m_previewCommand = cmd; }; - void SetPrinterOptions(const wxString& flags) { m_printerFlags = flags; }; - void SetPrinterFile(const wxString& f) { m_printerFile = f; }; - void SetPrinterOrientation(int orient) { m_printerOrient = orient; }; - void SetPrinterScaling(double x, double y) { m_printerScaleX = x; m_printerScaleY = y; }; - void SetPrinterTranslation(wxCoord x, wxCoord y) { m_printerTranslateX = x; m_printerTranslateY = y; }; - // 1 = Preview, 2 = print to file, 3 = send to printer - void SetPrinterMode(int mode) { m_printerMode = mode; }; - void SetAFMPath(const wxString& f) { m_afmPath = f; }; - void SetColour(bool col) { m_printColour = col; }; - - // Get current values - wxString GetPrinterCommand() const { return m_printerCommand; } ; - wxString GetPrintPreviewCommand() const { return m_previewCommand; } ; - wxString GetPrinterOptions() const { return m_printerFlags; }; - wxString GetPrinterFile() const { return m_printerFile; }; - wxString GetPaperName() const { return m_paperName; } - int GetPrinterOrientation() const { return m_printerOrient; }; - void GetPrinterScaling(double* x, double* y) const { *x = m_printerScaleX; *y = m_printerScaleY; }; - void GetPrinterTranslation(wxCoord *x, wxCoord *y) const { *x = m_printerTranslateX; *y = m_printerTranslateY; }; - int GetPrinterMode() const { return m_printerMode; }; - wxString GetAFMPath() const { return m_afmPath; }; - bool GetColour() const { return m_printColour; }; - - void operator=(wxPrintSetupData& data); - - // Initialize from a wxPrintData object (wxPrintData should now be used instead of wxPrintSetupData). - // There is also an operator for initializing a wxPrintData from a wxPrintSetupData. - void operator=(const wxPrintData& data); - -#ifndef __WIN16__ - void GetPrinterTranslation(long *x, long *y) const - { *x = m_printerTranslateX; *y = m_printerTranslateY; } -#endif // !Win16 - -public: - wxString m_printerCommand; - wxString m_previewCommand; - wxString m_printerFlags; - wxString m_printerFile; - int m_printerOrient; - double m_printerScaleX; - double m_printerScaleY; - wxCoord m_printerTranslateX; - wxCoord m_printerTranslateY; - // 1 = Preview, 2 = print to file, 3 = send to printer - int m_printerMode; - wxString m_afmPath; - // A name in the paper database (see paper.h) - wxString m_paperName; - bool m_printColour; - - DECLARE_DYNAMIC_CLASS(wxPrintSetupData) + FILE* m_pstream; // PostScript output stream + wxString m_title; + unsigned char m_currentRed; + unsigned char m_currentGreen; + unsigned char m_currentBlue; + int m_pageNumber; + bool m_clipping; + double m_underlinePosition; + double m_underlineThickness; + wxPrintData m_printData; + +private: + DECLARE_DYNAMIC_CLASS(wxPostScriptDC) }; -WXDLLEXPORT_DATA(extern wxPrintSetupData*) wxThePrintSetupData; -WXDLLEXPORT extern void wxInitializePrintSetupData(bool init = TRUE); - #endif // wxUSE_POSTSCRIPT diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index a18f46079f..c347fda919 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -780,7 +780,7 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) if ( type == wxEVT_COMMAND_FIND || type == wxEVT_COMMAND_FIND_NEXT ) { wxLogMessage(wxT("Find %s'%s' (flags: %s)"), - type == wxEVT_COMMAND_FIND_NEXT ? _T("next ") : "", + type == wxEVT_COMMAND_FIND_NEXT ? wxT("next ") : wxT(""), event.GetFindString().c_str(), DecodeFindDialogEventFlags(event.GetFlags()).c_str()); } @@ -788,7 +788,7 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) type == wxEVT_COMMAND_FIND_REPLACE_ALL ) { wxLogMessage(wxT("Replace %s'%s' with '%s' (flags: %s)"), - type == wxEVT_COMMAND_FIND_REPLACE_ALL ? _T("all ") : "", + type == wxEVT_COMMAND_FIND_REPLACE_ALL ? _T("all ") : wxT(""), event.GetFindString().c_str(), event.GetReplaceString().c_str(), DecodeFindDialogEventFlags(event.GetFlags()).c_str()); diff --git a/samples/printing/printing.cpp b/samples/printing/printing.cpp index b2943926a1..0f6b0ccf8d 100644 --- a/samples/printing/printing.cpp +++ b/samples/printing/printing.cpp @@ -79,16 +79,6 @@ bool MyApp::OnInit(void) g_printData = new wxPrintData; g_pageSetupData = new wxPageSetupDialogData; - // wxGetenv( wxT("HOME") ); - - // Compatibility with old system. In fact, we might keep wxThePrintSetupData - // just for useful default values which we can optionally assign to our - // own print data object. - -#if defined(__WXGTK__) || defined(__WXMOTIF__) - (*g_printData) = * wxThePrintSetupData; -#endif - // Create the main frame window frame = new MyFrame((wxFrame *) NULL, (char *) "wxWindows Printing Demo", wxPoint(0, 0), wxSize(400, 400)); @@ -492,8 +482,6 @@ void MyPrintout::DrawPageTwo(wxDC *dc) dc->DrawLine(50, 250, (long)(50.0 + logUnits), 250); dc->DrawLine(50, 250, 50, (long)(250.0 + logUnits)); - return; - dc->SetFont(* wxGetApp().m_testFont); dc->SetBackgroundMode(wxTRANSPARENT); diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 5f4ba2899c..13db32eac8 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -631,7 +631,7 @@ void MyTextCtrl::OnMouseEvent(wxMouseEvent& ev) void MyTextCtrl::OnSetFocus(wxFocusEvent& event) { if ( ms_logFocus ) - wxLogMessage("%p got focus.", this); + wxLogMessage( wxT("%p got focus."), this); event.Skip(); } @@ -639,7 +639,7 @@ void MyTextCtrl::OnSetFocus(wxFocusEvent& event) void MyTextCtrl::OnKillFocus(wxFocusEvent& event) { if ( ms_logFocus ) - wxLogMessage("%p lost focus", this); + wxLogMessage( wxT("%p lost focus"), this); event.Skip(); } @@ -657,6 +657,7 @@ void MyTextCtrl::OnText(wxCommandEvent& event) } else { + // wxLogMessage( event.GetString() ); wxLogMessage(_T("Text changed in some control")); } } diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 4ee83e61e9..3c46f26ba2 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -43,17 +43,8 @@ #include "wx/fontdlg.h" #endif // wxUSE_FONTDLG -// For compatibility -#if (defined(__WXMOTIF__) || defined(__WXMGL__) || defined(__WXGTK__) || defined(__WXX11__)|| defined(__WXPM__) || defined(__WXMAC__)) && wxUSE_POSTSCRIPT - #define wxCOMPATIBILITY_WITH_PRINTSETUPDATA 1 -#endif - #if wxUSE_PRINTING_ARCHITECTURE #include "wx/paper.h" - - #if wxCOMPATIBILITY_WITH_PRINTSETUPDATA - #include "wx/generic/dcpsg.h" - #endif #endif // wxUSE_PRINTING_ARCHITECTURE #ifdef __WXMSW__ @@ -264,11 +255,26 @@ wxPrintData::wxPrintData() m_paperSize = wxSize(210, 297); // PostScript-specific data - m_printerCommand = ""; - m_previewCommand = ""; - m_printerOptions = ""; - m_filename = ""; - m_afmPath = ""; + m_previewCommand = wxT(""); + m_filename = wxT(""); +#ifdef __VMS__ + m_printerCommand = wxT("print"); + m_printerOptions = wxT("/nonotify/queue=psqueue"); + m_afmPath = wxT("sys$ps_font_metrics:"); +#endif + +#ifdef __WXMSW__ + m_printerCommand = wxT("print"); + m_printerOptions = wxT(""); + m_afmPath = wxT("c:\\windows\\system\\"); +#endif + +#if !defined(__VMS__) && !defined(__WXMSW__) + m_printerCommand = wxT("lpr"); + m_printerOptions = wxT(""); + m_afmPath = wxT(""); +#endif + m_printerScaleX = 1.0; m_printerScaleY = 1.0; m_printerTranslateX = 0; @@ -839,32 +845,6 @@ void wxPrintData::operator=(const wxPrintData& data) m_printMode = data.m_printMode; } -// For compatibility -#if wxCOMPATIBILITY_WITH_PRINTSETUPDATA -void wxPrintData::operator=(const wxPrintSetupData& setupData) -{ - SetPrinterCommand(setupData.GetPrinterCommand()); - SetPreviewCommand(setupData.GetPrintPreviewCommand()); - SetPrinterOptions(setupData.GetPrinterOptions()); - - long xt, yt; - setupData.GetPrinterTranslation(& xt, & yt); - SetPrinterTranslation(xt, yt); - - double xs, ys; - setupData.GetPrinterScaling(& xs, & ys); - SetPrinterScaling(xs, ys); - - SetOrientation(setupData.GetPrinterOrientation()); - SetPrintMode((wxPrintMode) setupData.GetPrinterMode()); - SetFontMetricPath(setupData.GetAFMPath()); - if (setupData.GetPaperName() != "") - SetPaperId(wxThePrintPaperDatabase->ConvertNameToId(setupData.GetPaperName())); - SetColour(setupData.GetColour()); - SetFilename(setupData.GetPrinterFile()); -} -#endif // wxCOMPATIBILITY_WITH_PRINTSETUPDATA - // Is this data OK for showing the print dialog? bool wxPrintData::Ok() const { diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index fbf73107ff..2189f60a82 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -88,8 +88,6 @@ static const char *wxPostScriptHeaderConicTo = "\ /p2_y p1_y to_y p0_y sub 1 3 div mul add def\n\ p1_x p1_y p2_x p2_y to_x to_y curveto\n\ } bind def\n\ -/start_ol { gsave 1.0 72 div dup scale } bind def\n\ -/end_ol { closepath fill grestore } bind def\n\ "; static const char *wxPostScriptHeaderEllipse = "\ @@ -253,6 +251,8 @@ static char wxPostScriptHeaderReencodeISO2[] = // wxPostScriptDC //------------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) + float wxPostScriptDC::ms_PSScaleFactor = 10.0; void wxPostScriptDC::SetResolution(int ppi) @@ -265,7 +265,7 @@ int wxPostScriptDC::GetResolution() return (int)(ms_PSScaleFactor * 72.0); } - +//------------------------------------------------------------------------------- wxPostScriptDC::wxPostScriptDC () { @@ -284,57 +284,6 @@ wxPostScriptDC::wxPostScriptDC () m_signX = 1; // default x-axis left to right m_signY = -1; // default y-axis bottom up -> top down - - // Compatibility only - // HH: Doesn't seem to work for wxMSW... - #if !defined(__WXMSW__) - m_printData = * wxThePrintSetupData; - #endif -} - -wxPostScriptDC::wxPostScriptDC (const wxString& file, bool interactive, wxWindow *parent) -{ - m_pstream = (FILE*) NULL; - - m_currentRed = 0; - m_currentGreen = 0; - m_currentBlue = 0; - - m_pageNumber = 0; - - m_clipping = FALSE; - - m_underlinePosition = 0.0; - m_underlineThickness = 0.0; - - m_signX = 1; // default x-axis left to right - m_signY = -1; // default y-axis bottom up -> top down - - Create(file, interactive, parent); -} - -bool wxPostScriptDC::Create(const wxString& file, bool interactive, wxWindow *parent) -{ - m_isInteractive = interactive; - - m_title = ""; - m_printData.SetFilename(file); - -#ifdef __WXMSW__ - // Can only send to file in Windows - m_printData.SetPrintMode(wxPRINT_MODE_FILE); -#endif - - if (m_isInteractive) - { - if ((m_ok = PrinterDialog (parent) ) == FALSE) return FALSE; - } - else - { - m_ok = TRUE; - } - - return m_ok; } wxPostScriptDC::wxPostScriptDC (const wxPrintData& printData) @@ -374,54 +323,6 @@ bool wxPostScriptDC::Ok() const return m_ok; } -// This dialog is deprecated now: use wxGenericPrintDialog or the printing framework -bool wxPostScriptDC::PrinterDialog(wxWindow *parent) -{ - wxPostScriptPrintDialog dialog( parent, _("Printer Settings"), wxPoint(150, 150), wxSize(400, 400), - wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL ); - m_ok = (dialog.ShowModal () == wxID_OK); - - if (!m_ok) return FALSE; - - if ((m_printData.GetFilename() == "") && - (m_printData.GetPrintMode() == wxPRINT_MODE_PREVIEW || - m_printData.GetPrintMode() == wxPRINT_MODE_PRINTER)) - { -// steve, 05.09.94 -#ifdef __VMS__ - m_printData.SetFilename("preview"); -#else - // For PS_PRINTER action this depends on a Unix-style print spooler - // since the wx_printer_file can be destroyed during a session - // @@@ TODO: a Windows-style answer for non-Unix - wxChar userId[256]; - wxGetUserId (userId, sizeof (userId) / sizeof (char)); - wxChar tmp[256]; - wxStrcpy (tmp, wxT("/tmp/preview_")); - wxStrcat (tmp, userId); - m_printData.SetFilename(tmp); -#endif - wxChar tmp2[256]; - wxStrcpy(tmp2, m_printData.GetFilename()); - wxStrcat (tmp2, wxT(".ps")); - m_printData.SetFilename(tmp2); - } - else if ((m_printData.GetFilename() == wxT("")) && (m_printData.GetPrintMode() == wxPRINT_MODE_FILE)) - { - wxString file = wxSaveFileSelector (_("PostScript"), wxT("ps")); - if ( file.IsEmpty() ) - { - m_ok = FALSE; - return FALSE; - } - - m_printData.SetFilename(file); - m_ok = TRUE; - } - - return m_ok; -} - void wxPostScriptDC::DoSetClippingRegion (wxCoord x, wxCoord y, wxCoord w, wxCoord h) { wxCHECK_RET( m_ok && m_pstream, wxT("invalid postscript dc") ); @@ -1193,9 +1094,13 @@ void wxPostScriptDC::SetBrush( const wxBrush& brush ) #ifdef __WXGTK20__ +#define PANGO_ENABLE_ENGINE + #include "wx/gtk/private.h" #include "wx/fontutil.h" #include "gtk/gtk.h" +//#include "gtk/gdk/gdkx.h" +//#include #include #include @@ -1263,7 +1168,7 @@ static int paps_cubic_to( FT_Vector* control1, return 0; } -static void draw_bezier_outline(FILE *OUT, +void draw_bezier_outline(FILE *OUT, int dpi, FT_Face face, FT_UInt glyph_index, @@ -1289,19 +1194,17 @@ static void draw_bezier_outline(FILE *OUT, outline_info.dpi = dpi; outline_info.OUT = OUT; - fprintf(OUT, "gsave %d %d translate 0 0 0 setrgbcolor\n", pos_x, pos_y); - fprintf(OUT, "start_ol\n"); + fprintf(OUT, "gsave %d %d translate 1.0 72.0 div dup scale 0 0 0 setrgbcolor\n", pos_x, pos_y ); FT_Load_Glyph(face, glyph_index, load_flags); FT_Get_Glyph (face->glyph, &glyph); FT_Outline_Decompose (&(((FT_OutlineGlyph)glyph)->outline), &outlinefunc, &outline_info); - fprintf(OUT, "end_ol grestore \n"); + fprintf(OUT, "closepath fill grestore \n"); FT_Done_Glyph (glyph); } - #endif void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) @@ -1310,11 +1213,9 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) #ifdef __WXGTK20__ - int dpi = GetResolution() * 2; - dpi = 300; + int dpi = GetResolution(); PangoContext *context = pango_ft2_get_context ( dpi, dpi ); - // What are these for? pango_context_set_language (context, pango_language_from_string ("en_US")); @@ -1324,7 +1225,7 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) pango_context_set_font_description (context, m_font.GetNativeFontInfo()->description ); // Create layout - PangoLayout *layout = layout = pango_layout_new (context); + PangoLayout *layout = pango_layout_new (context); #if wxUSE_UNICODE wxCharBuffer buffer = wxConvUTF8.cWC2MB( text ); #else @@ -1332,9 +1233,12 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) #endif pango_layout_set_text( layout, (const char*) buffer, strlen(buffer) ); -#if 0 - double xx = LogicalToDeviceX(x); - double yy = LogicalToDeviceY(y /*+ bitmap.GetHeight()*/ ); +#if 1 + int xx = LogicalToDeviceX(x); + int yy = LogicalToDeviceY(y /*+ bitmap.GetHeight()*/ ); + + xx *= PANGO_SCALE; + yy *= PANGO_SCALE; // Loop over lines in layout int num_lines = pango_layout_get_line_count( layout ); @@ -1357,13 +1261,13 @@ void wxPostScriptDC::DoDrawText( const wxString& text, wxCoord x, wxCoord y ) for (int glyph_idx = 0; glyph_idx < num_glyphs; glyph_idx++) { PangoGlyphGeometry geometry = glyphs->glyphs[glyph_idx].geometry; - double pos_x = xx + 1.0 * geometry.x_offset / PANGO_SCALE; - double pos_y = yy - 1.0 * geometry.y_offset / PANGO_SCALE; - xx += 1.0 * geometry.width / PANGO_SCALE; - + int pos_x = xx + geometry.x_offset; + int pos_y = yy - geometry.y_offset; + xx += geometry.width; + draw_bezier_outline( m_pstream, dpi, ft_face, (FT_UInt)(glyphs->glyphs[glyph_idx].glyph), - (wxCoord)pos_x, (wxCoord)pos_y ); + (wxCoord)(pos_x / PANGO_SCALE), (wxCoord)(pos_y / PANGO_SCALE) ); } runs_list = runs_list->next; } @@ -1863,6 +1767,20 @@ bool wxPostScriptDC::StartDoc( const wxString& message ) m_ok = TRUE; + fprintf( m_pstream, "%%!PS-Adobe-2.0\n" ); + fprintf( m_pstream, "%%%%Title: %s\n", (const char *) m_title.ToAscii() ); + fprintf( m_pstream, "%%%%Creator: wxWindows PostScript renderer\n" ); + fprintf( m_pstream, "%%%%CreationDate: %s\n", (const char *) wxNow().ToAscii() ); + if (m_printData.GetOrientation() == wxLANDSCAPE) + fprintf( m_pstream, "%%%%Orientation: Landscape\n" ); + else + fprintf( m_pstream, "%%%%Orientation: Portrait\n" ); + + // wxPaperSize ps = m_printData.GetPaperId(); + // if (ps == ...) + fprintf( m_pstream, "%%%%DocumentPaperSizes: %s\n", "A4" ); + fprintf( m_pstream, "%%%%EndComments\n\n" ); + fprintf( m_pstream, "%%%%BeginProlog\n" ); fprintf( m_pstream, wxPostScriptHeaderConicTo ); fprintf( m_pstream, wxPostScriptHeaderEllipse ); @@ -1903,15 +1821,7 @@ void wxPostScriptDC::EndDoc () fclose( m_pstream ); m_pstream = (FILE *) NULL; - wxChar *header_file = wxGetTempFileName("ps"); - - m_pstream = wxFopen( header_file, wxT("w+") ); - - fprintf( m_pstream, "%%!PS-Adobe-2.0\n" ); // PostScript magic strings - fprintf( m_pstream, "%%%%Title: %s\n", (const char *)m_title.mb_str() ); - fprintf( m_pstream, "%%%%Creator: wxWindows PostScript renderer\n" ); - fprintf( m_pstream, "%%%%CreationDate: %s\n", (const char *)wxNow().mb_str() ); - +#if 0 // THE FOLLOWING HAS BEEN CONTRIBUTED BY Andy Fyfe @@ -1924,11 +1834,6 @@ void wxPostScriptDC::EndDoc () wx_printer_scale_x = m_printData.GetPrinterScaleX(); wx_printer_scale_y = m_printData.GetPrinterScaleY(); - if (m_printData.GetOrientation() == wxLANDSCAPE) - fprintf( m_pstream, "%%%%Orientation: Landscape\n" ); - else - fprintf( m_pstream, "%%%%Orientation: Portrait\n" ); - // Compute the bounding box. Note that it is in the default user // coordinate system, thus we have to convert the values. wxCoord minX = (wxCoord) LogicalToDeviceX(m_minX); @@ -1972,7 +1877,6 @@ void wxPostScriptDC::EndDoc () (wxCoord)floor((double)llx), (wxCoord)floor((double)lly), (wxCoord)ceil((double)urx), (wxCoord)ceil((double)ury) ); fprintf( m_pstream, "%%%%Pages: %d\n", (wxPageNumber - 1) ); - fprintf( m_pstream, "%%%%EndComments\n\n" ); // To check the correctness of the bounding box, postscript commands // to draw a box corresponding to the bounding box are generated below. @@ -1986,17 +1890,6 @@ void wxPostScriptDC::EndDoc () fprintf( m_pstream, "%% %d %d lineto\n", urx, ury ); fprintf( m_pstream, "%% %d %d lineto closepath stroke\n", llx, ury ); - fclose( m_pstream ); - m_pstream = (FILE*) NULL; - - wxChar *tmp_file = wxGetTempFileName("ps"); - - // Paste header Before wx_printer_file - wxConcatFiles (header_file, m_printData.GetFilename(), tmp_file ); - wxRemoveFile( header_file ); - wxRemoveFile( m_printData.GetFilename() ); - wxRenameFile( tmp_file, m_printData.GetFilename() ); - #if defined(__X__) || defined(__WXGTK__) if (m_ok) { @@ -2047,6 +1940,8 @@ void wxPostScriptDC::EndDoc () } } #endif + +#endif } void wxPostScriptDC::StartPage() @@ -2213,16 +2108,16 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, double UnderlinePosition = 0.0; double UnderlineThickness = 0.0; - /* get actual parameters */ + // Get actual parameters int Family = fontToUse->GetFamily(); int Size = fontToUse->GetPointSize(); int Style = fontToUse->GetStyle(); int Weight = fontToUse->GetWeight(); - /* if we have another font, read the font-metrics */ + // If we have another font, read the font-metrics if (Family!=lastFamily || Size!=lastSize || Style!=lastStyle || Weight!=lastWeight) { - /* store actual values */ + // Store actual values lastFamily = Family; lastSize = Size; lastStyle = Style; @@ -2266,44 +2161,19 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, } } - /* get the directory of the AFM files */ - wxString afmName = wxEmptyString; + FILE *afmFile = NULL; + + // Get the directory of the AFM files + wxString afmName; if (!m_printData.GetFontMetricPath().IsEmpty()) { afmName = m_printData.GetFontMetricPath(); - } - - /* 2. open and process the file - / a short explanation of the AFM format: - / we have for each character a line, which gives its size - / e.g.: - / - / C 63 ; WX 444 ; N question ; B 49 -14 395 676 ; - / - / that means, we have a character with ascii code 63, and width - / (444/1000 * fontSize) points. - / the other data is ignored for now! - / - / when the font has changed, we read in the right AFM file and store the - / character widths in an array, which is processed below (see point 3.). */ - - /* new elements JC Sun Aug 25 23:21:44 MET DST 1996 */ - - afmName << name; - FILE *afmFile = wxFopen(afmName,wxT("r")); - - if (afmFile==NULL) - { - afmName = wxThePrintSetupData->GetAFMPath(); - afmName << wxFILE_SEP_PATH << name; - afmFile = wxFopen(afmName,wxT("r")); + afmName << wxFILE_SEP_PATH << name; + afmFile = wxFopen(afmName,wxT("r")); } #if defined(__UNIX__) && !defined(__VMS__) - if (afmFile==NULL) - /* please do NOT change the line above to "else if (afmFile==NULL)" - - - afmFile = fopen() may fail and in that case the next if branch - MUST be executed - and it would not if there was "else" */ + if (afmFile==NULL) { afmName = wxGetDataDir(); afmName << wxFILE_SEP_PATH @@ -2317,6 +2187,19 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, } #endif + /* 2. open and process the file + / a short explanation of the AFM format: + / we have for each character a line, which gives its size + / e.g.: + / + / C 63 ; WX 444 ; N question ; B 49 -14 395 676 ; + / + / that means, we have a character with ascii code 63, and width + / (444/1000 * fontSize) points. + / the other data is ignored for now! + / + / when the font has changed, we read in the right AFM file and store the + / character widths in an array, which is processed below (see point 3.). */ if (afmFile==NULL) { wxLogDebug( wxT("GetTextExtent: can't open AFM file '%s'"), afmName.c_str() ); @@ -2484,393 +2367,6 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string, #endif } -// Determine the Default Postscript Previewer -// available on the platform -#if defined(__SUN__) && defined(__XVIEW__) -// OpenWindow/NeWS's Postscript Previewer -# define PS_VIEWER_PROG "pageview" -#elif defined(__VMS__) -#define PS_VIEWER_PROG "view/format=ps/select=x_display" -#elif defined(__SGI__) -// SGI's Display Postscript Previewer -//# define PS_VIEWER_PROG "dps" -# define PS_VIEWER_PROG "xpsview" -#elif defined(__X__) || defined(__WXGTK__) -// Front-end to ghostscript -# define PS_VIEWER_PROG "ghostview" -#else -// Windows ghostscript/ghostview -# define PS_VIEWER_PROG "gsview" -#endif - -wxPrintSetupData *wxThePrintSetupData = (wxPrintSetupData *) NULL; - -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject) - -// Redundant now I think -#if 1 -IMPLEMENT_CLASS(wxPostScriptPrintDialog, wxDialog) - -wxPostScriptPrintDialog::wxPostScriptPrintDialog (wxWindow *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, wxCoord style): - wxDialog(parent, -1, title, pos, size, style) -{ - wxBeginBusyCursor(); - - char buf[100]; - int yPos = 40; - wxString - *orientation = new wxString[2], - *print_modes = new wxString[3]; - int features; - wxCoord wx_printer_translate_x, wx_printer_translate_y; - double wx_printer_scale_x, wx_printer_scale_y; - - orientation[0] = _("Portrait"); - orientation[1] = _("Landscape"); - - print_modes[0] = _("Send to Printer"); - print_modes[1] = _("Print to File"); - print_modes[2] = _("Preview Only"); - - - - wxButton *okBut = new wxButton (this, wxID_OK, _("OK"), wxPoint(5, 5)); - (void) new wxButton (this, wxID_CANCEL, _("Cancel"), wxPoint(40, 5)); - okBut->SetDefault(); - - -#if defined(__WXGTK__) || defined (__WXMOTIF__) - (void) new wxStaticText( this, -1, _("Printer Command: "), - wxPoint(5, yPos) ); - (void) new wxTextCtrl( this, wxID_PRINTER_COMMAND, wxThePrintSetupData->GetPrinterCommand(), - wxPoint(100, yPos), wxSize(100, -1) ); - - (void) new wxStaticText( this, -1, _("Printer Options: "), - wxPoint(210, yPos) ); - (void) new wxTextCtrl( this, wxID_PRINTER_OPTIONS, wxThePrintSetupData->GetPrinterOptions(), - wxPoint(305, yPos), wxSize(150, -1) ); - - yPos += 40; -#endif - - - wxRadioBox *radio0 = new wxRadioBox(this, wxID_PRINTER_ORIENTATION, "Orientation: ", wxPoint(5, yPos), wxSize(-1,-1), - 2,orientation,2,wxRA_SPECIFY_ROWS); - radio0->SetSelection((int)wxThePrintSetupData->GetPrinterOrientation() - 1); - - // @@@ Configuration hook - if ( !wxThePrintSetupData->GetPrintPreviewCommand() ) - wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG); - - // wxGetResource ("wxWindows", "PSView", &wxThePrintSetupData->m_previewCommand); - - features = (wxThePrintSetupData->GetPrintPreviewCommand() && - *wxThePrintSetupData->GetPrintPreviewCommand()) ? 3 : 2; - - wxRadioBox *radio1 = new wxRadioBox(this, wxID_PRINTER_MODES, _("PostScript:"), - wxPoint(150, yPos), - wxSize(-1,-1), features, - print_modes, features, wxRA_SPECIFY_ROWS); - -#ifdef __WXMSW__ - radio1->Enable(0, FALSE); - if (wxThePrintSetupData->GetPrintPreviewCommand() && *wxThePrintSetupData->GetPrintPreviewCommand()) - radio1->Enable(2, FALSE); -#endif - - radio1->SetSelection((int)wxThePrintSetupData->GetPrinterMode()); - wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y); - wxThePrintSetupData->GetPrinterScaling(&wx_printer_scale_x, &wx_printer_scale_y); - - sprintf (buf, "%.2f", wx_printer_scale_x); - - yPos += 90; - (void) new wxStaticText(this, -1, _("X Scaling"), wxPoint(5, yPos)); - /* wxTextCtrl *text1 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_SCALE, buf, wxPoint(100, yPos), wxSize(100, -1)); - - sprintf (buf, "%.2f", wx_printer_scale_y); - (void) new wxStaticText(this, -1, _("Y Scaling"), wxPoint(220, yPos)); - /* wxTextCtrl *text2 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_SCALE, buf, wxPoint(320, yPos), wxSize(100, -1)); - - yPos += 25; - - (void) new wxStaticText(this, -1, _("X Translation"), wxPoint(5, yPos)); - sprintf (buf, "%.2d", wx_printer_translate_x); - /* wxTextCtrl *text3 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_TRANS, buf, wxPoint(100, yPos), wxSize(100, -1)); - - (void) new wxStaticText(this, -1, _("Y Translation"), wxPoint(220, yPos)); - sprintf (buf, "%.2d", wx_printer_translate_y); - /* wxTextCtrl *text4 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_TRANS, buf, wxPoint(320, yPos), wxSize(100, -1)); - - Fit (); - - delete[] orientation; - delete[] print_modes; - - wxEndBusyCursor(); -} - -int wxPostScriptPrintDialog::ShowModal () -{ - if ( wxDialog::ShowModal() == wxID_OK ) - { -// wxTextCtrl *text0 = (wxTextCtrl *)FindWindow(wxID_PRINTER_OPTIONS); - wxTextCtrl *text1 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_SCALE); - wxTextCtrl *text2 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_SCALE); - wxTextCtrl *text3 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_TRANS); - wxTextCtrl *text4 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_TRANS); -// wxTextCtrl *text_prt = (wxTextCtrl *)FindWindow(wxID_PRINTER_COMMAND); - wxRadioBox *radio0 = (wxRadioBox *)FindWindow(wxID_PRINTER_ORIENTATION); - wxRadioBox *radio1 = (wxRadioBox *)FindWindow(wxID_PRINTER_MODES); - - StringToDouble (WXSTRINGCAST text1->GetValue (), &wxThePrintSetupData->m_printerScaleX); - StringToDouble (WXSTRINGCAST text2->GetValue (), &wxThePrintSetupData->m_printerScaleY); - - long dummy; - StringToLong (WXSTRINGCAST text3->GetValue (), &dummy); - wxThePrintSetupData->m_printerTranslateX = (wxCoord)dummy; - StringToLong (WXSTRINGCAST text4->GetValue (), &dummy); - wxThePrintSetupData->m_printerTranslateY = (wxCoord)dummy; - -#ifdef __X__ - // wxThePrintSetupData->SetPrinterOptions(WXSTRINGCAST text0->GetValue ()); - // wxThePrintSetupData->SetPrinterCommand(WXSTRINGCAST text_prt->GetValue ()); -#endif - - wxThePrintSetupData->SetPrinterOrientation((radio0->GetSelection() == 1 ? wxLANDSCAPE : wxPORTRAIT)); - - // C++ wants this - switch ( radio1->GetSelection() ) { - case 0: wxThePrintSetupData->SetPrinterMode(PS_PRINTER); break; - case 1: wxThePrintSetupData->SetPrinterMode(PS_FILE); break; - case 2: wxThePrintSetupData->SetPrinterMode(PS_PREVIEW); break; - } - return wxID_OK; - } - return wxID_CANCEL; -} -#endif - // 0 (redundant) - -// PostScript printer settings -// RETAINED FOR BACKWARD COMPATIBILITY -void wxSetPrinterCommand(const wxString& cmd) -{ - wxThePrintSetupData->SetPrinterCommand(cmd); -} - -void wxSetPrintPreviewCommand(const wxString& cmd) -{ - wxThePrintSetupData->SetPrintPreviewCommand(cmd); -} - -void wxSetPrinterOptions(const wxString& flags) -{ - wxThePrintSetupData->SetPrinterOptions(flags); -} - -void wxSetPrinterFile(const wxString& f) -{ - wxThePrintSetupData->SetPrinterFile(f); -} - -void wxSetPrinterOrientation(int orient) -{ - wxThePrintSetupData->SetPrinterOrientation(orient); -} - -void wxSetPrinterScaling(double x, double y) -{ - wxThePrintSetupData->SetPrinterScaling(x, y); -} - -void wxSetPrinterTranslation(wxCoord x, wxCoord y) -{ - wxThePrintSetupData->SetPrinterTranslation(x, y); -} - -// 1 = Preview, 2 = print to file, 3 = send to printer -void wxSetPrinterMode(int mode) -{ - wxThePrintSetupData->SetPrinterMode(mode); -} - -void wxSetAFMPath(const wxString& f) -{ - wxThePrintSetupData->SetAFMPath(f); -} - -// Get current values -wxString wxGetPrinterCommand() -{ - return wxThePrintSetupData->GetPrinterCommand(); -} - -wxString wxGetPrintPreviewCommand() -{ - return wxThePrintSetupData->GetPrintPreviewCommand(); -} - -wxString wxGetPrinterOptions() -{ - return wxThePrintSetupData->GetPrinterOptions(); -} - -wxString wxGetPrinterFile() -{ - return wxThePrintSetupData->GetPrinterFile(); -} - -int wxGetPrinterOrientation() -{ - return wxThePrintSetupData->GetPrinterOrientation(); -} - -void wxGetPrinterScaling(double* x, double* y) -{ - wxThePrintSetupData->GetPrinterScaling(x, y); -} - -void wxGetPrinterTranslation(wxCoord *x, wxCoord *y) -{ - wxThePrintSetupData->GetPrinterTranslation(x, y); -} - -int wxGetPrinterMode() -{ - return wxThePrintSetupData->GetPrinterMode(); -} - -wxString wxGetAFMPath() -{ - return wxThePrintSetupData->GetAFMPath(); -} - -/* - * Print setup data - */ - -wxPrintSetupData::wxPrintSetupData() -{ - m_printerOrient = wxPORTRAIT; - m_printerScaleX = (double)1.0; - m_printerScaleY = (double)1.0; - m_printerTranslateX = 0; - m_printerTranslateY = 0; - m_printerMode = wxPRINT_MODE_FILE; - m_printColour = TRUE; -} - -wxPrintSetupData::~wxPrintSetupData() -{ -} - -void wxPrintSetupData::operator=(wxPrintSetupData& data) -{ - SetPrinterCommand(data.GetPrinterCommand()); - SetPrintPreviewCommand(data.GetPrintPreviewCommand()); - SetPrinterOptions(data.GetPrinterOptions()); - wxCoord x, y; - data.GetPrinterTranslation(&x, &y); - SetPrinterTranslation(x, y); - - double x1, y1; - data.GetPrinterScaling(&x1, &y1); - SetPrinterScaling(x1, y1); - - SetPrinterOrientation(data.GetPrinterOrientation()); - SetPrinterMode(data.GetPrinterMode()); - SetAFMPath(data.GetAFMPath()); - SetPaperName(data.GetPaperName()); - SetColour(data.GetColour()); -} - -// Initialize from a wxPrintData object (wxPrintData should now be used instead of wxPrintSetupData). -void wxPrintSetupData::operator=(const wxPrintData& data) -{ - SetPrinterCommand(data.GetPrinterCommand()); - SetPrintPreviewCommand(data.GetPreviewCommand()); - SetPrinterOptions(data.GetPrinterOptions()); - SetPrinterTranslation((wxCoord)data.GetPrinterTranslateX(), - (wxCoord)data.GetPrinterTranslateY()); - SetPrinterScaling(data.GetPrinterScaleX(), data.GetPrinterScaleY()); - SetPrinterOrientation(data.GetOrientation()); - SetPrinterMode((int) data.GetPrintMode()); - SetAFMPath(data.GetFontMetricPath()); - SetPaperName(wxThePrintPaperDatabase->ConvertIdToName(data.GetPaperId())); - SetColour(data.GetColour()); - SetPrinterFile(data.GetFilename()); -} - -void wxInitializePrintSetupData(bool init) -{ - if (init) - { - wxThePrintSetupData = new wxPrintSetupData; - - wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG); - wxThePrintSetupData->SetPrinterOrientation(wxPORTRAIT); - wxThePrintSetupData->SetPrinterMode(wxPRINT_MODE_PREVIEW); - wxThePrintSetupData->SetPaperName(_("A4 sheet, 210 x 297 mm")); - - // Could have a .ini file to read in some defaults - // - and/or use environment variables, e.g. WXWIN -#ifdef __VMS__ - wxThePrintSetupData->SetPrinterCommand("print"); - wxThePrintSetupData->SetPrinterOptions("/nonotify/queue=psqueue"); - wxThePrintSetupData->SetAFMPath("sys$ps_font_metrics:"); -#endif -#ifdef __WXMSW__ - wxThePrintSetupData->SetPrinterCommand("print"); - wxThePrintSetupData->SetAFMPath("c:\\windows\\system\\"); - wxThePrintSetupData->SetPrinterOptions(""); -#endif -#if !defined(__VMS__) && !defined(__WXMSW__) - wxThePrintSetupData->SetPrinterCommand("lpr"); - wxThePrintSetupData->SetPrinterOptions(""); - wxThePrintSetupData->SetAFMPath(""); -#endif - } - else - { - if (wxThePrintSetupData) - delete wxThePrintSetupData; - wxThePrintSetupData = (wxPrintSetupData *) NULL; - } -} - -// A module to allow initialization/cleanup of PostScript-related -// things without calling these functions from app.cpp. - -class WXDLLEXPORT wxPostScriptModule: public wxModule -{ -DECLARE_DYNAMIC_CLASS(wxPostScriptModule) -public: - wxPostScriptModule() {} - bool OnInit(); - void OnExit(); -}; - -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule) - -/* - * Initialization/cleanup module - */ - -bool wxPostScriptModule::OnInit() -{ - wxInitializePrintSetupData(); - - return TRUE; -} - -void wxPostScriptModule::OnExit() -{ - wxInitializePrintSetupData(FALSE); -} - #endif // wxUSE_POSTSCRIPT diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp index 30d393cb4d..14162e2715 100644 --- a/src/generic/prntdlgg.cpp +++ b/src/generic/prntdlgg.cpp @@ -61,6 +61,7 @@ #include "wx/printdlg.h" #include "wx/paper.h" +#include "wx/filename.h" // For print paper things #include "wx/prntbase.h" @@ -100,10 +101,6 @@ extern wxPrintPaperDatabase *wxThePrintPaperDatabase; #if wxUSE_POSTSCRIPT -// ============================================================================ -// implementation -// ============================================================================ - // ---------------------------------------------------------------------------- // Generic print dialog for non-Windows printing use. // ---------------------------------------------------------------------------- @@ -175,7 +172,7 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent)) 1, wxRA_VERTICAL); m_rangeRadioBox->SetSelection(1); - mainsizer->Add( m_rangeRadioBox, 0, wxLEFT|wxTOP|wxRIGHT, 10 ); + mainsizer->Add( m_rangeRadioBox, 0, wxLEFT|wxTOP|wxRIGHT, 10 ); } // 3) bottom row @@ -186,11 +183,11 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent)) { bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("From:") ), 0, wxCENTER|wxALL, 5 ); m_fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxDefaultPosition, wxSize(40, -1)); - bottomsizer->Add( m_fromText, 1, wxCENTER|wxRIGHT, 10 ); + 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, "", wxDefaultPosition, wxSize(40, -1)); - bottomsizer->Add( m_toText, 1, wxCENTER|wxRIGHT, 10 ); + bottomsizer->Add( m_toText, 1, wxCENTER|wxRIGHT, 10 ); } bottomsizer->Add( new wxStaticText(this, wxPRINTID_STATIC, _("Copies:") ), 0, wxCENTER|wxALL, 5 ); @@ -233,9 +230,7 @@ int wxGenericPrintDialog::ShowModal() int ret = genericPrintSetupDialog->ShowModal(); if ( ret != wxID_CANCEL ) { - // Transfer settings to the global object (for compatibility) and to - // the print dialog's print data. - *wxThePrintSetupData = genericPrintSetupDialog->GetPrintData(); + // Transfer settings to the print dialog's print data. m_printDialogData.GetPrintData() = genericPrintSetupDialog->GetPrintData(); } genericPrintSetupDialog->Destroy(); @@ -267,22 +262,18 @@ void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event)) if (m_printDialogData.GetPrintToFile()) { m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_FILE); - wxThePrintSetupData->SetPrinterMode(wxPRINT_MODE_FILE); - - wxString f = wxFileSelector(_("PostScript file"), - wxPathOnly(wxThePrintSetupData->GetPrinterFile()), - wxFileNameFromPath(wxThePrintSetupData->GetPrinterFile()), - wxT("ps"), wxT("*.ps"), 0, this); - if ( f.IsEmpty() ) - return; + + wxFileName fname( m_printDialogData.GetPrintData().GetFilename() ); + + wxFileDialog dialog( this, _("PostScript file"), + fname.GetPath(), fname.GetFullName(), wxT("*.ps"), wxOPEN | wxFILE_MUST_EXIST ); + if (dialog.ShowModal() != wxID_OK) return; - m_printDialogData.GetPrintData().SetFilename(f); - wxThePrintSetupData->SetPrinterFile(f); + m_printDialogData.GetPrintData().SetFilename( dialog.GetPath() ); } else { m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_PRINTER); - wxThePrintSetupData->SetPrinterMode(wxPRINT_MODE_PRINTER); } EndModal(wxID_OK); @@ -306,17 +297,11 @@ void wxGenericPrintDialog::OnRange(wxCommandEvent& event) void wxGenericPrintDialog::OnSetup(wxCommandEvent& WXUNUSED(event)) { - *wxThePrintSetupData = m_printDialogData.GetPrintData(); - wxGenericPrintSetupDialog *genericPrintSetupDialog = - new wxGenericPrintSetupDialog(this, wxThePrintSetupData); - int ret = genericPrintSetupDialog->ShowModal(); - if ( ret != wxID_CANCEL ) + wxGenericPrintSetupDialog dialog( this, &m_printDialogData.GetPrintData() ); + if (dialog.ShowModal() != wxID_CANCEL) { - *wxThePrintSetupData = genericPrintSetupDialog->GetPrintData(); - m_printDialogData = genericPrintSetupDialog->GetPrintData(); + m_printDialogData = dialog.GetPrintData(); } - - genericPrintSetupDialog->Close(TRUE); } bool wxGenericPrintDialog::TransferDataToWindow() @@ -423,19 +408,6 @@ wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAUL Init(data); } -// Convert wxPrintSetupData to standard wxPrintData object -wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSetupData* data): -wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL) -{ - wxPrintData printData; - if (data) - printData = * data; - else - printData = * wxThePrintSetupData; - - Init(& printData); -} - void wxGenericPrintSetupDialog::Init(wxPrintData* data) { if ( data ) @@ -482,6 +454,8 @@ void wxGenericPrintSetupDialog::Init(wxPrintData* data) okButton->SetDefault(); okButton->SetFocus(); + + printf( "Hello generic\n" ); Fit(); Centre(wxBOTH); @@ -536,8 +510,6 @@ bool wxGenericPrintSetupDialog::TransferDataFromWindow() m_printData.SetPaperId(wxThePrintPaperDatabase->ConvertNameToId(val)); } - // This is for backward compatibility only - *wxThePrintSetupData = GetPrintData(); return TRUE; } @@ -756,32 +728,35 @@ bool wxGenericPageSetupDialog::TransferDataToWindow() bool wxGenericPageSetupDialog::TransferDataFromWindow() { if (m_marginLeftText && m_marginTopText) - m_pageData.SetMarginTopLeft(wxPoint(wxAtoi((const wxChar *)m_marginLeftText->GetValue()),wxAtoi((const wxChar *)m_marginTopText->GetValue()))); + { + int left = wxAtoi( m_marginLeftText->GetValue().c_str() ); + int top = wxAtoi( m_marginTopText->GetValue().c_str() ); + m_pageData.SetMarginTopLeft( wxPoint(left,top) ); + } if (m_marginRightText && m_marginBottomText) - m_pageData.SetMarginBottomRight(wxPoint(wxAtoi((const wxChar *)m_marginRightText->GetValue()),wxAtoi((const wxChar *)m_marginBottomText->GetValue()))); + { + int right = wxAtoi( m_marginRightText->GetValue().c_str() ); + int bottom = wxAtoi( m_marginBottomText->GetValue().c_str() ); + m_pageData.SetMarginBottomRight( wxPoint(right,bottom) ); + } if (m_orientationRadioBox) { int sel = m_orientationRadioBox->GetSelection(); if (sel == 0) { -#if wxUSE_POSTSCRIPT - wxThePrintSetupData->SetPrinterOrientation(wxPORTRAIT); -#endif m_pageData.GetPrintData().SetOrientation(wxPORTRAIT); } else { -#if wxUSE_POSTSCRIPT - wxThePrintSetupData->SetPrinterOrientation(wxLANDSCAPE); -#endif m_pageData.GetPrintData().SetOrientation(wxLANDSCAPE); } } + if (m_paperTypeChoice) { wxString val(m_paperTypeChoice->GetStringSelection()); - if (!val.IsNull() && val != "") + if (!val.IsEmpty()) { wxPrintPaperType* paper = wxThePrintPaperDatabase->FindPaperType(val); if ( paper ) @@ -829,3 +804,4 @@ wxComboBox *wxGenericPageSetupDialog::CreatePaperTypeChoice(int *x, int *y) } #endif + diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index fac5d33635..117e2261c4 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -425,9 +425,6 @@ wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_fra m_Frame = parent_frame; m_Name = name; m_PrintData = new wxPrintData; -#if (defined __WXGTK__) || (defined __WXMOTIF__) - (*m_PrintData) = (*wxThePrintSetupData); -#endif m_PageSetupData = new wxPageSetupDialogData; m_Headers[0] = m_Headers[1] = m_Footers[0] = m_Footers[1] = wxEmptyString; -- 2.45.2