ADDED: optional PDF metadata from AUTHOR and SUBJECT variables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17289
This commit is contained in:
parent
34ec57958d
commit
e30b6398b7
|
@ -34,6 +34,7 @@ JOB_EXPORT_SCH_PLOT::JOB_EXPORT_SCH_PLOT( bool aIsCli, SCH_PLOT_FORMAT aPlotForm
|
||||||
m_HPGLPenSize( 1.0 ),
|
m_HPGLPenSize( 1.0 ),
|
||||||
m_HPGLPaperSizeSelect( JOB_HPGL_PAGE_SIZE::DEFAULT ),
|
m_HPGLPaperSizeSelect( JOB_HPGL_PAGE_SIZE::DEFAULT ),
|
||||||
m_PDFPropertyPopups( true ),
|
m_PDFPropertyPopups( true ),
|
||||||
|
m_PDFMetadata( true ),
|
||||||
m_theme(),
|
m_theme(),
|
||||||
m_outputDirectory(),
|
m_outputDirectory(),
|
||||||
m_outputFile(),
|
m_outputFile(),
|
||||||
|
|
|
@ -91,6 +91,7 @@ public:
|
||||||
double m_HPGLPenSize; // for HPGL format only: pen size
|
double m_HPGLPenSize; // for HPGL format only: pen size
|
||||||
JOB_HPGL_PAGE_SIZE m_HPGLPaperSizeSelect;
|
JOB_HPGL_PAGE_SIZE m_HPGLPaperSizeSelect;
|
||||||
bool m_PDFPropertyPopups;
|
bool m_PDFPropertyPopups;
|
||||||
|
bool m_PDFMetadata;
|
||||||
wxString m_theme;
|
wxString m_theme;
|
||||||
|
|
||||||
wxString m_outputDirectory;
|
wxString m_outputDirectory;
|
||||||
|
|
|
@ -24,6 +24,7 @@ outputformat
|
||||||
pcbplotparams
|
pcbplotparams
|
||||||
pdf_back_fp_property_popups
|
pdf_back_fp_property_popups
|
||||||
pdf_front_fp_property_popups
|
pdf_front_fp_property_popups
|
||||||
|
pdf_metadata
|
||||||
plotframeref
|
plotframeref
|
||||||
plotfptext
|
plotfptext
|
||||||
plotinvisibletext
|
plotinvisibletext
|
||||||
|
|
|
@ -1463,10 +1463,14 @@ function ShM(aEntries) {
|
||||||
"/Producer (KiCad PDF)\n"
|
"/Producer (KiCad PDF)\n"
|
||||||
"/CreationDate (%s)\n"
|
"/CreationDate (%s)\n"
|
||||||
"/Creator %s\n"
|
"/Creator %s\n"
|
||||||
"/Title %s\n",
|
"/Title %s\n"
|
||||||
|
"/Author %s\n"
|
||||||
|
"/Subject %s\n",
|
||||||
date_buf,
|
date_buf,
|
||||||
encodeStringForPlotter( m_creator ).c_str(),
|
encodeStringForPlotter( m_creator ).c_str(),
|
||||||
encodeStringForPlotter( m_title ).c_str() );
|
encodeStringForPlotter( m_title ).c_str(),
|
||||||
|
encodeStringForPlotter( m_author ).c_str(),
|
||||||
|
encodeStringForPlotter( m_subject ).c_str() );
|
||||||
|
|
||||||
fputs( ">>\n", m_outputFile );
|
fputs( ">>\n", m_outputFile );
|
||||||
closePdfObject();
|
closePdfObject();
|
||||||
|
|
|
@ -111,6 +111,7 @@ void DIALOG_PLOT_SCHEMATIC::initDlg()
|
||||||
setOpenFileAfterPlot( cfg->m_PlotPanel.open_file_after_plot );
|
setOpenFileAfterPlot( cfg->m_PlotPanel.open_file_after_plot );
|
||||||
|
|
||||||
m_plotPDFPropertyPopups->SetValue( cfg->m_PlotPanel.pdf_property_popups );
|
m_plotPDFPropertyPopups->SetValue( cfg->m_PlotPanel.pdf_property_popups );
|
||||||
|
m_plotPDFMetadata->SetValue( cfg->m_PlotPanel.pdf_metadata );
|
||||||
|
|
||||||
// HPGL plot origin and unit system configuration
|
// HPGL plot origin and unit system configuration
|
||||||
m_plotOriginOpt->SetSelection( cfg->m_PlotPanel.hpgl_origin );
|
m_plotOriginOpt->SetSelection( cfg->m_PlotPanel.hpgl_origin );
|
||||||
|
@ -269,6 +270,7 @@ void DIALOG_PLOT_SCHEMATIC::OnUpdateUI( wxUpdateUIEvent& event )
|
||||||
|
|
||||||
m_openFileAfterPlot->Enable( fmt == PLOT_FORMAT::PDF );
|
m_openFileAfterPlot->Enable( fmt == PLOT_FORMAT::PDF );
|
||||||
m_plotPDFPropertyPopups->Enable( fmt == PLOT_FORMAT::PDF );
|
m_plotPDFPropertyPopups->Enable( fmt == PLOT_FORMAT::PDF );
|
||||||
|
m_plotPDFMetadata->Enable( fmt == PLOT_FORMAT::PDF );
|
||||||
|
|
||||||
m_paperSizeOption->Set( paperSizes );
|
m_paperSizeOption->Set( paperSizes );
|
||||||
m_paperSizeOption->SetSelection( selection );
|
m_paperSizeOption->SetSelection( selection );
|
||||||
|
@ -308,6 +310,7 @@ void DIALOG_PLOT_SCHEMATIC::getPlotOptions( RENDER_SETTINGS* aSettings )
|
||||||
cfg->m_PlotPanel.hpgl_origin = m_plotOriginOpt->GetSelection();
|
cfg->m_PlotPanel.hpgl_origin = m_plotOriginOpt->GetSelection();
|
||||||
cfg->m_PlotPanel.hpgl_paper_size = static_cast<int>( m_HPGLPaperSizeSelect );
|
cfg->m_PlotPanel.hpgl_paper_size = static_cast<int>( m_HPGLPaperSizeSelect );
|
||||||
cfg->m_PlotPanel.pdf_property_popups = m_plotPDFPropertyPopups->GetValue();
|
cfg->m_PlotPanel.pdf_property_popups = m_plotPDFPropertyPopups->GetValue();
|
||||||
|
cfg->m_PlotPanel.pdf_metadata = m_plotPDFMetadata->GetValue();
|
||||||
cfg->m_PlotPanel.open_file_after_plot = getOpenFileAfterPlot();
|
cfg->m_PlotPanel.open_file_after_plot = getOpenFileAfterPlot();
|
||||||
|
|
||||||
// HPGL Pen Size is stored in mm in config
|
// HPGL Pen Size is stored in mm in config
|
||||||
|
@ -382,6 +385,7 @@ void DIALOG_PLOT_SCHEMATIC::plotSchematic( bool aPlotAll )
|
||||||
plotSettings.m_useBackgroundColor = m_plotBackgroundColor->GetValue();
|
plotSettings.m_useBackgroundColor = m_plotBackgroundColor->GetValue();
|
||||||
plotSettings.m_theme = colors->GetFilename();
|
plotSettings.m_theme = colors->GetFilename();
|
||||||
plotSettings.m_PDFPropertyPopups = m_plotPDFPropertyPopups->GetValue();
|
plotSettings.m_PDFPropertyPopups = m_plotPDFPropertyPopups->GetValue();
|
||||||
|
plotSettings.m_PDFMetadata = m_plotPDFMetadata->GetValue();
|
||||||
plotSettings.m_HPGLPaperSizeSelect = static_cast<HPGL_PAGE_SIZE>( m_HPGLPaperSizeSelect );
|
plotSettings.m_HPGLPaperSizeSelect = static_cast<HPGL_PAGE_SIZE>( m_HPGLPaperSizeSelect );
|
||||||
plotSettings.m_HPGLPlotOrigin =
|
plotSettings.m_HPGLPlotOrigin =
|
||||||
static_cast<HPGL_PLOT_ORIGIN_AND_UNITS>( m_plotOriginOpt->GetSelection() );
|
static_cast<HPGL_PLOT_ORIGIN_AND_UNITS>( m_plotOriginOpt->GetSelection() );
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb)
|
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
@ -116,7 +116,7 @@ DIALOG_PLOT_SCHEMATIC_BASE::DIALOG_PLOT_SCHEMATIC_BASE( wxWindow* parent, wxWind
|
||||||
sbOptions->Add( gbSizer1, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
sbOptions->Add( gbSizer1, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||||
|
|
||||||
|
|
||||||
m_optionsSizer->Add( sbOptions, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
m_optionsSizer->Add( sbOptions, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
wxBoxSizer* bOptionsRight;
|
wxBoxSizer* bOptionsRight;
|
||||||
bOptionsRight = new wxBoxSizer( wxVERTICAL );
|
bOptionsRight = new wxBoxSizer( wxVERTICAL );
|
||||||
|
@ -164,6 +164,11 @@ DIALOG_PLOT_SCHEMATIC_BASE::DIALOG_PLOT_SCHEMATIC_BASE( wxWindow* parent, wxWind
|
||||||
m_plotPDFPropertyPopups->SetValue(true);
|
m_plotPDFPropertyPopups->SetValue(true);
|
||||||
sbSizer4->Add( m_plotPDFPropertyPopups, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
sbSizer4->Add( m_plotPDFPropertyPopups, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
m_plotPDFMetadata = new wxCheckBox( sbSizer4->GetStaticBox(), wxID_ANY, _("Generate metadata from AUTHOR && SUBJECT variables"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_plotPDFMetadata->SetToolTip( _("Generate PDF document properties from AUTHOR and SUBJECT text variables") );
|
||||||
|
|
||||||
|
sbSizer4->Add( m_plotPDFMetadata, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
|
||||||
bOptionsRight->Add( sbSizer4, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
bOptionsRight->Add( sbSizer4, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb)
|
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
@ -67,6 +67,7 @@ class DIALOG_PLOT_SCHEMATIC_BASE : public DIALOG_SHIM
|
||||||
wxTextCtrl* m_penWidthCtrl;
|
wxTextCtrl* m_penWidthCtrl;
|
||||||
wxStaticText* m_penWidthUnits;
|
wxStaticText* m_penWidthUnits;
|
||||||
wxCheckBox* m_plotPDFPropertyPopups;
|
wxCheckBox* m_plotPDFPropertyPopups;
|
||||||
|
wxCheckBox* m_plotPDFMetadata;
|
||||||
wxStaticBoxSizer* m_otherOptions;
|
wxStaticBoxSizer* m_otherOptions;
|
||||||
wxCheckBox* m_openFileAfterPlot;
|
wxCheckBox* m_openFileAfterPlot;
|
||||||
WX_HTML_REPORT_PANEL* m_MessagesBox;
|
WX_HTML_REPORT_PANEL* m_MessagesBox;
|
||||||
|
|
|
@ -213,6 +213,7 @@ int EESCHEMA_JOBS_HANDLER::JobExportPlot( JOB* aJob )
|
||||||
settings.m_HPGLPenSize = aPlotJob->m_HPGLPenSize;
|
settings.m_HPGLPenSize = aPlotJob->m_HPGLPenSize;
|
||||||
settings.m_HPGLPlotOrigin = hpglOrigin;
|
settings.m_HPGLPlotOrigin = hpglOrigin;
|
||||||
settings.m_PDFPropertyPopups = aPlotJob->m_PDFPropertyPopups;
|
settings.m_PDFPropertyPopups = aPlotJob->m_PDFPropertyPopups;
|
||||||
|
settings.m_PDFMetadata = aPlotJob->m_PDFMetadata;
|
||||||
settings.m_outputDirectory = aPlotJob->m_outputDirectory;
|
settings.m_outputDirectory = aPlotJob->m_outputDirectory;
|
||||||
settings.m_outputFile = aPlotJob->m_outputFile;
|
settings.m_outputFile = aPlotJob->m_outputFile;
|
||||||
settings.m_pageSizeSelect = pageSizeSelect;
|
settings.m_pageSizeSelect = pageSizeSelect;
|
||||||
|
|
|
@ -497,6 +497,9 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
|
||||||
m_params.emplace_back( new PARAM<bool>( "plot.pdf_property_popups",
|
m_params.emplace_back( new PARAM<bool>( "plot.pdf_property_popups",
|
||||||
&m_PlotPanel.pdf_property_popups, true ) );
|
&m_PlotPanel.pdf_property_popups, true ) );
|
||||||
|
|
||||||
|
m_params.emplace_back( new PARAM<bool>( "plot.pdf_metadata",
|
||||||
|
&m_PlotPanel.pdf_metadata, true ) );
|
||||||
|
|
||||||
m_params.emplace_back( new PARAM<int>( "plot.hpgl_paper_size",
|
m_params.emplace_back( new PARAM<int>( "plot.hpgl_paper_size",
|
||||||
&m_PlotPanel.hpgl_paper_size, 0 ) );
|
&m_PlotPanel.hpgl_paper_size, 0 ) );
|
||||||
|
|
||||||
|
|
|
@ -250,6 +250,7 @@ public:
|
||||||
double hpgl_pen_size;
|
double hpgl_pen_size;
|
||||||
int hpgl_origin;
|
int hpgl_origin;
|
||||||
bool pdf_property_popups;
|
bool pdf_property_popups;
|
||||||
|
bool pdf_metadata;
|
||||||
bool open_file_after_plot;
|
bool open_file_after_plot;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,19 @@ void SCH_PLOTTER::createPDFFile( const SCH_PLOT_SETTINGS& aPlotSettings,
|
||||||
SCH_SCREEN* screen = m_schematic->CurrentSheet().LastScreen();
|
SCH_SCREEN* screen = m_schematic->CurrentSheet().LastScreen();
|
||||||
wxString sheetName = sheetList[i].Last()->GetFields()[SHEETNAME].GetShownText( false );
|
wxString sheetName = sheetList[i].Last()->GetFields()[SHEETNAME].GetShownText( false );
|
||||||
|
|
||||||
|
if( aPlotSettings.m_PDFMetadata )
|
||||||
|
{
|
||||||
|
msg = wxS( "AUTHOR" );
|
||||||
|
|
||||||
|
if( m_schematic->ResolveTextVar( &sheetList[i], &msg, 0 ) )
|
||||||
|
plotter->SetAuthor( msg );
|
||||||
|
|
||||||
|
msg = wxS( "SUBJECT" );
|
||||||
|
|
||||||
|
if( m_schematic->ResolveTextVar( &sheetList[i], &msg, 0 ) )
|
||||||
|
plotter->SetSubject( msg );
|
||||||
|
}
|
||||||
|
|
||||||
if( i == 0 )
|
if( i == 0 )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -88,6 +88,7 @@ struct SCH_PLOT_SETTINGS
|
||||||
double m_HPGLPenSize; // for HPGL format only: pen size
|
double m_HPGLPenSize; // for HPGL format only: pen size
|
||||||
HPGL_PAGE_SIZE m_HPGLPaperSizeSelect;
|
HPGL_PAGE_SIZE m_HPGLPaperSizeSelect;
|
||||||
bool m_PDFPropertyPopups;
|
bool m_PDFPropertyPopups;
|
||||||
|
bool m_PDFMetadata;
|
||||||
wxString m_theme;
|
wxString m_theme;
|
||||||
|
|
||||||
wxString m_outputDirectory;
|
wxString m_outputDirectory;
|
||||||
|
@ -104,6 +105,7 @@ struct SCH_PLOT_SETTINGS
|
||||||
m_HPGLPenSize( 1.0 ),
|
m_HPGLPenSize( 1.0 ),
|
||||||
m_HPGLPaperSizeSelect( HPGL_PAGE_SIZE::DEFAULT ),
|
m_HPGLPaperSizeSelect( HPGL_PAGE_SIZE::DEFAULT ),
|
||||||
m_PDFPropertyPopups( false ),
|
m_PDFPropertyPopups( false ),
|
||||||
|
m_PDFMetadata( false ),
|
||||||
m_theme(),
|
m_theme(),
|
||||||
m_outputDirectory(),
|
m_outputDirectory(),
|
||||||
m_outputFile(),
|
m_outputFile(),
|
||||||
|
|
|
@ -151,8 +151,9 @@ public:
|
||||||
virtual void SetDash( int aLineWidth, LINE_STYLE aLineStyle ) = 0;
|
virtual void SetDash( int aLineWidth, LINE_STYLE aLineStyle ) = 0;
|
||||||
|
|
||||||
virtual void SetCreator( const wxString& aCreator ) { m_creator = aCreator; }
|
virtual void SetCreator( const wxString& aCreator ) { m_creator = aCreator; }
|
||||||
|
|
||||||
virtual void SetTitle( const wxString& aTitle ) { m_title = aTitle; }
|
virtual void SetTitle( const wxString& aTitle ) { m_title = aTitle; }
|
||||||
|
virtual void SetAuthor( const wxString& aAuthor ) { m_author = aAuthor; }
|
||||||
|
virtual void SetSubject( const wxString& aSubject ) { m_subject = aSubject; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a line to the list of free lines to print at the beginning of the file.
|
* Add a line to the list of free lines to print at the beginning of the file.
|
||||||
|
@ -669,6 +670,8 @@ protected: // variables used in most of plotters:
|
||||||
wxString m_creator;
|
wxString m_creator;
|
||||||
wxString m_filename;
|
wxString m_filename;
|
||||||
wxString m_title;
|
wxString m_title;
|
||||||
|
wxString m_author;
|
||||||
|
wxString m_subject;
|
||||||
PAGE_INFO m_pageInfo;
|
PAGE_INFO m_pageInfo;
|
||||||
VECTOR2I m_paperSize; // Paper size in IU - not in mils
|
VECTOR2I m_paperSize; // Paper size in IU - not in mils
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#define ARG_HPGL_ORIGIN "--origin"
|
#define ARG_HPGL_ORIGIN "--origin"
|
||||||
#define ARG_PAGES "--pages"
|
#define ARG_PAGES "--pages"
|
||||||
#define ARG_EXCLUDE_PDF_PROPERTY_POPUPS "--exclude-pdf-property-popups"
|
#define ARG_EXCLUDE_PDF_PROPERTY_POPUPS "--exclude-pdf-property-popups"
|
||||||
|
#define ARG_EXCLUDE_PDF_METADATA "--exclude-pdf-metadata"
|
||||||
|
|
||||||
const JOB_HPGL_PLOT_ORIGIN_AND_UNITS hpgl_origin_ops[4] = {
|
const JOB_HPGL_PLOT_ORIGIN_AND_UNITS hpgl_origin_ops[4] = {
|
||||||
JOB_HPGL_PLOT_ORIGIN_AND_UNITS::PLOTTER_BOT_LEFT,
|
JOB_HPGL_PLOT_ORIGIN_AND_UNITS::PLOTTER_BOT_LEFT,
|
||||||
|
@ -79,6 +80,10 @@ CLI::SCH_EXPORT_PLOT_COMMAND::SCH_EXPORT_PLOT_COMMAND( const std::string& aName,
|
||||||
m_argParser.add_argument( ARG_EXCLUDE_PDF_PROPERTY_POPUPS )
|
m_argParser.add_argument( ARG_EXCLUDE_PDF_PROPERTY_POPUPS )
|
||||||
.help( UTF8STDSTR( _( "Do not generate property popups in PDF" ) ) )
|
.help( UTF8STDSTR( _( "Do not generate property popups in PDF" ) ) )
|
||||||
.flag();
|
.flag();
|
||||||
|
|
||||||
|
m_argParser.add_argument( ARG_EXCLUDE_PDF_METADATA )
|
||||||
|
.help( UTF8STDSTR( _( "Do not generate PDF metadata from AUTHOR and SUBJECT variables" ) ) )
|
||||||
|
.flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aPlotFormat == SCH_PLOT_FORMAT::PDF
|
if( aPlotFormat == SCH_PLOT_FORMAT::PDF
|
||||||
|
@ -178,6 +183,7 @@ int CLI::SCH_EXPORT_PLOT_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
else if( m_plotFormat == SCH_PLOT_FORMAT::PDF )
|
else if( m_plotFormat == SCH_PLOT_FORMAT::PDF )
|
||||||
{
|
{
|
||||||
plotJob->m_PDFPropertyPopups = !m_argParser.get<bool>( ARG_EXCLUDE_PDF_PROPERTY_POPUPS );
|
plotJob->m_PDFPropertyPopups = !m_argParser.get<bool>( ARG_EXCLUDE_PDF_PROPERTY_POPUPS );
|
||||||
|
plotJob->m_PDFMetadata = !m_argParser.get<bool>( ARG_EXCLUDE_PDF_METADATA );
|
||||||
}
|
}
|
||||||
|
|
||||||
int exitCode = aKiway.ProcessJob( KIWAY::FACE_SCH, plotJob.get() );
|
int exitCode = aKiway.ProcessJob( KIWAY::FACE_SCH, plotJob.get() );
|
||||||
|
|
|
@ -367,6 +367,7 @@ void DIALOG_PLOT::init_Dialog()
|
||||||
m_PDFColorChoice->SetSelection( m_plotOpts.GetBlackAndWhite() ? 1 : 0 );
|
m_PDFColorChoice->SetSelection( m_plotOpts.GetBlackAndWhite() ? 1 : 0 );
|
||||||
m_frontFPPropertyPopups->SetValue( m_plotOpts.m_PDFFrontFPPropertyPopups );
|
m_frontFPPropertyPopups->SetValue( m_plotOpts.m_PDFFrontFPPropertyPopups );
|
||||||
m_backFPPropertyPopups->SetValue( m_plotOpts.m_PDFBackFPPropertyPopups );
|
m_backFPPropertyPopups->SetValue( m_plotOpts.m_PDFBackFPPropertyPopups );
|
||||||
|
m_pdfMetadata->SetValue( m_plotOpts.m_PDFMetadata );
|
||||||
|
|
||||||
// Initialize a few other parameters, which can also be modified
|
// Initialize a few other parameters, which can also be modified
|
||||||
// from the drill dialog
|
// from the drill dialog
|
||||||
|
@ -930,6 +931,7 @@ void DIALOG_PLOT::applyPlotSettings()
|
||||||
tempOptions.SetBlackAndWhite( !!m_PDFColorChoice->GetSelection() );
|
tempOptions.SetBlackAndWhite( !!m_PDFColorChoice->GetSelection() );
|
||||||
tempOptions.m_PDFFrontFPPropertyPopups = m_frontFPPropertyPopups->GetValue();
|
tempOptions.m_PDFFrontFPPropertyPopups = m_frontFPPropertyPopups->GetValue();
|
||||||
tempOptions.m_PDFBackFPPropertyPopups = m_backFPPropertyPopups->GetValue();
|
tempOptions.m_PDFBackFPPropertyPopups = m_backFPPropertyPopups->GetValue();
|
||||||
|
tempOptions.m_PDFMetadata = m_pdfMetadata->GetValue();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1235,6 +1237,21 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
||||||
|
|
||||||
if( plotter )
|
if( plotter )
|
||||||
{
|
{
|
||||||
|
plotter->SetTitle( ExpandTextVars( board->GetTitleBlock().GetTitle(), &textResolver ) );
|
||||||
|
|
||||||
|
if( m_plotOpts.m_PDFMetadata )
|
||||||
|
{
|
||||||
|
msg = wxS( "AUTHOR" );
|
||||||
|
|
||||||
|
if( board->ResolveTextVar( &msg, 0 ) )
|
||||||
|
plotter->SetAuthor( msg );
|
||||||
|
|
||||||
|
msg = wxS( "SUBJECT" );
|
||||||
|
|
||||||
|
if( board->ResolveTextVar( &msg, 0 ) )
|
||||||
|
plotter->SetSubject( msg );
|
||||||
|
}
|
||||||
|
|
||||||
PlotBoardLayers( board, plotter, plotSequence, m_plotOpts );
|
PlotBoardLayers( board, plotter, plotSequence, m_plotOpts );
|
||||||
PlotInteractiveLayer( board, plotter, m_plotOpts );
|
PlotInteractiveLayer( board, plotter, m_plotOpts );
|
||||||
plotter->EndPlot();
|
plotter->EndPlot();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
@ -413,6 +413,11 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr
|
||||||
m_backFPPropertyPopups = new wxCheckBox( m_PDFOptionsSizer->GetStaticBox(), wxID_ANY, _("Generate property popups for back footprints"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_backFPPropertyPopups = new wxCheckBox( m_PDFOptionsSizer->GetStaticBox(), wxID_ANY, _("Generate property popups for back footprints"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
gbSizer4->Add( m_backFPPropertyPopups, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxRIGHT|wxLEFT, 5 );
|
gbSizer4->Add( m_backFPPropertyPopups, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
m_pdfMetadata = new wxCheckBox( m_PDFOptionsSizer->GetStaticBox(), wxID_ANY, _("Generate metadata from AUTHOR && SUBJECT variables"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_pdfMetadata->SetToolTip( _("Generate PDF document properties from AUTHOR and SUBJECT text variables") );
|
||||||
|
|
||||||
|
gbSizer4->Add( m_pdfMetadata, wxGBPosition( 3, 0 ), wxGBSpan( 1, 2 ), wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
|
||||||
m_PDFOptionsSizer->Add( gbSizer4, 1, wxEXPAND|wxBOTTOM, 5 );
|
m_PDFOptionsSizer->Add( gbSizer4, 1, wxEXPAND|wxBOTTOM, 5 );
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
@ -124,6 +124,7 @@ class DIALOG_PLOT_BASE : public DIALOG_SHIM
|
||||||
wxChoice* m_PDFColorChoice;
|
wxChoice* m_PDFColorChoice;
|
||||||
wxCheckBox* m_frontFPPropertyPopups;
|
wxCheckBox* m_frontFPPropertyPopups;
|
||||||
wxCheckBox* m_backFPPropertyPopups;
|
wxCheckBox* m_backFPPropertyPopups;
|
||||||
|
wxCheckBox* m_pdfMetadata;
|
||||||
WX_HTML_REPORT_PANEL* m_messagesPanel;
|
WX_HTML_REPORT_PANEL* m_messagesPanel;
|
||||||
wxBoxSizer* m_sizerButtons;
|
wxBoxSizer* m_sizerButtons;
|
||||||
wxButton* m_buttonDRC;
|
wxButton* m_buttonDRC;
|
||||||
|
|
|
@ -136,6 +136,7 @@ PCB_PLOT_PARAMS::PCB_PLOT_PARAMS()
|
||||||
|
|
||||||
m_PDFFrontFPPropertyPopups = true;
|
m_PDFFrontFPPropertyPopups = true;
|
||||||
m_PDFBackFPPropertyPopups = true;
|
m_PDFBackFPPropertyPopups = true;
|
||||||
|
m_PDFMetadata = true;
|
||||||
|
|
||||||
// This parameter controls if the NPTH pads will be plotted or not
|
// This parameter controls if the NPTH pads will be plotted or not
|
||||||
// it is a "local" parameter
|
// it is a "local" parameter
|
||||||
|
@ -223,6 +224,9 @@ void PCB_PLOT_PARAMS::Format( OUTPUTFORMATTER* aFormatter,
|
||||||
KICAD_FORMAT::FormatBool( aFormatter, aNestLevel + 1,
|
KICAD_FORMAT::FormatBool( aFormatter, aNestLevel + 1,
|
||||||
getTokenName( T_pdf_back_fp_property_popups ),
|
getTokenName( T_pdf_back_fp_property_popups ),
|
||||||
m_PDFBackFPPropertyPopups );
|
m_PDFBackFPPropertyPopups );
|
||||||
|
KICAD_FORMAT::FormatBool( aFormatter, aNestLevel + 1,
|
||||||
|
getTokenName( T_pdf_metadata ),
|
||||||
|
m_PDFMetadata );
|
||||||
|
|
||||||
// DXF options
|
// DXF options
|
||||||
KICAD_FORMAT::FormatBool( aFormatter, aNestLevel + 1, getTokenName( T_dxfpolygonmode ),
|
KICAD_FORMAT::FormatBool( aFormatter, aNestLevel + 1, getTokenName( T_dxfpolygonmode ),
|
||||||
|
@ -334,6 +338,9 @@ bool PCB_PLOT_PARAMS::IsSameAs( const PCB_PLOT_PARAMS &aPcbPlotParams ) const
|
||||||
if( m_PDFBackFPPropertyPopups != aPcbPlotParams.m_PDFBackFPPropertyPopups )
|
if( m_PDFBackFPPropertyPopups != aPcbPlotParams.m_PDFBackFPPropertyPopups )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if( m_PDFMetadata != aPcbPlotParams.m_PDFMetadata )
|
||||||
|
return false;
|
||||||
|
|
||||||
if( m_A4Output != aPcbPlotParams.m_A4Output )
|
if( m_A4Output != aPcbPlotParams.m_A4Output )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -577,6 +584,10 @@ void PCB_PLOT_PARAMS_PARSER::Parse( PCB_PLOT_PARAMS* aPcbPlotParams )
|
||||||
aPcbPlotParams->m_PDFFrontFPPropertyPopups = parseBool();
|
aPcbPlotParams->m_PDFFrontFPPropertyPopups = parseBool();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case T_pdf_metadata:
|
||||||
|
aPcbPlotParams->m_PDFMetadata = parseBool();
|
||||||
|
break;
|
||||||
|
|
||||||
case T_dxfpolygonmode:
|
case T_dxfpolygonmode:
|
||||||
aPcbPlotParams->m_DXFPolygonMode = parseBool();
|
aPcbPlotParams->m_DXFPolygonMode = parseBool();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -192,6 +192,7 @@ public:
|
||||||
public:
|
public:
|
||||||
bool m_PDFFrontFPPropertyPopups; ///< Generate PDF property popup menus for footprints
|
bool m_PDFFrontFPPropertyPopups; ///< Generate PDF property popup menus for footprints
|
||||||
bool m_PDFBackFPPropertyPopups; ///< on front and/or back of board
|
bool m_PDFBackFPPropertyPopups; ///< on front and/or back of board
|
||||||
|
bool m_PDFMetadata; ///< Generate PDF metadata for SUBJECT and AUTHOR
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class PCB_PLOT_PARAMS_PARSER;
|
friend class PCB_PLOT_PARAMS_PARSER;
|
||||||
|
|
Loading…
Reference in New Issue