Added a dialog to confirm discarding unsaved changes in Pin Table dialog.
This commit is contained in:
parent
de1a8abd3e
commit
e3bcd31bff
|
@ -33,6 +33,7 @@
|
||||||
#include <wx/bmpcbox.h>
|
#include <wx/bmpcbox.h>
|
||||||
#include <kiface_i.h>
|
#include <kiface_i.h>
|
||||||
#include <kicad_string.h>
|
#include <kicad_string.h>
|
||||||
|
#include <confirm.h>
|
||||||
|
|
||||||
#define PinTableShownColumnsKey wxT( "PinTableShownColumns" )
|
#define PinTableShownColumnsKey wxT( "PinTableShownColumns" )
|
||||||
|
|
||||||
|
@ -57,10 +58,11 @@ private:
|
||||||
std::vector<LIB_PINS> m_rows;
|
std::vector<LIB_PINS> m_rows;
|
||||||
|
|
||||||
EDA_UNITS_T m_userUnits;
|
EDA_UNITS_T m_userUnits;
|
||||||
|
bool m_edited;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PIN_TABLE_DATA_MODEL( EDA_UNITS_T aUserUnits ) :
|
PIN_TABLE_DATA_MODEL( EDA_UNITS_T aUserUnits ) :
|
||||||
m_userUnits( aUserUnits )
|
m_userUnits( aUserUnits ), m_edited( false )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
int GetNumberRows() override { return (int) m_rows.size(); }
|
int GetNumberRows() override { return (int) m_rows.size(); }
|
||||||
|
@ -209,6 +211,8 @@ public:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_edited = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int findRow( const std::vector<LIB_PINS>& aRowSet, const wxString& aName )
|
static int findRow( const std::vector<LIB_PINS>& aRowSet, const wxString& aName )
|
||||||
|
@ -343,6 +347,11 @@ public:
|
||||||
|
|
||||||
return removedRow;
|
return removedRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsEdited()
|
||||||
|
{
|
||||||
|
return m_edited;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -623,6 +632,36 @@ void DIALOG_LIB_EDIT_PIN_TABLE::OnUpdateUI( wxUpdateUIEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_LIB_EDIT_PIN_TABLE::OnCancel( wxCommandEvent& event )
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_LIB_EDIT_PIN_TABLE::OnClose( wxCloseEvent& event )
|
||||||
|
{
|
||||||
|
// This is a cancel, so commit quietly as we're going to throw the results away anyway.
|
||||||
|
m_grid->CommitPendingChanges( true );
|
||||||
|
|
||||||
|
if( m_dataModel->IsEdited() )
|
||||||
|
{
|
||||||
|
if( !HandleUnsavedChanges( this, wxEmptyString,
|
||||||
|
[&]()->bool { return TransferDataFromWindow(); } ) )
|
||||||
|
{
|
||||||
|
event.Veto();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( IsQuasiModal() )
|
||||||
|
EndQuasiModal( wxID_OK );
|
||||||
|
else if( IsModal() )
|
||||||
|
EndModal( wxID_OK );
|
||||||
|
else
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary()
|
void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary()
|
||||||
{
|
{
|
||||||
PinNumbers pinNumbers;
|
PinNumbers pinNumbers;
|
||||||
|
@ -635,7 +674,3 @@ void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary()
|
||||||
|
|
||||||
m_summary->SetLabel( pinNumbers.GetSummary() );
|
m_summary->SetLabel( pinNumbers.GetSummary() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@ public:
|
||||||
void OnCellEdited( wxGridEvent& event ) override;
|
void OnCellEdited( wxGridEvent& event ) override;
|
||||||
void OnRebuildRows( wxCommandEvent& event ) override;
|
void OnRebuildRows( wxCommandEvent& event ) override;
|
||||||
void OnUpdateUI( wxUpdateUIEvent& event ) override;
|
void OnUpdateUI( wxUpdateUIEvent& event ) override;
|
||||||
|
void OnCancel( wxCommandEvent& event ) override;
|
||||||
|
void OnClose( wxCloseEvent& event ) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -50,6 +52,7 @@ protected:
|
||||||
wxString m_columnsShown;
|
wxString m_columnsShown;
|
||||||
LIB_PART* m_part;
|
LIB_PART* m_part;
|
||||||
LIB_PINS m_pins; // a copy of the pins owned by me
|
LIB_PINS m_pins; // a copy of the pins owned by me
|
||||||
|
bool m_modified; ///< true when there are unsaved changes
|
||||||
|
|
||||||
PIN_TABLE_DATA_MODEL* m_dataModel;
|
PIN_TABLE_DATA_MODEL* m_dataModel;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
// C++ code generated with wxFormBuilder (version Oct 17 2016)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "widgets/wx_grid.h"
|
#include "widgets/wx_grid.h"
|
||||||
|
@ -124,6 +124,7 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
|
||||||
this->Centre( wxBOTH );
|
this->Centre( wxBOTH );
|
||||||
|
|
||||||
// Connect Events
|
// Connect Events
|
||||||
|
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnClose ) );
|
||||||
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnUpdateUI ) );
|
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnUpdateUI ) );
|
||||||
m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCellEdited ), NULL, this );
|
m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCellEdited ), NULL, this );
|
||||||
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnSize ), NULL, this );
|
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnSize ), NULL, this );
|
||||||
|
@ -131,11 +132,13 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
|
||||||
m_deleteButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
|
m_deleteButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
|
||||||
m_cbGroup->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
m_cbGroup->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
||||||
m_refreshButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
m_refreshButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
||||||
|
m_ButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCancel ), NULL, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
DIALOG_LIB_EDIT_PIN_TABLE_BASE::~DIALOG_LIB_EDIT_PIN_TABLE_BASE()
|
DIALOG_LIB_EDIT_PIN_TABLE_BASE::~DIALOG_LIB_EDIT_PIN_TABLE_BASE()
|
||||||
{
|
{
|
||||||
// Disconnect Events
|
// Disconnect Events
|
||||||
|
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnClose ) );
|
||||||
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnUpdateUI ) );
|
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnUpdateUI ) );
|
||||||
m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCellEdited ), NULL, this );
|
m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCellEdited ), NULL, this );
|
||||||
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnSize ), NULL, this );
|
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnSize ), NULL, this );
|
||||||
|
@ -143,5 +146,6 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::~DIALOG_LIB_EDIT_PIN_TABLE_BASE()
|
||||||
m_deleteButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
|
m_deleteButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
|
||||||
m_cbGroup->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
m_cbGroup->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
||||||
m_refreshButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
m_refreshButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
|
||||||
|
m_ButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCancel ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
<event name="OnAuiPaneRestore"></event>
|
<event name="OnAuiPaneRestore"></event>
|
||||||
<event name="OnAuiRender"></event>
|
<event name="OnAuiRender"></event>
|
||||||
<event name="OnChar"></event>
|
<event name="OnChar"></event>
|
||||||
<event name="OnClose"></event>
|
<event name="OnClose">OnClose</event>
|
||||||
<event name="OnEnterWindow"></event>
|
<event name="OnEnterWindow"></event>
|
||||||
<event name="OnEraseBackground"></event>
|
<event name="OnEraseBackground"></event>
|
||||||
<event name="OnHibernate"></event>
|
<event name="OnHibernate"></event>
|
||||||
|
@ -967,7 +967,7 @@
|
||||||
<property name="name">m_Buttons</property>
|
<property name="name">m_Buttons</property>
|
||||||
<property name="permission">protected</property>
|
<property name="permission">protected</property>
|
||||||
<event name="OnApplyButtonClick"></event>
|
<event name="OnApplyButtonClick"></event>
|
||||||
<event name="OnCancelButtonClick"></event>
|
<event name="OnCancelButtonClick">OnCancel</event>
|
||||||
<event name="OnContextHelpButtonClick"></event>
|
<event name="OnContextHelpButtonClick"></event>
|
||||||
<event name="OnHelpButtonClick"></event>
|
<event name="OnHelpButtonClick"></event>
|
||||||
<event name="OnNoButtonClick"></event>
|
<event name="OnNoButtonClick"></event>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
// C++ code generated with wxFormBuilder (version Oct 17 2016)
|
||||||
// http://www.wxformbuilder.org/
|
// http://www.wxformbuilder.org/
|
||||||
//
|
//
|
||||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef __DIALOG_LIB_EDIT_PIN_TABLE_BASE_H__
|
#ifndef __DIALOG_LIB_EDIT_PIN_TABLE_BASE_H__
|
||||||
|
@ -11,6 +11,7 @@
|
||||||
#include <wx/artprov.h>
|
#include <wx/artprov.h>
|
||||||
#include <wx/xrc/xmlres.h>
|
#include <wx/xrc/xmlres.h>
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
class DIALOG_SHIM;
|
||||||
class WX_GRID;
|
class WX_GRID;
|
||||||
|
|
||||||
#include "dialog_shim.h"
|
#include "dialog_shim.h"
|
||||||
|
@ -56,12 +57,14 @@ class DIALOG_LIB_EDIT_PIN_TABLE_BASE : public DIALOG_SHIM
|
||||||
wxButton* m_ButtonsCancel;
|
wxButton* m_ButtonsCancel;
|
||||||
|
|
||||||
// Virtual event handlers, overide them in your derived class
|
// Virtual event handlers, overide them in your derived class
|
||||||
|
virtual void OnClose( wxCloseEvent& event ) = 0;
|
||||||
virtual void OnUpdateUI( wxUpdateUIEvent& event ) = 0;
|
virtual void OnUpdateUI( wxUpdateUIEvent& event ) = 0;
|
||||||
virtual void OnCellEdited( wxGridEvent& event ) = 0;
|
virtual void OnCellEdited( wxGridEvent& event ) = 0;
|
||||||
virtual void OnSize( wxSizeEvent& event ) = 0;
|
virtual void OnSize( wxSizeEvent& event ) = 0;
|
||||||
virtual void OnAddRow( wxCommandEvent& event ) = 0;
|
virtual void OnAddRow( wxCommandEvent& event ) = 0;
|
||||||
virtual void OnDeleteRow( wxCommandEvent& event ) = 0;
|
virtual void OnDeleteRow( wxCommandEvent& event ) = 0;
|
||||||
virtual void OnRebuildRows( wxCommandEvent& event ) = 0;
|
virtual void OnRebuildRows( wxCommandEvent& event ) = 0;
|
||||||
|
virtual void OnCancel( wxCommandEvent& event ) = 0;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue