// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
+// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
{
- OSStatus err ;
+ OSStatus err = noErr ;
wxString message ;
m_printData = printdata ;
m_printData.ConvertToNative() ;
#if TARGET_CARBON && PM_USE_SESSION_APIS
- err = UMAPrOpen(&m_macPrintSessionPort) ;
+ m_macPrintSessionPort = printdata.m_macPrintSession ;
+ PMRetain( m_macPrintSessionPort ) ;
+
if ( err != noErr || m_macPrintSessionPort == kPMNoData )
#else
err = UMAPrOpen(NULL) ;
if ( err != noErr )
#endif
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString , wxICON_HAND | wxOK) ;
dialog.ShowModal();
#if TARGET_CARBON && PM_USE_SESSION_APIS
- UMAPrClose(&m_macPrintSessionPort) ;
+ PMRelease( m_macPrintSessionPort ) ;
#else
UMAPrClose(NULL) ;
#endif
#if !TARGET_CARBON
if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) )
{
- ::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ;
// the driver has changed in the mean time, should we pop up a page setup dialog ?
+ if ( !::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) )
+ {
+ UMAPrClose(NULL) ;
+ m_ok = FALSE;
+ return;
+ }
}
err = PrError() ;
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString , wxICON_HAND | wxOK) ;
dialog.ShowModal();
UMAPrClose(NULL) ;
m_ok = FALSE;
return;
}
::GetPort( &macPrintFormerPort ) ;
+ /*
m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ;
err = PrError() ;
if ( err )
}
// sets current port
m_macPort = (GrafPtr ) m_macPrintSessionPort ;
+ */
#else
+ /*
#if PM_USE_SESSION_APIS
err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort,
(PMPrintSettings)m_printData.m_macPrintSettings,
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal();
#if TARGET_CARBON && PM_USE_SESSION_APIS
- UMAPrClose(&m_macPrintSessionPort) ;
+ PMRelease(&m_macPrintSessionPort) ;
#else
UMAPrClose(NULL) ;
#endif
}
// sets current port
::GetPort( (GrafPtr *)&m_macPort ) ;
+ */
#endif
m_ok = TRUE ;
m_minY = m_minX = 0 ;
#if TARGET_CARBON
- PMRect rPaper;
+ PMRect rPage;
- err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
+ err = PMGetAdjustedPageRect((PMPageFormat)m_printData.m_macPageFormat, &rPage);
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
dialog.ShowModal();
#if TARGET_CARBON && PM_USE_SESSION_APIS
- UMAPrClose(&m_macPrintSessionPort) ;
+ PMRelease(&m_macPrintSessionPort) ;
#else
UMAPrClose(NULL) ;
#endif
m_ok = FALSE;
return;
}
- m_maxX = wxCoord(rPaper.right - rPaper.left) ;
- m_maxY = wxCoord(rPaper.bottom - rPaper.top);
+ m_maxX = wxCoord(rPage.right - rPage.left) ;
+ m_maxY = wxCoord(rPage.bottom - rPage.top);
#else
- m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ;
- m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ;
+ m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPage.right - (**(THPrint)m_printData.m_macPrintSettings).rPage.left ;
+ m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPage.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPage.top ;
#endif
}
#if !TARGET_CARBON
if ( m_ok )
{
+ /*
::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ;
err = PrError() ;
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal();
}
+ */
::UMAPrClose(NULL) ;
// ::SetPort( macPrintFormerPort ) ;
::SetPort( LMGetWMgrPort() ) ;
#else
if ( m_ok )
{
+/*
#if PM_USE_SESSION_APIS
err = PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);
#else
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal();
}
+ */
#if TARGET_CARBON && PM_USE_SESSION_APIS
- UMAPrClose(&m_macPrintSessionPort) ;
+ PMRelease(&m_macPrintSessionPort) ;
#else
UMAPrClose(NULL) ;
#endif
bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) )
{
+ OSStatus err = noErr ;
+ wxString message ;
+
+#if !TARGET_CARBON
+ m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ;
+ err = PrError() ;
+ if ( err )
+ {
+ message.Printf( wxT("Print Error %d"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ UMAPrClose(NULL) ;
+ m_ok = FALSE;
+ return false ;
+ }
+ // sets current port
+ m_macPort = (GrafPtr ) m_macPrintSessionPort ;
+#else
+ #if PM_USE_SESSION_APIS
+ err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort,
+ (PMPrintSettings)m_printData.m_macPrintSettings,
+ (PMPageFormat)m_printData.m_macPageFormat);
+ if ( err != noErr )
+ #else
+ m_macPrintSessionPort = kPMNoReference ;
+ err = PMBeginDocument(
+ m_printData.m_macPrintSettings,
+ m_printData.m_macPageFormat,
+ &m_macPrintSessionPort);
+ if ( err != noErr || m_macPrintSessionPort == kPMNoReference )
+ #endif
+ {
+ message.Printf( wxT("Print Error %d"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ #if TARGET_CARBON && PM_USE_SESSION_APIS
+ PMRelease(&m_macPrintSessionPort) ;
+ #else
+ UMAPrClose(NULL) ;
+ #endif
+ m_ok = FALSE;
+ return m_ok;
+ }
+ // sets current port
+ ::GetPort( (GrafPtr *)&m_macPort ) ;
+#endif
+ m_ok = TRUE ;
+ m_minY = m_minX = 0 ;
+#if TARGET_CARBON
+ PMRect rPage;
+
+ err = PMGetAdjustedPageRect((PMPageFormat)m_printData.m_macPageFormat, &rPage);
+ if ( err != noErr )
+ {
+ message.Printf( wxT("Print Error %d"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ #if TARGET_CARBON && PM_USE_SESSION_APIS
+ PMRelease(&m_macPrintSessionPort) ;
+ #else
+ UMAPrClose(NULL) ;
+ #endif
+ m_ok = FALSE;
+ return m_ok;
+ }
+ m_maxX = rPage.right - rPage.left ;
+ m_maxY = rPage.bottom - rPage.top ;
+#else
+ m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPage.right - (**(THPrint)m_printData.m_macPrintSettings).rPage.left ;
+ m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPage.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPage.top ;
+#endif
return m_ok ;
}
void wxPrinterDC::EndDoc(void)
{
+ OSStatus err ;
+ wxString message ;
+#if !TARGET_CARBON
+ if ( m_ok )
+ {
+ ::UMAPrClose(NULL) ;
+// ::SetPort( macPrintFormerPort ) ;
+ ::SetPort( LMGetWMgrPort() ) ;
+ }
+#else
+ if ( m_ok )
+ {
+ #if PM_USE_SESSION_APIS
+ err = PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);
+ #else
+ err = PMEndDocument(m_macPrintSessionPort);
+ #endif
+ if ( err != noErr )
+ {
+ message.Printf( wxT("Print Error %d"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ }
+ }
+#endif
}
void wxPrinterDC::StartPage(void)
err = PrError() ;
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString , wxICON_HAND | wxOK) ;
dialog.ShowModal();
::PrClosePage( (TPPrPort) m_macPrintSessionPort ) ;
::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ;
#endif
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
dialog.ShowModal();
#if PM_USE_SESSION_APIS
PMSessionEndPage((PMPrintSession)m_macPrintSessionPort);
::SetPort( macPrintFormerPort ) ;
m_ok = FALSE ;
}
+ PMRect rPage;
+
+ err = PMGetAdjustedPageRect((PMPageFormat)m_printData.m_macPageFormat, &rPage);
+ if ( !err )
+ {
+ m_macLocalOrigin.x = rPage.left ;
+ m_macLocalOrigin.y = rPage.top ;
+ }
#endif
}
wxString message ;
#if !TARGET_CARBON
- PrClosePage( (TPPrPort) m_macPort ) ;
+ PrClosePage( (TPPrPort) m_macPort ) ;
err = PrError() ;
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld") , err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
dialog.ShowModal();
::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ;
::UMAPrClose(NULL) ;
#endif
if ( err != noErr )
{
- message.Printf( "Print Error %ld", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
dialog.ShowModal();
#if PM_USE_SESSION_APIS
PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);