KiCad PCB EDA Suite
KIFACE_I Class Referenceabstract

Class KIFACE_I is a KIFACE (I)mplementation, with some features useful for DSOs which implement a KIFACE. More...

#include <kiface_i.h>

Inheritance diagram for KIFACE_I:
KIFACE CV::IFACE GERBV::IFACE PCB::IFACE PGE::IFACE SCH::IFACE

Public Member Functions

VTBL_ENTRY bool OnKifaceStart (PGM_BASE *aProgram, int aCtlBits) override=0
 Function OnKifaceStart is called just once shortly after the DSO is loaded. More...
 
VTBL_ENTRY void OnKifaceEnd () override
 Function OnKifaceEnd is called just once just before the DSO is to be unloaded. More...
 
VTBL_ENTRY wxWindow * CreateWindow (wxWindow *aParent, int aClassId, KIWAY *aKIWAY, int aCtlBits=0) override=0
 Function CreateWindow creates a wxWindow for the current project. More...
 
VTBL_ENTRY void * IfaceOrAddress (int aDataId) override=0
 Function IfaceOrAddress returns a pointer to the requested object. More...
 
 KIFACE_I (const char *aKifaceName, KIWAY::FACE_T aId)
 Constructor. More...
 
const wxString Name ()
 
wxConfigBase * KifaceSettings () const
 
int StartFlags () const
 Function StartFlags returns whatever was passed as aCtlBits to OnKifaceStart() More...
 
bool IsSingle () const
 Function IsSingle is this KIFACE_I running under single_top? More...
 
const wxString & GetHelpFileName () const
 Function GetHelpFileName returns just the basename portion of the current help file. More...
 
wxFileHistory & GetFileHistory ()
 
SEARCH_STACKKifaceSearch ()
 Only for DSO specific 'non-library' files. More...
 

Protected Member Functions

bool start_common (int aCtlBits)
 Common things to do for a top program module, during OnKifaceStart(). More...
 
void end_common ()
 Common things to do for a top program module, during OnKifaceEnd();. More...
 

Private Attributes

KIWAY::FACE_T m_id
 
BIN_MOD m_bm
 
int m_start_flags
 flags provided in OnKifaceStart() More...
 

Detailed Description

Class KIFACE_I is a KIFACE (I)mplementation, with some features useful for DSOs which implement a KIFACE.

It is abstract, a few functions must be implemented in derivations.

Definition at line 37 of file kiface_i.h.

Constructor & Destructor Documentation

KIFACE_I::KIFACE_I ( const char *  aKifaceName,
KIWAY::FACE_T  aId 
)
inline

Constructor.

Parameters
aKifaceNameshould point to a C string in permanent storage, which contains the name of the DSO. Examples: "eeschema", "pcbnew", etc. This controls the name of the wxConfigBase established in m_bm, so it should be lowercase.
aIdis the type of DSO ( FACE_SCH, FACE_PCB, FACE_CVPCB, FACE_GERBVIEW, FACE_PL_EDITOR, FACE_PCB_CALCULATOR, FACE_BMP2CMP)

Definition at line 78 of file kiface_i.h.

78  :
79  m_id( aId ),
80  m_bm( aKifaceName ),
81  m_start_flags( 0 )
82  {
83  }
KIWAY::FACE_T m_id
Definition: kiface_i.h:130
BIN_MOD m_bm
Definition: kiface_i.h:132
int m_start_flags
flags provided in OnKifaceStart()
Definition: kiface_i.h:134

Member Function Documentation

VTBL_ENTRY wxWindow* KIFACE_I::CreateWindow ( wxWindow *  aParent,
int  aClassId,
KIWAY aKIWAY,
int  aCtlBits = 0 
)
overridepure virtual

Function CreateWindow creates a wxWindow for the current project.

The caller must cast the return value into the known type.

Parameters
aParentmay be NULL, or is otherwise the parent to connect under. If NULL then caller may want to connect the returned wxWindow into some hierarchy after this function returns.
aClassIdidentifies which wxFrame or wxDialog to retrieve, using a value known to the implementing KIFACE.
aKIWAYtells the window which KIWAY (and PROJECT) it is a participant in.
aCtlBitsconsists of bit flags from the set of KFCTL_* #defines above.
Returns
wxWindow* - and if not NULL, should be cast into the known type using and old school cast. dynamic_cast is problematic since it needs typeinfo probably not contained in the caller's link image.

Implements KIFACE.

