KiCad PCB EDA Suite
Loading...
Searching...
No Matches
eeschema.cpp File Reference
#include <algorithm>
#include <api/api_handler_sch.h>
#include <api/api_server.h>
#include <api/api_utils.h>
#include <api/headless_sch_context.h>
#include <core/json_serializers.h>
#include <pgm_base.h>
#include <kiface_base.h>
#include <background_jobs_monitor.h>
#include <cli_progress_reporter.h>
#include <confirm.h>
#include <gestfich.h>
#include <eda_dde.h>
#include "eeschema_jobs_handler.h"
#include "eeschema_helpers.h"
#include <diff_merge/diff_doc_kind.h>
#include <reporter.h>
#include "git/kigit_sch_merge.h"
#include "git/kigit_sym_lib_merge.h"
#include <git/kigit_driver_registry.h>
#include <eeschema_settings.h>
#include <sch_edit_frame.h>
#include <libraries/symbol_library_adapter.h>
#include <symbol_edit_frame.h>
#include <symbol_viewer_frame.h>
#include <symbol_chooser_frame.h>
#include <dialogs/panel_grid_settings.h>
#include <dialogs/panel_simulator_preferences.h>
#include <dialogs/panel_design_block_lib_table.h>
#include <dialogs/panel_sym_lib_table.h>
#include <kiway.h>
#include <project_sch.h>
#include <richio.h>
#include <settings/settings_manager.h>
#include <symbol_editor_settings.h>
#include <sexpr/sexpr.h>
#include <sexpr/sexpr_parser.h>
#include <string_utils.h>
#include <trace_helpers.h>
#include <thread_pool.h>
#include <kiface_ids.h>
#include <widgets/kistatusbar.h>
#include <netlist_exporters/netlist_exporter_kicad.h>
#include <wx/ffile.h>
#include <wx/tokenzr.h>
#include <wildcards_and_files_ext.h>
#include <schematic.h>
#include <connection_graph.h>
#include <panel_template_fieldnames.h>
#include <panel_eeschema_color_settings.h>
#include <panel_sch_data_sources.h>
#include <panel_sym_color_settings.h>
#include <panel_eeschema_editing_options.h>
#include <panel_eeschema_annotation_options.h>
#include <panel_sym_editing_options.h>
#include <dialogs/panel_base_display_options.h>
#include <panel_eeschema_display_options.h>
#include <panel_sym_display_options.h>
#include <sim/simulator_frame.h>
#include <dialogs/panel_toolbar_customization.h>
#include <toolbars_sch_editor.h>
#include <toolbars_symbol_editor.h>
#include <sch_io/sch_io.h>
#include <sch_io/sch_io_mgr.h>
#include <wx/crt.h>

Go to the source code of this file.

Classes

struct  SCH::IFACE
 

Namespaces

namespace  SCH
 

Functions

static int SCH::eeschemaMergeExport (int aKind, const wxString &aAncestor, const wxString &aOurs, const wxString &aTheirs, const wxString &aOutput, bool aInteractive, bool aSingleFile, REPORTER *aReporter)
 
static int SCH::eeschemaOpenDiffDialogExport (int aKind, const wxString &aFileA, const wxString &aFileB, const wxString &aLabelA, const wxString &aLabelB, wxWindow *aParent, REPORTER *aReporter)
 
static std::unique_ptr< SCHEMATICSCH::readSchematicFromFile (const std::string &aFilename)
 
bool SCH::generateSchematicNetlist (const wxString &aFilename, std::string &aNetlist)
 
SCH::IFACE KIFACE_BASE, UNITS_PROVIDER SCH::kiface ("eeschema", KIWAY::FACE_SCH)
 
 IFACE (const char *aName, KIWAY::FACE_T aType)
 
bool OnKifaceStart (PGM_BASE *aProgram, int aCtlBits, KIWAY *aKiway) override
 
void Reset () override
 
void OnKifaceEnd () override
 
wxWindow * CreateKiWindow (wxWindow *aParent, int aClassId, KIWAY *aKiway, int aCtlBits=0) override
 
void * IfaceOrAddress (int aDataId) override
 Return a pointer to the requested object.
 
EESCHEMA_JOBS_HANDLERJobHandler () const
 Accessor for the non-job diff/merge exports (eeschemaMergeExport etc.).
 
