X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5cd0202bdc4495076385fb18b30eec8f83adadce..f0fbbe236452ae27a7577deafbbc44ace2c209e7:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 2efed738be..4a02c49298 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -38,6 +38,7 @@ #include "wx/gdicmn.h" #endif +#include "wx/tokenzr.h" #include "wx/prntbase.h" #include "wx/printdlg.h" @@ -49,9 +50,6 @@ #include "wx/paper.h" -#if defined(__WXMAC__) - #include "wx/mac/private/print.h" -#endif IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) @@ -89,14 +87,14 @@ wxColourData::~wxColourData() void wxColourData::SetCustomColour(int i, const wxColour& colour) { - wxCHECK_RET( (i >= 0 && i < WXSIZEOF(m_custColours)), _T("custom colour index out of range") ); + wxCHECK_RET( i >= 0 && i < NUM_CUSTOM, _T("custom colour index out of range") ); m_custColours[i] = colour; } -wxColour wxColourData::GetCustomColour(int i) +wxColour wxColourData::GetCustomColour(int i) const { - wxCHECK_MSG( (i >= 0 && i < WXSIZEOF(m_custColours)), wxColour(0,0,0), + wxCHECK_MSG( i >= 0 && i < NUM_CUSTOM, wxColour(0,0,0), _T("custom colour index out of range") ); return m_custColours[i]; @@ -104,7 +102,7 @@ wxColour wxColourData::GetCustomColour(int i) wxColourData& wxColourData::operator=(const wxColourData& data) { - for (int i = 0; i < WXSIZEOF(m_custColours); i++) + for ( int i = 0; i < NUM_CUSTOM; i++) m_custColours[i] = data.m_custColours[i]; m_dataColour = data.m_dataColour; @@ -124,7 +122,7 @@ wxString wxColourData::ToString() const { wxString str(m_chooseFull ? '1' : '0'); - for ( int i = 0; i < WXSIZEOF(m_custColours); i++ ) + for ( int i = 0; i < NUM_CUSTOM; i++ ) { str += wxCOL_DATA_SEP; @@ -138,43 +136,19 @@ wxString wxColourData::ToString() const bool wxColourData::FromString(const wxString& str) { - wxString token; - int n = -1; // index of the field, -1 corresponds to m_chooseFull - for ( wxString::const_iterator i = str.begin(); i != str.end(); ++i ) + 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++) { - if ( *i == wxCOL_DATA_SEP ) - { - if ( n == -1 ) - { - if ( token == '0' ) - m_chooseFull = false; - else if ( token == '1' ) - m_chooseFull = true; - else // only '0' and '1' are used in ToString() - return false; - } - else // custom colour - { - if ( n == WXSIZEOF(m_custColours) ) - return false; // too many custom colours - - // empty strings are used by ToString() for colours not used - if ( token.empty() ) - m_custColours[n] = wxNullColour; - else if ( !m_custColours[n].Set(token) ) - return false; // invalid colour string - } - - token.clear(); - n++; - } - else // continuation of the current field - { - token += *i; - } + token = tokenizer.GetNextToken(); + if (token.empty()) + m_custColours[i] = wxNullColour; + else + success = m_custColours[i].Set(token); } - - return true; + return success; } // ---------------------------------------------------------------------------- @@ -282,8 +256,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; @@ -321,6 +298,8 @@ void wxPrintData::operator=(const wxPrintData& data) m_privData = new char[m_privDataLen]; memcpy( m_privData, data.GetPrivData(), m_privDataLen ); } + + return *this; } // Is this data OK for showing the print dialog? @@ -368,7 +347,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;