X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/166fbaa46a1b3583832b84ef88c311e0f7557c5b..b404a8f3b072129c107c6d9a5e0f6f53cd34807b:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index a9a9c05f8e..46c8b1f9d8 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -24,6 +24,8 @@ #pragma hdrstop #endif +#if wxUSE_PRINTING_ARCHITECTURE + #include "wx/cmndata.h" #ifndef WX_PRECOMP @@ -38,16 +40,8 @@ #include "wx/gdicmn.h" #endif -#include "wx/tokenzr.h" #include "wx/prntbase.h" #include "wx/printdlg.h" - -#if wxUSE_FONTDLG - #include "wx/fontdlg.h" -#endif // wxUSE_FONTDLG - -#if wxUSE_PRINTING_ARCHITECTURE - #include "wx/paper.h" @@ -55,133 +49,10 @@ IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) -#endif // wxUSE_PRINTING_ARCHITECTURE - -IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) - // ============================================================================ // implementation // ============================================================================ -// ---------------------------------------------------------------------------- -// wxColourData -// ---------------------------------------------------------------------------- - -wxColourData::wxColourData() -{ - m_chooseFull = false; - m_dataColour.Set(0,0,0); - // m_custColours are wxNullColours initially -} - -wxColourData::wxColourData(const wxColourData& data) - : wxObject() -{ - (*this) = data; -} - -wxColourData::~wxColourData() -{ -} - -void wxColourData::SetCustomColour(int i, const wxColour& colour) -{ - wxCHECK_RET( i >= 0 && i < NUM_CUSTOM, _T("custom colour index out of range") ); - - m_custColours[i] = colour; -} - -wxColour wxColourData::GetCustomColour(int i) -{ - wxCHECK_MSG( i >= 0 && i < NUM_CUSTOM, wxColour(0,0,0), - _T("custom colour index out of range") ); - - return m_custColours[i]; -} - -wxColourData& wxColourData::operator=(const wxColourData& data) -{ - for ( int i = 0; i < NUM_CUSTOM; i++) - m_custColours[i] = data.m_custColours[i]; - - m_dataColour = data.m_dataColour; - m_chooseFull = data.m_chooseFull; - - return *this; -} - -// ---------------------------------------------------------------------------- -// [de]serialization -// ---------------------------------------------------------------------------- - -// separator used between different fields -static const char wxCOL_DATA_SEP = ','; - -wxString wxColourData::ToString() const -{ - wxString str(m_chooseFull ? '1' : '0'); - - for ( int i = 0; i < NUM_CUSTOM; i++ ) - { - str += wxCOL_DATA_SEP; - - const wxColour& clr = m_custColours[i]; - if ( clr.IsOk() ) - str += clr.GetAsString(wxC2S_HTML_SYNTAX); - } - - return str; -} - -bool wxColourData::FromString(const wxString& str) -{ - wxStringTokenizer tokenizer(str, wxCOL_DATA_SEP); - wxString token = tokenizer.GetNextToken(); - m_chooseFull = token == '1'; - bool success = m_chooseFull || token == '0'; - for (int i = 0; success && i < NUM_CUSTOM; i++) - { - token = tokenizer.GetNextToken(); - if (token.empty()) - m_custColours[i] = wxNullColour; - else - success = m_custColours[i].Set(token); - } - return success; -} - -// ---------------------------------------------------------------------------- -// Font data -// ---------------------------------------------------------------------------- - -wxFontData::wxFontData() -{ - // Intialize colour to black. - m_fontColour = wxNullColour; - - m_showHelp = false; - m_allowSymbols = true; - m_enableEffects = true; - m_minSize = 0; - m_maxSize = 0; - - m_encoding = wxFONTENCODING_SYSTEM; -} - -wxFontData::~wxFontData() -{ -} - -#if wxUSE_FONTDLG - -wxFontDialogBase::~wxFontDialogBase() -{ -} - -#endif // wxUSE_FONTDLG - -#if wxUSE_PRINTING_ARCHITECTURE // ---------------------------------------------------------------------------- // Print data // ---------------------------------------------------------------------------- @@ -223,11 +94,7 @@ wxPrintData::wxPrintData(const wxPrintData& printData) void wxPrintData::SetPrivData( char *privData, int len ) { - if (m_privData) - { - delete [] m_privData; - m_privData = NULL; - } + wxDELETEA(m_privData); m_privDataLen = len; if (m_privDataLen > 0) { @@ -256,8 +123,11 @@ void wxPrintData::ConvertFromNative() m_nativeData->TransferTo( *this ) ; } -void wxPrintData::operator=(const wxPrintData& data) +wxPrintData& wxPrintData::operator=(const wxPrintData& data) { + if ( &data == this ) + return *this; + m_printNoCopies = data.m_printNoCopies; m_printCollate = data.m_printCollate; m_printOrientation = data.m_printOrientation; @@ -284,17 +154,15 @@ void wxPrintData::operator=(const wxPrintData& data) m_nativeData = data.GetNativeData(); m_nativeData->m_ref++; - if (m_privData) - { - delete [] m_privData; - m_privData = NULL; - } + wxDELETEA(m_privData); m_privDataLen = data.GetPrivDataLen(); if (m_privDataLen > 0) { m_privData = new char[m_privDataLen]; memcpy( m_privData, data.GetPrivData(), m_privDataLen ); } + + return *this; } // Is this data OK for showing the print dialog? @@ -302,7 +170,7 @@ bool wxPrintData::IsOk() const { m_nativeData->TransferFrom( *this ); - return m_nativeData->Ok(); + return m_nativeData->IsOk(); } // ---------------------------------------------------------------------------- @@ -342,7 +210,12 @@ wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData) m_printMinPage = 1; m_printMaxPage = 9999; m_printNoCopies = 1; + // On Mac the Print dialog always defaults to "All Pages" +#ifdef __WXMAC__ + m_printAllPages = true; +#else m_printAllPages = false; +#endif m_printCollate = false; m_printToFile = false; m_printSelection = false; @@ -494,7 +367,7 @@ void wxPageSetupDialogData::SetPrintData(const wxPrintData& printData) // paper id void wxPageSetupDialogData::CalculateIdFromPaperSize() { - wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), + wxASSERT_MSG( (wxThePrintPaperDatabase != NULL), wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") ); wxSize sz = GetPaperSize(); @@ -509,14 +382,17 @@ void wxPageSetupDialogData::CalculateIdFromPaperSize() // Use paper id in wxPrintData to set this object's paper size void wxPageSetupDialogData::CalculatePaperSizeFromId() { - wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), + wxASSERT_MSG( (wxThePrintPaperDatabase != NULL), wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") ); wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId()); - // sz is in 10ths of a mm, while paper size is in mm - m_paperSize.x = sz.x / 10; - m_paperSize.y = sz.y / 10; + if (sz != wxSize(0, 0)) + { + // sz is in 10ths of a mm, while paper size is in mm + m_paperSize.x = sz.x / 10; + m_paperSize.y = sz.y / 10; + } } #endif // wxUSE_PRINTING_ARCHITECTURE