initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
87
libs/wxWidgets-3.3.1/include/wx/persist/splitter.h
Normal file
87
libs/wxWidgets-3.3.1/include/wx/persist/splitter.h
Normal file
@@ -0,0 +1,87 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/persist/splitter.h
|
||||
// Purpose: Persistence support for wxSplitterWindow.
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2011-08-31
|
||||
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PERSIST_SPLITTER_H_
|
||||
#define _WX_PERSIST_SPLITTER_H_
|
||||
|
||||
#include "wx/persist/window.h"
|
||||
|
||||
#include "wx/splitter.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// string constants used by wxPersistentSplitter
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define wxPERSIST_SPLITTER_KIND wxASCII_STR("Splitter")
|
||||
|
||||
// Special position value of -1 means the splitter is not split at all.
|
||||
#define wxPERSIST_SPLITTER_POSITION wxASCII_STR("Position")
|
||||
|
||||
#define wxPERSIST_SPLITTER_DEFAULT_HORIZONTAL wxASCII_STR("LastHorz")
|
||||
#define wxPERSIST_SPLITTER_DEFAULT_VERTICAL wxASCII_STR("LastVert")
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxPersistentSplitter: supports saving/restoring splitter position
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxPersistentSplitter : public wxPersistentWindow<wxSplitterWindow>
|
||||
{
|
||||
public:
|
||||
wxPersistentSplitter(wxSplitterWindow* splitter)
|
||||
: wxPersistentWindow<wxSplitterWindow>(splitter)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void Save() const override
|
||||
{
|
||||
wxSplitterWindow* const splitter = Get();
|
||||
|
||||
int pos = splitter->IsSplit() ? splitter->GetSashPosition() : -1;
|
||||
SaveValue(wxPERSIST_SPLITTER_POSITION, pos);
|
||||
|
||||
// Save the previously used position too if we have them.
|
||||
const wxPoint lastSplitPos = splitter->GetLastSplitPosition();
|
||||
if ( lastSplitPos.x || lastSplitPos.y )
|
||||
{
|
||||
SaveValue(wxPERSIST_SPLITTER_DEFAULT_HORIZONTAL, lastSplitPos.y);
|
||||
SaveValue(wxPERSIST_SPLITTER_DEFAULT_VERTICAL, lastSplitPos.x);
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool Restore() override
|
||||
{
|
||||
int pos;
|
||||
if ( !RestoreValue(wxPERSIST_SPLITTER_POSITION, &pos) )
|
||||
return false;
|
||||
|
||||
if ( pos == -1 )
|
||||
Get()->Unsplit();
|
||||
else
|
||||
Get()->SetSashPosition(pos);
|
||||
|
||||
// Note that it's possible that default position was not stored, in
|
||||
// which case lastSplitPos will just remain as (0, 0) and that's ok.
|
||||
wxPoint lastSplitPos;
|
||||
RestoreValue(wxPERSIST_SPLITTER_DEFAULT_HORIZONTAL, &lastSplitPos.x);
|
||||
RestoreValue(wxPERSIST_SPLITTER_DEFAULT_VERTICAL, &lastSplitPos.y);
|
||||
|
||||
Get()->SetLastSplitPosition(lastSplitPos);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual wxString GetKind() const override { return wxPERSIST_SPLITTER_KIND; }
|
||||
};
|
||||
|
||||
inline wxPersistentObject *wxCreatePersistentObject(wxSplitterWindow* splitter)
|
||||
{
|
||||
return new wxPersistentSplitter(splitter);
|
||||
}
|
||||
|
||||
#endif // _WX_PERSIST_SPLITTER_H_
|
||||
Reference in New Issue
Block a user