Add group-by-suffix display option in net inspector

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2469
This commit is contained in:
Oleg Endo 2020-11-04 02:49:19 +00:00 committed by Jon Evans
parent fb8ec84db0
commit a238209f3f
10 changed files with 2050 additions and 469 deletions

View File

@ -709,9 +709,9 @@ void EDA_3D_VIEWER::SynchroniseColoursWithBoard()
wxColour color;
if( brd )
{
BOARD_STACKUP stckp = brd->GetDesignSettings().GetStackupDescriptor();
const BOARD_STACKUP& stckp = brd->GetDesignSettings().GetStackupDescriptor();
for( BOARD_STACKUP_ITEM* stckpItem : stckp.GetList() )
for( const BOARD_STACKUP_ITEM* stckpItem : stckp.GetList() )
{
wxString colorName = stckpItem->GetColor();

View File

@ -40,11 +40,14 @@ wxString const& EDA_PATTERN_MATCH_SUBSTR::GetPattern() const
}
int EDA_PATTERN_MATCH_SUBSTR::Find( const wxString& aCandidate ) const
EDA_PATTERN_MATCH::FIND_RESULT EDA_PATTERN_MATCH_SUBSTR::Find( const wxString& aCandidate ) const
{
int loc = aCandidate.Find( m_pattern );
return ( loc == wxNOT_FOUND ) ? EDA_PATTERN_NOT_FOUND : loc;
if( loc == wxNOT_FOUND )
return {};
else
return { loc, static_cast<int>( m_pattern.size() ) };
}
@ -87,7 +90,7 @@ wxString const& EDA_PATTERN_MATCH_REGEX::GetPattern() const
}
int EDA_PATTERN_MATCH_REGEX::Find( const wxString& aCandidate ) const
EDA_PATTERN_MATCH::FIND_RESULT EDA_PATTERN_MATCH_REGEX::Find( const wxString& aCandidate ) const
{
if( m_regex.IsValid() )
{
@ -95,17 +98,23 @@ int EDA_PATTERN_MATCH_REGEX::Find( const wxString& aCandidate ) const
{
size_t start, len;
m_regex.GetMatch( &start, &len, 0 );
return ( start > INT_MAX ) ? INT_MAX : start;
return { static_cast<int>( std::min( start, static_cast<size_t>( INT_MAX ) ) ),
static_cast<int>( std::min( len, static_cast<size_t>( INT_MAX ) ) ) };
}
else
{
return EDA_PATTERN_NOT_FOUND;
return {};
}
}
else
{
int loc = aCandidate.Find( m_pattern );
return ( loc == wxNOT_FOUND ) ? EDA_PATTERN_NOT_FOUND : loc;
if( loc == wxNOT_FOUND )
return {};
else
return { loc, static_cast<int>( m_pattern.size() ) };
}
}
@ -152,7 +161,7 @@ wxString const& EDA_PATTERN_MATCH_WILDCARD::GetPattern() const
}
int EDA_PATTERN_MATCH_WILDCARD::Find( const wxString& aCandidate ) const
EDA_PATTERN_MATCH::FIND_RESULT EDA_PATTERN_MATCH_WILDCARD::Find( const wxString& aCandidate ) const
{
return EDA_PATTERN_MATCH_REGEX::Find( aCandidate );
}
@ -253,7 +262,8 @@ wxString const& EDA_PATTERN_MATCH_RELATIONAL::GetPattern() const
}
int EDA_PATTERN_MATCH_RELATIONAL::Find( const wxString& aCandidate ) const
EDA_PATTERN_MATCH::FIND_RESULT EDA_PATTERN_MATCH_RELATIONAL::Find(
const wxString& aCandidate ) const
{
wxStringTokenizer tokenizer( aCandidate );
size_t lastpos = 0;
@ -266,13 +276,13 @@ int EDA_PATTERN_MATCH_RELATIONAL::Find( const wxString& aCandidate ) const
if( found_delta != EDA_PATTERN_NOT_FOUND )
{
size_t found = (size_t) found_delta + lastpos;
return ( found > INT_MAX ) ? INT_MAX : (int) found;
return { static_cast<int>( std::min( found, static_cast<size_t>( INT_MAX ) ) ), 0 };
}
lastpos = tokenizer.GetPosition();
}
return EDA_PATTERN_NOT_FOUND;
return {};
}
@ -357,15 +367,15 @@ bool EDA_COMBINED_MATCHER::Find( const wxString& aTerm, int& aMatchersTriggered,
for( auto const& matcher : m_matchers )
{
int local_find = matcher->Find( aTerm );
EDA_PATTERN_MATCH::FIND_RESULT local_find = matcher->Find( aTerm );
if ( local_find != EDA_PATTERN_NOT_FOUND )
if( local_find )
{
aMatchersTriggered += 1;
if ( local_find < aPosition || aPosition == EDA_PATTERN_NOT_FOUND )
if( local_find.start < aPosition || aPosition == EDA_PATTERN_NOT_FOUND )
{
aPosition = local_find;
aPosition = local_find.start;
}
}
}

View File

@ -144,7 +144,7 @@ bool FOOTPRINT_FILTER_IT::FootprintFilterMatch( FOOTPRINT_INFO& aItem )
name += aItem.GetFootprintName().Lower();
if( each_filter->Find( name ) != EDA_PATTERN_NOT_FOUND )
if( each_filter->Find( name ) )
{
return true;
}

View File

@ -44,6 +44,22 @@ static const int EDA_PATTERN_NOT_FOUND = wxNOT_FOUND;
class EDA_PATTERN_MATCH
{
public:
struct FIND_RESULT
{
int start = EDA_PATTERN_NOT_FOUND;
int length = 0;
bool valid() const
{
return start != EDA_PATTERN_NOT_FOUND;
}
explicit operator bool() const
{
return valid();
}
};
virtual ~EDA_PATTERN_MATCH() {}
/**
@ -58,10 +74,11 @@ public:
virtual wxString const& GetPattern() const = 0;
/**
* Return the location of a match iff a given candidate string matches the set pattern.
* Otherwise, return EDA_PATTERN_NOT_FOUND.
* Return the location and possibly length of a match iff a given candidate
* string matches the set pattern.
* Otherwise, return an invalid FIND_RESULT.
*/
virtual int Find( const wxString& aCandidate ) const = 0;
virtual FIND_RESULT Find( const wxString& aCandidate ) const = 0;
};
@ -73,7 +90,7 @@ class EDA_PATTERN_MATCH_SUBSTR : public EDA_PATTERN_MATCH
public:
virtual bool SetPattern( const wxString& aPattern ) override;
virtual wxString const& GetPattern() const override;
virtual int Find( const wxString& aCandidate ) const override;
virtual FIND_RESULT Find( const wxString& aCandidate ) const override;
protected:
wxString m_pattern;
@ -88,7 +105,7 @@ class EDA_PATTERN_MATCH_REGEX : public EDA_PATTERN_MATCH
public:
virtual bool SetPattern( const wxString& aPattern ) override;
virtual wxString const& GetPattern() const override;
virtual int Find( const wxString& aCandidate ) const override;
virtual FIND_RESULT Find( const wxString& aCandidate ) const override;
protected:
wxString m_pattern;
@ -101,7 +118,7 @@ class EDA_PATTERN_MATCH_WILDCARD : public EDA_PATTERN_MATCH_REGEX
public:
virtual bool SetPattern( const wxString& aPattern ) override;
virtual wxString const& GetPattern() const override;
virtual int Find( const wxString& aCandidate ) const override;
virtual FIND_RESULT Find( const wxString& aCandidate ) const override;
protected:
wxString m_wildcard_pattern;
@ -133,7 +150,7 @@ class EDA_PATTERN_MATCH_RELATIONAL : public EDA_PATTERN_MATCH
public:
virtual bool SetPattern( const wxString& aPattern ) override;
virtual wxString const& GetPattern() const override;
virtual int Find( const wxString& aCandidate ) const override;
virtual FIND_RESULT Find( const wxString& aCandidate ) const override;
int FindOne( const wxString& aCandidate ) const;
protected:

View File

@ -248,7 +248,7 @@ public:
~BOARD_STACKUP() { RemoveAll(); }
std::vector<BOARD_STACKUP_ITEM*>& GetList() { return m_list; }
const std::vector<BOARD_STACKUP_ITEM*>& GetList() const { return m_list; }
/// @return a reference to the layer aIndex, or nullptr if not exists
BOARD_STACKUP_ITEM* GetStackupLayer( int aIndex );

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,14 @@
#pragma once
#include <core/optional.h>
#include <dialog_select_net_from_list_base.h>
#include <eda_pattern_match.h>
class PCB_EDIT_FRAME;
class NETINFO_ITEM;
class BOARD;
class CN_ITEM;
class EDA_PATTERN_MATCH;
class DIALOG_SELECT_NET_FROM_LIST : public DIALOG_SELECT_NET_FROM_LIST_BASE, public BOARD_LISTENER
{
@ -40,6 +41,16 @@ public:
{
wxString filter_string;
bool show_zero_pad_nets = true;
bool group_by = false;
int group_by_kind = 0;
wxString group_by_text;
int sorting_column = -1;
bool sort_order_asc = true;
std::vector<int> column_order;
unsigned int const_via_length = 0;
int via_length_type = 0;
};
DIALOG_SELECT_NET_FROM_LIST( PCB_EDIT_FRAME* aParent, const SETTINGS& aSettings );
@ -47,16 +58,6 @@ public:
SETTINGS Settings() const;
// returns true if a net was selected, and its name in aName
bool GetNetName( wxString& aName ) const;
/**
* Visually highlights a net in the list view.
* @param aNet is the net item to be highlighted. Nullptr will unhighlight
* any currently highlighted net.
*/
void HighlightNet( NETINFO_ITEM* aNet );
virtual void OnBoardItemAdded( BOARD& aBoard, BOARD_ITEM* aBoardItem ) override;
virtual void OnBoardItemRemoved( BOARD& aBoard, BOARD_ITEM* aBoardItem ) override;
virtual void OnBoardNetSettingsChanged( BOARD& aBoard ) override;
@ -64,41 +65,47 @@ public:
virtual void OnBoardHighlightNetChanged( BOARD& aBoard ) override;
private:
struct COLUMN_ID;
static const COLUMN_ID COLUMN_NET;
static const COLUMN_ID COLUMN_NAME;
static const COLUMN_ID COLUMN_PAD_COUNT;
static const COLUMN_ID COLUMN_VIA_COUNT;
static const COLUMN_ID COLUMN_BOARD_LENGTH;
static const COLUMN_ID COLUMN_CHIP_LENGTH;
static const COLUMN_ID COLUMN_TOTAL_LENGTH;
struct COLUMN_DESC;
class LIST_ITEM;
struct LIST_ITEM_NETCODE_CMP_LESS;
struct ROW_DESC;
using LIST_ITEM_ITER = std::vector<std::unique_ptr<LIST_ITEM>>::iterator;
using LIST_ITEM_CONST_ITER = std::vector<std::unique_ptr<LIST_ITEM>>::const_iterator;
ROW_DESC findRow( NETINFO_ITEM* aNet );
ROW_DESC findRow( int aNetCode );
void deleteRow( const ROW_DESC& aRow );
void setValue( const ROW_DESC& aRow, const COLUMN_ID& aCol, wxString aVal );
static const COLUMN_DESC COLUMN_NET;
static const COLUMN_DESC COLUMN_NAME;
static const COLUMN_DESC COLUMN_PAD_COUNT;
static const COLUMN_DESC COLUMN_VIA_COUNT;
static const COLUMN_DESC COLUMN_VIA_LENGTH;
static const COLUMN_DESC COLUMN_BOARD_LENGTH;
static const COLUMN_DESC COLUMN_CHIP_LENGTH;
static const COLUMN_DESC COLUMN_TOTAL_LENGTH;
wxString formatNetCode( const NETINFO_ITEM* aNet ) const;
wxString formatNetName( const NETINFO_ITEM* aNet ) const;
wxString formatCount( unsigned int aValue ) const;
wxString formatLength( int aValue ) const;
wxString formatLength( int64_t aValue ) const;
std::vector<CN_ITEM*> relevantConnectivityItems() const;
bool netFilterMatches( NETINFO_ITEM* aNet ) const;
void updateNet( NETINFO_ITEM* aNet );
void highlightNetOnBoard( NETINFO_ITEM* aNet ) const;
unsigned int calculateViaLength( const TRACK* ) const;
void onGroupsFirstChanged( wxCommandEvent& event ) override;
void onSelChanged( wxDataViewEvent& event ) override;
void onSelChanged();
void onSortingChanged( wxDataViewEvent& event ) override;
void onFilterChange( wxCommandEvent& event ) override;
void onViaLengthChange( wxCommandEvent& event ) override;
void onListSize( wxSizeEvent& event ) override;
void onAddNet( wxCommandEvent& event ) override;
void onRenameNet( wxCommandEvent& event ) override;
void onDeleteNet( wxCommandEvent& event ) override;
void onReport( wxCommandEvent& event ) override;
std::unique_ptr<LIST_ITEM> buildNewItem(
NETINFO_ITEM* aNet, unsigned int aPadCount, const std::vector<CN_ITEM*>& aCNItems );
void buildNetsList();
void adjustListColumns();
@ -106,24 +113,22 @@ private:
void onUnitsChanged( wxCommandEvent& event );
void onBoardChanged( wxCommandEvent& event );
// in addition to the displayed list data, we also keep some auxiliary
// data for each list item in order to speed up update of the displayed list.
struct LIST_ITEM;
struct LIST_ITEM_NET_CMP_LESS;
void updateDisplayedRowValues( const OPT<LIST_ITEM_ITER>& aRow );
// primary vector, sorted by rows
std::vector<LIST_ITEM> m_list_items;
// special zero-netcode item. unconnected pads etc might use different
// (dummy) NETINFO_ITEM. redirect all of them to this item, which we get
// from the board object in buildNetsList.
NETINFO_ITEM* m_zero_netitem;
// we can't keep pointers to the elements in the primary vector because
// the underlyng storage might change when elements are added or removed.
// keep indices instead and look the them up in m_list_items.
std::vector<unsigned int> m_list_items_by_net;
std::vector<std::unique_ptr<EDA_PATTERN_MATCH>> m_netFilter;
std::vector<std::unique_ptr<EDA_PATTERN_MATCH>> m_groupFilter;
EDA_PATTERN_MATCH_WILDCARD m_netFilter;
wxString m_selection;
bool m_wasSelected;
BOARD* m_brd;
PCB_EDIT_FRAME* m_frame;
bool m_in_build_nets_list = false;
bool m_filter_change_no_rebuild = false;
unsigned int m_constViaLengthValue = 0;
class DATA_MODEL;
wxObjectDataPtr<DATA_MODEL> m_data_model;
};

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// C++ code generated with wxFormBuilder (version 3.9.0 Oct 9 2020)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -34,12 +34,63 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::DIALOG_SELECT_NET_FROM_LIST_BASE( wxWindow* pa
bTopSizer->Add( m_cbShowZeroPad, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( bTopSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerMain->Add( bTopSizer, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_netsList = new wxDataViewListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_HORIZ_RULES|wxDV_VERT_RULES );
wxBoxSizer* bMidSizer;
bMidSizer = new wxBoxSizer( wxHORIZONTAL );
m_groupBy = new wxCheckBox( this, wxID_ANY, _("Group By"), wxDefaultPosition, wxDefaultSize, 0 );
bMidSizer->Add( m_groupBy, 0, wxALIGN_CENTER|wxALL, 5 );
m_groupByKind = new wxComboBox( this, wxID_ANY, _("Wildcard"), wxDefaultPosition, wxSize( -1,-1 ), 0, NULL, wxCB_DROPDOWN|wxCB_READONLY|wxCB_SIMPLE );
m_groupByKind->Append( _("Wildcard") );
m_groupByKind->Append( _("RegEx") );
m_groupByKind->Append( _("Wildcard Substr") );
m_groupByKind->Append( _("RegEx Substr") );
m_groupByKind->SetSelection( 0 );
bMidSizer->Add( m_groupByKind, 0, wxALIGN_CENTER|wxALL|wxFIXED_MINSIZE, 5 );
m_groupByText = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bMidSizer->Add( m_groupByText, 1, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 );
bMidSizer->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 10 );
m_groupsFirst = new wxCheckBox( this, wxID_ANY, _("Sort groups first"), wxDefaultPosition, wxDefaultSize, 0 );
m_groupsFirst->SetValue(true);
bMidSizer->Add( m_groupsFirst, 0, wxALIGN_CENTER|wxALL, 5 );
bSizerMain->Add( bMidSizer, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
wxBoxSizer* bMidSizer1;
bMidSizer1 = new wxBoxSizer( wxHORIZONTAL );
m_staticTextFilter1 = new wxStaticText( this, wxID_ANY, _("Via Length:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextFilter1->Wrap( -1 );
bMidSizer1->Add( m_staticTextFilter1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_viaLengthType = new wxComboBox( this, wxID_ANY, _("Constant"), wxDefaultPosition, wxSize( -1,-1 ), 0, NULL, wxCB_DROPDOWN|wxCB_READONLY|wxCB_SIMPLE );
m_viaLengthType->Append( _("Constant") );
m_viaLengthType->Append( _("From Stackup") );
m_viaLengthType->SetSelection( 0 );
bMidSizer1->Add( m_viaLengthType, 0, wxALIGN_CENTER|wxALL|wxFIXED_MINSIZE, 5 );
m_constViaLength = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 96,-1 ), 0 );
m_constViaLength->SetMaxSize( wxSize( 96,-1 ) );
bMidSizer1->Add( m_constViaLength, 1, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 );
bMidSizer1->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 10 );
bSizerMain->Add( bMidSizer1, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_netsList = new wxDataViewCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_HORIZ_RULES|wxDV_MULTIPLE|wxDV_VERT_RULES );
m_netsList->SetMinSize( wxSize( 500,300 ) );
bSizerMain->Add( m_netsList, 1, wxEXPAND|wxRIGHT|wxLEFT, 10 );
bSizerMain->Add( m_netsList, 1, wxEXPAND|wxLEFT|wxRIGHT, 10 );
wxBoxSizer* bSizerListButtons;
bSizerListButtons = new wxBoxSizer( wxHORIZONTAL );
@ -74,8 +125,6 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::DIALOG_SELECT_NET_FROM_LIST_BASE( wxWindow* pa
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
bSizerBottom->Add( m_sdbSizer, 1, wxALL|wxEXPAND, 5 );
@ -93,6 +142,13 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::DIALOG_SELECT_NET_FROM_LIST_BASE( wxWindow* pa
// Connect Events
m_textCtrlFilter->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_cbShowZeroPad->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupBy->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupByKind->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupByText->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupsFirst->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onGroupsFirstChanged ), NULL, this );
m_viaLengthType->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onViaLengthChange ), NULL, this );
m_constViaLength->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onViaLengthChange ), NULL, this );
m_netsList->Connect( wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, wxDataViewEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSortingChanged ), NULL, this );
m_netsList->Connect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSelChanged ), NULL, this );
m_netsList->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onListSize ), NULL, this );
m_addNet->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onAddNet ), NULL, this );
@ -106,6 +162,13 @@ DIALOG_SELECT_NET_FROM_LIST_BASE::~DIALOG_SELECT_NET_FROM_LIST_BASE()
// Disconnect Events
m_textCtrlFilter->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_cbShowZeroPad->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupBy->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupByKind->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupByText->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onFilterChange ), NULL, this );
m_groupsFirst->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onGroupsFirstChanged ), NULL, this );
m_viaLengthType->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onViaLengthChange ), NULL, this );
m_constViaLength->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onViaLengthChange ), NULL, this );
m_netsList->Disconnect( wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, wxDataViewEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSortingChanged ), NULL, this );
m_netsList->Disconnect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onSelChanged ), NULL, this );
m_netsList->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onListSize ), NULL, this );
m_addNet->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SELECT_NET_FROM_LIST_BASE::onAddNet ), NULL, this );

