bool DIALOG_PRINT_USING_PRINTER::TransferDataFromWindow() { SCH_EDIT_FRAME* parent = GetParent(); GetPrintOptions(); wxPrintDialogData printDialogData( parent->GetPageSetupData().GetPrintData() ); printDialogData.SetMaxPage( g_RootSheet->CountSheets() ); if( g_RootSheet->CountSheets() > 1 ) printDialogData.EnablePageNumbers( true ); wxPrinter printer( &printDialogData ); SCH_PRINTOUT printout( parent, _( "Print Schematic" ) ); // Disable 'Print' button to prevent issuing another print // command before the previous one is finished (causes problems on Windows) m_sdbSizer1OK->Enable( false ); if( !printer.Print( this, &printout, true ) ) { if( wxPrinter::GetLastError() == wxPRINTER_ERROR ) wxMessageBox( _( "An error occurred attempting to print the schematic." ), _( "Printing" ), wxOK ); } else { parent->GetPageSetupData() = printer.GetPrintDialogData().GetPrintData(); } return true; }
void DIALOG_PRINT_USING_PRINTER::OnPrintButtonClick( wxCommandEvent& event ) { SCH_EDIT_FRAME* parent = GetParent(); GetPrintOptions(); wxPrintDialogData printDialogData( parent->GetPageSetupData().GetPrintData() ); printDialogData.SetMaxPage( g_RootSheet->CountSheets() ); if( g_RootSheet->CountSheets() > 1 ) printDialogData.EnablePageNumbers( true ); wxPrinter printer( &printDialogData ); SCH_PRINTOUT printout( parent, _( "Print Schematic" ) ); if( !printer.Print( this, &printout, true ) ) { if( wxPrinter::GetLastError() == wxPRINTER_ERROR ) wxMessageBox( _( "An error occurred attempting to print the schematic." ), _( "Printing" ), wxOK ); } else { parent->GetPageSetupData() = printer.GetPrintDialogData().GetPrintData(); } }
void DIALOG_PRINT_USING_PRINTER::OnCloseWindow( wxCloseEvent& event ) { SCH_EDIT_FRAME* parent = GetParent(); if( !IsIconized() ) { parent->SetPrintDialogPosition( GetPosition() ); parent->SetPrintDialogSize( GetSize() ); } GetPrintOptions(); EndDialog( wxID_CANCEL ); }
/* Open and display a previewer frame for printing */ void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event ) { SCH_EDIT_FRAME* parent = GetParent(); GetPrintOptions(); // Pass two printout objects: for preview, and possible printing. wxString title = _( "Preview" ); wxPrintPreview* preview = new wxPrintPreview( new SCH_PRINTOUT( parent, title ), new SCH_PRINTOUT( parent, title ), &parent->GetPageSetupData().GetPrintData() ); if( preview == NULL ) { DisplayError( this, _( "Print preview error!" ) ); return; } preview->SetZoom( 100 ); SCH_PREVIEW_FRAME* frame = new SCH_PREVIEW_FRAME( preview, this, title ); frame->SetMinSize( wxSize( 550, 350 ) ); // on first invocation in this runtime session, set to 2/3 size of my parent, // but will be changed in Show() if not first time as will position. frame->SetSize( (parent->GetSize() * 2) / 3 ); frame->Center(); // On wxGTK, set the flag wxTOPLEVEL_EX_DIALOG is mandatory, if we want // close the frame using the X box in caption, when the preview frame is run // from a dialog frame->SetExtraStyle( frame->GetExtraStyle() | wxTOPLEVEL_EX_DIALOG ); // We use here wxPreviewFrame_WindowModal option to make the wxPrintPreview frame // modal for its caller only. // An other reason is the fact when closing the frame without this option, // all top level frames are reenabled. // With this option, only the parent is reenabled. // Reenabling all top level frames should be made by the parent dialog. frame->InitializeWithModality( wxPreviewFrame_WindowModal ); frame->Raise(); // Needed on Ubuntu/Unity to display the frame frame->Show( true ); }
DIALOG_PRINT_USING_PRINTER::~DIALOG_PRINT_USING_PRINTER() { GetPrintOptions(); }