51 m_editFrame( aEditFrame ),
59 { wxID_CANCEL,
_(
"Close" ) } } );
61 GetSizer()->SetSizeHints(
this );
71 m_editFrame( aEditFrame ),
79 GetSizer()->SetSizeHints(
this );
118 : EDA_UNITS::MILLIMETRES;
140 GetSizer()->SetSizeHints(
this );
240 wxDirDialog dirDialog(
this,
_(
"Select Output Directory" ),
path );
242 if( dirDialog.ShowModal() == wxID_CANCEL )
245 wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
247 wxMessageDialog dialog(
this,
_(
"Use a relative path?"),
_(
"Plot Output Directory" ),
248 wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
250 if( dialog.ShowModal() == wxID_YES )
254 if( !dirName.MakeRelativeTo( boardFilePath ) )
256 wxMessageBox(
_(
"Cannot make path relative (target volume different from board "
258 _(
"Plot Output Directory" ), wxOK | wxICON_ERROR );
270 m_units =
m_unitsCtrl->GetSelection() == 0 ? EDA_UNITS::INCHES : EDA_UNITS::MILLIMETRES;
276 dirStr.Replace( wxT(
"\\" ), wxT(
"/" ) );
323 std::function<bool( wxString* )> textResolver =
324 [&]( wxString* token ) ->
bool
334 wxFileName outputDir = wxFileName::DirName(
path );
341 msg.Printf(
_(
"Could not write plot files to folder '%s'." ), outputDir.GetPath() );
347 fn.SetPath( outputDir.GetPath() );
358 msg.Printf(
_(
"Failed to create file '%s'." ), fn.GetFullPath() );
364 msg.Printf(
_(
"Front (top side) placement file: '%s'." ), filename );
367 msg.Printf(
_(
"Component count: %d." ), fpcount );
379 msg.Printf(
_(
"Failed to create file '%s'." ), filename );
386 msg.Printf(
_(
"Back (bottom side) placement file: '%s'." ), filename );
389 msg.Printf(
_(
"Component count: %d." ), fpcount );
392 fullcount += fpcount;
393 msg.Printf(
_(
"Full component count: %d." ), fullcount );
411 int bottomSide =
true;
417 topSide, bottomSide, useCSVfmt, useAuxOrigin, negateBottomX );
422 wxMessageBox(
_(
"No footprint for automated placement." ) );
430 std::function<bool( wxString* )> textResolver =
431 [&]( wxString* token ) ->
bool
441 wxFileName outputDir = wxFileName::DirName(
path );
448 msg.Printf(
_(
"Could not write plot files to folder '%s'." ), outputDir.GetPath() );
454 fn.SetPath( outputDir.GetPath() );
458 bottomSide = singleFile;
466 fn.SetExt( wxT(
"csv" ) );
471 bottomSide, useCSVfmt, useAuxOrigin,
475 msg.Printf(
_(
"Failed to create file '%s'." ), fn.GetFullPath() );
482 msg.Printf(
_(
"Placement file: '%s'." ), fn.GetFullPath() );
484 msg.Printf(
_(
"Front (top side) placement file: '%s'." ), fn.GetFullPath() );
488 msg.Printf(
_(
"Component count: %d." ), fpcount );
502 fn.SetPath( outputDir.GetPath() );
509 fn.SetExt( wxT(
"csv" ) );
514 bottomSide, useCSVfmt,
515 useAuxOrigin, negateBottomX );
519 msg.Printf(
_(
"Failed to create file '%s'." ), fn.GetFullPath() );
528 msg.Printf(
_(
"Back (bottom side) placement file: '%s'." ), fn.GetFullPath() );
531 msg.Printf(
_(
"Component count: %d." ), fpcount );
537 fullcount += fpcount;
538 msg.Printf(
_(
"Full component count: %d." ), fullcount );
556 bool aOnlySMD,
bool aNoTHItems,
bool aExcludeDNP,
557 bool aTopSide,
bool aBottomSide,
bool aFormatCSV,
558 bool aUseAuxOrigin,
bool aNegateBottomX )
560 FILE * file =
nullptr;
562 if( !aFullFileName.IsEmpty() )
564 file = wxFopen( aFullFileName, wxT(
"wt" ) );
566 if( file ==
nullptr )
572 aBottomSide, aFormatCSV, aUseAuxOrigin, aNegateBottomX );
583 fputs( data.c_str(), file );
596 wxDirDialog dirDialog(
this,
_(
"Select Output Directory" ), boardFilePath );
598 if( dirDialog.ShowModal() == wxID_CANCEL )
602 fn.SetPath( dirDialog.GetPath() );
603 fn.SetExt( wxT(
"rpt" ) );
612 msg.Printf(
_(
"Footprint report file created:\n'%s'." ), fn.GetFullPath() );
613 wxMessageBox( msg,
_(
"Footprint Report" ), wxICON_INFORMATION );
617 msg.Printf(
_(
"Failed to create file '%s'." ), fn.GetFullPath() );
625 FILE* rptfile = wxFopen( aFullFilename, wxT(
"wt" ) );
627 if( rptfile ==
nullptr )
639 fputs( data.c_str(), rptfile );
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap)
int GeneratePosFile(const TOOL_EVENT &aEvent)
Information pertinent to a Pcbnew printed circuit board.
bool ResolveTextVar(wxString *token, int aDepth) const
const wxString & GetFileName() const
void SetupStandardButtons(std::map< int, wxString > aLabels={})
bool m_useDrillPlaceFileOrigin
bool m_excludeFootprintsWithTh
wxString GetSettingsDialogTitle() const override
void SetConfiguredOutputPath(const wxString &aPath)
Sets the configured output path for the job, this path is always saved to file.
wxString GetConfiguredOutputPath() const
Returns the configured output path for the job.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
DIALOG_PLACE_FILE m_PlaceFile
PCBNEW_SETTINGS * GetPcbNewSettings() const
The main frame for Pcbnew.
int DoGenFootprintsPositionFile(const wxString &aFullFileName, bool aUnitsMM, bool aOnlySMD, bool aNoTHItems, bool aExcludeDNP, bool aTopSide, bool aBottomSide, bool aFormatCSV, bool aUseAuxOrigin, bool aNegateBottomX)
Create an ASCII footprint position file.
void GenFootprintsReport(wxCommandEvent &event)
Call DoGenFootprintsReport to create a footprint report file.
bool DoGenFootprintsReport(const wxString &aFullFilename, bool aUnitsMM)
Create an ASCII footprint report file giving some infos on footprints and board outlines.
Used to create Gerber drill files.
const wxString GetPlaceFileName(const wxString &aFullBaseFilename, PCB_LAYER_ID aLayer) const
int CreatePlaceFile(const wxString &aFullFilename, PCB_LAYER_ID aLayer, bool aIncludeBrdEdges)
Create an pnp gerber file.
The ASCII format of the kicad place file is:
static wxString DecorateFilename(const wxString &aBaseName, bool aFront, bool aBack)
std::string GenPositionData()
build a string filled with the position data
std::string GenReportData()
build a string filled with the pad report data This report does not used options aForceSmdItems,...
The backing store for a PROJECT, in JSON format.
wxString m_PcbLastPath[LAST_PATH_SIZE]
MRU path storage.
virtual PROJECT_FILE & GetProjectFile() const
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Report a string with a given severity.
void MsgPanelSetMinSize(const wxSize &aMinSize)
Set the min size of the area which displays html messages.
void SetFileName(const wxString &aReportFileName)
Set the report full file name to the string.
REPORTER & Reporter()
Return the reporter object that reports to this panel.
const wxString ExpandEnvVarSubstitutions(const wxString &aString, const PROJECT *aProject)
Replace any environment variable & text variable references with their values.
wxString ExpandTextVars(const wxString &aSource, const PROJECT *aProject, int aFlags)
bool EnsureFileDirectoryExists(wxFileName *aTargetFullFileName, const wxString &aBaseFilename, REPORTER *aReporter)
Make aTargetFullFileName absolute and create the path of this file if it doesn't yet exist.
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
This file is part of the common library.
Classes used in place file generation.
static const std::string FootprintPlaceFileExtension
int GetUserUnits()
Return the currently selected user unit value for the interface.
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
wxString output_directory
Definition of file extensions used in Kicad.