splitter.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/persist/splitter.h
  3. // Purpose: Persistence support for wxSplitterWindow.
  4. // Author: Vadim Zeitlin
  5. // Created: 2011-08-31
  6. // Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
  7. // Licence: wxWindows licence
  8. ///////////////////////////////////////////////////////////////////////////////
  9. #ifndef _WX_PERSIST_SPLITTER_H_
  10. #define _WX_PERSIST_SPLITTER_H_
  11. #include "wx/persist/window.h"
  12. #include "wx/splitter.h"
  13. // ----------------------------------------------------------------------------
  14. // string constants used by wxPersistentSplitter
  15. // ----------------------------------------------------------------------------
  16. #define wxPERSIST_SPLITTER_KIND "Splitter"
  17. // Special position value of -1 means the splitter is not split at all.
  18. #define wxPERSIST_SPLITTER_POSITION "Position"
  19. // ----------------------------------------------------------------------------
  20. // wxPersistentSplitter: supports saving/restoring splitter position
  21. // ----------------------------------------------------------------------------
  22. class wxPersistentSplitter : public wxPersistentWindow<wxSplitterWindow>
  23. {
  24. public:
  25. wxPersistentSplitter(wxSplitterWindow* splitter)
  26. : wxPersistentWindow<wxSplitterWindow>(splitter)
  27. {
  28. }
  29. virtual void Save() const
  30. {
  31. wxSplitterWindow* const splitter = Get();
  32. int pos = splitter->IsSplit() ? splitter->GetSashPosition() : -1;
  33. SaveValue(wxPERSIST_SPLITTER_POSITION, pos);
  34. }
  35. virtual bool Restore()
  36. {
  37. int pos;
  38. if ( !RestoreValue(wxPERSIST_SPLITTER_POSITION, &pos) )
  39. return false;
  40. if ( pos == -1 )
  41. Get()->Unsplit();
  42. else
  43. Get()->SetSashPosition(pos);
  44. return true;
  45. }
  46. virtual wxString GetKind() const { return wxPERSIST_SPLITTER_KIND; }
  47. };
  48. inline wxPersistentObject *wxCreatePersistentObject(wxSplitterWindow* splitter)
  49. {
  50. return new wxPersistentSplitter(splitter);
  51. }
  52. #endif // _WX_PERSIST_SPLITTER_H_