34#include <wx/snglinst.h>
59#include <python_scripting.h>
84 void Reset()
override;
89 int aCtlBits = 0 )
override
284 void SaveFileAs(
const wxString& aProjectBasePath,
const wxString& aSrcProjectName,
285 const wxString& aNewProjectBasePath,
const wxString& aNewProjectName,
286 const wxString& aSrcFilePath, wxString& aErrors )
override;
318#if defined( BUILD_KIWAY_DLL )
373 if( !fn.FileExists() )
379 fpDialog.ShowModal();
397 wxString msg =
_(
"An error occurred attempting to load the global footprint library "
399 "Please edit this global footprint library table in Preferences "
417 const wxString& aNewProjectBasePath,
const wxString& aNewProjectName,
418 const wxString& aSrcFilePath, wxString& aErrors )
420 wxFileName destFile( aSrcFilePath );
421 wxString destPath = destFile.GetPathWithSep();
422 wxUniChar pathSep = wxFileName::GetPathSeparator();
423 wxString ext = destFile.GetExt();
425 if( destPath.StartsWith( aProjectBasePath + pathSep ) )
426 destPath.Replace( aProjectBasePath, aNewProjectBasePath,
false );
428 wxString srcProjectFootprintLib = pathSep + aSrcProjectName + wxT(
".pretty" ) + pathSep;
429 wxString newProjectFootprintLib = pathSep + aNewProjectName + wxT(
".pretty" ) + pathSep;
431 destPath.Replace( srcProjectFootprintLib, newProjectFootprintLib,
true );
433 destFile.SetPath( destPath );
437 if( destFile.GetName() == aSrcProjectName )
438 destFile.SetName( aNewProjectName );
440 KiCopyFile( aSrcFilePath, destFile.GetFullPath(), aErrors );
444 if( destFile.GetName() == aSrcProjectName )
445 destFile.SetName( aNewProjectName );
447 KiCopyFile( aSrcFilePath, destFile.GetFullPath(), aErrors );
452 KiCopyFile( aSrcFilePath, destFile.GetFullPath(), aErrors );
458 else if( ext == wxT(
"rpt" ) )
464 KiCopyFile( aSrcFilePath, destFile.GetFullPath(), aErrors );
466 else if( destFile.GetName() == wxT(
"fp-lib-table" ) )
471 fpLibTable.
Load( aSrcFilePath );
473 for(
unsigned i = 0; i < fpLibTable.
GetCount(); i++ )
478 uri.Replace( wxT(
"/" ) + aSrcProjectName + wxT(
".pretty" ),
479 wxT(
"/" ) + aNewProjectName + wxT(
".pretty" ) );
484 fpLibTable.
Save( destFile.GetFullPath() );
490 if( !aErrors.empty() )
491 aErrors += wxT(
"\n" );
493 msg.Printf(
_(
"Cannot copy file '%s'." ), destFile.GetFullPath() );
499 wxFAIL_MSG( wxT(
"Unexpected filetype for Pcbnew::SaveFileAs()" ) );
constexpr EDA_IU_SCALE pcbIUScale
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Information pertinent to a Pcbnew printed circuit board.
The base frame for deriving all KiCad main window classes.
static bool LoadGlobalTable(FP_LIB_TABLE &aTable)
Load the global footprint library table into aTable.
static wxString GetGlobalTableFileName()
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
virtual const wxString What() const
A composite of Problem() and Where()
An simple container class that lets us dispatch output jobs to kifaces.
void InitSettings(APP_SETTINGS_BASE *aSettings)
void end_common()
Common things to do for a top program module, during OnKifaceEnd();.
APP_SETTINGS_BASE * KifaceSettings() const
bool start_common(int aCtlBits)
Common things to do for a top program module, during OnKifaceStart().
int m_start_flags
flags provided in OnKifaceStart()
bool IsSingle() const
Is this KIFACE running under single_top?
void SetKiway(wxWindow *aDest, KIWAY *aKiway)
It is only used for debugging, since "this" is not a wxWindow*.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
virtual void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged)
Call CommonSettingsChanged() on all KIWAY_PLAYERs.
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
FACE_T
Known KIFACE implementations.
Hold a record identifying a library accessed by the appropriate plug in object in the LIB_TABLE.
void SetFullURI(const wxString &aFullURI)
Change the full URI for the library.
const wxString GetFullURI(bool aSubstituted=false) const
Return the full location specifying URI for the LIB, either in original UI form or in environment var...
LIB_TABLE_ROW & At(unsigned aIndex)
Get the 'n'th LIB_TABLE_ROW object.
void Load(const wxString &aFileName)
Load the library table using the path defined by aFileName aFallBackTable.
unsigned GetCount() const
Get the number of rows contained in the table.
void Save(const wxString &aFileName) const
Write this library table to aFileName in s-expression form.
The main frame for Pcbnew.
Container for data for KiCad programs.
virtual SETTINGS_MANAGER & GetSettingsManager() const
T * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
T * RegisterSettings(T *aSettings, bool aLoadNow=true)
Takes ownership of the pointer passed in.
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
This file is part of the common library.
PGM_BASE * PgmOrNull()
similar to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from...
#define KICAD_PCB_PORT_SERVICE_NUMBER
< Pcbnew listens on this port for commands from Eeschema
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
@ FRAME_FOOTPRINT_VIEWER_MODAL
@ PANEL_FP_DISPLAY_OPTIONS
@ DIALOG_PCB_LIBRARY_TABLE
@ FRAME_FOOTPRINT_PREVIEW
@ PANEL_PCB_ACTION_PLUGINS
@ PANEL_FP_DEFAULT_VALUES
@ PANEL_3DV_DISPLAY_OPTIONS
@ PANEL_PCB_DISPLAY_OPTIONS
void KiCopyFile(const wxString &aSrcPath, const wxString &aDestPath, wxString &aErrors)
const std::string LegacyPcbFileExtension
const std::string BackupFileSuffix
const std::string FootprintAssignmentFileExtension
const std::string KiCadFootprintFileExtension
const std::string KiCadPcbFileExtension
const std::string LegacyFootprintLibPathExtension
@ KIFACE_SCRIPTING_LEGACY
@ KIFACE_FOOTPRINT_LIST
Return a pointer to the global instance of FOOTPRINT_LIST from pcbnew.
@ KIFACE_GLOBAL_FOOTPRINT_TABLE
Return the global FP_LIB_TABLE.
@ KIFACE_NEW_FOOTPRINT_TABLE
Return a new FP_LIB_TABLE with the global table installed as a fallback.
#define KFCTL_CLI
Running as CLI app.
This file contains miscellaneous commonly used macros and functions.
PCB::IFACE KIFACE_BASE, UNITS_PROVIDER kiface("pcbnew", KIWAY::FACE_PCB)
void InvokePcbLibTableEditor(KIWAY *aKiway, wxWindow *aCaller)
Function InvokePcbLibTableEditor shows the modal DIALOG_FP_LIB_TABLE for purposes of editing the glob...
PyObject * PyInit__pcbnew(void)
MY_API(KIFACE *) KIFACE_GETTER(int *aKIFACEversion
static PGM_BASE * process
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
FP_LIB_TABLE GFootprintTable
The global footprint library table.
FOOTPRINT_LIST_IMPL GFootprintList
The global footprint info table.
void ScriptingSetPcbEditFrame(PCB_EDIT_FRAME *aPcbEditFrame)
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
bool OnKifaceStart(PGM_BASE *aProgram, int aCtlBits) override
Typically start_common() is called from here.
Implement a participant in the KIWAY alchemy.
bool OnKifaceStart(PGM_BASE *aProgram, int aCtlBits) override
Typically start_common() is called from here.
void SaveFileAs(const wxString &aProjectBasePath, const wxString &aSrcProjectName, const wxString &aNewProjectBasePath, const wxString &aNewProjectName, const wxString &aSrcFilePath, wxString &aErrors) override
Saving a file under a different name is delegated to the various KIFACEs because the project doesn't ...
void * IfaceOrAddress(int aDataId) override
Return a pointer to the requested object.
void Reset() override
Reloads global state.
wxWindow * CreateKiWindow(wxWindow *aParent, int aClassId, KIWAY *aKiway, int aCtlBits=0) override
Create a wxWindow for the current project.
IFACE(const char *aName, KIWAY::FACE_T aType)
bool loadGlobalLibTable()
std::unique_ptr< PCBNEW_JOBS_HANDLER > m_jobHandler
void OnKifaceEnd() override
Called just once just before the DSO is to be unloaded.
int HandleJob(JOB *aJob) override
Definition of file extensions used in Kicad.