Make sure user isn't surprised by Match All setting.

If they selected the dialog with a footprint selected, they're
probably not expecting Match All.
This commit is contained in:
Jeff Young 2018-10-22 16:01:29 +01:00
parent 9f350820ad
commit adfe2fc267
9 changed files with 197 additions and 69 deletions

View File

@ -41,17 +41,20 @@
#define ID_MATCH_FP_ALL 4200
#define ID_MATCH_FP_REF 4201
#define ID_MATCH_FP_VAL 4202
#define ID_MATCH_FP_ID 4203
#define ID_MATCH_FP_SELECTED 4201
#define ID_MATCH_FP_REF 4202
#define ID_MATCH_FP_VAL 4203
#define ID_MATCH_FP_ID 4204
int g_matchModeForUpdate = ID_MATCH_FP_ALL;
int g_matchModeForUpdateSelected = ID_MATCH_FP_SELECTED;
int g_matchModeForExchange = ID_MATCH_FP_REF;
int g_matchModeForExchangeSelected = ID_MATCH_FP_SELECTED;
DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, MODULE* aModule,
bool updateMode ) :
bool updateMode, bool selectedMode ) :
DIALOG_EXCHANGE_FOOTPRINTS_BASE( aParent ),
m_commit( aParent ),
m_parent( aParent ),
@ -73,17 +76,17 @@ DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent,
else
{
m_upperSizer->FindItem( m_matchAll )->Show( false );
m_newIDBrowseButton->SetBitmap( KiBitmap( small_library_xpm ) );
}
if( m_currentModule )
{
label.Printf( m_matchSelected->GetLabel(), verb );
m_matchSelected->SetLabel( label );
m_newID->AppendText( FROM_UTF8( m_currentModule->GetFPID().Format().c_str() ) );
SetInitialFocus( m_newID );
}
else
SetInitialFocus( m_specifiedRef );
m_newIDBrowseButton->SetBitmap( KiBitmap( small_library_xpm ) );
}
m_upperSizer->FindItem( m_matchSelected )->Show( false );
label.Printf( m_matchSpecifiedRef->GetLabel(), verb );
m_matchSpecifiedRef->SetLabel( label );
@ -110,10 +113,18 @@ DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent,
m_upperSizer->RecalcSizes();
// initialize match-mode
if( m_updateMode )
m_matchMode = selectedMode ? &g_matchModeForUpdateSelected : &g_matchModeForUpdate;
else
m_matchMode = selectedMode ? &g_matchModeForExchangeSelected : &g_matchModeForExchange;
wxCommandEvent event;
switch( m_updateMode ? g_matchModeForUpdate : g_matchModeForExchange )
event.SetEventObject( this );
switch( *m_matchMode )
{
case ID_MATCH_FP_ALL: OnMatchAllClicked( event ); break;
case ID_MATCH_FP_SELECTED: OnMatchSelectedClicked( event ); break;
case ID_MATCH_FP_REF: OnMatchRefClicked( event ); break;
case ID_MATCH_FP_VAL: OnMatchValueClicked( event ); break;
case ID_MATCH_FP_ID: OnMatchIDClicked( event ); break;
@ -135,23 +146,16 @@ DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent,
}
void DIALOG_EXCHANGE_FOOTPRINTS::setMatchMode( int aMatchMode )
{
if( m_updateMode )
g_matchModeForUpdate = aMatchMode;
else
g_matchModeForExchange = aMatchMode;
}
bool DIALOG_EXCHANGE_FOOTPRINTS::isMatch( MODULE* aModule )
{
LIB_ID specifiedID;
switch( m_updateMode ? g_matchModeForUpdate : g_matchModeForExchange )
switch( *m_matchMode )
{
case ID_MATCH_FP_ALL:
return true;
case ID_MATCH_FP_SELECTED:
return aModule == m_currentModule;
case ID_MATCH_FP_REF:
return WildCompareString( m_specifiedRef->GetValue(), aModule->GetReference(), false );
case ID_MATCH_FP_VAL:
@ -167,9 +171,10 @@ bool DIALOG_EXCHANGE_FOOTPRINTS::isMatch( MODULE* aModule )
wxRadioButton* DIALOG_EXCHANGE_FOOTPRINTS::getRadioButtonForMode()
{
switch( m_updateMode ? g_matchModeForUpdate : g_matchModeForExchange )
switch( *m_matchMode )
{
case ID_MATCH_FP_ALL: return m_matchAll;
case ID_MATCH_FP_SELECTED: return m_matchSelected;
case ID_MATCH_FP_REF: return m_matchSpecifiedRef;
case ID_MATCH_FP_VAL: return m_matchSpecifiedValue;
case ID_MATCH_FP_ID: return m_matchSpecifiedID;
@ -184,6 +189,8 @@ void DIALOG_EXCHANGE_FOOTPRINTS::updateMatchModeRadioButtons( wxUpdateUIEvent& )
wxRadioButton* rb_butt_list[] =
{
m_matchAll,
m_matchSelected,
m_matchSpecifiedRef,
m_matchSpecifiedValue,
m_matchSpecifiedID,
@ -205,34 +212,55 @@ void DIALOG_EXCHANGE_FOOTPRINTS::updateMatchModeRadioButtons( wxUpdateUIEvent& )
void DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked( wxCommandEvent& event )
{
setMatchMode( ID_MATCH_FP_ALL );
*m_matchMode = ID_MATCH_FP_ALL;
if( event.GetEventObject() == this )
SetInitialFocus( m_matchAll );
else
m_matchAll->SetFocus();
}
void DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked( wxCommandEvent& event )
{
*m_matchMode = ID_MATCH_FP_SELECTED;
if( event.GetEventObject() == this )
SetInitialFocus( m_matchSelected );
else
m_matchSelected->SetFocus();
}
void DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked( wxCommandEvent& event )
{
setMatchMode( ID_MATCH_FP_REF );
*m_matchMode = ID_MATCH_FP_REF;
if( event.GetEventObject() != m_specifiedRef )
if( event.GetEventObject() == this )
SetInitialFocus( m_specifiedRef );
else if( event.GetEventObject() != m_specifiedRef )
m_specifiedRef->SetFocus();
}
void DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked( wxCommandEvent& event )
{
setMatchMode( ID_MATCH_FP_VAL );
*m_matchMode = ID_MATCH_FP_VAL;
if( event.GetEventObject() != m_specifiedValue )
if( event.GetEventObject() == this )
SetInitialFocus( m_specifiedValue );
else if( event.GetEventObject() != m_specifiedValue )
m_specifiedValue->SetFocus();
}
void DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked( wxCommandEvent& event )
{
setMatchMode( ID_MATCH_FP_ID );
*m_matchMode = ID_MATCH_FP_ID;
if( event.GetEventObject() != m_specifiedID )
if( event.GetEventObject() == this )
SetInitialFocus( m_specifiedID );
else if( event.GetEventObject() != m_specifiedID )
m_specifiedID->SetFocus();
}

View File

@ -40,21 +40,22 @@ private:
PCB_EDIT_FRAME* m_parent;
MODULE* m_currentModule;
bool m_updateMode;
int* m_matchMode;
public:
DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, MODULE* aModule, bool updateMode );
DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, MODULE* aModule, bool updateMode,
bool selectedMode );
private:
void updateMatchModeRadioButtons( wxUpdateUIEvent& event ) override;
void OnMatchAllClicked( wxCommandEvent& event ) override;
void OnMatchSelectedClicked( wxCommandEvent& event ) override;
void OnMatchRefClicked( wxCommandEvent& event ) override;
void OnMatchValueClicked( wxCommandEvent& event ) override;
void OnMatchIDClicked( wxCommandEvent& event ) override;
void OnApplyClicked( wxCommandEvent& event ) override;
void ViewAndSelectFootprint( wxCommandEvent& event ) override;
void setMatchMode( int aMatchMode );
wxRadioButton* getRadioButtonForMode();
bool isMatch( MODULE* );

View File

@ -24,22 +24,25 @@ DIALOG_EXCHANGE_FOOTPRINTS_BASE::DIALOG_EXCHANGE_FOOTPRINTS_BASE( wxWindow* pare
m_matchAll = new wxRadioButton( this, wxID_ANY, _("%s all footprints on board"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchAll, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxEXPAND|wxALL, 5 );
m_matchSpecifiedRef = new wxRadioButton( this, wxID_ANY, _("%s footprint matching reference:"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchSpecifiedRef, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
m_matchSelected = new wxRadioButton( this, wxID_ANY, _("%s selected footprint"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchSelected, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALL, 5 );
m_matchSpecifiedRef = new wxRadioButton( this, wxID_ANY, _("%s footprints matching reference:"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchSpecifiedRef, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
m_specifiedRef = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_specifiedRef->SetMinSize( wxSize( 200,-1 ) );
m_upperSizer->Add( m_specifiedRef, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxTOP|wxEXPAND, 5 );
m_upperSizer->Add( m_specifiedRef, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxTOP|wxEXPAND, 5 );
m_matchSpecifiedValue = new wxRadioButton( this, wxID_ANY, _("%s footprints matching value:"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchSpecifiedValue, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 5 );
m_upperSizer->Add( m_matchSpecifiedValue, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 5 );
m_specifiedValue = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_upperSizer->Add( m_specifiedValue, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_upperSizer->Add( m_specifiedValue, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_matchSpecifiedID = new wxRadioButton( this, wxID_ANY, _("%s footprints with identifier:"), wxDefaultPosition, wxDefaultSize, 0 );
m_upperSizer->Add( m_matchSpecifiedID, wxGBPosition( 3, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 5 );
m_upperSizer->Add( m_matchSpecifiedID, wxGBPosition( 4, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 5 );
m_upperSizer->AddGrowableCol( 1 );
@ -130,6 +133,7 @@ DIALOG_EXCHANGE_FOOTPRINTS_BASE::DIALOG_EXCHANGE_FOOTPRINTS_BASE( wxWindow* pare
// Connect Events
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::updateMatchModeRadioButtons ) );
m_matchAll->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchAllClicked ), NULL, this );
m_matchSelected->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchSelectedClicked ), NULL, this );
m_matchSpecifiedRef->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );
m_specifiedRef->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );
m_specifiedRef->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );
@ -149,6 +153,7 @@ DIALOG_EXCHANGE_FOOTPRINTS_BASE::~DIALOG_EXCHANGE_FOOTPRINTS_BASE()
// Disconnect Events
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::updateMatchModeRadioButtons ) );
m_matchAll->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchAllClicked ), NULL, this );
m_matchSelected->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchSelectedClicked ), NULL, this );
m_matchSpecifiedRef->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );
m_specifiedRef->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );
m_specifiedRef->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_EXCHANGE_FOOTPRINTS_BASE::OnMatchRefClicked ), NULL, this );