Implemented in PCB::IFACE, SCH::IFACE, CV::IFACE, GERBV::IFACE, and PGE::IFACE.

void KIFACE_I::end_common ( )
protected

Common things to do for a top program module, during OnKifaceEnd();.

Definition at line 104 of file kiface_i.cpp.

References BIN_MOD::End(), and m_bm.

Referenced by OnKifaceEnd(), PGE::IFACE::OnKifaceEnd(), GERBV::IFACE::OnKifaceEnd(), and CV::IFACE::OnKifaceEnd().

105 {
106  m_bm.End();
107 }
BIN_MOD m_bm
Definition: kiface_i.h:132
void End()
Definition: bin_mod.cpp:53
wxFileHistory& KIFACE_I::GetFileHistory ( )
inline
const wxString& KIFACE_I::GetHelpFileName ( ) const
inline

Function GetHelpFileName returns just the basename portion of the current help file.

Definition at line 121 of file kiface_i.h.

References m_bm, and BIN_MOD::m_help_file.

Referenced by EDA_BASE_FRAME::help_name().

121 { return m_bm.m_help_file; }
BIN_MOD m_bm
Definition: kiface_i.h:132
wxString m_help_file
Definition: bin_mod.h:59
VTBL_ENTRY void* KIFACE_I::IfaceOrAddress ( int  aDataId)
overridepure virtual

Function IfaceOrAddress returns 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. Segfaults are your fault.

Parameters
aDataIdidentifies which object you want the address of, and consists of choices known in advance by the implementing KIFACE.
Returns
void* - and must be cast into the known type.

Implements KIFACE.

Implemented in PCB::IFACE, SCH::IFACE, CV::IFACE, GERBV::IFACE, and PGE::IFACE.

bool KIFACE_I::IsSingle ( ) const
inline

Function IsSingle is this KIFACE_I running under single_top?

Definition at line 115 of file kiface_i.h.

References KFCTL_STANDALONE, and m_start_flags.

Referenced by SCH::IFACE::CreateWindow(), PCB::IFACE::CreateWindow(), SCH_EDIT_FRAME::OnOpenPcbnew(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), and SCH_EDIT_FRAME::SendMessageToPCBNEW().

115 { return m_start_flags & KFCTL_STANDALONE; }
int m_start_flags
flags provided in OnKifaceStart()
Definition: kiface_i.h:134
#define KFCTL_STANDALONE
Am running as a standalone Top.
Definition: kiway.h:158
SEARCH_STACK& KIFACE_I::KifaceSearch ( )
inline

Only for DSO specific 'non-library' files.

(The library search path is in the PROJECT class.)

Definition at line 127 of file kiface_i.h.

References m_bm, and BIN_MOD::m_search.

Referenced by CVPCB_MAINFRAME::buildEquivalenceList(), FP_LIB_TABLE::LoadGlobalTable(), SYMBOL_LIB_TABLE::LoadGlobalTable(), WORKSHEET_LAYOUT::MakeFullFileName(), WORKSHEET_LAYOUT::MakeShortFileName(), and EDA_BASE_FRAME::sys_search().

127 { return m_bm.m_search; }
BIN_MOD m_bm
Definition: kiface_i.h:132
SEARCH_STACK m_search
Definition: bin_mod.h:61
wxConfigBase* KIFACE_I::KifaceSettings ( ) const
inline

Definition at line 103 of file kiface_i.h.

References m_bm, and BIN_MOD::m_config.