View File

@ -14,6 +14,7 @@
<property name="file">dialog_select_net_from_list_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="name">dialog_select_net_from_list_base</property>
@ -25,6 +26,7 @@
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
@ -60,9 +62,9 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bTopSizer</property>
<property name="orient">wxHORIZONTAL</property>
@ -193,11 +195,11 @@
<event name="OnText">onFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
@ -271,13 +273,508 @@
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxDataViewListCtrl" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bMidSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER|wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Group By</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_groupBy</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnCheckBox">onFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER|wxALL|wxFIXED_MINSIZE</property>
<property name="proportion">0</property>
<object class="wxComboBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Wildcard&quot; &quot;RegEx&quot; &quot;Wildcard Substr&quot; &quot;RegEx Substr&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">0</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_groupByKind</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size">-1,-1</property>
<property name="style">wxCB_DROPDOWN|wxCB_READONLY|wxCB_SIMPLE</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value">Wildcard</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnCombobox">onFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP</property>
<property name="proportion">1</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_groupByText</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnText">onFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER|wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">1</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Sort groups first</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_groupsFirst</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnCheckBox">onGroupsFirstChanged</event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bMidSizer1</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Via Length:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticTextFilter1</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER|wxALL|wxFIXED_MINSIZE</property>
<property name="proportion">0</property>
<object class="wxComboBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Constant&quot; &quot;From Stackup&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">0</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_viaLengthType</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size">-1,-1</property>
<property name="style">wxCB_DROPDOWN|wxCB_READONLY|wxCB_SIMPLE</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value">Constant</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnCombobox">onViaLengthChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP</property>
<property name="proportion">1</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size">96,-1</property>
<property name="maxlength">0</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_constViaLength</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size">96,-1</property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnText">onViaLengthChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
<property name="proportion">1</property>
<object class="wxDataViewCtrl" expanded="0">
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
@ -289,13 +786,14 @@
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style">wxDV_HORIZ_RULES|wxDV_VERT_RULES</property>
<property name="subclass">; forward_declare</property>
<property name="style">wxDV_HORIZ_RULES|wxDV_MULTIPLE|wxDV_VERT_RULES</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnDataViewListCtrlSelectionChanged">onSelChanged</event>
<event name="OnDataViewCtrlColumnSorted">onSortingChanged</event>
<event name="OnDataViewCtrlSelectionChanged">onSelChanged</event>
<event name="OnSize">onListSize</event>
</object>
</object>
@ -303,16 +801,16 @@
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizerListButtons</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxTOP|wxBOTTOM|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="1">
<object class="wxBitmapButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -321,6 +819,7 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -381,11 +880,11 @@
<event name="OnButtonClick">onAddNet</event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxTOP|wxBOTTOM|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="1">
<object class="wxBitmapButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -394,6 +893,7 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -454,21 +954,21 @@
<event name="OnButtonClick">onRenameNet</event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">20</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="1">
<object class="wxBitmapButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -477,6 +977,7 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -537,21 +1038,21 @@
<event name="OnButtonClick">onDeleteNet</event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -560,6 +1061,7 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -684,7 +1186,7 @@
<property name="border">5</property>
<property name="flag">wxEXPAND|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizerBottom</property>
<property name="orient">wxHORIZONTAL</property>
@ -695,7 +1197,7 @@
<property name="proportion">1</property>
<object class="wxStdDialogButtonSizer" expanded="0">
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="Cancel">0</property>
<property name="ContextHelp">0</property>
<property name="Help">0</property>
<property name="No">0</property>

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// C++ code generated with wxFormBuilder (version 3.9.0 Oct 9 2020)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -20,6 +20,7 @@
#include <wx/textctrl.h>
#include <wx/checkbox.h>
#include <wx/sizer.h>
#include <wx/combobox.h>
#include <wx/dataview.h>
#include <wx/bmpbuttn.h>
#include <wx/bitmap.h>
@ -43,7 +44,14 @@ class DIALOG_SELECT_NET_FROM_LIST_BASE : public DIALOG_SHIM
wxStaticText* m_staticTextFilter;
wxTextCtrl* m_textCtrlFilter;
wxCheckBox* m_cbShowZeroPad;
wxDataViewListCtrl* m_netsList;
wxCheckBox* m_groupBy;
wxComboBox* m_groupByKind;
wxTextCtrl* m_groupByText;
wxCheckBox* m_groupsFirst;
wxStaticText* m_staticTextFilter1;
wxComboBox* m_viaLengthType;
wxTextCtrl* m_constViaLength;
wxDataViewCtrl* m_netsList;
wxBitmapButton* m_addNet;
wxBitmapButton* m_renameNet;
wxBitmapButton* m_deleteNet;
@ -51,10 +59,12 @@ class DIALOG_SELECT_NET_FROM_LIST_BASE : public DIALOG_SHIM
wxStaticLine* m_staticline1;
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel;
// Virtual event handlers, overide them in your derived class
virtual void onFilterChange( wxCommandEvent& event ) { event.Skip(); }
virtual void onGroupsFirstChanged( wxCommandEvent& event ) { event.Skip(); }
virtual void onViaLengthChange( wxCommandEvent& event ) { event.Skip(); }
virtual void onSortingChanged( wxDataViewEvent& event ) { event.Skip(); }
virtual void onSelChanged( wxDataViewEvent& event ) { event.Skip(); }
virtual void onListSize( wxSizeEvent& event ) { event.Skip(); }
virtual void onAddNet( wxCommandEvent& event ) { event.Skip(); }