X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/da468d387db3b7e22b008bf08be2ff6b202508fb..2dc1bdac6a37437e66e742122fb68f9c763f7d9e:/include/wx/fileconf.h diff --git a/include/wx/fileconf.h b/include/wx/fileconf.h index 5ea1073489..532f0c4a63 100644 --- a/include/wx/fileconf.h +++ b/include/wx/fileconf.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // Name: fileconf.h -// Purpose: wxFileConfig derivation of wxConfig +// Purpose: wxFileConfig derivation of wxConfigBase // Author: Vadim Zeitlin // Modified by: // Created: 07.04.98 (adapted from appconf.cpp) @@ -17,14 +17,18 @@ #pragma interface "fileconf.h" #endif +#include "wx/defs.h" +#include "wx/textfile.h" +#include "wx/string.h" + // ---------------------------------------------------------------------------- // compile options // ---------------------------------------------------------------------------- // it won't compile without it anyhow -#ifndef USE_WXCONFIG - #error "Please define USE_WXCONFIG or remove fileconf.cpp from your makefile" -#endif // USE_WXCONFIG +#ifndef wxUSE_CONFIG + #error "Please define wxUSE_CONFIG or remove fileconf.cpp from your makefile" +#endif // wxUSE_CONFIG // ---------------------------------------------------------------------------- // wxFileConfig @@ -95,7 +99,7 @@ IsExpandingEnvVars function). */ -class wxFileConfig : public wxConfig +class wxFileConfig : public wxConfigBase { public: // construct the "standard" full name for global (system-wide) and @@ -112,6 +116,8 @@ public: static wxString GetLocalFileName(const char *szFile); // ctor & dtor + +#if 0 // the names of local and global (if not disabled) config files are // constructed using Get{Local|Global}FileName functions described above // (szAppName is just the (short) name of your application) @@ -123,6 +129,14 @@ public: // directory). If either of strings is empty, the corresponding file is not // used. wxFileConfig(const wxString& strLocal, const wxString& strGlobal); +#endif + + // New constructor: one size fits all. Specify wxCONFIG_USE_LOCAL_FILE + // or wxCONFIG_USE_GLOBAL_FILE to say which files should be used. + wxFileConfig(const wxString& appName, const wxString& vendorName = "", + const wxString& localFilename = "", const wxString& globalFilename = "", + long style = wxCONFIG_USE_LOCAL_FILE); + // dtor will save unsaved data virtual ~wxFileConfig(); @@ -130,30 +144,44 @@ public: virtual void SetPath(const wxString& strPath); virtual const wxString& GetPath() const { return m_strPath; } - virtual bool GetFirstGroup(wxString& str, long& lIndex); - virtual bool GetNextGroup (wxString& str, long& lIndex); - virtual bool GetFirstEntry(wxString& str, long& lIndex); - virtual bool GetNextEntry (wxString& str, long& lIndex); + 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 uint GetNumberOfEntries(bool bRecursive = FALSE) const; - virtual uint GetNumberOfGroups(bool bRecursive = FALSE) 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 Read(wxString *pstr, const char *szKey, - const char *szDefault = 0) const; - virtual const char *Read(const char *szKey, - const char *szDefault = 0) const; - virtual bool Read(long *pl, const char *szKey, long lDefault) const; - virtual long Read(const char *szKey, long lDefault) const - { return wxConfig::Read(szKey, lDefault); } - virtual bool Write(const char *szKey, const char *szValue); - virtual bool Write(const char *szKey, long lValue); + virtual bool Read(const wxString& key, wxString *pStr) const; + virtual bool Read(const wxString& key, wxString *pStr, const wxString& defValue) const; + virtual bool Read(const wxString& key, long *pl) const; + + // The following are necessary to satisfy the compiler + wxString Read(const wxString& key, const wxString& defVal) const + { return wxConfigBase::Read(key, defVal); } + bool Read(const wxString& key, long *pl, long defVal) const + { return wxConfigBase::Read(key, pl, defVal); } + long Read(const wxString& key, long defVal) const + { return wxConfigBase::Read(key, defVal); } + bool Read(const wxString& key, int *pi, int defVal) const + { return wxConfigBase::Read(key, pi, defVal); } + bool Read(const wxString& key, int *pi) const + { return wxConfigBase::Read(key, pi); } + bool Read(const wxString& key, double* val) const + { return wxConfigBase::Read(key, val); } + bool Read(const wxString& key, double* val, double defVal) const + { return wxConfigBase::Read(key, val, defVal); } + + virtual bool Write(const wxString& key, const wxString& szValue); + virtual bool Write(const wxString& key, long lValue); + virtual bool Flush(bool bCurrentOnly = FALSE); - virtual bool DeleteEntry(const char *szKey, bool bGroupIfEmptyAlso); - virtual bool DeleteGroup(const char *szKey); + virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso); + virtual bool DeleteGroup(const wxString& szKey); virtual bool DeleteAll(); public: @@ -165,15 +193,16 @@ public: class LineList { public: + void SetNext(LineList *pNext) { m_pNext = pNext; } + void SetPrev(LineList *pPrev) { m_pPrev = pPrev; } + // ctor - LineList(const wxString& str, LineList *pNext = NULL) : m_strLine(str) - { SetNext(pNext); SetPrev(NULL); } + LineList(const wxString& str, LineList *pNext = (LineList *) NULL) : m_strLine(str) + { SetNext(pNext); SetPrev((LineList *) NULL); } // LineList *Next() const { return m_pNext; } LineList *Prev() const { return m_pPrev; } - void SetNext(LineList *pNext) { m_pNext = pNext; } - void SetPrev(LineList *pPrev) { m_pPrev = pPrev; } // void SetText(const wxString& str) { m_strLine = str; } @@ -262,15 +291,18 @@ public: class ConfigGroup { private: - wxFileConfig *m_pConfig; // config object we belong to - ConfigGroup *m_pParent; // parent group (NULL for root group) - ArrayEntries m_aEntries; // entries in this group - ArrayGroups m_aSubgroups; // subgroups - wxString m_strName; // group's name - bool m_bDirty; // if FALSE => all subgroups are not dirty - LineList *m_pLine; // pointer to our line in the linked list - ConfigEntry *m_pLastEntry; // last entry of this group in the local file - ConfigGroup *m_pLastGroup; // last subgroup + wxFileConfig *m_pConfig; // config object we belong to + ConfigGroup *m_pParent; // parent group (NULL for root group) + ArrayEntries m_aEntries; // entries in this group + ArrayGroups m_aSubgroups; // subgroups + wxString m_strName; // group's name + bool m_bDirty; // if FALSE => all subgroups are not dirty + LineList *m_pLine; // pointer to our line in the linked list + ConfigEntry *m_pLastEntry; // last entry/subgroup of this group in the + ConfigGroup *m_pLastGroup; // local file (we insert new ones after it) + + // DeleteSubgroupByName helper + bool DeleteSubgroup(ConfigGroup *pGroup); public: // ctor @@ -285,16 +317,16 @@ public: wxFileConfig *Config() const { return m_pConfig; } bool IsDirty() const { return m_bDirty; } - bool IsEmpty() const { return Entries().IsEmpty() && Groups().IsEmpty(); } const ArrayEntries& Entries() const { return m_aEntries; } const ArrayGroups& Groups() const { return m_aSubgroups; } + bool IsEmpty() const { return Entries().IsEmpty() && Groups().IsEmpty(); } // find entry/subgroup (NULL if not found) ConfigGroup *FindSubgroup(const char *szName) const; ConfigEntry *FindEntry (const char *szName) const; // delete entry/subgroup, return FALSE if doesn't exist - bool DeleteSubgroup(const char *szName); + bool DeleteSubgroupByName(const char *szName); bool DeleteEntry(const char *szName); // create new entry/subgroup returning pointer to newly created element @@ -305,17 +337,17 @@ public: void SetDirty(); void SetLine(LineList *pLine); - // the new entries in this subgroup will be inserted after the last subgroup - // or, if there is none, after the last entry - void SetLastEntry(ConfigEntry *pLastEntry) { m_pLastEntry = pLastEntry; } - void SetLastGroup(ConfigGroup *pLastGroup) { m_pLastGroup = pLastGroup; } - + // wxString GetFullName() const; // get the last line belonging to an entry/subgroup of this group - LineList *GetGroupLine(); - LineList *GetLastEntryLine(); - LineList *GetLastGroupLine(); + LineList *GetGroupLine(); // line which contains [group] + LineList *GetLastEntryLine(); // after which our subgroups start + LineList *GetLastGroupLine(); // after which the next group starts + + // called by entries/subgroups when they're created/deleted + void SetLastEntry(ConfigEntry *pEntry) { m_pLastEntry = pEntry; } + void SetLastGroup(ConfigGroup *pGroup) { m_pLastGroup = pGroup; } }; };