View File

@ -203,9 +203,100 @@
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxALL</property>
<property name="row">1</property>
<property name="rowspan">1</property>
<object class="wxRadioButton" expanded="1">
<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">%s selected footprint</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_matchSelected</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="value">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRadioButton">OnMatchSelectedClicked</event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<object class="wxRadioButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
@ -234,7 +325,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">%s footprint matching reference:</property>
<property name="label">%s footprints matching reference:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
@ -295,7 +386,7 @@
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxTOP|wxEXPAND</property>
<property name="row">1</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
@ -389,7 +480,7 @@
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="row">2</property>
<property name="row">3</property>
<property name="rowspan">1</property>
<object class="wxRadioButton" expanded="0">
<property name="BottomDockable">1</property>
@ -480,7 +571,7 @@
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT</property>
<property name="row">2</property>
<property name="row">3</property>
<property name="rowspan">1</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
@ -574,7 +665,7 @@
<property name="colspan">2</property>
<property name="column">0</property>
<property name="flag">wxLEFT|wxRIGHT|wxTOP|wxEXPAND</property>
<property name="row">3</property>
<property name="row">4</property>
<property name="rowspan">1</property>
<object class="wxRadioButton" expanded="0">
<property name="BottomDockable">1</property>

View File

@ -49,6 +49,7 @@ class DIALOG_EXCHANGE_FOOTPRINTS_BASE : public DIALOG_SHIM
wxBoxSizer* m_mainSizer;
wxGridBagSizer* m_upperSizer;
wxRadioButton* m_matchAll;
wxRadioButton* m_matchSelected;
wxRadioButton* m_matchSpecifiedRef;
wxTextCtrl* m_specifiedRef;
wxRadioButton* m_matchSpecifiedValue;
@ -71,6 +72,7 @@ class DIALOG_EXCHANGE_FOOTPRINTS_BASE : public DIALOG_SHIM
// Virtual event handlers, overide them in your derived class
virtual void updateMatchModeRadioButtons( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnMatchAllClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMatchSelectedClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMatchRefClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMatchValueClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void OnMatchIDClicked( wxCommandEvent& event ) { event.Skip(); }

View File

@ -837,7 +837,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_PCB_UPDATE_FOOTPRINTS:
if( GetCurItem() && GetCurItem()->Type() == PCB_MODULE_T )
{
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), true );
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), true, true );
m_canvas->MoveCursorToCrossHair();
}
break;
@ -845,7 +845,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_PCB_EXCHANGE_FOOTPRINTS:
if( GetCurItem() && GetCurItem()->Type() == PCB_MODULE_T )
{
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), false );
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), false, true );
m_canvas->MoveCursorToCrossHair();
}
break;
@ -1216,11 +1216,11 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
break;
case ID_MENU_PCB_UPDATE_FOOTPRINTS:
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), true );
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), true, false );
break;
case ID_MENU_PCB_EXCHANGE_FOOTPRINTS:
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), false );
InstallExchangeModuleFrame( (MODULE*) GetCurItem(), false, false );
break;
case ID_MENU_PCB_SWAP_LAYERS:

