X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ab2de15cbb2bf653f3279d7f8635ee503488396..39987096b3aa3e1bec4f69a5793780f7ea2dd914:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 1f839fb728..c7b4dbf77b 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "cmndata.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -49,25 +45,16 @@ #include "wx/paper.h" #endif // wxUSE_PRINTING_ARCHITECTURE -#if defined(__WXMSW__) && !defined(__PALMOS__) - #include - #include "wx/msw/private.h" - - #ifndef __SMARTPHONE__ /* of WinCE */ - #include - #endif - - #if defined(__WATCOMC__) || defined(__SYMANTEC__) || defined(__SALFORDC__) - #include - #include - #endif +#if defined(__WXMSW__) + #include "wx/msw/wrapcdlg.h" #endif // MSW -#ifdef __WXMAC__ + #if wxUSE_PRINTING_ARCHITECTURE + +#if defined(__WXMAC__) #include "wx/mac/private/print.h" #endif - #if wxUSE_PRINTING_ARCHITECTURE IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) @@ -76,10 +63,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) -#ifndef DMPAPER_USER - #define DMPAPER_USER 256 -#endif - // ============================================================================ // implementation // ============================================================================ @@ -167,9 +150,6 @@ wxFontDialogBase::~wxFontDialogBase() wxPrintData::wxPrintData() { -#ifdef __WXMAC__ - m_nativePrintData = wxNativePrintData::Create() ; -#endif m_bin = wxPRINTBIN_DEFAULT; m_printMode = wxPRINT_MODE_PRINTER; m_printOrientation = wxPORTRAIT; @@ -177,49 +157,60 @@ wxPrintData::wxPrintData() m_printCollate = false; // New, 24/3/99 - m_printerName = wxT(""); + m_printerName = wxEmptyString; m_colour = true; m_duplexMode = wxDUPLEX_SIMPLEX; m_printQuality = wxPRINT_QUALITY_HIGH; m_paperId = wxPAPER_A4; m_paperSize = wxSize(210, 297); + m_privData = NULL; + m_privDataLen = 0; + m_nativeData = wxPrintFactory::GetFactory()->CreatePrintNativeData(); } wxPrintData::wxPrintData(const wxPrintData& printData) : wxObject() { + m_nativeData = NULL; + m_privData = NULL; (*this) = printData; } +void wxPrintData::SetPrivData( char *privData, int len ) +{ + if (m_privData) + { + delete [] m_privData; + m_privData = NULL; + } + m_privDataLen = len; + if (m_privDataLen > 0) + { + m_privData = new char[m_privDataLen]; + memcpy( m_privData, privData, m_privDataLen ); + } +} + wxPrintData::~wxPrintData() { m_nativeData->m_ref--; - if (m_nativeData->m_ref == 0) + if (m_nativeData->m_ref == 0) delete m_nativeData; - -#ifdef __WXMAC__ - delete m_nativePrintData ; -#endif + + if (m_privData) + delete [] m_privData; } void wxPrintData::ConvertToNative() { -#ifdef __WXMAC__ - m_nativePrintData->TransferFrom( this ) ; -#else m_nativeData->TransferFrom( *this ) ; -#endif } void wxPrintData::ConvertFromNative() { -#ifdef __WXMAC__ - m_nativePrintData->TransferTo( this ) ; -#else m_nativeData->TransferTo( *this ) ; -#endif } void wxPrintData::operator=(const wxPrintData& data) @@ -235,19 +226,30 @@ void wxPrintData::operator=(const wxPrintData& data) m_paperSize = data.m_paperSize; m_bin = data.m_bin; m_printMode = data.m_printMode; - m_filename = data.m_filename; + m_filename = data.m_filename; - // UnRef old m_nativeData - m_nativeData->m_ref--; - if (m_nativeData->m_ref == 0) - delete m_nativeData; + // UnRef old m_nativeData + if (m_nativeData) + { + m_nativeData->m_ref--; + if (m_nativeData->m_ref == 0) + delete m_nativeData; + } // Set Ref new one m_nativeData = data.GetNativeData(); m_nativeData->m_ref++; - -#ifdef __WXMAC__ - m_nativePrintData->CopyFrom( data.m_nativePrintData ) ; -#endif + + if (m_privData) + { + delete [] m_privData; + m_privData = NULL; + } + m_privDataLen = data.GetPrivDataLen(); + if (m_privDataLen > 0) + { + m_privData = new char[m_privDataLen]; + memcpy( m_privData, data.GetPrivData(), m_privDataLen ); + } } // Is this data OK for showing the print dialog? @@ -258,17 +260,25 @@ bool wxPrintData::Ok() const return m_nativeData->Ok(); } -#if WXWIN_COMPATIBILITY_2_4 +// What should happen here? wxPostScriptPrintNativeData is not +// defined unless all this is true on MSW. +#if WXWIN_COMPATIBILITY_2_4 && wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW) #include "wx/generic/prntdlgg.h" +#if wxUSE_POSTSCRIPT + #define WXUNUSED_WITHOUT_PS(name) name +#else + #define WXUNUSED_WITHOUT_PS(name) WXUNUSED(name) +#endif + wxString wxPrintData::GetPrinterCommand() const { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterCommand(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetPrinterOptions() const @@ -277,7 +287,7 @@ wxString wxPrintData::GetPrinterOptions() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterOptions(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetPreviewCommand() const @@ -286,7 +296,7 @@ wxString wxPrintData::GetPreviewCommand() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPreviewCommand(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetFontMetricPath() const @@ -295,7 +305,7 @@ wxString wxPrintData::GetFontMetricPath() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetFontMetricPath(); #endif - return wxT(""); + return wxEmptyString; } double wxPrintData::GetPrinterScaleX() const @@ -334,7 +344,7 @@ long wxPrintData::GetPrinterTranslateY() const return 0; } -void wxPrintData::SetPrinterCommand(const wxString& command) +void wxPrintData::SetPrinterCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -342,7 +352,7 @@ void wxPrintData::SetPrinterCommand(const wxString& command) #endif } -void wxPrintData::SetPrinterOptions(const wxString& options) +void wxPrintData::SetPrinterOptions(const wxString& WXUNUSED_WITHOUT_PS(options)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -350,7 +360,7 @@ void wxPrintData::SetPrinterOptions(const wxString& options) #endif } -void wxPrintData::SetPreviewCommand(const wxString& command) +void wxPrintData::SetPreviewCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -358,7 +368,7 @@ void wxPrintData::SetPreviewCommand(const wxString& command) #endif } -void wxPrintData::SetFontMetricPath(const wxString& path) +void wxPrintData::SetFontMetricPath(const wxString& WXUNUSED_WITHOUT_PS(path)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -366,7 +376,7 @@ void wxPrintData::SetFontMetricPath(const wxString& path) #endif } -void wxPrintData::SetPrinterScaleX(double x) +void wxPrintData::SetPrinterScaleX(double WXUNUSED_WITHOUT_PS(x)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -374,7 +384,7 @@ void wxPrintData::SetPrinterScaleX(double x) #endif } -void wxPrintData::SetPrinterScaleY(double y) +void wxPrintData::SetPrinterScaleY(double WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -382,7 +392,7 @@ void wxPrintData::SetPrinterScaleY(double y) #endif } -void wxPrintData::SetPrinterScaling(double x, double y) +void wxPrintData::SetPrinterScaling(double WXUNUSED_WITHOUT_PS(x), double WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -390,7 +400,7 @@ void wxPrintData::SetPrinterScaling(double x, double y) #endif } -void wxPrintData::SetPrinterTranslateX(long x) +void wxPrintData::SetPrinterTranslateX(long WXUNUSED_WITHOUT_PS(x)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -398,7 +408,7 @@ void wxPrintData::SetPrinterTranslateX(long x) #endif } -void wxPrintData::SetPrinterTranslateY(long y) +void wxPrintData::SetPrinterTranslateY(long WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -406,7 +416,7 @@ void wxPrintData::SetPrinterTranslateY(long y) #endif } -void wxPrintData::SetPrinterTranslation(long x, long y) +void wxPrintData::SetPrinterTranslation(long WXUNUSED_WITHOUT_PS(x), long WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -432,10 +442,10 @@ wxPrintDialogData::wxPrintDialogData() m_printSelection = false; m_printEnableSelection = false; m_printEnablePageNumbers = true; - + wxPrintFactory* factory = wxPrintFactory::GetFactory(); m_printEnablePrintToFile = ! factory->HasOwnPrintToFile(); - + m_printEnableHelp = false; #if WXWIN_COMPATIBILITY_2_4 m_printSetupDialog = false; @@ -473,23 +483,6 @@ wxPrintDialogData::~wxPrintDialogData() { } -#ifdef __WXMAC__ - -void wxPrintDialogData::ConvertToNative() -{ - m_printData.ConvertToNative(); - m_printData.m_nativePrintData->TransferFrom( this ) ; -} - -void wxPrintDialogData::ConvertFromNative() -{ - m_printData.ConvertFromNative(); - m_printData.m_nativePrintData->TransferTo( this ) ; -} - -#endif - - void wxPrintDialogData::operator=(const wxPrintDialogData& data) { m_printFromPage = data.m_printFromPage; @@ -522,14 +515,14 @@ void wxPrintDialogData::operator=(const wxPrintData& data) wxPageSetupDialogData::wxPageSetupDialogData() { - m_paperSize = wxSize(0, 0); + m_paperSize = wxSize(0,0); CalculatePaperSizeFromId(); - m_minMarginTopLeft = wxPoint(0, 0); - m_minMarginBottomRight = wxPoint(0, 0); - m_marginTopLeft = wxPoint(0, 0); - m_marginBottomRight = wxPoint(0, 0); + m_minMarginTopLeft = + m_minMarginBottomRight = + m_marginTopLeft = + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false; @@ -549,11 +542,11 @@ wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialog wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData) { - m_paperSize = wxSize(0, 0); - m_minMarginTopLeft = wxPoint(0, 0); - m_minMarginBottomRight = wxPoint(0, 0); - m_marginTopLeft = wxPoint(0, 0); - m_marginBottomRight = wxPoint(0, 0); + m_paperSize = wxSize(0,0); + m_minMarginTopLeft = + m_minMarginBottomRight = + m_marginTopLeft = + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false; @@ -587,7 +580,7 @@ wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogD m_enableOrientation = data.m_enableOrientation; m_enablePaper = data.m_enablePaper; m_enablePrinter = data.m_enablePrinter; - m_getDefaultInfo = data.m_getDefaultInfo;; + m_getDefaultInfo = data.m_getDefaultInfo; m_enableHelp = data.m_enableHelp; m_printData = data.m_printData; @@ -598,40 +591,11 @@ wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogD wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPrintData& data) { m_printData = data; + CalculatePaperSizeFromId(); return *this; } -#ifdef __WXMAC__ -void wxPageSetupDialogData::ConvertToNative() -{ - m_printData.ConvertToNative(); - m_printData.m_nativePrintData->TransferFrom( this ) ; -} - -void wxPageSetupDialogData::ConvertFromNative() -{ - m_printData.ConvertFromNative (); - m_paperSize = m_printData.GetPaperSize() ; - CalculateIdFromPaperSize(); - m_printData.m_nativePrintData->TransferTo( this ) ; - // adjust minimal values - - if ( m_marginTopLeft.x < m_minMarginTopLeft.x ) - m_marginTopLeft.x = m_minMarginTopLeft.x; - - if ( m_marginBottomRight.x < m_minMarginBottomRight.x ) - m_marginBottomRight.x = m_minMarginBottomRight.x; - - if ( m_marginTopLeft.y < m_minMarginTopLeft.y ) - m_marginTopLeft.y = m_minMarginTopLeft.y; - - if ( m_marginBottomRight.y < m_minMarginBottomRight.y ) - m_marginBottomRight.y = m_minMarginBottomRight.y; -} -#endif - - // If a corresponding paper type is found in the paper database, will set the m_printData // paper size id member as well. void wxPageSetupDialogData::SetPaperSize(const wxSize& sz) @@ -649,6 +613,12 @@ void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) CalculatePaperSizeFromId(); } +void wxPageSetupDialogData::SetPrintData(const wxPrintData& printData) +{ + m_printData = printData; + CalculatePaperSizeFromId(); +} + // Use paper size defined in this object to set the wxPrintData // paper id void wxPageSetupDialogData::CalculateIdFromPaperSize()