X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61ba49f2b62b7ef9e871b75866836d1d9db06fb0..d015713e787da8241e92ff86ee2e911868b8024c:/include/wx/confbase.h?ds=sidebyside diff --git a/include/wx/confbase.h b/include/wx/confbase.h index e849917ffb..936e22190c 100644 --- a/include/wx/confbase.h +++ b/include/wx/confbase.h @@ -35,42 +35,30 @@ /// separates group and entry names (probably shouldn't be changed) #ifndef wxCONFIG_PATH_SEPARATOR - #define wxCONFIG_PATH_SEPARATOR '/' + #define wxCONFIG_PATH_SEPARATOR _T('/') #endif /// introduces immutable entries // (i.e. the ones which can't be changed from the local config file) #ifndef wxCONFIG_IMMUTABLE_PREFIX - #define wxCONFIG_IMMUTABLE_PREFIX '!' + #define wxCONFIG_IMMUTABLE_PREFIX _T('!') #endif -/// should we use registry instead of configuration files under Win32? +/// should we use registry instead of configuration files under Windows? // (i.e. whether wxConfigBase::Create() will create a wxFileConfig (if it's // FALSE) or wxRegConfig (if it's true and we're under Win32) or wxIniConfig // (under Win16)) -#ifndef wxCONFIG_WIN32_NATIVE - #define wxCONFIG_WIN32_NATIVE TRUE +#ifndef wxUSE_CONFIG_NATIVE + #define wxUSE_CONFIG_NATIVE 1 #endif // Style flags for constructor style parameter -#define wxCONFIG_USE_LOCAL_FILE 1 -#define wxCONFIG_USE_GLOBAL_FILE 2 - -// ---------------------------------------------------------------------------- -// various helper global functions -// ---------------------------------------------------------------------------- - -/* - Replace environment variables ($SOMETHING) with their values. The format is - $VARNAME or ${VARNAME} where VARNAME contains alphanumeric characters and - '_' only. '$' must be escaped ('\$') in order to be taken literally. - */ -extern wxString wxExpandEnvVars(const wxString &sz); - -/* - Split path into parts removing '..' in progress - */ -extern void wxSplitPath(wxArrayString& aParts, const char *sz); +enum +{ + wxCONFIG_USE_LOCAL_FILE = 1, + wxCONFIG_USE_GLOBAL_FILE = 2, + wxCONFIG_USE_RELATIVE_PATH = 4 +}; // ---------------------------------------------------------------------------- // abstract base class wxConfigBase which defines the interface for derived @@ -81,7 +69,7 @@ extern void wxSplitPath(wxArrayString& aParts, const char *sz); // There is always one current group given by the current path. // // Keys are pairs "key_name = value" where value may be of string or integer -// (long) type (@@@ doubles and other types such as wxDate coming soon). +// (long) type (TODO doubles and other types such as wxDate coming soon). // ---------------------------------------------------------------------------- class WXDLLEXPORT wxConfigBase { @@ -102,16 +90,19 @@ public: static wxConfigBase *Set(wxConfigBase *pConfig); // get the config object, creates it on demand unless DontCreateOnDemand // was called - static wxConfigBase *Get() { if ( !ms_pConfig ) Create(); return ms_pConfig; } + static wxConfigBase *Get(bool createOnDemand = TRUE) + { if ( createOnDemand && (!ms_pConfig) ) Create(); return ms_pConfig; } // create a new config object: this function will create the "best" // implementation of wxConfig available for the current platform, see - // comments near definition wxCONFIG_WIN32_NATIVE for details. It returns + // comments near definition wxUSE_CONFIG_NATIVE for details. It returns // the created object and also sets it as ms_pConfig. static wxConfigBase *Create(); // should Get() try to create a new log object if the current one is NULL? static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } - // ctors & virtual dtor + // ctor & virtual dtor + // ctor (can be used as default ctor too) + // // Not all args will always be used by derived classes, but including // them all in each class ensures compatibility. If appName is empty, // uses wxApp name @@ -122,7 +113,7 @@ public: long style = 0); // empty but ensures that dtor of all derived classes is virtual - virtual ~wxConfigBase() { } + virtual ~wxConfigBase(); // path management // set current path: if the first character is '/', it's the absolute path, @@ -196,6 +187,7 @@ public: // Convenience functions virtual bool Write(const wxString& key, double value); virtual bool Write(const wxString& key, bool value); + virtual bool Write(const wxString& key, const wxChar *text ) ; // permanently writes all changes virtual bool Flush(bool bCurrentOnly = FALSE) = 0; @@ -235,21 +227,16 @@ public: wxString GetAppName() const { return m_appName; } wxString GetVendorName() const { return m_vendorName; } - virtual void SetAppName(const wxString& appName) - { m_appName = appName; } - virtual void SetVendorName(const wxString& vendorName) - { m_vendorName = vendorName; } + // Used wxIniConfig to set members in constructor + void SetAppName(const wxString& appName) { m_appName = appName; } + void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } void SetStyle(long style) { m_style = style; } long GetStyle() const { return m_style; } protected: static bool IsImmutable(const wxString& key) - #ifndef __WXMAC__ - { return !key.IsEmpty() && key[0u] == wxCONFIG_IMMUTABLE_PREFIX; } - #else - { return !key.IsEmpty() && key[0ul] == wxCONFIG_IMMUTABLE_PREFIX; } - #endif + { return !key.IsEmpty() && key[0] == wxCONFIG_IMMUTABLE_PREFIX; } private: // are we doing automatic environment variable expansion? @@ -297,7 +284,7 @@ private: // ---------------------------------------------------------------------------- // under Windows we prefer to use the native implementation -#if defined(__WXMSW__) && wxCONFIG_WIN32_NATIVE +#if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE #ifdef __WIN32__ #define wxConfig wxRegConfig #define sm_classwxConfig sm_classwxRegConfig @@ -310,9 +297,23 @@ private: #define sm_classwxConfig sm_classwxFileConfig #endif -#endif +#endif // wxUSE_CONFIG + +// ---------------------------------------------------------------------------- +// various helper global functions (defined even if !wxUSE_CONFIG) +// ---------------------------------------------------------------------------- + +/* + Replace environment variables ($SOMETHING) with their values. The format is + $VARNAME or ${VARNAME} where VARNAME contains alphanumeric characters and + '_' only. '$' must be escaped ('\$') in order to be taken literally. + */ +extern WXDLLEXPORT wxString wxExpandEnvVars(const wxString &sz); - // wxUSE_CONFIG +/* + Split path into parts removing '..' in progress + */ +extern WXDLLEXPORT void wxSplitPath(wxArrayString& aParts, const wxChar *sz); #endif // _WX_CONFIG_H_