64#include <wx/srchctrl.h>
65#include <wx/tokenzr.h>
68using namespace std::placeholders;
73#define PREVIOUS_PART -1
107#define PARENT_STYLE ( KICAD_DEFAULT_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT )
108#define MODAL_STYLE ( KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP )
109#define NONMODAL_STYLE ( KICAD_DEFAULT_DRAWFRAME_STYLE )
114 PCB_BASE_FRAME( aKiway, aParent, aFrameType,
_(
"Footprint Library Browser" ),
115 wxDefaultPosition, wxDefaultSize,
127 m_aboutTitle =
_HKI(
"KiCad Footprint Library Viewer" );
132 m_magneticItems.graphics =
true;
144 m_libListWidth = 200;
147 wxPanel* libPanel =
new wxPanel(
this );
148 wxSizer* libSizer =
new wxBoxSizer( wxVERTICAL );
151 wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
152 m_libFilter->SetDescriptiveText(
_(
"Filter" ) );
153 libSizer->Add( m_libFilter, 0, wxEXPAND, 5 );
156 0,
nullptr, wxLB_HSCROLL | wxNO_BORDER );
157 libSizer->Add( m_libList, 1, wxEXPAND, 5 );
159 libPanel->SetSizer( libSizer );
162 wxPanel* fpPanel =
new wxPanel(
this );
163 wxSizer* fpSizer =
new wxBoxSizer( wxVERTICAL );
166 wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
167 m_fpFilter->SetDescriptiveText(
_(
"Filter" ) );
168 m_fpFilter->SetToolTip(
169 _(
"Filter on footprint name, keywords, description and pad count.\n"
170 "Search terms are separated by spaces. All search terms must match.\n"
171 "A term which is a number will also match against the pad count." ) );
172 fpSizer->Add( m_fpFilter, 0, wxEXPAND, 5 );
177 m_libFilter->SetMinSize( wxSize( -1, GetTextExtent( wxT(
"qb" ) ).y + 10 ) );
178 m_fpFilter->SetMinSize( wxSize( -1, GetTextExtent( wxT(
"qb" ) ).y + 10 ) );
182 0,
nullptr, wxLB_HSCROLL | wxNO_BORDER );
185 fpSizer->Add( m_fpList, 1, wxEXPAND, 5 );
187 fpPanel->SetSizer( fpSizer );
191 m_canvasType = loadCanvasTypeSetting();
194 GetGalDisplayOptions(), m_canvasType );
195 SetCanvas( drawPanel );
197 SetBoard(
new BOARD() );
213 SetScreen(
new PCB_SCREEN( GetPageSizeIU() ) );
215 GetScreen()->m_Center =
true;
217 GetGalDisplayOptions().m_axesEnabled =
true;
232 m_toolManager->RegisterTool(
new ZOOM_TOOL );
237 m_toolManager->InitTools();
238 m_toolManager->InvokeTool(
"pcbnew.InteractiveSelection" );
244 ReCreateOptToolbar();
246 ReCreateLibraryList();
253 if( getCurNickname().size() && getCurFootprintName().size() )
258 id.SetLibItemName( getCurFootprintName() );
260 FOOTPRINT* footprint = loadFootprint(
id );
268 m_auimgr.SetManagedWindow(
this );
271 m_auimgr.AddPane( m_mainToolBar,
EDA_PANE().VToolbar().Name(
"MainToolbar" ).Top().Layer(6) );
272 m_auimgr.AddPane( m_optionsToolBar,
EDA_PANE().VToolbar().Name(
"OptToolbar" ).
Left().Layer(3) );
273 m_auimgr.AddPane( m_messagePanel,
EDA_PANE().Messages().Name(
"MsgPanel" ).Bottom().Layer(6) );
276 m_auimgr.AddPane( libPanel,
EDA_PANE().Palette().Name(
"Libraries" ).
Left().Layer(2)
277 .CaptionVisible(
false ).MinSize( 100, -1 ).BestSize( 200, -1 ) );
278 m_auimgr.AddPane( fpPanel,
EDA_PANE().Palette().Name(
"Footprints" ).
Left().Layer(1)
279 .CaptionVisible(
false ).MinSize( 100, -1 ).BestSize( 300, -1 ) );
281 m_auimgr.AddPane( GetCanvas(),
EDA_PANE().Canvas().Name(
"DrawFrame" ).
Center() );
286 if( m_libListWidth > 0 )
288 wxAuiPaneInfo& treePane = m_auimgr.GetPane(
"Libraries" );
292 treePane.MinSize( m_libListWidth, -1 );
297 treePane.Resizable();
302 treePane.MinSize( 100, -1 );
305 if( m_fpListWidth > 0 )
307 wxAuiPaneInfo& treePane = m_auimgr.GetPane(
"Footprints" );
311 treePane.MinSize( m_fpListWidth, -1 );
316 treePane.Resizable();
321 treePane.MinSize( 100, -1 );
325 GetCanvas()->SetCanFocus(
false );
326 GetCanvas()->GetGAL()->SetAxesEnabled(
true );
337 toolOpt->SetState( wxAUI_BUTTON_STATE_CHECKED );
339 toolOpt->SetState( 0 );
346 ReCreateFootprintList();
362 GetCanvas()->SetEvtHandlerEnabled(
false );
381 std::vector<MSG_PANEL_ITEM> msgItems;
397#define ENABLE( x ) ACTION_CONDITIONS().Enable( x )
398#define CHECK( x ) ACTION_CONDITIONS().Check( x )
466 std::vector<wxString> pinnedMatches;
467 std::vector<wxString> otherMatches;
470 [&](
const wxString& aNickname )
475 pinnedMatches.push_back( aNickname );
479 otherMatches.push_back( aNickname );
485 for(
const wxString& nickname : nicknames )
490 wxStringTokenizer tokenizer(
m_libFilter->GetValue() );
492 while( tokenizer.HasMoreTokens() )
494 const wxString term = tokenizer.GetNextToken().Lower();
497 for(
const wxString& nickname : nicknames )
499 if( matcher.
Find( nickname.Lower() ) )
505 for(
const wxString& nickname : pinnedMatches )
508 for(
const wxString& nickname : otherMatches )
514 if( index == wxNOT_FOUND )
519 wxCommandEvent
dummy;
531 wxCommandEvent
dummy;
550 fp_info_list->ReadFootprintFiles(
Prj().PcbFootprintLibs(), !nickname ?
nullptr : &nickname );
552 if( fp_info_list->GetErrorCount() )
554 fp_info_list->DisplayErrors(
this );
558 if( fp_info_list->GetList().empty() )
562 std::set<wxString> excludes;
566 wxStringTokenizer tokenizer(
m_fpFilter->GetValue() );
568 while( tokenizer.HasMoreTokens() )
570 const wxString filterTerm = tokenizer.GetNextToken().Lower();
573 for(
const std::unique_ptr<FOOTPRINT_INFO>& footprint : fp_info_list->GetList() )
575 std::vector<SEARCH_TERM> searchTerms = footprint->GetSearchTerms();
576 int matched = matcher.
ScoreTerms( searchTerms );
578 if( filterTerm.IsNumber() && wxAtoi( filterTerm ) == (
int)footprint->
GetPadCount() )
582 excludes.insert( footprint->GetFootprintName() );
587 for(
const std::unique_ptr<FOOTPRINT_INFO>& footprint : fp_info_list->GetList() )
589 if( !excludes.count( footprint->GetFootprintName() ) )
590 m_fpList->Append( footprint->GetFootprintName() );
595 if( index == wxNOT_FOUND )
602 wxCommandEvent
dummy;
612 m_fpList->SetSelection( index,
true );
640 if( aEvent.GetKeyCode() == WXK_UP )
647 else if( aEvent.GetKeyCode() == WXK_DOWN )
654 else if( aEvent.GetKeyCode() == WXK_TAB &&
m_libFilter->HasFocus() )
656 if( !aEvent.ShiftDown() )
661 else if( aEvent.GetKeyCode() == WXK_TAB &&
m_fpFilter->HasFocus() )
663 if( aEvent.ShiftDown() )
668 else if( ( aEvent.GetKeyCode() == WXK_RETURN || aEvent.GetKeyCode() == WXK_NUMPAD_ENTER )
671 wxCommandEvent
dummy;
683 int prev = aListBox->GetSelection() - 1;
687 aListBox->SetSelection( prev );
688 aListBox->EnsureVisible( prev );
690 wxCommandEvent
dummy;
702 int next = aListBox->GetSelection() + 1;
704 if(
next < (
int)aListBox->GetCount() )
706 aListBox->SetSelection(
next );
707 aListBox->EnsureVisible(
next );
709 wxCommandEvent
dummy;
775 wxString msg = wxString::Format(
_(
"Could not load footprint '%s' from library '%s'."
807 pad->SetNet( netinfo );
836 else if(
GetBoard()->GetFirstFootprint() )
841 if( pcbframe ==
nullptr )
851 DisplayError(
this,
_(
"Previous footprint placement still in progress." ) );
857 if( blocking_dialog )
858 blocking_dialog->Close(
true );
875 pad->SetNetCode( 0 );
886 commit.
Add( newFootprint );
892 commit.
Push( wxT(
"Insert footprint" ) );
961 wxCHECK_MSG( cfg,
nullptr, wxT(
"config not existing" ) );
972 return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
974 return Pgm().GetSettingsManager().GetColorSettings();
984 if( aEnvVarsChanged )
1015 if( event.GetActive() )
1021 if( libNicknames.size() !=
m_libList->GetCount() )
1025 for(
unsigned ii = 0; ii < libNicknames.size(); ii++ )
1048 aEvent.Enable(
GetBoard()->GetFirstFootprint() !=
nullptr );
1054 const std::string& payload = mail.
GetPayload();
1069 std::vector<std::string> strings =
split( payload,
"\r" );
1072 if( strings.size() >= 3 )
1074 libid.
Parse( strings[0] );
1082 for(
size_t ii = 3; ii < strings.size(); ++ii )
1084 std::vector<std::string> pinData =
split( strings[ii],
"," );
1085 m_comp.
AddNet( pinData[0], pinData[1], pinData[2], pinData[3] );
1105 if( aFootprint && !aFootprint->IsEmpty() )
1111 fpid.
Parse( *aFootprint,
true );
1119 msg.sprintf(
_(
"The current configuration does not include library '%s'. Use "
1120 "Manage Footprint Libraries to edit the configuration." ),
1126 msg.sprintf(
_(
"Library '%s' is not enabled in the current configuration. Use "
1127 "Manage Footprint Libraries to edit the configuration." ),
1168 switch( event.GetId() )
1179 wxString
id = wxString::Format( wxT(
"%i" ), event.GetId() );
1180 wxFAIL_MSG( wxT(
"FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList error: id = " ) +
id );
1200 title =
_(
"[no library selected]" );
1205 title =
_(
"[no library selected]" );
1208 title += wxT(
" \u2014 " ) +
_(
"Footprint Library Browser" );
1223 if( selection != wxNOT_FOUND && selection < (
int)
m_fpList->GetCount() - 1 )
1229 if( selection != wxNOT_FOUND && selection > 0 )
1233 if( selection != wxNOT_FOUND )
1235 m_fpList->SetSelection( selection );
1236 m_fpList->EnsureVisible( selection );
1269 if( toolOpt->GetState() & wxAUI_BUTTON_STATE_CHECKED )
static PGM_BASE * process
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
static TOOL_ACTION toggleGrid
static TOOL_ACTION millimetersUnits
static TOOL_ACTION milsUnits
static TOOL_ACTION toggleBoundingBoxes
static TOOL_ACTION centerContents
static TOOL_ACTION inchesUnits
static TOOL_ACTION toggleCursorStyle
static TOOL_ACTION measureTool
static TOOL_ACTION selectionTool
static TOOL_ACTION zoomFitScreen
static TOOL_ACTION zoomTool
Manage TOOL_ACTION objects.
void SetConditions(const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
Set the conditions the UI elements for activating a specific tool action should use for determining t...
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Revert the commit by restoring the modified items state.
std::shared_ptr< NET_SETTINGS > m_NetSettings
int m_SolderMaskExpansion
Handle actions specific to the board editor in PcbNew.
bool PlacingFootprint() const
Re-entrancy checker for above.
Abstract interface for BOARD_ITEMs capable of storing other items inside.
Information pertinent to a Pcbnew printed circuit board.
const NETINFO_LIST & GetNetInfo() const
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
void SetBoardUse(BOARD_USE aUse)
Set what the board is going to be used for.
FOOTPRINT * GetFirstFootprint() const
Get the first footprint on the board or nullptr.
void SetVisibleAlls()
Change the bit-mask of visible element categories and layers.
void DeleteAllFootprints()
Remove all footprints from the deque and free the memory associated with them.
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Color settings are a bit different than most of the settings objects in that there can be more than o...
COLOR4D GetColor(int aLayer) const
COMMIT & Add(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Notify observers that aItem has been added.
Handle actions that are shared between different applications.
Used to store the component pin name to net name (and pin function) associations stored in a netlist.
const wxString & GetPinFunction() const
const COMPONENT_NET & GetNet(unsigned aIndex) const
void SetValue(const wxString &aValue)
void SetFPID(const LIB_ID &aFPID)
void AddNet(const wxString &aPinName, const wxString &aNetName, const wxString &aPinFunction, const wxString &aPinType)
void SetReference(const wxString &aReference)
virtual void setupUIConditions()
Setup the UI conditions for the various actions and their controls in this frame.
int ScoreTerms(std::vector< SEARCH_TERM > &aWeightedTerms)
bool Find(const wxString &aTerm, int &aMatchersTriggered, int &aPosition)
void OnSelectGrid(wxCommandEvent &event)
Command event handler for selecting grid sizes.
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.
KIGFX::GAL_DISPLAY_OPTIONS & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
virtual void OnSelectZoom(wxCommandEvent &event)
Set the zoom factor when selected by the zoom list box in the main tool bar.
ACTION_TOOLBAR * m_mainToolBar
virtual void UpdateMsgPanel()
Redraw the message panel.
void OnGridSettings(wxCommandEvent &event)
void StopDrawing()
Prevent the GAL canvas from further drawing until it is recreated or StartDrawing() is called.
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
void ForceRefresh()
Force a redraw.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
void SetEventDispatcher(TOOL_DISPATCHER *aEventDispatcher)
Set a dispatcher that processes events and forwards them to tools.
void SetFlags(EDA_ITEM_FLAGS aMask)
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
virtual void SetParent(EDA_ITEM *aParent)
Specialization of the wxAuiPaneInfo class for KiCad panels.
SELECTION_CONDITION BoundingBoxes()
SELECTION_CONDITION CurrentTool(const TOOL_ACTION &aTool)
Create a functor testing if the specified tool is the current active tool in the frame.
SELECTION_CONDITION Units(EDA_UNITS aUnit)
Create a functor that tests if the frame has the specified units.
SELECTION_CONDITION GridVisible()
Create a functor testing if the grid is visible in a frame.
SELECTION_CONDITION FullscreenCursor()
Create a functor testing if the cursor is full screen in a frame.
const FP_LIB_TABLE_ROW * FindRow(const wxString &aNickName, bool aCheckIfEnabled=false)
Return an FP_LIB_TABLE_ROW if aNickName is found in this table or in any chained fall back table frag...
FOOTPRINT * FootprintLoad(const wxString &aNickname, const wxString &aFootprintName, bool aKeepUUID=false)
Load a footprint having aFootprintName from the library given by aNickname.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
virtual const wxString Problem() const
what was the problem?
A color representation with 4 components: red, green, blue, alpha.
void ReadWindowSettings(WINDOW_SETTINGS &aCfg)
Read GAL config options from application-level config.
bool m_axesEnabled
Fullscreen crosshair or small cross.
An interface for classes handling user events controlling the view behavior such as zooming,...
virtual void SetCrossHairCursorPosition(const VECTOR2D &aPosition, bool aWarpView=true)=0
Move the graphic crosshair cursor to the requested position expressed in world coordinates.
VECTOR2D GetCursorPosition() const
Return the current cursor position in world coordinates.
void Clear()
Remove all items from the view.
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
std::string & GetPayload()
Return the payload, which can be any text but it typically self identifying s-expression.
MAIL_T Command()
Returns the MAIL_T associated with this mail.
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
virtual bool ShowModal(wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until t...
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
void DismissModal(bool aRetVal, const wxString &aResult=wxEmptyString)
bool IsModal() const override
Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame...
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
wxWindow * GetBlockingDialog()
Gets the window pointer to the blocking dialog (to send it signals)
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
A logical library item identifier and consists of various portions much like a URI.
int Parse(const UTF8 &aId, bool aFix=false)
Parse LIB_ID with the information from aId.
bool IsValid() const
Check if this LID_ID is valid.
int SetLibNickname(const UTF8 &aNickname)
Override the logical library name portion of the LIB_ID to aNickname.
const UTF8 & GetLibItemName() const
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Hold a record identifying a library accessed by the appropriate plug in object in the LIB_TABLE.
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...
Manage LIB_TABLE_ROW records (rows), and can be searched based on library nickname.
std::vector< wxString > GetLogicalLibs()
Return the logical library names, all of them that are pertinent to a look up done on this LIB_TABLE.
bool HasLibrary(const wxString &aNickname, bool aCheckEnabled=false) const
Test for the existence of aNickname in the library table.
static const wxString GetPinningSymbol()
Handle the data for a net.
void SetNetname(const wxString &aNewName)
Set the long netname to aNetName, the short netname to the last token in the long netname's path,...
double m_FootprintViewerZoom
The last zoom level used (0 for auto)
DISPLAY_OPTIONS m_Display
bool m_FootprintViewerAutoZoomOnSelect
true to use automatic zoom on fp selection
WINDOW_SETTINGS m_FootprintViewer
int m_FootprintViewerFPListWidth
int m_FootprintViewerLibListWidth
Gather all the actions that are shared by tools.
static TOOL_ACTION padDisplayMode
static TOOL_ACTION selectionClear
Clear the current selection.
static TOOL_ACTION graphicsOutlines
Display footprint graphics as outlines.
static TOOL_ACTION textOutlines
Display texts as lines.
static TOOL_ACTION showPadNumbers
static TOOL_ACTION placeFootprint
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
PCBNEW_SETTINGS * GetPcbNewSettings() const
FOOTPRINT * loadFootprint(const LIB_ID &aFootprintId)
Attempts to load aFootprintId from the footprint library table.
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
void PlaceFootprint(FOOTPRINT *aFootprint, bool aRecreateRatsnest=true)
Places aFootprint at the current cursor position and updates footprint coordinates with the new posit...
PCB_DISPLAY_OPTIONS m_displayOptions
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
virtual void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
Handle actions that are shared between different frames in PcbNew.
void UpdateColors()
Update the color settings in the painter and GAL.
virtual KIGFX::PCB_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void DisplayBoard(BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr)
Add all items from the current board to the VIEW, so they can be displayed by GAL.
Group generic conditions for PCB editor states.
SELECTION_CONDITION PadFillDisplay()
Create a functor that tests if the frame fills the pads.
SELECTION_CONDITION GraphicsFillDisplay()
Create a functor that tests if the frame fills graphics items.
SELECTION_CONDITION PadNumbersDisplay()
Create a functor that tests if the pad numbers are displayed.
SELECTION_CONDITION TextFillDisplay()
Create a functor that tests if the frame fills text items.
The main frame for Pcbnew.
The backing store for a PROJECT, in JSON format.
@ PCB_FOOTPRINT_VIEWER_FP_NAME
@ PCB_FOOTPRINT_VIEWER_LIB_NICKNAME
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
virtual PROJECT_FILE & GetProjectFile() const
virtual void SetRString(RSTRING_T aStringId, const wxString &aString)
Store a "retained string", which is any session and project specific string identified in enum RSTRIN...
virtual const wxString & GetRString(RSTRING_T aStringId)
Return a "retained string", which is any session and project specific string identified in enum RSTRI...
wxString GetBaseString(int n) const
int FindString(const wxString &s, bool bCase=false) const override
wxString GetStringSelection() const override
bool SetStringSelection(const wxString &s) override
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
This file is part of the common library.
Declaration of the eda_3d_viewer class.
#define FOOTPRINT_VIEWER_FRAME_NAME_MODAL
#define FOOTPRINT_VIEWER_FRAME_NAME
#define IS_NEW
New item, just created.
Abstract pattern-matching tool and implementations.
GERBVIEW_FRAME::OnZipFileHistory GERBVIEW_FRAME::OnSelectDisplayMode EVT_CHOICE(ID_GBR_AUX_TOOLBAR_PCB_APERATTRIBUTES_CHOICE, GERBVIEW_FRAME::OnSelectHighlightChoice) EVT_UPDATE_UI(ID_TOOLBARH_GERBVIEW_SELECT_ACTIVE_LAYER
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
@ FRAME_FOOTPRINT_VIEWER_MODAL
Message panel definition file.
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
@ ID_ADD_FOOTPRINT_TO_BOARD
@ ID_MODVIEW_FOOTPRINT_LIST
@ ID_FPVIEWER_AUTOZOOM_TOOL
@ ID_MODVIEW_FOOTPRINT_FILTER
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
std::vector< FAB_LAYER_COLOR > dummy
static std::vector< std::string > split(const std::string &aStr, const std::string &aDelim)
Split the input string into a vector of output strings.
std::vector< wxString > pinned_fp_libs
bool m_ShowGlobalRatsnest
Stores the common settings that are saved and loaded for each window / frame.
VECTOR2< double > VECTOR2D
Definition of file extensions used in Kicad.