void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( ) /******************************************************************/ { s_Parameters.m_PrintMirror = m_Print_Mirror->GetValue(); s_Parameters.m_Print_Black_and_White = m_ModeColorOption->GetSelection() != 0; // Due to negative objects in gerber objects, always use one page per image, // because these objects create artefact when they are printed on an existing image. s_Parameters.m_OptionPrintPage = false; SetLayerMaskFromListSelection(); int idx = m_ScaleOption->GetSelection(); s_Parameters.m_PrintScale = s_ScaleList[idx]; if( m_FineAdjustXscaleOpt ) { if( s_Parameters.m_XScaleAdjust > MAX_SCALE || s_Parameters.m_YScaleAdjust > MAX_SCALE ) DisplayInfoMessage( NULL, _( "Warning: Scale option set to a very large value" ) ); m_FineAdjustXscaleOpt->GetValue().ToDouble( &s_Parameters.m_XScaleAdjust ); } if( m_FineAdjustYscaleOpt ) { // Test for a reasonnable scale value if( s_Parameters.m_XScaleAdjust < MIN_SCALE || s_Parameters.m_YScaleAdjust < MIN_SCALE ) DisplayInfoMessage( NULL, _( "Warning: Scale option set to a very small value" ) ); m_FineAdjustYscaleOpt->GetValue().ToDouble( &s_Parameters.m_YScaleAdjust ); } }
void WinEDA_PrintFrame::OnPrintPreview(wxCommandEvent& event) /************************************************************/ /* Open and display a previewer frame for printing */ { wxSize WSize; wxPoint WPos; int x, y; bool print_ref = TRUE; wxSpinEvent spinevent; SetScale(event); SetPenWidth(spinevent); if ( m_PagesOption ) s_OptionPrintPage = m_PagesOption->GetSelection(); if ( (m_Print_Sheet_Ref == NULL) || (m_Print_Sheet_Ref->GetValue() == FALSE) ) print_ref = FALSE; // Pass two printout objects: for preview, and possible printing. wxString title = BuildPrintTitle(); wxPrintPreview *preview = new wxPrintPreview(new EDA_Printout(this, m_Parent, title, print_ref), new EDA_Printout(this, m_Parent, title, print_ref), g_PrintData); if ( preview == NULL ) { DisplayError(this, _("There was a problem previewing")); return; } #ifdef PCBNEW if ( s_OptionPrintPage ) SetLayerMaskFromListSelection(); #endif m_Parent->GetPosition(&x, &y); WPos.x = x + 4; WPos.y = y + 25; WSize = m_Parent->GetSize(); WSize.x -= 3; WSize.y += 6; preview->SetZoom(50); wxPreviewFrame *frame = new wxPreviewFrame(preview, (wxFrame*)this, title, WPos, WSize); if( frame == NULL ) return; frame->Initialize(); frame->Show(TRUE); }
void WinEDA_PrintFrame::EDA_PrintPage(wxCommandEvent& event) /**********************************************************/ /* Called on activate "Print CURRENT" button */ { bool print_ref = TRUE; SetScale(event); s_OptionPrintPage = 0; if ( m_PagesOption ) s_OptionPrintPage = m_PagesOption->GetSelection(); if ( (m_Print_Sheet_Ref == NULL) || (m_Print_Sheet_Ref->GetValue() == FALSE) ) print_ref = FALSE; #ifdef PCBNEW if ( s_OptionPrintPage ) SetLayerMaskFromListSelection(); #endif wxSpinEvent spinevent; SetPenWidth(spinevent); wxPrintDialogData printDialogData( * g_PrintData); wxPrinter printer(& printDialogData); wxString title = BuildPrintTitle(); EDA_Printout printout(this, m_Parent, title, print_ref); #ifndef __WINDOWS__ wxDC * dc = printout.GetDC(); ((wxPostScriptDC*)dc)->SetResolution(600); // Postscript DC resolution is 600 ppi #endif if (!printer.Print(this, &printout, TRUE)) { if (wxPrinter::GetLastError() == wxPRINTER_ERROR) DisplayError(this, _("There was a problem printing") ); return; } else { * g_PrintData = printer.GetPrintDialogData().GetPrintData(); } }
void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event ) /************************************************************/ /* Open and display a previewer frame for printing */ { SetPrintParameters( ); // Pass two printout objects: for preview, and possible printing. wxString title = _( "Print Preview" ); wxPrintPreview* preview = new wxPrintPreview( new BOARD_PRINTOUT_CONTROLLER( s_Parameters, m_Parent, title ), new BOARD_PRINTOUT_CONTROLLER( s_Parameters, m_Parent, title ), g_PrintData ); if( preview == NULL ) { DisplayError( this, wxT( "OnPrintPreview() problem" ) ); return; } SetLayerMaskFromListSelection(); // If no layer selected, we have no plot. prompt user if it happens // because he could think there is a bug in Pcbnew: if( s_Parameters.m_PrintMaskLayer == 0 ) { DisplayError( this, _( "No layer selected" ) ); return; } // Uses the parent position and size. // @todo uses last position and size ans store them when exit in m_Config wxPoint WPos = m_Parent->GetPosition(); wxSize WSize = m_Parent->GetSize(); wxPreviewFrame* frame = new wxPreviewFrame( preview, this, title, WPos, WSize ); frame->Initialize(); frame->Show( true ); }