@ -60,8 +60,9 @@ private:
void onSelectAllClick ( wxCommandEvent & event ) ;
void onDeselectAllClick ( wxCommandEvent & event ) ;
void onUseThemeChecked ( wxCommandEvent & event ) ;
void onColorModeChanged ( wxCommandEvent & event ) ;
void onUseThemeClicked ( wxCommandEvent & event ) ;
void onPagePerLayerClicked ( wxCommandEvent & event ) ;
void onColorModeClicked ( wxCommandEvent & event ) ;
///< (Un)check all items in a checklist box.
void setListBoxValue ( wxCheckListBox * aList , bool aValue ) ;
@ -91,16 +92,16 @@ private:
// Extra widgets
wxCheckListBox * m_listTechLayers ;
wxCheckListBox * m_listCopperLayers ;
wxButton * m_buttonSelectAll ;
wxButton * m_buttonDeselectAll ;
wxCheckBox * m_checkboxNoEdge ;
wxCheckBox * m_checkboxMirror ;
wxChoice * m_drillMarksChoice ;
wxRadioBox * m_boxPagination ;
wxCheckBox * m_checkAsItems ;
wxCheckBox * m_checkBackground ;
wxCheckBox * m_checkUseTheme ;
wxChoice * m_colorTheme ;
wxButton * m_buttonSelectAll ;
wxButton * m_buttonDeselectAll ;
wxCheckBox * m_checkboxMirror ;
wxChoice * m_drillMarksChoice ;
wxCheckBox * m_checkboxPagePerLayer ;
wxCheckBox * m_checkboxEdgesOnAllPages ;
wxCheckBox * m_checkAsItems ;
wxCheckBox * m_checkBackground ;
wxCheckBox * m_checkUseTheme ;
wxChoice * m_colorTheme ;
} ;
@ -114,7 +115,7 @@ DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW( PCB_BASE_EDIT_FRAME* aParent,
createExtraOptions ( ) ;
createLeftPanel ( ) ;
m_outputMode - > Bind ( wxEVT_COMMAND_CHOICE_SELECTED , & DIALOG_PRINT_PCBNEW : : onColorModeChang ed ,
m_outputMode - > Bind ( wxEVT_COMMAND_CHOICE_SELECTED , & DIALOG_PRINT_PCBNEW : : onColorModeClick ed ,
this ) ;
}
@ -147,7 +148,6 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow()
}
m_checkboxMirror - > SetValue ( settings ( ) - > m_Mirror ) ;
m_checkboxNoEdge - > SetValue ( settings ( ) - > m_noEdgeLayer ) ;
m_titleBlock - > SetValue ( settings ( ) - > m_titleBlock ) ;
PCBNEW_SETTINGS * cfg = m_parent - > GetPcbNewSettings ( ) ;
@ -177,13 +177,15 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow()
m_colorTheme - > SetMinSize ( wxSize ( minwidth + 50 , - 1 ) ) ;
wxCommandEvent dummy ;
onColorModeChang ed ( dummy ) ;
onColorModeClick ed ( dummy ) ;
// Options to plot pads and vias holes
m_drillMarksChoice - > SetSelection ( settings ( ) - > m_d rillMarks ) ;
m_drillMarksChoice - > SetSelection ( settings ( ) - > m_D rillMarks ) ;
// Print all layers one one page or separately
m_boxPagination - > SetSelection ( settings ( ) - > m_pagination ) ;
m_checkboxPagePerLayer - > SetValue ( settings ( ) - > m_Pagination
= = PCBNEW_PRINTOUT_SETTINGS : : LAYER_PER_PAGE ) ;
onPagePerLayerClicked ( dummy ) ;
// Update the dialog layout when layers are added
GetSizer ( ) - > Fit ( this ) ;
@ -195,35 +197,36 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow()
void DIALOG_PRINT_PCBNEW : : createExtraOptions ( )
{
wxGridBagSizer * optionsSizer = getOptionsSizer ( ) ;
wxStaticBox * box = getOptionsBox ( ) ;
int rows = optionsSizer - > GetEffectiveRowsCount ( ) ;
int cols = optionsSizer - > GetEffectiveColsCount ( ) ;
wxStaticBox * box = getOptionsBox ( ) ;
int rows = optionsSizer - > GetEffectiveRowsCount ( ) ;
int cols = optionsSizer - > GetEffectiveColsCount ( ) ;
m_checkAsItems = new wxCheckBox ( s bOptionsSizer - > GetStaticB ox( ) , wxID_ANY ,
_ ( " Print according to objects tab of appearance manager " ) ,
wxDefaultPosition , wxDefaultSize , 0 ) ;
optionsSizer - > Add ( m_checkAsItems , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) , wxALL , 5 ) ;
m_checkAsItems = new wxCheckBox ( box , wxID_ANY ,
_ ( " Print according to objects tab of appearance manager " ) ) ;
optionsSizer - > Add ( m_checkAsItems , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) ,
wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
m_checkBackground = new wxCheckBox ( sbOptionsSizer - > GetStaticBox ( ) , wxID_ANY ,
_ ( " Print background color " ) , wxDefaultPosition ,
wxDefaultSize , 0 ) ;
optionsSizer - > Add ( m_checkBackground , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) , wxALL , 5 ) ;
m_checkBackground = new wxCheckBox ( box , wxID_ANY , _ ( " Print background color " ) ) ;
optionsSizer - > Add ( m_checkBackground , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) ,
wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
m_checkUseTheme = new wxCheckBox ( s bOptionsSizer - > GetStaticB ox( ) , wxID_ANY ,
_ ( " Use a different color theme for printing: " ) ,
wxDefaultPosition , wxDefaultSize , 0 ) ;
optionsSizer - > Add ( m_checkUseTheme , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) , wxALL , 5 ) ;
m_checkUseTheme = new wxCheckBox ( box , wxID_ANY ,
_ ( " Use a different color theme for printing: " ) ) ;
optionsSizer - > Add ( m_checkUseTheme , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 3 ) ,
wxLEFT | wxRIGHT , 5 ) ;
m_checkUseTheme - > Bind ( wxEVT_COMMAND_CHECKBOX_CLICKED ,
& DIALOG_PRINT_PCBNEW : : onUseThemeChe cked , this ) ;
& DIALOG_PRINT_PCBNEW : : onUseThemeCli cked , this ) ;
wxArrayString m_colorThemeChoices ;
m_colorTheme = new wxChoice ( sbOptionsSizer - > GetStaticBox ( ) , wxID_ANY , wxDefaultPosition ,
wxDefaultSize , m_colorThemeChoices , 0 ) ;
m_colorTheme = new wxChoice ( box , wxID_ANY , wxDefaultPosition , wxDefaultSize ,
m_colorThemeChoices , 0 ) ;
m_colorTheme - > SetSelection ( 0 ) ;
optionsSizer - > Add ( m_colorTheme , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , 2 ) ,
wxALIGN_CENTER_VERTICAL | wxLEFT , 25 ) ;
wxLEFT , 28 ) ;
rows + + ;
// Drill marks option
auto drillMarksLabel = new wxStaticText ( box , wxID_ANY , _ ( " Drill marks: " ) ) ;
@ -234,28 +237,30 @@ void DIALOG_PRINT_PCBNEW::createExtraOptions()
drillMarkChoices . size ( ) , drillMarkChoices . data ( ) , 0 ) ;
m_drillMarksChoice - > SetSelection ( 0 ) ;
optionsSizer - > Add ( drillMarksLabel , wxGBPosition ( rows , 0 ) , wxGBSpan ( 1 , 1 ) ,
wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
optionsSizer - > Add ( m_drillMarksChoice , wxGBPosition ( rows + + , 1 ) , wxGBSpan ( 1 , cols - 1 ) ,
wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
// Print mirrored
m_checkboxMirror = new wxCheckBox ( box , wxID_ANY , _ ( " Print mirrored " ) ) ;
optionsSizer - > Add ( m_checkboxMirror , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , cols ) ,
wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
// Pagination
std : : vector < wxString > pagesOption = { _ ( " One page per layer " ) ,
_ ( " All layers on single page " ) } ;
m_boxPagination = new wxRadioBox ( box , wxID_ANY , _ ( " Pagination " ) , wxDefaultPosition ,
wxDefaultSize , pagesOption . size ( ) , pagesOption . data ( ) , 1 ,
wxRA_SPECIFY_COLS ) ;
m_boxPagination - > SetSelection ( 0 ) ;
// Sizer layout
rows + + ;
m_checkboxPagePerLayer = new wxCheckBox ( box , wxID_ANY , _ ( " Print one page per layer " ) ) ;
optionsSizer - > Add ( drillMarksLabel , wxGBPosition ( rows , 0 ) , wxGBSpan ( 1 , 1 ) ,
wxBOTTOM | wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 5 ) ;
optionsSizer - > Add ( m_drillMarksChoice , wxGBPosition ( rows , 1 ) , wxGBSpan ( 1 , cols - 1 ) ,
wxBOTTOM | wxRIGHT | wxLEFT , 5 ) ;
optionsSizer - > Add ( m_checkboxMirror , wxGBPosition ( rows + 1 , 0 ) , wxGBSpan ( 1 , cols ) ,
wxBOTTOM | wxRIGHT | wxLEFT , 5 ) ;
optionsSizer - > Add ( m_boxPagination , wxGBPosition ( rows + 2 , 0 ) , wxGBSpan ( 1 , cols ) ,
wxALL | wxEXPAND , 5 ) ;
m_checkboxPagePerLayer - > Bind ( wxEVT_COMMAND_CHECKBOX_CLICKED ,
& DIALOG_PRINT_PCBNEW : : onPagePerLayerClicked , this ) ;
m_checkboxEdgesOnAllPages = new wxCheckBox ( box , wxID_ANY ,
_ ( " Print board edges on all pages " ) ) ;
optionsSizer - > Add ( m_checkboxPagePerLayer , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , cols ) ,
wxLEFT | wxRIGHT , 5 ) ;
optionsSizer - > Add ( m_checkboxEdgesOnAllPages , wxGBPosition ( rows + + , 0 ) , wxGBSpan ( 1 , cols ) ,
wxLEFT , 28 ) ;
}
@ -304,16 +309,9 @@ void DIALOG_PRINT_PCBNEW::createLeftPanel()
buttonSizer - > Add ( m_buttonSelectAll , 1 , wxRIGHT | wxTOP | wxBOTTOM , 5 ) ;
buttonSizer - > Add ( m_buttonDeselectAll , 1 , wxLEFT | wxTOP | wxBOTTOM , 5 ) ;
// Exclude Edge.Pcb layer checkbox
m_checkboxNoEdge = new wxCheckBox ( sbLayersSizer - > GetStaticBox ( ) , wxID_ANY ,
_ ( " Exclude PCB edge layer " ) ) ;
m_checkboxNoEdge - > SetToolTip ( _ ( " Exclude contents of Edges_Pcb layer from all other layers " ) ) ;
// Static box sizer layout
sbLayersSizer - > Add ( bLayerListsSizer , 1 , wxRIGHT | wxEXPAND , 5 ) ;
sbLayersSizer - > Add ( buttonSizer , 0 , wxRIGHT | wxEXPAND , 5 ) ;
sbLayersSizer - > Add ( m_checkboxNoEdge , 0 , wxTOP | wxRIGHT | wxBOTTOM | wxEXPAND , 5 ) ;
getMainSizer ( ) - > Insert ( 0 , sbLayersSizer , 1 , wxEXPAND | wxALL , 5 ) ;
}
@ -333,13 +331,28 @@ void DIALOG_PRINT_PCBNEW::onDeselectAllClick( wxCommandEvent& event )
}
void DIALOG_PRINT_PCBNEW : : onUseThemeChe cked ( wxCommandEvent & event )
void DIALOG_PRINT_PCBNEW : : onUseThemeCli cked ( wxCommandEvent & event )
{
m_colorTheme - > Enable ( m_checkUseTheme - > GetValue ( ) ) ;
}
void DIALOG_PRINT_PCBNEW : : onColorModeChanged ( wxCommandEvent & event )
void DIALOG_PRINT_PCBNEW : : onPagePerLayerClicked ( wxCommandEvent & event )
{
if ( m_checkboxPagePerLayer - > GetValue ( ) )
{
m_checkboxEdgesOnAllPages - > Enable ( true ) ;
m_checkboxEdgesOnAllPages - > SetValue ( settings ( ) - > m_PrintEdgeCutsOnAllPages ) ;
}
else
{
m_checkboxEdgesOnAllPages - > Enable ( false ) ;
m_checkboxEdgesOnAllPages - > SetValue ( false ) ;
}
}
void DIALOG_PRINT_PCBNEW : : onColorModeClicked ( wxCommandEvent & event )
{
PCBNEW_SETTINGS * cfg = m_parent - > GetPcbNewSettings ( ) ;
@ -394,10 +407,10 @@ int DIALOG_PRINT_PCBNEW::setLayerSetFromList()
}
// In Pcbnew force the EDGE layer to be printed or not with the other layers
settings ( ) - > m_noEdgeLayer = m_checkboxNo Edge - > IsChecked ( ) ;
settings ( ) - > m_PrintEdgeCutsOnAllPages = m_checkboxEdgesOnAllPages - > IsChecked ( ) ;
// All layers on one page (only if there is at least one layer selected)
if ( m_boxPagination - > GetSelection ( ) ! = 0 & & pageCount > 0 )
if ( ! m_checkboxPagePerLayer - > GetValue ( ) & & pageCount > 0 )
pageCount = 1 ;
return pageCount ;
@ -408,13 +421,20 @@ void DIALOG_PRINT_PCBNEW::saveSettings()
{
setLayerSetFromList ( ) ;
settings ( ) - > m_a sItemCheckboxes = m_checkAsItems - > GetValue ( ) ;
settings ( ) - > m_A sItemCheckboxes = m_checkAsItems - > GetValue ( ) ;
settings ( ) - > m_d rillMarks =
settings ( ) - > m_D rillMarks =
( PCBNEW_PRINTOUT_SETTINGS : : DRILL_MARK_SHAPE_T ) m_drillMarksChoice - > GetSelection ( ) ;
settings ( ) - > m_pagination = m_boxPagination - > GetSelection ( ) = = 0
? PCBNEW_PRINTOUT_SETTINGS : : LAYER_PER_PAGE : PCBNEW_PRINTOUT_SETTINGS : : ALL_LAYERS ;
if ( m_checkboxPagePerLayer - > GetValue ( ) )
{
settings ( ) - > m_Pagination = PCBNEW_PRINTOUT_SETTINGS : : LAYER_PER_PAGE ;
settings ( ) - > m_PrintEdgeCutsOnAllPages = m_checkboxEdgesOnAllPages - > GetValue ( ) ;
}
else
{
settings ( ) - > m_Pagination = PCBNEW_PRINTOUT_SETTINGS : : ALL_LAYERS ;
}
settings ( ) - > m_Mirror = m_checkboxMirror - > GetValue ( ) ;