Allow customization of the locations where persistent settings are stored.

Make it possible to set a non-default wxPersistenceManager to use and allow
overriding of GetConfig() and GetKey() methods by making them virtual and
documenting them.

This can be notably used to allow porting of the existing code to use
wxPersistenceManager while keeping compatibility with the old settings.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-10-30 10:08:18 +00:00
parent eacfac2d5e
commit 911219b2ab
4 changed files with 98 additions and 10 deletions

View File

@@ -44,6 +44,14 @@ wxPersistentObject *wxCreatePersistentObject(T *obj);
class WXDLLIMPEXP_CORE wxPersistenceManager
{
public:
// Call this method to specify a non-default persistence manager to use.
// This function should usually be called very early to affect creation of
// all persistent controls and the object passed to it must have a lifetime
// long enough to be still alive when the persistent controls are destroyed
// and need it to save their state so typically this would be a global or a
// wxApp member.
static void Set(wxPersistenceManager& manager);
// accessor to the unique persistence manager object
static wxPersistenceManager& Get();
@@ -133,7 +141,7 @@ public:
#undef wxPERSIST_DECLARE_SAVE_RESTORE_FOR
private:
protected:
// ctor is private, use Get()
wxPersistenceManager()
{
@@ -142,15 +150,18 @@ private:
}
// helpers of Save/Restore()
//
// TODO: make this customizable by allowing
// (a) specifying custom wxConfig object to use
// (b) allowing to use something else entirely
wxConfigBase *GetConfig() const { return wxConfigBase::Get(); }
wxString GetKey(const wxPersistentObject& who, const wxString& name) const;
// Return the config object to use, by default just the global one but a
// different one could be used by the derived class if needed.
virtual wxConfigBase *GetConfig() const { return wxConfigBase::Get(); }
// Return the path to use for saving the setting with the given name for
// the specified object (notice that the name is the name of the setting,
// not the name of the object itself which can be retrieved with GetName()).
virtual wxString GetKey(const wxPersistentObject& who,
const wxString& name) const;
private:
// map with the registered objects as keys and associated
// wxPersistentObjects as values
wxPersistentObjectsMap m_persistentObjects;