Referenced by AUTOPLACER::AUTOPLACER(), PCB_EDIT_FRAME::Begin_Zone(), EDA_BASE_FRAME::config(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_DXF_IMPORT::DIALOG_DXF_IMPORT(), DIALOG_EESCHEMA_CONFIG::DIALOG_EESCHEMA_CONFIG(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_PRINT_FOR_MODEDIT::DIALOG_PRINT_FOR_MODEDIT(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SVG_PRINT::DIALOG_SVG_PRINT(), EDA_DRAW_PANEL::EDA_DRAW_PANEL(), FOOTPRINT_EDIT_FRAME::Export_Module(), FOOTPRINT_EDIT_FRAME::Import_Module(), DIALOG_GEN_MODULE_POSITION::initDialog(), PCB_BASE_FRAME::LoadCanvasTypeSetting(), NETLIST_DIALOG::NETLIST_DIALOG(), LAYERS_MAP_DIALOG::OnGetSetup(), SCH::IFACE::OnKifaceEnd(), SCH::IFACE::OnKifaceStart(), DIALOG_NON_COPPER_ZONES_EDITOR::OnOkClick(), LAYERS_MAP_DIALOG::OnStoreSetup(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::SaveCanvasTypeSetting(), and EDA_DRAW_PANEL::~EDA_DRAW_PANEL().

103 { return m_bm.m_config; }
BIN_MOD m_bm
Definition: kiface_i.h:132
wxConfigBase * m_config
maybe from $HOME/.${m_name}
Definition: bin_mod.h:57
const wxString KIFACE_I::Name ( )
inline

Definition at line 101 of file kiface_i.h.

References m_bm, and BIN_MOD::m_name.

101 { return wxString::FromUTF8( m_bm.m_name ); }
BIN_MOD m_bm
Definition: kiface_i.h:132
const char * m_name
name of this binary module, static C string.
Definition: bin_mod.h:55
VTBL_ENTRY void KIFACE_I::OnKifaceEnd ( )
inlineoverridevirtual

Function OnKifaceEnd is called just once just before the DSO is to be unloaded.

It is called before static C++ destructors are called. A default implementation is supplied.

Implements KIFACE.

Definition at line 53 of file kiface_i.h.

References end_common().

54  {
55  // overload this if you want, end_common() may be handy.
56  end_common();
57  }
void end_common()
Common things to do for a top program module, during OnKifaceEnd();.
Definition: kiface_i.cpp:104
VTBL_ENTRY bool KIFACE_I::OnKifaceStart ( PGM_BASE aProgram,
int  aCtlBits 
)
overridepure virtual

Function OnKifaceStart is called just once shortly after the DSO is loaded.

It is the second function called, immediately after the KIFACE_GETTER(). However before either of those, static C++ constructors are called. The DSO implementation should do process level initialization here, not project specific since there will be multiple projects open eventually.

Parameters
aProgramis the process block: PGM_BASE*
aCtlBitsconsists of bit flags from the set of KFCTL_* #defines above.
Returns
bool - true if DSO initialized OK, false if not. When returning false, the loader may optionally decide to terminate the process or not, but will not put out any UI because that is the duty of this function to say why it is returning false. Never return false without having reported to the UI why.

Implements KIFACE.

Implemented in PCB::IFACE, SCH::IFACE, CV::IFACE, GERBV::IFACE, and PGE::IFACE.

bool KIFACE_I::start_common ( int  aCtlBits)
protected

Common things to do for a top program module, during OnKifaceStart().

Definition at line 94 of file kiface_i.cpp.

References BIN_MOD::Init(), m_bm, m_id, BIN_MOD::m_search, m_start_flags, and setSearchPaths().

Referenced by PGE::IFACE::OnKifaceStart(), GERBV::IFACE::OnKifaceStart(), CV::IFACE::OnKifaceStart(), SCH::IFACE::OnKifaceStart(), and PCB::IFACE::OnKifaceStart().

95 {
96  m_start_flags = aCtlBits;
97  m_bm.Init();
99 
100  return true;
101 }
KIWAY::FACE_T m_id
Definition: kiface_i.h:130
void Init()
Definition: bin_mod.cpp:36
BIN_MOD m_bm
Definition: kiface_i.h:132
int m_start_flags
flags provided in OnKifaceStart()
Definition: kiface_i.h:134
SEARCH_STACK m_search
Definition: bin_mod.h:61
static void setSearchPaths(SEARCH_STACK *aDst, KIWAY::FACE_T aId)
Initialize aDst SEARCH_STACK with KIFACE (DSO) specific settings.
Definition: kiface_i.cpp:38
int KIFACE_I::StartFlags ( ) const
inline

Function StartFlags returns whatever was passed as aCtlBits to OnKifaceStart()

Definition at line 109 of file kiface_i.h.

References m_start_flags.

109 { return m_start_flags; }
int m_start_flags
flags provided in OnKifaceStart()
Definition: kiface_i.h:134

Member Data Documentation

BIN_MOD KIFACE_I::m_bm
private
KIWAY::FACE_T KIFACE_I::m_id
private

Definition at line 130 of file kiface_i.h.

Referenced by start_common().

int KIFACE_I::m_start_flags
private

flags provided in OnKifaceStart()

Definition at line 134 of file kiface_i.h.

Referenced by IsSingle(), start_common(), and StartFlags().


The documentation for this class was generated from the following files: