X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/58a33cb4e6e2de9d6ea6da16b52e53d840797059..d2f5093319b09251870da78e5578eec55942a531:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index ab9bc7b4e2..c818294206 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -37,40 +37,54 @@ #include "wx/gdicmn.h" #include "wx/cmndata.h" - -#include "wx/paper.h" +#include "wx/log.h" // For compatibility #if (defined(__WXMOTIF__) || defined(__WXGTK__)) && wxUSE_POSTSCRIPT #define wxCOMPATIBILITY_WITH_PRINTSETUPDATA 1 #endif -#if wxCOMPATIBILITY_WITH_PRINTSETUPDATA - #include "wx/generic/dcpsg.h" -#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__ #include - #include + #include "wx/msw/private.h" #if !defined(__WIN32__) #include #include #endif // Win16 + #ifdef __WXWINE__ + #include + #include + #endif + #if defined(__WATCOMC__) || defined(__SC__) || defined(__SALFORDC__) #include #include #endif #endif // MSW -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) + #if wxUSE_PRINTING_ARCHITECTURE + 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) -#endif + +#ifdef __WXMAC__ + #define mm2pt 2.83464566929 + #define pt2mm 0.352777777778 +#endif // Mac // ============================================================================ // implementation @@ -139,29 +153,15 @@ wxFontData::wxFontData() enableEffects = TRUE; minSize = 0; maxSize = 0; -} -wxFontData::wxFontData(const wxFontData& data) -{ - (*this) = data; + m_encoding = wxFONTENCODING_SYSTEM; } wxFontData::~wxFontData() { } -void wxFontData::operator=(const wxFontData& data) -{ - fontColour = data.fontColour; - showHelp = data.showHelp; - allowSymbols = data.allowSymbols; - enableEffects = data.enableEffects; - initialFont = data.initialFont; - chosenFont = data.chosenFont; - minSize = data.minSize; - maxSize = data.maxSize; -} - +#if wxUSE_PRINTING_ARCHITECTURE // ---------------------------------------------------------------------------- // Print data // ---------------------------------------------------------------------------- @@ -170,6 +170,8 @@ wxPrintData::wxPrintData() { #ifdef __WXMSW__ m_devMode = NULL; +#elif defined( __WXMAC__ ) + m_macPrintInfo = NULL ; #endif m_printOrientation = wxPORTRAIT; m_printNoCopies = 1; @@ -198,58 +200,66 @@ wxPrintData::wxPrintData() wxPrintData::wxPrintData(const wxPrintData& printData) { +#ifdef __WXMSW__ + m_devMode = NULL; +#elif defined( __WXMAC__ ) + m_macPrintInfo = NULL ; +#endif (*this) = printData; } wxPrintData::~wxPrintData() { #ifdef __WXMSW__ - HGLOBAL hDevMode = (HGLOBAL) m_devMode; + HGLOBAL hDevMode = (HGLOBAL)(DWORD) m_devMode; if (hDevMode ) GlobalFree(hDevMode); +#elif defined(__WXMAC__) + if ( m_macPrintInfo ) + ::DisposeHandle( (Handle) m_macPrintInfo ) ; #endif } -#if defined(__WXMSW__) && defined(__WIN32__) +#if defined(__WXMSW__) // && defined(__WIN32__) +#if defined(__WXDEBUG__) && defined(__WIN32__) static wxString wxGetPrintDlgError() { DWORD err = CommDlgExtendedError(); - wxString msg = "Unknown"; + wxString msg = wxT("Unknown"); switch (err) { - case CDERR_FINDRESFAILURE: msg = "CDERR_FINDRESFAILURE"; break; - case CDERR_INITIALIZATION: msg = "CDERR_INITIALIZATION"; break; - case CDERR_LOADRESFAILURE: msg = "CDERR_LOADRESFAILURE"; break; - case CDERR_LOADSTRFAILURE: msg = "CDERR_LOADSTRFAILURE"; break; - case CDERR_LOCKRESFAILURE: msg = "CDERR_LOCKRESFAILURE"; break; - case CDERR_MEMALLOCFAILURE: msg = "CDERR_MEMALLOCFAILURE"; break; - case CDERR_MEMLOCKFAILURE: msg = "CDERR_MEMLOCKFAILURE"; break; - case CDERR_NOHINSTANCE: msg = "CDERR_NOHINSTANCE"; break; - case CDERR_NOHOOK: msg = "CDERR_NOHOOK"; break; - case CDERR_NOTEMPLATE: msg = "CDERR_NOTEMPLATE"; break; - case CDERR_STRUCTSIZE: msg = "CDERR_STRUCTSIZE"; break; - case PDERR_RETDEFFAILURE: msg = "PDERR_RETDEFFAILURE"; break; - case PDERR_PRINTERNOTFOUND: msg = "PDERR_PRINTERNOTFOUND"; break; - case PDERR_PARSEFAILURE: msg = "PDERR_PARSEFAILURE"; break; - case PDERR_NODEVICES: msg = "PDERR_NODEVICES"; break; - case PDERR_NODEFAULTPRN: msg = "PDERR_NODEFAULTPRN"; break; - case PDERR_LOADDRVFAILURE: msg = "PDERR_LOADDRVFAILURE"; break; - case PDERR_INITFAILURE: msg = "PDERR_INITFAILURE"; break; - case PDERR_GETDEVMODEFAIL: msg = "PDERR_GETDEVMODEFAIL"; break; - case PDERR_DNDMMISMATCH: msg = "PDERR_DNDMMISMATCH"; break; - case PDERR_DEFAULTDIFFERENT: msg = "PDERR_DEFAULTDIFFERENT"; break; - case PDERR_CREATEICFAILURE: msg = "PDERR_CREATEICFAILURE"; break; + case CDERR_FINDRESFAILURE: msg = wxT("CDERR_FINDRESFAILURE"); break; + case CDERR_INITIALIZATION: msg = wxT("CDERR_INITIALIZATION"); break; + case CDERR_LOADRESFAILURE: msg = wxT("CDERR_LOADRESFAILURE"); break; + case CDERR_LOADSTRFAILURE: msg = wxT("CDERR_LOADSTRFAILURE"); break; + case CDERR_LOCKRESFAILURE: msg = wxT("CDERR_LOCKRESFAILURE"); break; + case CDERR_MEMALLOCFAILURE: msg = wxT("CDERR_MEMALLOCFAILURE"); break; + case CDERR_MEMLOCKFAILURE: msg = wxT("CDERR_MEMLOCKFAILURE"); break; + case CDERR_NOHINSTANCE: msg = wxT("CDERR_NOHINSTANCE"); break; + case CDERR_NOHOOK: msg = wxT("CDERR_NOHOOK"); break; + case CDERR_NOTEMPLATE: msg = wxT("CDERR_NOTEMPLATE"); break; + case CDERR_STRUCTSIZE: msg = wxT("CDERR_STRUCTSIZE"); break; + case PDERR_RETDEFFAILURE: msg = wxT("PDERR_RETDEFFAILURE"); break; + case PDERR_PRINTERNOTFOUND: msg = wxT("PDERR_PRINTERNOTFOUND"); break; + case PDERR_PARSEFAILURE: msg = wxT("PDERR_PARSEFAILURE"); break; + case PDERR_NODEVICES: msg = wxT("PDERR_NODEVICES"); break; + case PDERR_NODEFAULTPRN: msg = wxT("PDERR_NODEFAULTPRN"); break; + case PDERR_LOADDRVFAILURE: msg = wxT("PDERR_LOADDRVFAILURE"); break; + case PDERR_INITFAILURE: msg = wxT("PDERR_INITFAILURE"); break; + case PDERR_GETDEVMODEFAIL: msg = wxT("PDERR_GETDEVMODEFAIL"); break; + case PDERR_DNDMMISMATCH: msg = wxT("PDERR_DNDMMISMATCH"); break; + case PDERR_DEFAULTDIFFERENT: msg = wxT("PDERR_DEFAULTDIFFERENT"); break; + case PDERR_CREATEICFAILURE: msg = wxT("PDERR_CREATEICFAILURE"); break; default: break; } return msg; } - - +#endif void wxPrintData::ConvertToNative() { - HGLOBAL hDevMode = (HGLOBAL) m_devMode; + HGLOBAL hDevMode = (HGLOBAL)(DWORD) m_devMode; if (!hDevMode) { // Use PRINTDLG as a way of creating a DEVMODE object @@ -284,7 +294,7 @@ void wxPrintData::ConvertToNative() pd->hDevNames = NULL; #if defined(__WXDEBUG__) && defined(__WIN32__) - wxString str("Printing error: "); + wxString str(wxT("Printing error: ")); str += wxGetPrintDlgError(); wxLogDebug(str); #endif @@ -296,7 +306,7 @@ void wxPrintData::ConvertToNative() pd->hDevNames = NULL; hDevMode = pd->hDevMode; - m_devMode = (void*) hDevMode; + m_devMode = (void*)(long) hDevMode; pd->hDevMode = NULL; } @@ -305,17 +315,21 @@ void wxPrintData::ConvertToNative() if ( hDevMode ) { - DEVMODE *devMode = (DEVMODE*) GlobalLock(hDevMode); + LPDEVMODE devMode = (LPDEVMODE) GlobalLock(hDevMode); //// Orientation +#ifndef __WXWINE__ devMode->dmOrientation = m_printOrientation; +#endif devMode->dmFields = DM_ORIENTATION; //// Collation +#ifndef __WIN16__ devMode->dmCollate = (m_printCollate ? DMCOLLATE_TRUE : DMCOLLATE_FALSE); devMode->dmFields |= DM_COLLATE; +#endif //// Number of copies @@ -324,7 +338,7 @@ void wxPrintData::ConvertToNative() //// Printer name - if (m_printerName != "") + if (m_printerName != wxT("")) { // TODO: make this Unicode compatible int len = wxMin(31, m_printerName.Len()); @@ -343,6 +357,7 @@ void wxPrintData::ConvertToNative() devMode->dmFields |= DM_COLOR; +#ifndef __WXWINE__ //// Paper size if (m_paperId == wxPAPER_NONE) @@ -364,6 +379,7 @@ void wxPrintData::ConvertToNative() } } } +#endif //// Duplex @@ -414,22 +430,25 @@ void wxPrintData::ConvertToNative() void wxPrintData::ConvertFromNative() { - HGLOBAL hDevMode = (HGLOBAL) m_devMode; + HGLOBAL hDevMode = (HGLOBAL)(DWORD) m_devMode; if (!hDevMode) return; if ( hDevMode ) { - DEVMODE *devMode = (DEVMODE*) GlobalLock(hDevMode); + LPDEVMODE devMode = (LPDEVMODE)GlobalLock(hDevMode); +#ifndef __WXWINE__ //// Orientation if (devMode->dmFields & DM_ORIENTATION) m_printOrientation = devMode->dmOrientation; +#endif //// Collation +#ifndef __WIN16__ if (devMode->dmFields & DM_COLLATE) { if (devMode->dmCollate == DMCOLLATE_TRUE) @@ -437,6 +456,7 @@ void wxPrintData::ConvertFromNative() else m_printCollate = FALSE; } +#endif //// Number of copies @@ -474,6 +494,7 @@ void wxPrintData::ConvertFromNative() else m_colour = TRUE; +#ifndef __WXWINE__ //// Paper size if (devMode->dmFields & DM_PAPERSIZE) @@ -490,7 +511,7 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Couldn't find paper size in paper database."); + wxFAIL_MSG(wxT("Couldn't find paper size in paper database.")); m_paperId = wxPAPER_NONE; m_paperSize.x = 0; @@ -500,7 +521,7 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Paper database wasn't initialized in wxPrintData::ConvertFromNative."); + wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative.")); m_paperId = wxPAPER_NONE; m_paperSize.x = 0; @@ -516,13 +537,13 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Couldn't find paper size from DEVMODE."); + wxFAIL_MSG(wxT("Couldn't find paper size from DEVMODE.")); m_paperSize.x = 0; m_paperSize.y = 0; m_paperId = wxPAPER_NONE; } - +#endif //// Duplex @@ -582,6 +603,35 @@ void wxPrintData::ConvertFromNative() #endif +#ifdef __WXMAC__ +void wxPrintData::ConvertToNative() +{ + if ( !m_macPrintInfo ) + { + m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) ) ; + if ( m_macPrintInfo ) + { + ::PrintDefault( m_macPrintInfo ) ; + // todo setup the global pagesetup ? + } + } + if ( m_macPrintInfo ) + { + (**m_macPrintInfo).prJob.iCopies = m_printNoCopies ; + (**m_macPrintInfo).prJob.iFstPage = 0 ; + (**m_macPrintInfo).prJob.iLstPage = 0 ; + } +} + +void wxPrintData::ConvertFromNative() +{ + if ( m_macPrintInfo ) + { + m_printNoCopies = (**m_macPrintInfo).prJob.iCopies ; + } +} +#endif + void wxPrintData::operator=(const wxPrintData& data) { m_printNoCopies = data.m_printNoCopies; @@ -642,6 +692,8 @@ wxPrintDialogData::wxPrintDialogData() { #ifdef __WXMSW__ m_printDlgData = NULL; +#elif defined( __WXMAC__ ) + m_macPrintInfo = NULL ; #endif m_printFromPage = 0; m_printToPage = 0; @@ -651,6 +703,7 @@ wxPrintDialogData::wxPrintDialogData() m_printAllPages = FALSE; m_printCollate = FALSE; m_printToFile = FALSE; + m_printSelection = FALSE; m_printEnableSelection = FALSE; m_printEnablePageNumbers = TRUE; m_printEnablePrintToFile = TRUE; @@ -660,6 +713,11 @@ wxPrintDialogData::wxPrintDialogData() wxPrintDialogData::wxPrintDialogData(const wxPrintDialogData& dialogData) { +#ifdef __WXMSW__ + m_printDlgData = NULL; +#elif defined( __WXMAC__ ) + m_macPrintInfo = NULL ; +#endif (*this) = dialogData; } @@ -667,6 +725,8 @@ wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData) { #ifdef __WXMSW__ m_printDlgData = NULL; +#elif defined( __WXMAC__ ) + m_macPrintInfo = NULL ; #endif m_printFromPage = 0; m_printToPage = 0; @@ -676,6 +736,7 @@ wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData) m_printAllPages = FALSE; m_printCollate = FALSE; m_printToFile = FALSE; + m_printSelection = FALSE; m_printEnableSelection = FALSE; m_printEnablePageNumbers = TRUE; m_printEnablePrintToFile = TRUE; @@ -693,6 +754,9 @@ wxPrintDialogData::~wxPrintDialogData() GlobalFree(pd->hDevMode); if ( pd ) delete pd; +#elif defined(__WXMAC__) + if ( m_macPrintInfo ) + ::DisposeHandle( (Handle) m_macPrintInfo ) ; #endif } @@ -712,8 +776,8 @@ void wxPrintDialogData::ConvertToNative() #ifdef __GNUWIN32__ pd->lStructSize = 66 ; #else -#endif pd->lStructSize = sizeof(PRINTDLG); +#endif pd->hwndOwner = (HWND)NULL; pd->hDevMode = NULL; // Will be created by PrintDlg pd->hDevNames = NULL; // Ditto @@ -729,11 +793,11 @@ void wxPrintDialogData::ConvertToNative() GlobalFree(pd->hDevMode); } - pd->hDevMode = (HGLOBAL) m_printData.GetNativeData(); + pd->hDevMode = (HGLOBAL)(DWORD) m_printData.GetNativeData(); m_printData.SetNativeData((void*) NULL); - wxASSERT_MSG( (pd->hDevMode), "hDevMode must be non-NULL in ConvertToNative!"); + wxASSERT_MSG( (pd->hDevMode), wxT("hDevMode must be non-NULL in ConvertToNative!")); pd->hDC = (HDC) NULL; pd->nFromPage = (UINT)m_printFromPage; @@ -763,6 +827,8 @@ void wxPrintDialogData::ConvertToNative() if ( m_printAllPages ) pd->Flags |= PD_ALLPAGES; + if ( m_printAllPages ) + pd->Flags |= PD_SELECTION; if ( m_printCollate ) pd->Flags |= PD_COLLATE; if ( m_printToFile ) @@ -791,9 +857,9 @@ void wxPrintDialogData::ConvertFromNative() if (m_printData.GetNativeData()) { // Make sure we don't leak memory - GlobalFree((HGLOBAL) m_printData.GetNativeData()); + GlobalFree((HGLOBAL)(DWORD) m_printData.GetNativeData()); } - m_printData.SetNativeData((void*) pd->hDevMode); + m_printData.SetNativeData((void*)(long) pd->hDevMode); pd->hDevMode = NULL; } @@ -808,6 +874,7 @@ void wxPrintDialogData::ConvertFromNative() m_printNoCopies = pd->nCopies ; m_printAllPages = ((pd->Flags & PD_ALLPAGES) == PD_ALLPAGES); + m_printSelection = ((pd->Flags & PD_SELECTION) == PD_SELECTION); m_printCollate = ((pd->Flags & PD_COLLATE) == PD_COLLATE); m_printToFile = ((pd->Flags & PD_PRINTTOFILE) == PD_PRINTTOFILE); m_printEnablePrintToFile = ((pd->Flags & PD_DISABLEPRINTTOFILE) != PD_DISABLEPRINTTOFILE); @@ -845,6 +912,38 @@ void wxPrintDialogData::SetOwnerWindow(wxWindow* win) } #endif // MSW +#ifdef __WXMAC__ +void wxPrintDialogData::ConvertToNative() +{ + if ( !m_macPrintInfo ) + { + m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) ) ; + if ( m_macPrintInfo ) + { + ::PrintDefault( m_macPrintInfo ) ; + // todo setup the global pagesetup ? + } + } + if ( m_macPrintInfo ) + { + (**m_macPrintInfo).prJob.iCopies = m_printNoCopies ; + (**m_macPrintInfo).prJob.iFstPage = m_printFromPage ; + (**m_macPrintInfo).prJob.iLstPage = m_printToPage ; + } +} + +void wxPrintDialogData::ConvertFromNative() +{ + if ( m_macPrintInfo ) + { + m_printNoCopies = (**m_macPrintInfo).prJob.iCopies ; + m_printFromPage = (**m_macPrintInfo).prJob.iFstPage ; + m_printToPage = (**m_macPrintInfo).prJob.iLstPage ; + } +} +#endif + + void wxPrintDialogData::operator=(const wxPrintDialogData& data) { m_printFromPage = data.m_printFromPage; @@ -855,6 +954,7 @@ void wxPrintDialogData::operator=(const wxPrintDialogData& data) m_printAllPages = data.m_printAllPages; m_printCollate = data.m_printCollate; m_printToFile = data.m_printToFile; + m_printSelection = data.m_printSelection; m_printEnableSelection = data.m_printEnableSelection; m_printEnablePageNumbers = data.m_printEnablePageNumbers; m_printEnableHelp = data.m_printEnableHelp; @@ -877,6 +977,8 @@ wxPageSetupDialogData::wxPageSetupDialogData() { #if defined(__WIN95__) m_pageSetupData = NULL; +#elif defined( __WXMAC__ ) + m_macPageSetupInfo = NULL ; #endif m_paperSize = wxSize(0, 0); @@ -899,6 +1001,11 @@ wxPageSetupDialogData::wxPageSetupDialogData() wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialogData) { +#if defined(__WIN95__) + m_pageSetupData = NULL; +#elif defined( __WXMAC__ ) + m_macPageSetupInfo = NULL ; +#endif (*this) = dialogData; } @@ -906,6 +1013,8 @@ wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData) { #if defined(__WIN95__) m_pageSetupData = NULL; +#elif defined( __WXMAC__ ) + m_macPageSetupInfo = NULL ; #endif m_paperSize = wxSize(0, 0); m_minMarginTopLeft = wxPoint(0, 0); @@ -937,6 +1046,9 @@ wxPageSetupDialogData::~wxPageSetupDialogData() GlobalFree(pd->hDevMode); if ( pd ) delete pd; +#elif defined( __WXMAC__ ) + if( m_macPageSetupInfo ) + ::DisposeHandle( (Handle) m_macPageSetupInfo ) ; #endif } @@ -987,12 +1099,11 @@ void wxPageSetupDialogData::ConvertToNative() pd->hDevMode = NULL; } - pd->hDevMode = (HGLOBAL) m_printData.GetNativeData(); m_printData.SetNativeData((void*) NULL); - wxASSERT_MSG( (pd->hDevMode), "hDevMode must be non-NULL in ConvertToNative!"); + wxASSERT_MSG( (pd->hDevMode), wxT("hDevMode must be non-NULL in ConvertToNative!")); // pd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, sizeof(DEVMODE)); @@ -1110,6 +1221,69 @@ void wxPageSetupDialogData::SetOwnerWindow(wxWindow* win) } #endif // Win95 +#ifdef __WXMAC__ +void wxPageSetupDialogData::ConvertToNative() +{ + if ( !m_macPageSetupInfo ) + { + m_macPageSetupInfo = (THPrint) NewHandleClear( sizeof( TPrint ) ) ; + if ( m_macPageSetupInfo ) + { + ::PrintDefault( m_macPageSetupInfo ) ; + } + } + if ( m_macPageSetupInfo ) + { + // on mac the paper rect has a negative top left corner, because the page rect (printable area) is at 0,0 + (**m_macPageSetupInfo).rPaper.left = int( ((double) m_minMarginTopLeft.x)*mm2pt ) ; + (**m_macPageSetupInfo).rPaper.top = int( ((double) m_minMarginTopLeft.y)*mm2pt ) ; + + (**m_macPageSetupInfo).rPaper.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x)*mm2pt ) ; + (**m_macPageSetupInfo).rPaper.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y)*mm2pt ) ; + + (**m_macPageSetupInfo).prInfo.rPage.left = 0 ; + (**m_macPageSetupInfo).prInfo.rPage.top = 0 ; + (**m_macPageSetupInfo).prInfo.rPage.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x - m_minMarginBottomRight.x)*mm2pt ) ; + (**m_macPageSetupInfo).prInfo.rPage.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y - m_minMarginBottomRight.y)*mm2pt ) ; + + //TODO add custom fields in dialog for margins + + } +} + +void wxPageSetupDialogData::ConvertFromNative() +{ + if ( m_macPageSetupInfo ) + { + m_paperSize.x = ((double) (**m_macPageSetupInfo).rPaper.right - (**m_macPageSetupInfo).rPaper.left ) * pt2mm ; + m_paperSize.y = ((double) (**m_macPageSetupInfo).rPaper.bottom - (**m_macPageSetupInfo).rPaper.top ) * pt2mm ; + + m_minMarginTopLeft.x = ((double) -(**m_macPageSetupInfo).rPaper.left ) * pt2mm ; + m_minMarginTopLeft.y = ((double) -(**m_macPageSetupInfo).rPaper.top ) * pt2mm ; + + m_minMarginBottomRight.x = ((double) (**m_macPageSetupInfo).rPaper.right - (**m_macPageSetupInfo).prInfo.rPage.right ) * pt2mm ; + m_minMarginBottomRight.y = ((double)(**m_macPageSetupInfo).rPaper.bottom - (**m_macPageSetupInfo).prInfo.rPage.bottom ) * pt2mm ; + + // adjust minimal values + //TODO add custom fields in dialog for margins + + 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) @@ -1132,8 +1306,8 @@ void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) void wxPageSetupDialogData::CalculateIdFromPaperSize() { wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), - "wxThePrintPaperDatabase should not be NULL. " - "Do not create global print dialog data objects." ); + wxT("wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects.") ); wxSize sz = GetPaperSize(); @@ -1148,8 +1322,8 @@ void wxPageSetupDialogData::CalculateIdFromPaperSize() void wxPageSetupDialogData::CalculatePaperSizeFromId() { wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), - "wxThePrintPaperDatabase should not be NULL. " - "Do not create global print dialog data objects." ); + wxT("wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects.") ); wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId()); @@ -1161,3 +1335,4 @@ void wxPageSetupDialogData::CalculatePaperSizeFromId() } } +#endif // wxUSE_PRINTING_ARCHITECTURE