From 0629e587852d397da87cc543d01d3eca7117cf30 Mon Sep 17 00:00:00 2001 From: a-lunev Date: Mon, 25 Aug 2008 00:03:14 +0000 Subject: [PATCH] bug tracker: [ 2069722 ] PCB edge always printed when PCB edge layer not selected. It is resolved by adding 'Exclude Edges_Pcb layer' check box in 'Print' dialog. --- pcbnew/lay2plot.cpp | 2 -- share/dialog_print.cpp | 20 ++++++++++++++++++-- share/dialog_print.h | 2 ++ share/wxprint.cpp | 1 + 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pcbnew/lay2plot.cpp b/pcbnew/lay2plot.cpp index 6c4096ea5f..b24ca423fb 100644 --- a/pcbnew/lay2plot.cpp +++ b/pcbnew/lay2plot.cpp @@ -51,8 +51,6 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayZones = TRUE; - printmasklayer |= EDGE_LAYER; - /* Draw the pcb graphic items (texts, ...) */ for( BOARD_ITEM* item = Pcb->m_Drawings; item; item = item->Next() ) { diff --git a/share/dialog_print.cpp b/share/dialog_print.cpp index bf89284426..1e04e9d88a 100644 --- a/share/dialog_print.cpp +++ b/share/dialog_print.cpp @@ -80,6 +80,7 @@ bool WinEDA_PrintFrame::Create( wxWindow* parent, wxWindowID id, const wxString& ////@begin WinEDA_PrintFrame member initialisation m_CopperLayersBoxSizer = NULL; m_TechLayersBoxSizer = NULL; + m_Exclude_Edges_Pcb = NULL; m_ScaleOption = NULL; m_FineAdjustXscaleTitle = NULL; m_FineAdjustXscaleOpt = NULL; @@ -124,14 +125,29 @@ void WinEDA_PrintFrame::CreateControls() wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); itemDialog1->SetSizer(itemBoxSizer2); + wxBoxSizer* leftBoxSizer = new wxBoxSizer(wxVERTICAL); + itemBoxSizer2->Add(leftBoxSizer, 0, wxALIGN_TOP|wxALL,5); + + wxBoxSizer* layersBoxSizer = new wxBoxSizer(wxHORIZONTAL); + leftBoxSizer->Add(layersBoxSizer, 0, wxGROW|wxALL,5); + m_CopperLayersBoxSizer = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(m_CopperLayersBoxSizer, 0, wxALIGN_TOP|wxALL, 5); + layersBoxSizer->Add(m_CopperLayersBoxSizer, 0, wxGROW|wxALL, 5); m_TechLayersBoxSizer = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(m_TechLayersBoxSizer, 0, wxALIGN_TOP|wxALL, 5); + layersBoxSizer->Add(m_TechLayersBoxSizer, 0, wxALIGN_TOP|wxALL, 5); wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL); itemBoxSizer2->Add(itemBoxSizer5, 0, wxGROW|wxALL, 5); + + // Option for excluding contents of "Edges Pcb" layer + m_Exclude_Edges_Pcb = new wxCheckBox( this, + ID_EXCLUDE_EDGES_PCB, _( "Exclude Edges_Pcb layer" ) ); + + //m_Exclude_Edges_Pcb->SetValue( g_Exclude_Edges_Pcb ); + m_Exclude_Edges_Pcb->SetToolTip( + _( "Exclude contents of Edges_Pcb layer from all other layers" ) ); + leftBoxSizer->Add( m_Exclude_Edges_Pcb, 0, wxGROW | wxALL, 1 ); wxArrayString m_ScaleOptionStrings; m_ScaleOptionStrings.Add(_("fit in page")); diff --git a/share/dialog_print.h b/share/dialog_print.h index 5f60255f86..097875a79f 100644 --- a/share/dialog_print.h +++ b/share/dialog_print.h @@ -47,6 +47,7 @@ class wxBoxSizer; #define ID_PRINT_SETUP 10001 #define ID_PRINT_PREVIEW 10002 #define ID_PRINT_EXECUTE 10003 +#define ID_EXCLUDE_EDGES_PCB 10012 #define SYMBOL_WINEDA_PRINTFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER #define SYMBOL_WINEDA_PRINTFRAME_TITLE _("Print") #define SYMBOL_WINEDA_PRINTFRAME_IDNAME ID_DIALOG @@ -131,6 +132,7 @@ public: ////@begin WinEDA_PrintFrame member variables wxBoxSizer* m_CopperLayersBoxSizer; wxBoxSizer* m_TechLayersBoxSizer; + wxCheckBox* m_Exclude_Edges_Pcb; wxRadioBox* m_ScaleOption; wxStaticText* m_FineAdjustXscaleTitle; wxTextCtrl* m_FineAdjustXscaleOpt; diff --git a/share/wxprint.cpp b/share/wxprint.cpp index 0c6e40db25..22dbac7c4b 100644 --- a/share/wxprint.cpp +++ b/share/wxprint.cpp @@ -820,6 +820,7 @@ void EDA_Printout::DrawPage() panel->m_ClipBox.SetOrigin( wxPoint( -0x7FFFFF, -0x7FFFFF ) ); } + if ( !m_PrintFrame->m_Exclude_Edges_Pcb->GetValue() ) s_PrintMaskLayer |= EDGE_LAYER; panel->PrintPage( dc, 0, s_PrintMaskLayer ); #else