X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ac8fdfe2a53161e95eabdd8f25d1a2a824ff4a73..396825dced4558d8d724d0e38f7e1017f76d0a96:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 2edd26ca9a..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" @@ -91,7 +92,7 @@ void wxColourData::SetCustomColour(int i, const wxColour& colour) m_custColours[i] = colour; } -wxColour wxColourData::GetCustomColour(int i) +wxColour wxColourData::GetCustomColour(int i) const { wxCHECK_MSG( i >= 0 && i < NUM_CUSTOM, wxColour(0,0,0), _T("custom colour index out of range") ); @@ -135,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; } // ---------------------------------------------------------------------------- @@ -279,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; @@ -318,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? @@ -365,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;