Another attempt at wxFrame::SaveSettings() standard infrastructure.
This commit is contained in:
parent
8afe2dfbce
commit
741bfb685b
|
@ -99,6 +99,18 @@ EDA_BASE_FRAME::EDA_BASE_FRAME( wxWindow* aParent,
|
||||||
|
|
||||||
Connect( ID_AUTO_SAVE_TIMER, wxEVT_TIMER,
|
Connect( ID_AUTO_SAVE_TIMER, wxEVT_TIMER,
|
||||||
wxTimerEventHandler( EDA_BASE_FRAME::onAutoSaveTimer ) );
|
wxTimerEventHandler( EDA_BASE_FRAME::onAutoSaveTimer ) );
|
||||||
|
|
||||||
|
// hook wxEVT_CLOSE_WINDOW so we can call SaveSettings(). This function seems
|
||||||
|
// to be called before any other hook for wxCloseEvent, which is necessary.
|
||||||
|
Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( EDA_BASE_FRAME::windowClosing ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EDA_BASE_FRAME::windowClosing( wxCloseEvent& event )
|
||||||
|
{
|
||||||
|
SaveSettings(); // virtual, wxFrame specific
|
||||||
|
|
||||||
|
event.Skip(); // we did not "handle" the event, only eavesdropped on it.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,9 +121,8 @@ EDA_BASE_FRAME::~EDA_BASE_FRAME()
|
||||||
|
|
||||||
delete m_autoSaveTimer;
|
delete m_autoSaveTimer;
|
||||||
|
|
||||||
/* This needed for OSX: avoids further OnDraw processing after this
|
// This is needed for OSX: avoids further OnDraw processing after this
|
||||||
* destructor and before the native window is destroyed
|
// destructor and before the native window is destroyed
|
||||||
*/
|
|
||||||
this->Freeze();
|
this->Freeze();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,19 +152,6 @@ bool EDA_BASE_FRAME::ProcessEvent( wxEvent& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool EDA_BASE_FRAME::Show( bool show )
|
|
||||||
{
|
|
||||||
if( !show ) // closing
|
|
||||||
{
|
|
||||||
SaveSettings(); // virtual, wxFrame specific
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = wxFrame::Show( show );
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void EDA_BASE_FRAME::onAutoSaveTimer( wxTimerEvent& aEvent )
|
void EDA_BASE_FRAME::onAutoSaveTimer( wxTimerEvent& aEvent )
|
||||||
{
|
{
|
||||||
if( !doAutoSave() )
|
if( !doAutoSave() )
|
||||||
|
|
|
@ -338,9 +338,6 @@ void CVPCB_MAINFRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||||
|
|
||||||
m_modified = false;
|
m_modified = false;
|
||||||
|
|
||||||
// hide main frame, which also forces saving curr pos and size in config
|
|
||||||
Show( false );
|
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -505,8 +505,6 @@ void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& aEvent )
|
||||||
|
|
||||||
// all sub sheets are deleted, only the main sheet is usable
|
// all sub sheets are deleted, only the main sheet is usable
|
||||||
m_CurrentSheet->Clear();
|
m_CurrentSheet->Clear();
|
||||||
// hide main frame, which also forces saving curr pos and size in config
|
|
||||||
Show( false );
|
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,9 +177,6 @@ GERBVIEW_FRAME::~GERBVIEW_FRAME()
|
||||||
|
|
||||||
void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||||
{
|
{
|
||||||
// hide main frame, which also forces saving curr pos and size in config
|
|
||||||
Show( false );
|
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,10 +107,26 @@ extern const wxChar traceAutoSave[];
|
||||||
/**
|
/**
|
||||||
* Class EDA_BASE_FRAME
|
* Class EDA_BASE_FRAME
|
||||||
* is the base frame for deriving all KiCad main window classes. This class is not
|
* is the base frame for deriving all KiCad main window classes. This class is not
|
||||||
* intended to be used directly.
|
* intended to be used directly. It provides support for automatic calls to
|
||||||
|
* a virtual SaveSettings() function. SaveSettings() for a derived class can choose
|
||||||
|
* to do nothing, or rely on basic SaveSettings() support in this base class to do
|
||||||
|
* most of the work by calling it from the derived class's SaveSettings().
|
||||||
*/
|
*/
|
||||||
class EDA_BASE_FRAME : public wxFrame
|
class EDA_BASE_FRAME : public wxFrame
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Function windowClosing
|
||||||
|
* (with its unexpected name so it does not collide with the real OnWindowClose()
|
||||||
|
* function provided in derived classes) is called just before a window
|
||||||
|
* closing, and is used to call a derivation specific
|
||||||
|
* SaveSettings(). SaveSettings() is called for all derived wxFrames in this
|
||||||
|
* base class overload. (Calling it from a destructor is deprecated since the
|
||||||
|
* wxFrame's position is not available in the destructor on linux.) In other words,
|
||||||
|
* you should not need to call call SaveSettings() anywhere, except in this
|
||||||
|
* one function found only in this class.
|
||||||
|
*/
|
||||||
|
void windowClosing( wxCloseEvent& event );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ID_DRAWFRAME_TYPE m_Ident; ///< Id Type (pcb, schematic, library..)
|
ID_DRAWFRAME_TYPE m_Ident; ///< Id Type (pcb, schematic, library..)
|
||||||
wxPoint m_FramePos;
|
wxPoint m_FramePos;
|
||||||
|
@ -177,17 +193,6 @@ public:
|
||||||
*/
|
*/
|
||||||
bool ProcessEvent( wxEvent& aEvent ); // overload wxFrame::ProcessEvent()
|
bool ProcessEvent( wxEvent& aEvent ); // overload wxFrame::ProcessEvent()
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Show
|
|
||||||
* hooks the wxFrame close scenario so we can grab the window size and position
|
|
||||||
* in the wxFrame specific SaveSettings() function. SaveSettings() is
|
|
||||||
* called for all derived wxFrames in this base class overload. Calling it
|
|
||||||
* from a destructor is deprecated since the wxFrame's position is not available
|
|
||||||
* in the destructor on linux. In other words, don't call SaveSettings() anywhere,
|
|
||||||
* except in this one function.
|
|
||||||
*/
|
|
||||||
bool Show( bool show ); // overload wxFrame::Show()
|
|
||||||
|
|
||||||
void SetAutoSaveInterval( int aInterval ) { m_autoSaveInterval = aInterval; }
|
void SetAutoSaveInterval( int aInterval ) { m_autoSaveInterval = aInterval; }
|
||||||
|
|
||||||
int GetAutoSaveInterval() const { return m_autoSaveInterval; }
|
int GetAutoSaveInterval() const { return m_autoSaveInterval; }
|
||||||
|
|
|
@ -159,8 +159,6 @@ void KICAD_MANAGER_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||||
}
|
}
|
||||||
|
|
||||||
m_LeftWin->Show( false );
|
m_LeftWin->Show( false );
|
||||||
// hide main frame, which also forces saving curr pos and size in config
|
|
||||||
Show( false );
|
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,7 +258,6 @@ void FOOTPRINT_WIZARD_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Show( false );
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue