| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/persist.h
 
- // Purpose:     interface of wxPersistenceManager and related classes
 
- // Author:      Vadim Zeitlin
 
- // Copyright:   (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Provides support for automatically saving and restoring object properties
 
-     to persistent storage.
 
-     This class is the central element of wxWidgets persistence framework, see
 
-     @ref overview_persistence for its overview.
 
-     This is a singleton class and its unique instance can be retrieved using
 
-     Get() method.
 
-     @since 2.9.0
 
-     @library{wxcore}
 
-  */
 
- class wxPersistenceManager
 
- {
 
- public:
 
-     /**
 
-         Set the global persistence manager to use.
 
-         Call this method to specify a non-default persistence manager to use.
 
-         It should usually be called very early (e.g. in wxApp-derived class
 
-         constructor or in the beginning of overridden wxApp::OnInit()) 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.
 
-         @since 2.9.3
 
-      */
 
-     static void Set(wxPersistenceManager& manager);
 
-     /**
 
-         Returns the unique persistence manager object.
 
-         If Set() hadn't been called before, a default persistence manager
 
-         implementation is returned.
 
-      */
 
-     static wxPersistenceManager& Get();
 
-     /**
 
-         Globally disable saving the persistence object properties.
 
-         By default, saving properties in Save() is enabled but the program may
 
-         wish to disable if, for example, it detects that it is running on a
 
-         system which shouldn't be modified in any way and so configuration
 
-         file (or Windows registry) shouldn't be written to.
 
-         @see DisableRestoring()
 
-      */
 
-     void DisableSaving();
 
-     /**
 
-         Globally disable restoring the persistence object properties.
 
-         By default, restoring properties in Restore() is enabled but this
 
-         function allows to disable it. This is mostly useful for testing.
 
-         @see DisableSaving()
 
-      */
 
-     void DisableRestoring();
 
-     /**
 
-         Register an object with the manager automatically creating a
 
-         persistence adapter for it.
 
-         This is equivalent to calling Register(void *, wxPersistentObject *)
 
-         with wxCreatePersistentObject(obj) as the second argument.
 
-         @param obj
 
-             The object to register. wxCreatePersistentObject() overload must be
 
-             defined for the objects of this class.
 
-      */
 
-     template <class T>
 
-     wxPersistentObject *Register(T *obj);
 
-     /**
 
-         Register an object with the manager.
 
-         Note that registering the object doesn't do anything except allowing to
 
-         call Restore() for it later. If you want to register the object and
 
-         restore its properties, use RegisterAndRestore().
 
-         The manager takes ownership of @a po and will delete it when it is
 
-         unregistered.
 
-         @param obj
 
-             The object to register.
 
-         @param po
 
-             The wxPersistentObject to use for saving and restoring this object
 
-             properties.
 
-      */
 
-     wxPersistentObject *Register(void *obj, wxPersistentObject *po);
 
-     /**
 
-         Check if the object is registered and return the associated
 
-         wxPersistentObject if it is or @NULL otherwise.
 
-      */
 
-     wxPersistentObject *Find(void *obj) const;
 
-     /**
 
-         Unregister the object and delete the associated wxPersistentObject.
 
-         For the persistent windows this is done automatically (via
 
-         SaveAndUnregister()) when the window is destroyed so you only need to
 
-         call this function explicitly if you are using custom persistent
 
-         objects or if you want to prevent the object properties from being
 
-         saved.
 
-         @param obj
 
-             An object previously registered with Register().
 
-      */
 
-     void Unregister(void *obj);
 
-     /**
 
-         Save the object properties to persistent storage.
 
-         This method does nothing if DisableSaving() had been called.
 
-         @param obj
 
-             An object previously registered with Register().
 
-         @see SaveAndUnregister()
 
-      */
 
-     void Save(void *obj);
 
-     /**
 
-         Restore the object properties previously saved by Save().
 
-         This method does nothing if DisableRestoring() had been called.
 
-         @param obj
 
-             An object previously registered with Register().
 
-         @return
 
-             @true if the object properties were restored or @false if nothing
 
-             was found to restore or the saved settings were invalid.
 
-         @see RegisterAndRestore()
 
-      */
 
-     bool Restore(void *obj);
 
-     /// Combines both Save() and Unregister() calls.
 
-     void SaveAndUnregister(void *obj);
 
-     /// Combines both Register() and Restore() calls.
 
-     //@{
 
-     template <class T>
 
-     bool RegisterAndRestore(T *obj);
 
-     bool RegisterAndRestore(void *obj, wxPersistentObject *po);
 
-     //@}
 
- protected:
 
-     /**
 
-         Protected default constructor.
 
-         This constructor is only provided for the derived classes, to use an
 
-         object of this class static Get() method should be called.
 
-      */
 
-     wxPersistenceManager();
 
-     /**
 
-         Return the config object to use.
 
-         By default the global wxConfig, returned by wxConfigBase::Get(), is
 
-         used but a derived class could override this function to return a
 
-         different one if necessary.
 
-         @since 2.9.3
 
-      */
 
-     virtual wxConfigBase *GetConfig() const;
 
-     /**
 
-         Return the path to use for saving the setting with the given name for
 
-         the specified object.
 
-         Notice that the @a name argument is the name of the setting, not the
 
-         name of the object itself which can be retrieved with its GetName()
 
-         method.
 
-         This method can be overridden by a derived class to change where in
 
-         wxConfig the different options are stored. By default, all settings of
 
-         the persistent controls are stored under "Persistent_Options" group and
 
-         grouped by control type (e.g. "Window" for top level windows or
 
-         "Splitter") and name, so that the position of a splitter called "sep"
 
-         could be stored under "Persistent_Options/Splitter/sep/Position" key.
 
-         @since 2.9.3
 
-      */
 
-     virtual wxString GetKey(const wxPersistentObject& who,
 
-                             const wxString& name) const;
 
- };
 
- /**
 
-     Base class for persistent object adapters.
 
-     wxWidgets persistence framework is non-intrusive, i.e. can work with the
 
-     classes which have no relationship to nor knowledge of it. To allow this,
 
-     an intermediate persistence adapter is used: this is just a simple object
 
-     which provides the methods used by wxPersistenceManager to save and restore
 
-     the object properties and implements them using the concrete class methods.
 
-     You may derive your own classes from wxPersistentObject to implement
 
-     persistence support for your common classes, see @ref persistence_defining.
 
-     @see wxPersistentWindow<>
 
-  */
 
- class wxPersistentObject
 
- {
 
- public:
 
-     /**
 
-         Constructor takes the object which we're associated with.
 
-         This object must have life-time greater than ours as we keep a pointer
 
-         to it.
 
-      */
 
-     wxPersistentObject(void *obj);
 
-     /// Trivial but virtual destructor.
 
-     virtual ~wxPersistentObject();
 
-     /**
 
-         @name Methods to be implemented in the derived classes.
 
-         Notice that these methods are only used by wxPersistenceManager
 
-         normally and shouldn't be called directly.
 
-      */
 
-     //@{
 
-     /**
 
-         Save the object properties.
 
-         The implementation of this method should use SaveValue().
 
-      */
 
-     virtual void Save() const = 0;
 
-     /**
 
-         Restore the object properties.
 
-         The implementation of this method should use RestoreValue().
 
-      */
 
-     virtual bool Restore() = 0;
 
-     /**
 
-         Returns the string uniquely identifying the objects supported by this
 
-         adapter.
 
-         This method is called from SaveValue() and RestoreValue() and normally
 
-         returns some short (but not too cryptic) strings, e.g. @c "Checkbox".
 
-      */
 
-     virtual wxString GetKind() const = 0;
 
-     /**
 
-         Returns the string uniquely identifying the object we're associated
 
-         with among all the other objects of the same type.
 
-         This method is used together with GetKind() to construct the unique
 
-         full name of the object in e.g. a configuration file.
 
-      */
 
-     virtual wxString GetName() const = 0;
 
-     //@}
 
-     /// Return the associated object.
 
-     void *GetObject() const;
 
- protected:
 
-     /**
 
-         Save the specified value using the given name.
 
-         @param name
 
-             The name of the value in the configuration file.
 
-         @param value
 
-             The value to save, currently must be a type supported by wxConfig.
 
-         @return
 
-             @true if the value was saved or @false if an error occurred.
 
-      */
 
-     template <typename T>
 
-     bool SaveValue(const wxString& name, T value) const;
 
-     /**
 
-         Restore the value saved by Save().
 
-         @param name
 
-             The same name as was used by Save().
 
-         @param value
 
-             Non-@NULL pointer which will be filled with the value if it was
 
-             read successfully or not modified if it wasn't.
 
-         @return
 
-             @true if the value was successfully read or @false if it was not
 
-             found or an error occurred.
 
-      */
 
-     template <typename T>
 
-     bool RestoreValue(const wxString& name, T *value);
 
- };
 
- /**
 
-     Function used to create the correct persistent adapter for the given type
 
-     of objects.
 
-     To be precise, there is no such template function definition but there are
 
-     overloads of wxCreatePersistentObject() taking different object types for
 
-     all wxWidgets classes supporting persistence. And you may also define your
 
-     own overloads to integrate your custom classes with wxWidgets persistence
 
-     framework.
 
-     @see @ref persistence_defining
 
-     @header{wx/persist.h}
 
-  */
 
- template <class T>
 
- wxPersistentObject *wxCreatePersistentObject(T *obj);
 
- /**
 
-     A shorter synonym for wxPersistenceManager::RegisterAndRestore().
 
-     This function simply calls wxPersistenceManager::RegisterAndRestore() but
 
-     using it results in slightly shorter code as it calls
 
-     wxPersistenceManager::Get() internally. As an additional convenience, this
 
-     function can also set the window name.
 
-     For the implementation reasons, this function @em must be used instead of
 
-     the template method when using Microsoft Visual C++ 6 compiler.
 
-     @param obj wxWindow-derived object to register with persistence manager and
 
-         to try to restore the settings for.
 
-     @param name If not empty, @a obj name is changed to the provided value
 
-         before registering it.
 
-     @return true if the settings were restored or false otherwise (this will
 
-         always be the case when the program runs for the first time, for
 
-         example).
 
-     @since 2.9.0, @a name is new in 2.9.1.
 
-     @header{wx/persist.h}
 
-  */
 
- template <class T>
 
- bool wxPersistentRegisterAndRestore(T *obj, const wxString& name = wxString());
 
 
  |