void SaveFileAs (const wxString &aProjectBasePath, const wxString &aProjectName, 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 know the internal format of the various files (which may have paths in them that need updating).
 
int HandleJob (JOB *aJob, REPORTER *aReporter, PROGRESS_REPORTER *aProgressReporter) override
 
bool HandleJobConfig (JOB *aJob, wxWindow *aParent) override
 
bool HandleApiOpenDocument (const wxString &aPath, KICAD_API_SERVER *aServer, wxString *aError) override
 
bool HandleApiCloseDocument (const wxString &aSchFileName, KICAD_API_SERVER *aServer, wxString *aError) override
 
void PreloadLibraries (KIWAY *aKiway) override
 
void CancelPreload (bool aBlock=true) override
 
void ProjectChanged () override
 
void closeCurrentDocument (KICAD_API_SERVER *aServer)
 
KIFACE_BASEKiface ()
 Global KIFACE_BASE "get" accessor.
 
KIFACE_API KIFACEKIFACE_GETTER (int *aKIFACEversion, int aKiwayVersion, PGM_BASE *aProgram)
 No name mangling. Each KIFACE (DSO/DLL) will implement this once.
 

Variables

SCH_SHEETg_RootSheet = nullptr
 
std::unique_ptr< EESCHEMA_JOBS_HANDLERm_jobHandler
 
std::shared_ptr< BACKGROUND_JOBm_libraryPreloadBackgroundJob
 
std::future< void > m_libraryPreloadReturn
 
std::atomic_bool m_libraryPreloadInProgress
 
std::atomic_bool m_libraryPreloadAbort
 
KIWAYm_kiway = nullptr
 
SCHEMATICm_openSchematic = nullptr
 
std::shared_ptr< HEADLESS_SCH_CONTEXTm_openContext
 
std::unique_ptr< API_HANDLER_SCHm_openHandler
 

Function Documentation

◆ CancelPreload()

void kiface::CancelPreload ( bool aBlock = true)
override

◆ closeCurrentDocument()

void kiface::closeCurrentDocument ( KICAD_API_SERVER * aServer)
private

◆ CreateKiWindow()

wxWindow * kiface::CreateKiWindow ( wxWindow * aParent,
int aClassId,
KIWAY * aKiway,
int aCtlBits = 0 )
override

Definition at line 14 of file eeschema.cpp.

◆ HandleApiCloseDocument()

bool kiface::HandleApiCloseDocument ( const wxString & aSchFileName,
KICAD_API_SERVER * aServer,
wxString * aError )
override

◆ HandleApiOpenDocument()

bool kiface::HandleApiOpenDocument ( const wxString & aPath,
KICAD_API_SERVER * aServer,
wxString * aError )
override

◆ HandleJob()

int kiface::HandleJob ( JOB * aJob,
REPORTER * aReporter,
PROGRESS_REPORTER * aProgressReporter )
override

◆ HandleJobConfig()

bool kiface::HandleJobConfig ( JOB * aJob,
wxWindow * aParent )
override

◆ IFACE()

kiface::IFACE ( const char * aName,
KIWAY::FACE_T aType )

Definition at line 2 of file eeschema.cpp.

◆ IfaceOrAddress()

void * kiface::IfaceOrAddress ( int aDataId)
override

Return a pointer to the requested object.

The safest way to use this is to retrieve a pointer to a static instance of an interface, similar to how the KIFACE interface is exported. But if you know what you are doing use it to retrieve anything you want.

Parameters
aDataIdidentifies which object you want the address of.
Returns
the object requested and must be cast into the know type.

Definition at line 224 of file eeschema.cpp.

References KIWAY_PLAYER::CreateServer(), and KICAD_SCH_PORT_SERVICE_NUMBER.

◆ JobHandler()

EESCHEMA_JOBS_HANDLER * kiface::JobHandler ( ) const

Accessor for the non-job diff/merge exports (eeschemaMergeExport etc.).

Definition at line 242 of file eeschema.cpp.

◆ Kiface()

KIFACE_BASE & Kiface ( )

Global KIFACE_BASE "get" accessor.

Definition at line 509 of file eeschema.cpp.

References SCH::kiface().

◆ KIFACE_GETTER()

KIFACE_API KIFACE * KIFACE_GETTER ( int * aKIFACEversion,
int aKiwayVersion,
PGM_BASE * aProgram )

No name mangling. Each KIFACE (DSO/DLL) will implement this once.

Definition at line 514 of file eeschema.cpp.

References SCH::kiface(), and KIFACE_API.

◆ OnKifaceEnd()

void kiface::OnKifaceEnd ( )
override

Definition at line 11 of file test_app_main.cpp.

◆ OnKifaceStart()

bool kiface::OnKifaceStart ( PGM_BASE * aProgram,
int aCtlBits,
KIWAY * aKiway )
override

Definition at line 6 of file test_app_main.cpp.

◆ PreloadLibraries()

void kiface::PreloadLibraries ( KIWAY * aKiway)
override

◆ ProjectChanged()

void kiface::ProjectChanged ( )
override

◆ Reset()

◆ SaveFileAs()

void kiface::SaveFileAs ( const wxString & aProjectBasePath,
const wxString & aProjectName,
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 know the internal format of the various files (which may have paths in them that need updating).

References FRAME_SCH_VIEWER, and FRAME_SYMBOL_CHOOSER.

Variable Documentation

◆ g_RootSheet

SCH_SHEET* g_RootSheet = nullptr

Definition at line 94 of file eeschema.cpp.

◆ m_jobHandler

std::unique_ptr<EESCHEMA_JOBS_HANDLER> m_jobHandler
private

Definition at line 271 of file eeschema.cpp.

◆ m_kiway

KIWAY* m_kiway = nullptr
private

Definition at line 279 of file eeschema.cpp.

◆ m_libraryPreloadAbort

std::atomic_bool m_libraryPreloadAbort
private

Definition at line 275 of file eeschema.cpp.

◆ m_libraryPreloadBackgroundJob

std::shared_ptr<BACKGROUND_JOB> m_libraryPreloadBackgroundJob
private

Definition at line 272 of file eeschema.cpp.

◆ m_libraryPreloadInProgress

std::atomic_bool m_libraryPreloadInProgress
private

Definition at line 274 of file eeschema.cpp.

◆ m_libraryPreloadReturn

std::future<void> m_libraryPreloadReturn
private

Definition at line 273 of file eeschema.cpp.

◆ m_openContext

std::shared_ptr<HEADLESS_SCH_CONTEXT> m_openContext
private

Definition at line 281 of file eeschema.cpp.

◆ m_openHandler

std::unique_ptr<API_HANDLER_SCH> m_openHandler
private

Definition at line 282 of file eeschema.cpp.

◆ m_openSchematic

SCHEMATIC* m_openSchematic = nullptr
private

Definition at line 280 of file eeschema.cpp.