View File

@ -1303,19 +1303,20 @@ void PCB_EDIT_FRAME::InstallFootprintPropertiesDialog( MODULE* Module, wxDC* DC
else if( retvalue == DIALOG_FOOTPRINT_BOARD_EDITOR::PRM_EDITOR_WANT_UPDATE_FP )
{
InstallExchangeModuleFrame( Module, true );
InstallExchangeModuleFrame( Module, true, true );
}
else if( retvalue == DIALOG_FOOTPRINT_BOARD_EDITOR::PRM_EDITOR_WANT_EXCHANGE_FP )
{
InstallExchangeModuleFrame( Module, false );
InstallExchangeModuleFrame( Module, false, true );
}
}
int PCB_EDIT_FRAME::InstallExchangeModuleFrame( MODULE* Module, bool updateMode )
int PCB_EDIT_FRAME::InstallExchangeModuleFrame( MODULE* aModule, bool updateMode,
bool selectedMode )
{
DIALOG_EXCHANGE_FOOTPRINTS dialog( this, Module, updateMode );
DIALOG_EXCHANGE_FOOTPRINTS dialog( this, aModule, updateMode, selectedMode );
return dialog.ShowQuasiModal();
}

View File

@ -1173,7 +1173,7 @@ public:
*/
void Change_Side_Module( MODULE* Module, wxDC* DC );
int InstallExchangeModuleFrame( MODULE* ExchangeModuleModule, bool updateMode );
int InstallExchangeModuleFrame( MODULE* aModule, bool updateMode, bool selectedMode );
/**
* Function Exchange_Module

View File

@ -1180,7 +1180,7 @@ int EDIT_TOOL::ExchangeFootprints( const TOOL_EVENT& aEvent )
// invoke the exchange dialog process
{
DIALOG_EXCHANGE_FOOTPRINTS dialog( frame(), mod, updateMode );
DIALOG_EXCHANGE_FOOTPRINTS dialog( frame(), mod, updateMode, mod != nullptr );
dialog.ShowQuasiModal();
}