mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
Update power filter for power symbols placement
This commit is contained in:
parent
50923b7a64
commit
b5df0ad3eb
@ -50,7 +50,7 @@
|
||||
|
||||
wxString PANEL_SYMBOL_CHOOSER::g_symbolSearchString;
|
||||
wxString PANEL_SYMBOL_CHOOSER::g_powerSearchString;
|
||||
|
||||
SCH_BASE_FRAME* PANEL_SYMBOL_CHOOSER::m_frame = nullptr;
|
||||
|
||||
PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER( SCH_BASE_FRAME* aFrame, wxWindow* aParent,
|
||||
const SYMBOL_LIBRARY_FILTER* aFilter,
|
||||
@ -67,13 +67,14 @@ PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER( SCH_BASE_FRAME* aFrame, wxWindow* aP
|
||||
m_fp_preview( nullptr ),
|
||||
m_tree( nullptr ),
|
||||
m_details( nullptr ),
|
||||
m_frame( aFrame ),
|
||||
m_acceptHandler( std::move( aAcceptHandler ) ),
|
||||
m_escapeHandler( std::move( aEscapeHandler ) ),
|
||||
m_showPower( false ),
|
||||
m_allow_field_edits( aAllowFieldEdits ),
|
||||
m_show_footprints( aShowFootprints )
|
||||
{
|
||||
m_frame = aFrame;
|
||||
|
||||
SYMBOL_LIB_TABLE* libs = PROJECT_SCH::SchSymbolLibTable( &m_frame->Prj() );
|
||||
COMMON_SETTINGS::SESSION& session = Pgm().GetCommonSettings()->m_Session;
|
||||
PROJECT_FILE& project = m_frame->Prj().GetProjectFile();
|
||||
@ -110,12 +111,19 @@ PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER( SCH_BASE_FRAME* aFrame, wxWindow* aP
|
||||
|
||||
if( aFilter->GetFilterPowerSymbols() )
|
||||
{
|
||||
// HACK ALERT: when loading symbols we presume that *any* filter is a power symbol
|
||||
// filter. So the filter only needs to return true for libraries.
|
||||
static std::function<bool( LIB_TREE_NODE& )> powerFilter =
|
||||
[]( LIB_TREE_NODE& aNode ) -> bool
|
||||
{
|
||||
return true;
|
||||
if (PANEL_SYMBOL_CHOOSER::m_frame)
|
||||
{
|
||||
LIB_SYMBOL* symbol = PANEL_SYMBOL_CHOOSER::m_frame->GetLibSymbol(aNode.m_LibId);
|
||||
|
||||
if (symbol && symbol->IsPower())
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
adapter->SetFilter( &powerFilter );
|
||||
@ -341,6 +349,8 @@ PANEL_SYMBOL_CHOOSER::~PANEL_SYMBOL_CHOOSER()
|
||||
|
||||
cfg->m_SymChooserPanel.sort_mode = m_tree->GetSortMode();
|
||||
}
|
||||
|
||||
m_frame = nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -167,7 +167,7 @@ protected:
|
||||
LIB_TREE* m_tree;
|
||||
HTML_WINDOW* m_details;
|
||||
|
||||
SCH_BASE_FRAME* m_frame;
|
||||
static SCH_BASE_FRAME* m_frame; // Must be static becuase used in a static function
|
||||
std::function<void()> m_acceptHandler;
|
||||
std::function<void()> m_escapeHandler;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user