This can be useful to avoid saving the changes performed by the user if this turns out to be undesirable, for whatever reason. Closes https://github.com/wxWidgets/wxWidgets/pull/1451 Closes #13788.
		
			
				
	
	
		
			157 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        fileconf.h
 | 
						|
// Purpose:     interface of wxFileConfig
 | 
						|
// Author:      wxWidgets team
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
/**
 | 
						|
    @class wxFileConfig
 | 
						|
 | 
						|
    wxFileConfig implements wxConfigBase interface for
 | 
						|
    storing and retrieving configuration information using plain text files. The
 | 
						|
    files have a simple format reminiscent of Windows INI files with lines of the
 | 
						|
    form @c "key = value" defining the keys and lines of special form
 | 
						|
    @c "[group]" indicating the start of each group.
 | 
						|
 | 
						|
    This class is used by default for wxConfig on Unix platforms but may also be
 | 
						|
    used explicitly if you want to use files and not the registry even under
 | 
						|
    Windows.
 | 
						|
 | 
						|
    @library{wxbase}
 | 
						|
    @category{cfg}
 | 
						|
 | 
						|
    @see wxFileConfig::Save
 | 
						|
*/
 | 
						|
class wxFileConfig : public wxConfigBase
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
        Constructor allowing to choose the file names to use.
 | 
						|
 | 
						|
        If @a localFilename and/or @a globalFilename are explicitly specified,
 | 
						|
        they are used as the names of the user and system-wide configuration
 | 
						|
        files (the latter is only read by the program while the former is read
 | 
						|
        from and written to). Otherwise the behaviour depends on @a style
 | 
						|
        parameter. If it includes ::wxCONFIG_USE_LOCAL_FILE, then the local
 | 
						|
        file name is constructed from the information in @a appName and @a
 | 
						|
        vendorName arguments in a system-dependent way. If
 | 
						|
        ::wxCONFIG_USE_GLOBAL_FILE is not specified at all (and @a
 | 
						|
        globalFilename is empty) then the system-wide file is not used at all.
 | 
						|
        Otherwise its name and path are also constructed in the way appropriate
 | 
						|
        for the current platform from the application and vendor names.
 | 
						|
     */
 | 
						|
    wxFileConfig(const wxString& appName = wxEmptyString,
 | 
						|
               const wxString& vendorName = wxEmptyString,
 | 
						|
               const wxString& localFilename = wxEmptyString,
 | 
						|
               const wxString& globalFilename = wxEmptyString,
 | 
						|
               long style = wxCONFIG_USE_LOCAL_FILE | wxCONFIG_USE_GLOBAL_FILE,
 | 
						|
               const wxMBConv& conv = wxConvAuto());
 | 
						|
 | 
						|
    /**
 | 
						|
        Read the config data from the specified stream instead of the associated file,
 | 
						|
        as usual.
 | 
						|
 | 
						|
        @see Save()
 | 
						|
    */
 | 
						|
    wxFileConfig(wxInputStream& is, const wxMBConv& conv = wxConvAuto());
 | 
						|
 | 
						|
    /**
 | 
						|
        Return the full path to the file which would be used by wxFileConfig as global,
 | 
						|
        system-wide, file if it were constructed with @a basename as "global filename"
 | 
						|
        parameter in the constructor.
 | 
						|
 | 
						|
        Notice that this function cannot be used if @a basename is already a full path name.
 | 
						|
    */
 | 
						|
    static wxFileName GetGlobalFile(const wxString& basename);
 | 
						|
 | 
						|
    /**
 | 
						|
        Return the full path to the file which would be used by wxFileConfig as local,
 | 
						|
        user-specific, file if it were constructed with @a basename as "local filename"
 | 
						|
        parameter in the constructor.
 | 
						|
 | 
						|
        @a style has the same meaning as in @ref wxConfigBase::wxConfigBase "wxConfig constructor"
 | 
						|
        and can contain any combination of styles but only wxCONFIG_USE_SUBDIR bit is
 | 
						|
        examined by this function.
 | 
						|
 | 
						|
        Notice that this function cannot be used if @a basename is already a full path name.
 | 
						|
    */
 | 
						|
    static wxFileName GetLocalFile(const wxString& basename, int style = 0);
 | 
						|
 | 
						|
    static wxString GetGlobalFileName(const wxString& szFile);
 | 
						|
    static wxString GetLocalFileName(const wxString& szFile, int style = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
        Saves all config data to the given stream, returns @true if data was saved
 | 
						|
        successfully or @false on error.
 | 
						|
 | 
						|
        Note the interaction of this function with the internal "dirty flag": the
 | 
						|
        data is saved unconditionally, i.e. even if the object is not dirty. However
 | 
						|
        after saving it successfully, the dirty flag is reset so no changes will be
 | 
						|
        written back to the file this object is associated with until you change its
 | 
						|
        contents again.
 | 
						|
 | 
						|
        @see wxConfigBase::Flush
 | 
						|
    */
 | 
						|
    virtual bool Save(wxOutputStream& os, const wxMBConv& conv = wxConvAuto());
 | 
						|
 | 
						|
    /**
 | 
						|
        Enables saving data to the disk file when this object is destroyed.
 | 
						|
 | 
						|
        This is the default behaviour and this function doesn't need to be
 | 
						|
        called explicitly unless DisableAutoSave() had been previously called.
 | 
						|
 | 
						|
        @since 3.1.3
 | 
						|
    */
 | 
						|
    void EnableAutoSave();
 | 
						|
 | 
						|
    /**
 | 
						|
        Prevent this object from saving data to the disk file when it is
 | 
						|
        destroyed.
 | 
						|
 | 
						|
        By default, changes to this object are only saved permanently when
 | 
						|
        Flush() is explicitly called or when it is destroyed. If this method is
 | 
						|
        called, Flush() won't be called automatically from the destructor,
 | 
						|
        meaning that any non-explicitly-flushed changes will be lost.
 | 
						|
 | 
						|
        @since 3.1.3
 | 
						|
    */
 | 
						|
    void DisableAutoSave();
 | 
						|
 | 
						|
    /**
 | 
						|
        Allows setting the mode to be used for the config file creation. For example, to
 | 
						|
        create a config file which is not readable by other users (useful if it stores
 | 
						|
        some sensitive information, such as passwords), you could use @c SetUmask(0077).
 | 
						|
 | 
						|
        This function doesn't do anything on non-Unix platforms.
 | 
						|
 | 
						|
        @see wxCHANGE_UMASK()
 | 
						|
    */
 | 
						|
    void SetUmask(int mode);
 | 
						|
 | 
						|
  // implement inherited pure virtual functions
 | 
						|
  virtual void SetPath(const wxString& strPath);
 | 
						|
  virtual const wxString& GetPath() const;
 | 
						|
 | 
						|
  virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
 | 
						|
  virtual bool GetNextGroup (wxString& str, long& lIndex) const;
 | 
						|
  virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
 | 
						|
  virtual bool GetNextEntry (wxString& str, long& lIndex) const;
 | 
						|
 | 
						|
  virtual size_t GetNumberOfEntries(bool bRecursive = false) const;
 | 
						|
  virtual size_t GetNumberOfGroups(bool bRecursive = false) const;
 | 
						|
 | 
						|
  virtual bool HasGroup(const wxString& strName) const;
 | 
						|
  virtual bool HasEntry(const wxString& strName) const;
 | 
						|
 | 
						|
  virtual bool Flush(bool bCurrentOnly = false);
 | 
						|
 | 
						|
  virtual bool RenameEntry(const wxString& oldName, const wxString& newName);
 | 
						|
  virtual bool RenameGroup(const wxString& oldName, const wxString& newName);
 | 
						|
 | 
						|
  virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso = true);
 | 
						|
  virtual bool DeleteGroup(const wxString& szKey);
 | 
						|
  virtual bool DeleteAll();
 | 
						|
};
 | 
						|
 |