implemented printing dialogs in Carbon with Sessions APIs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include "wx/object.h"
|
||||
#include "wx/printdlg.h"
|
||||
#include "wx/dcprint.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
// Use generic page setup dialog: use your own native one if one exists.
|
||||
@@ -67,14 +68,12 @@ wxPrintDialog::~wxPrintDialog()
|
||||
int wxPrintDialog::ShowModal()
|
||||
{
|
||||
int result = wxID_CANCEL ;
|
||||
#if !TARGET_CARBON
|
||||
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
|
||||
if ( !err )
|
||||
|
||||
#if !TARGET_CARBON
|
||||
err = ::UMAPrOpen() ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertToNative() ;
|
||||
if ( ::PrJobDialog( m_printDialogData.GetPrintData().m_macPrintInfo ) )
|
||||
@@ -88,13 +87,96 @@ int wxPrintDialog::ShowModal()
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose() ;
|
||||
#else
|
||||
#if __UNIX__
|
||||
#warning "TODO:Printing for carbon"
|
||||
#if PM_USE_SESSION_APIS
|
||||
PMPrintSession macPrintSession = kPMNoReference;
|
||||
Boolean accepted;
|
||||
|
||||
err = ::UMAPrOpen(&macPrintSession) ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertToNative() ;
|
||||
|
||||
// Set up a valid PageFormat object.
|
||||
if (m_printDialogData.GetPrintData().m_macPageFormat == kPMNoPageFormat)
|
||||
{
|
||||
err = PMCreatePageFormat(&m_printDialogData.GetPrintData().m_macPageFormat);
|
||||
|
||||
// Note that PMPageFormat is not session-specific, but calling
|
||||
// PMSessionDefaultPageFormat assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_printDialogData.GetPrintData().m_macPageFormat != kPMNoPageFormat))
|
||||
{
|
||||
err = PMSessionDefaultPageFormat(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePageFormat(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
|
||||
// Set up a valid PrintSettings object.
|
||||
if (m_printDialogData.GetPrintData().m_macPrintSettings == kPMNoPrintSettings)
|
||||
{
|
||||
err = PMCreatePrintSettings(&m_printDialogData.GetPrintData().m_macPrintSettings);
|
||||
|
||||
// Note that PMPrintSettings is not session-specific, but calling
|
||||
// PMSessionDefaultPrintSettings assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_printDialogData.GetPrintData().m_macPrintSettings != kPMNoPrintSettings))
|
||||
{
|
||||
err = PMSessionDefaultPrintSettings(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePrintSettings(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
// Set a valid page range before displaying the Print dialog
|
||||
if (err == noErr)
|
||||
{
|
||||
// err = PMSetPageRange(m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
// minPage, maxPage);
|
||||
}
|
||||
|
||||
// Display the Print dialog.
|
||||
if (err == noErr)
|
||||
{
|
||||
err = PMSessionPrintDialog(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat,
|
||||
&accepted);
|
||||
if ((err == noErr) && !accepted)
|
||||
{
|
||||
err = kPMCancel; // user clicked Cancel button
|
||||
}
|
||||
}
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertFromNative() ;
|
||||
result = wxID_OK ;
|
||||
}
|
||||
}
|
||||
if ((err != noErr) && (err != kPMCancel))
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose(&macPrintSession) ;
|
||||
#else
|
||||
#pragma warning "TODO:Printing for carbon"
|
||||
#pragma warning "TODO: Printing for carbon without session apis"
|
||||
#endif
|
||||
#endif
|
||||
return result ;
|
||||
@@ -137,15 +219,13 @@ wxPageSetupDialog::~wxPageSetupDialog()
|
||||
|
||||
int wxPageSetupDialog::ShowModal()
|
||||
{
|
||||
int result = wxID_CANCEL ;
|
||||
#if !TARGET_CARBON
|
||||
|
||||
OSErr err ;
|
||||
int result = wxID_CANCEL ;
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
|
||||
if ( !err )
|
||||
|
||||
#if !TARGET_CARBON
|
||||
err = ::UMAPrOpen() ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_pageSetupData.ConvertToNative() ;
|
||||
if ( ::PrStlDialog( m_pageSetupData.GetPrintData().m_macPrintInfo ) )
|
||||
@@ -159,13 +239,70 @@ int wxPageSetupDialog::ShowModal()
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose() ;
|
||||
#else
|
||||
#if __UNIX__
|
||||
#warning "TODO:Printing for carbon"
|
||||
#if PM_USE_SESSION_APIS
|
||||
PMPrintSession macPrintSession = kPMNoReference;
|
||||
Boolean accepted;
|
||||
|
||||
err = ::UMAPrOpen(&macPrintSession) ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_pageSetupData.ConvertToNative() ;
|
||||
|
||||
// Set up a valid PageFormat object.
|
||||
if (m_pageSetupData.GetPrintData().m_macPageFormat == kPMNoPageFormat)
|
||||
{
|
||||
err = PMCreatePageFormat(&m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
|
||||
// Note that PMPageFormat is not session-specific, but calling
|
||||
// PMSessionDefaultPageFormat assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_pageSetupData.GetPrintData().m_macPageFormat != kPMNoPageFormat))
|
||||
{
|
||||
err = PMSessionDefaultPageFormat(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePageFormat(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
|
||||
// Display the Page Setup dialog.
|
||||
if (err == noErr)
|
||||
{
|
||||
err = PMSessionPageSetupDialog(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat,
|
||||
&accepted);
|
||||
if ((err == noErr) && !accepted)
|
||||
{
|
||||
err = kPMCancel; // user clicked Cancel button
|
||||
}
|
||||
}
|
||||
|
||||
// If the user did not cancel, flatten and save the PageFormat object
|
||||
// with our document.
|
||||
if (err == noErr) {
|
||||
// err = FlattenAndSavePageFormat(m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
m_pageSetupData.ConvertFromNative() ;
|
||||
result = wxID_OK ;
|
||||
}
|
||||
}
|
||||
if ((err != noErr) && (err != kPMCancel))
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose(&macPrintSession) ;
|
||||
#else
|
||||
#pragma warning "TODO:Printing for carbon"
|
||||
#pragma warning "TODO: Printing for carbon without session apis"
|
||||
#endif
|
||||
#endif
|
||||
return result ;
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include "wx/object.h"
|
||||
#include "wx/printdlg.h"
|
||||
#include "wx/dcprint.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
// Use generic page setup dialog: use your own native one if one exists.
|
||||
@@ -67,14 +68,12 @@ wxPrintDialog::~wxPrintDialog()
|
||||
int wxPrintDialog::ShowModal()
|
||||
{
|
||||
int result = wxID_CANCEL ;
|
||||
#if !TARGET_CARBON
|
||||
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
|
||||
if ( !err )
|
||||
|
||||
#if !TARGET_CARBON
|
||||
err = ::UMAPrOpen() ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertToNative() ;
|
||||
if ( ::PrJobDialog( m_printDialogData.GetPrintData().m_macPrintInfo ) )
|
||||
@@ -88,13 +87,96 @@ int wxPrintDialog::ShowModal()
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose() ;
|
||||
#else
|
||||
#if __UNIX__
|
||||
#warning "TODO:Printing for carbon"
|
||||
#if PM_USE_SESSION_APIS
|
||||
PMPrintSession macPrintSession = kPMNoReference;
|
||||
Boolean accepted;
|
||||
|
||||
err = ::UMAPrOpen(&macPrintSession) ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertToNative() ;
|
||||
|
||||
// Set up a valid PageFormat object.
|
||||
if (m_printDialogData.GetPrintData().m_macPageFormat == kPMNoPageFormat)
|
||||
{
|
||||
err = PMCreatePageFormat(&m_printDialogData.GetPrintData().m_macPageFormat);
|
||||
|
||||
// Note that PMPageFormat is not session-specific, but calling
|
||||
// PMSessionDefaultPageFormat assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_printDialogData.GetPrintData().m_macPageFormat != kPMNoPageFormat))
|
||||
{
|
||||
err = PMSessionDefaultPageFormat(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePageFormat(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
|
||||
// Set up a valid PrintSettings object.
|
||||
if (m_printDialogData.GetPrintData().m_macPrintSettings == kPMNoPrintSettings)
|
||||
{
|
||||
err = PMCreatePrintSettings(&m_printDialogData.GetPrintData().m_macPrintSettings);
|
||||
|
||||
// Note that PMPrintSettings is not session-specific, but calling
|
||||
// PMSessionDefaultPrintSettings assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_printDialogData.GetPrintData().m_macPrintSettings != kPMNoPrintSettings))
|
||||
{
|
||||
err = PMSessionDefaultPrintSettings(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePrintSettings(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
// Set a valid page range before displaying the Print dialog
|
||||
if (err == noErr)
|
||||
{
|
||||
// err = PMSetPageRange(m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
// minPage, maxPage);
|
||||
}
|
||||
|
||||
// Display the Print dialog.
|
||||
if (err == noErr)
|
||||
{
|
||||
err = PMSessionPrintDialog(macPrintSession,
|
||||
m_printDialogData.GetPrintData().m_macPrintSettings,
|
||||
m_printDialogData.GetPrintData().m_macPageFormat,
|
||||
&accepted);
|
||||
if ((err == noErr) && !accepted)
|
||||
{
|
||||
err = kPMCancel; // user clicked Cancel button
|
||||
}
|
||||
}
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_printDialogData.ConvertFromNative() ;
|
||||
result = wxID_OK ;
|
||||
}
|
||||
}
|
||||
if ((err != noErr) && (err != kPMCancel))
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose(&macPrintSession) ;
|
||||
#else
|
||||
#pragma warning "TODO:Printing for carbon"
|
||||
#pragma warning "TODO: Printing for carbon without session apis"
|
||||
#endif
|
||||
#endif
|
||||
return result ;
|
||||
@@ -137,15 +219,13 @@ wxPageSetupDialog::~wxPageSetupDialog()
|
||||
|
||||
int wxPageSetupDialog::ShowModal()
|
||||
{
|
||||
int result = wxID_CANCEL ;
|
||||
#if !TARGET_CARBON
|
||||
|
||||
OSErr err ;
|
||||
int result = wxID_CANCEL ;
|
||||
OSErr err ;
|
||||
wxString message ;
|
||||
::UMAPrOpen() ;
|
||||
err = PrError() ;
|
||||
|
||||
if ( !err )
|
||||
|
||||
#if !TARGET_CARBON
|
||||
err = ::UMAPrOpen() ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_pageSetupData.ConvertToNative() ;
|
||||
if ( ::PrStlDialog( m_pageSetupData.GetPrintData().m_macPrintInfo ) )
|
||||
@@ -159,13 +239,70 @@ int wxPageSetupDialog::ShowModal()
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose() ;
|
||||
#else
|
||||
#if __UNIX__
|
||||
#warning "TODO:Printing for carbon"
|
||||
#if PM_USE_SESSION_APIS
|
||||
PMPrintSession macPrintSession = kPMNoReference;
|
||||
Boolean accepted;
|
||||
|
||||
err = ::UMAPrOpen(&macPrintSession) ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_pageSetupData.ConvertToNative() ;
|
||||
|
||||
// Set up a valid PageFormat object.
|
||||
if (m_pageSetupData.GetPrintData().m_macPageFormat == kPMNoPageFormat)
|
||||
{
|
||||
err = PMCreatePageFormat(&m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
|
||||
// Note that PMPageFormat is not session-specific, but calling
|
||||
// PMSessionDefaultPageFormat assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) &&
|
||||
(m_pageSetupData.GetPrintData().m_macPageFormat != kPMNoPageFormat))
|
||||
{
|
||||
err = PMSessionDefaultPageFormat(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
err = PMSessionValidatePageFormat(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat,
|
||||
kPMDontWantBoolean);
|
||||
}
|
||||
|
||||
// Display the Page Setup dialog.
|
||||
if (err == noErr)
|
||||
{
|
||||
err = PMSessionPageSetupDialog(macPrintSession,
|
||||
m_pageSetupData.GetPrintData().m_macPageFormat,
|
||||
&accepted);
|
||||
if ((err == noErr) && !accepted)
|
||||
{
|
||||
err = kPMCancel; // user clicked Cancel button
|
||||
}
|
||||
}
|
||||
|
||||
// If the user did not cancel, flatten and save the PageFormat object
|
||||
// with our document.
|
||||
if (err == noErr) {
|
||||
// err = FlattenAndSavePageFormat(m_pageSetupData.GetPrintData().m_macPageFormat);
|
||||
m_pageSetupData.ConvertFromNative() ;
|
||||
result = wxID_OK ;
|
||||
}
|
||||
}
|
||||
if ((err != noErr) && (err != kPMCancel))
|
||||
{
|
||||
message.Printf( "Print Error %d", err ) ;
|
||||
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
|
||||
dialog.ShowModal();
|
||||
}
|
||||
::UMAPrClose(&macPrintSession) ;
|
||||
#else
|
||||
#pragma warning "TODO:Printing for carbon"
|
||||
#pragma warning "TODO: Printing for carbon without session apis"
|
||||
#endif
|
||||
#endif
|
||||
return result ;
|
||||
|
Reference in New Issue
Block a user