diff --git a/pcbnew/dialogs/dialog_plot_base.cpp b/pcbnew/dialogs/dialog_plot_base.cpp
index 3e8de1c716..4738523c0e 100644
--- a/pcbnew/dialogs/dialog_plot_base.cpp
+++ b/pcbnew/dialogs/dialog_plot_base.cpp
@@ -272,8 +272,8 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr
m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Negative plot"), wxDefaultPosition, wxDefaultSize, 0 );
m_PSOptionsSizer->Add( m_plotPSNegativeOpt, 0, wxALL, 2 );
- m_usePsA4Opt = new wxCheckBox( this, wxID_ANY, _("Force A4 paper size"), wxDefaultPosition, wxDefaultSize, 0 );
- m_PSOptionsSizer->Add( m_usePsA4Opt, 0, wxALL, 2 );
+ m_forcePSA4OutputOpt = new wxCheckBox( this, wxID_ANY, _("Force A4 output"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_PSOptionsSizer->Add( m_forcePSA4OutputOpt, 0, wxALL, 2 );
m_PlotOptionsSizer->Add( m_PSOptionsSizer, 0, wxALL|wxEXPAND, 3 );
diff --git a/pcbnew/dialogs/dialog_plot_base.fbp b/pcbnew/dialogs/dialog_plot_base.fbp
index 456760fc3f..38be8deba0 100644
--- a/pcbnew/dialogs/dialog_plot_base.fbp
+++ b/pcbnew/dialogs/dialog_plot_base.fbp
@@ -3457,14 +3457,14 @@
0
0
wxID_ANY
- Force A4 paper size
+ Force A4 output
0
0
1
- m_usePsA4Opt
+ m_forcePSA4OutputOpt
1
diff --git a/pcbnew/dialogs/dialog_plot_base.h b/pcbnew/dialogs/dialog_plot_base.h
index b96b694e86..3d529d6a2e 100644
--- a/pcbnew/dialogs/dialog_plot_base.h
+++ b/pcbnew/dialogs/dialog_plot_base.h
@@ -84,7 +84,7 @@ class DIALOG_PLOT_BASE : public wxDialog
wxStaticText* m_staticText8;
wxTextCtrl* m_fineAdjustYscaleOpt;
wxCheckBox* m_plotPSNegativeOpt;
- wxCheckBox* m_usePsA4Opt;
+ wxCheckBox* m_forcePSA4OutputOpt;
wxStaticText* m_staticText2;
wxTextCtrl* m_messagesBox;
diff --git a/pcbnew/pcb_plot_params.cpp b/pcbnew/pcb_plot_params.cpp
index a822181768..b6c2227bb8 100644
--- a/pcbnew/pcb_plot_params.cpp
+++ b/pcbnew/pcb_plot_params.cpp
@@ -86,6 +86,7 @@ PCB_PLOT_PARAMS::PCB_PLOT_PARAMS()
m_HPGLPenOvr = 2;
m_PlotPSColorOpt = true;
m_PlotPSNegative = false;
+ psA4Output = false;
m_PlotReference = true;
m_PlotValue = true;
m_PlotTextOther = true;
@@ -139,6 +140,8 @@ void PCB_PLOT_PARAMS::Format( OUTPUTFORMATTER* aFormatter,
m_PlotPSColorOpt ? trueStr : falseStr );
aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_psnegative ),
m_PlotPSNegative ? trueStr : falseStr );
+ aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_psa4output ),
+ psA4Output ? trueStr : falseStr );
aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotreference ),
m_PlotReference ? trueStr : falseStr );
aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_plotvalue ),
@@ -201,6 +204,8 @@ bool PCB_PLOT_PARAMS::operator==( const PCB_PLOT_PARAMS &aPcbPlotParams ) const
return false;
if( m_PlotPSNegative != aPcbPlotParams.m_PlotPSNegative )
return false;
+ if( psA4Output != aPcbPlotParams.psA4Output )
+ return false;
if( m_PlotReference != aPcbPlotParams.m_PlotReference )
return false;
if( m_PlotValue != aPcbPlotParams.m_PlotValue )
@@ -296,6 +301,9 @@ void PCB_PLOT_PARAMS_PARSER::Parse( PCB_PLOT_PARAMS* aPcbPlotParams ) throw( IO_
case T_usegerberextensions:
aPcbPlotParams->useGerberExtensions = ParseBool();
break;
+ case T_psa4output:
+ aPcbPlotParams->psA4Output = ParseBool();
+ break;
case T_excludeedgelayer:
aPcbPlotParams->m_ExcludeEdgeLayer = ParseBool();
break;
diff --git a/pcbnew/pcb_plot_params.h b/pcbnew/pcb_plot_params.h
index 3e2f68f668..c01c48432e 100644
--- a/pcbnew/pcb_plot_params.h
+++ b/pcbnew/pcb_plot_params.h
@@ -90,6 +90,7 @@ private:
bool useGerberExtensions;
bool useAuxOrigin;
bool subtractMaskFromSilk;
+ bool psA4Output;
int scaleSelection;
wxString outputDirectory;
@@ -116,6 +117,8 @@ public:
bool GetUseAuxOrigin() const { return useAuxOrigin; };
void SetScaleSelection( int aSelection ) { scaleSelection = aSelection; };
int GetScaleSelection() const { return scaleSelection; };
+ void SetPsA4Output( int aForce ) { psA4Output = aForce; };
+ bool GetPsA4Output() const { return psA4Output; };
int GetHpglPenDiameter() const { return m_HPGLPenDiam; };
bool SetHpglPenDiameter( int aValue );
diff --git a/pcbnew/pcb_plot_params.keywords b/pcbnew/pcb_plot_params.keywords
index 99b3976771..972afcb313 100644
--- a/pcbnew/pcb_plot_params.keywords
+++ b/pcbnew/pcb_plot_params.keywords
@@ -18,6 +18,7 @@ plotinvisibletext
plotothertext
plotreference
plotvalue
+psa4output
pscolor
psnegative
scaleselection
diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp
index 4aa6dcf2de..455b468a6d 100644
--- a/pcbnew/pcbplot.cpp
+++ b/pcbnew/pcbplot.cpp
@@ -141,6 +141,7 @@ void DIALOG_PLOT::Init_Dialog()
m_fineAdjustYscaleOpt->AppendText( msg );
m_plotPSNegativeOpt->SetValue( g_PcbPlotOptions.m_PlotPSNegative );
+ m_forcePSA4OutputOpt->SetValue( g_PcbPlotOptions.GetPsA4Output() );
// List layers in same order than in setup layers dialog
// (Front or Top to Back or Bottom)
@@ -514,6 +515,7 @@ void DIALOG_PLOT::applyPlotSettings()
tempOptions.SetLayerSelection( selectedLayers );
tempOptions.m_PlotPSNegative = m_plotPSNegativeOpt->GetValue();
+ tempOptions.SetPsA4Output( m_forcePSA4OutputOpt->GetValue() );
// Set output directory and replace backslashes with forward ones
wxString dirStr;
@@ -732,7 +734,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
{
case PLOT_FORMAT_POST:
success = m_Parent->Genere_PS( fn.GetFullPath(), layer,
- m_usePsA4Opt->GetValue(),
+ g_PcbPlotOptions.GetPsA4Output(),
g_PcbPlotOptions.m_PlotMode );
break;