| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/persist/treebook.h
- // Purpose: persistence support for wxBookCtrl
- // Author: Vadim Zeitlin
- // Created: 2009-01-19
- // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_PERSIST_TREEBOOK_H_
- #define _WX_PERSIST_TREEBOOK_H_
- #include "wx/persist/bookctrl.h"
- #include "wx/arrstr.h"
- #include "wx/treebook.h"
- // ----------------------------------------------------------------------------
- // string constants used by wxPersistentTreeBookCtrl
- // ----------------------------------------------------------------------------
- #define wxPERSIST_TREEBOOK_KIND "TreeBook"
- // this key contains the indices of all expanded nodes in the tree book
- // separated by wxPERSIST_TREEBOOK_EXPANDED_SEP
- #define wxPERSIST_TREEBOOK_EXPANDED_BRANCHES "Expanded"
- #define wxPERSIST_TREEBOOK_EXPANDED_SEP ','
- // ----------------------------------------------------------------------------
- // wxPersistentTreeBookCtrl: supports saving/restoring open tree branches
- // ----------------------------------------------------------------------------
- class wxPersistentTreeBookCtrl : public wxPersistentBookCtrl
- {
- public:
- wxPersistentTreeBookCtrl(wxTreebook *book)
- : wxPersistentBookCtrl(book)
- {
- }
- virtual void Save() const
- {
- const wxTreebook * const book = GetTreeBook();
- wxString expanded;
- const size_t count = book->GetPageCount();
- for ( size_t n = 0; n < count; n++ )
- {
- if ( book->IsNodeExpanded(n) )
- {
- if ( !expanded.empty() )
- expanded += wxPERSIST_TREEBOOK_EXPANDED_SEP;
- expanded += wxString::Format("%u", static_cast<unsigned>(n));
- }
- }
- SaveValue(wxPERSIST_TREEBOOK_EXPANDED_BRANCHES, expanded);
- wxPersistentBookCtrl::Save();
- }
- virtual bool Restore()
- {
- wxTreebook * const book = GetTreeBook();
- wxString expanded;
- if ( RestoreValue(wxPERSIST_TREEBOOK_EXPANDED_BRANCHES, &expanded) )
- {
- const wxArrayString
- indices(wxSplit(expanded, wxPERSIST_TREEBOOK_EXPANDED_SEP));
- const size_t pageCount = book->GetPageCount();
- const size_t count = indices.size();
- for ( size_t n = 0; n < count; n++ )
- {
- unsigned long idx;
- if ( indices[n].ToULong(&idx) && idx < pageCount )
- book->ExpandNode(idx);
- }
- }
- return wxPersistentBookCtrl::Restore();
- }
- virtual wxString GetKind() const { return wxPERSIST_TREEBOOK_KIND; }
- wxTreebook *GetTreeBook() const { return static_cast<wxTreebook *>(Get()); }
- };
- inline wxPersistentObject *wxCreatePersistentObject(wxTreebook *book)
- {
- return new wxPersistentTreeBookCtrl(book);
- }
- #endif // _WX_PERSIST_TREEBOOK_H_
|