From 61ba49f2b62b7ef9e871b75866836d1d9db06fb0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 6 Apr 1999 21:13:46 +0000 Subject: [PATCH] wxRegConfig::GetEntryType() added and some bugs fixed git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/confbase.h | 37 +++++++++++++++--------------- include/wx/msw/regconf.h | 1 + src/msw/pen.cpp | 5 ++++ src/msw/regconf.cpp | 49 +++++++++++++++++++++++++++++----------- 4 files changed, 60 insertions(+), 32 deletions(-) diff --git a/include/wx/confbase.h b/include/wx/confbase.h index 2c31f070ef..e849917ffb 100644 --- a/include/wx/confbase.h +++ b/include/wx/confbase.h @@ -90,11 +90,11 @@ public: // the type of an entry enum EntryType { - Unknown, - String, - Boolean, - Integer, // use Read(long *) - Float // use Read(double *) + Type_Unknown, + Type_String, + Type_Boolean, + Type_Integer, // use Read(long *) + Type_Float // use Read(double *) }; // static functions @@ -111,17 +111,14 @@ public: // should Get() try to create a new log object if the current one is NULL? static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } - // ctor & virtual dtor - // environment variable expansion is on by default -// wxConfigBase() { m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; } - - // ctor - - // 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 - wxConfigBase(const wxString& appName = wxEmptyString, const wxString& vendorName = wxEmptyString, - const wxString& localFilename = wxEmptyString, const wxString& globalFilename = wxEmptyString, + // ctors & virtual dtor + // 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 + wxConfigBase(const wxString& appName = wxEmptyString, + const wxString& vendorName = wxEmptyString, + const wxString& localFilename = wxEmptyString, + const wxString& globalFilename = wxEmptyString, long style = 0); // empty but ensures that dtor of all derived classes is virtual @@ -161,7 +158,7 @@ public: virtual EntryType GetEntryType(const wxString& name) const { // by default all entries are strings - return HasEntry(name) ? String : Unknown; + return HasEntry(name) ? Type_String : Type_Unknown; } // key access: returns TRUE if value was really read, FALSE if default used @@ -238,8 +235,10 @@ public: wxString GetAppName() const { return m_appName; } wxString GetVendorName() const { return m_vendorName; } - void SetAppName(const wxString& appName) { m_appName = appName; } - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } + virtual void SetAppName(const wxString& appName) + { m_appName = appName; } + virtual void SetVendorName(const wxString& vendorName) + { m_vendorName = vendorName; } void SetStyle(long style) { m_style = style; } long GetStyle() const { return m_style; } diff --git a/include/wx/msw/regconf.h b/include/wx/msw/regconf.h index 630bab52d6..ed61115117 100644 --- a/include/wx/msw/regconf.h +++ b/include/wx/msw/regconf.h @@ -53,6 +53,7 @@ public: // tests for existence virtual bool HasGroup(const wxString& strName) const; virtual bool HasEntry(const wxString& strName) const; + virtual EntryType GetEntryType(const wxString& name) const; // get number of entries/subgroups in the current group, with or without // it's subgroups diff --git a/src/msw/pen.cpp b/src/msw/pen.cpp index 50f821006a..2862a4dcc3 100644 --- a/src/msw/pen.cpp +++ b/src/msw/pen.cpp @@ -224,6 +224,11 @@ bool wxPen::RealizeResource() break ; default: logb.lbStyle = BS_SOLID ; + // this should be unnecessary (it's unused) but suppresses the Purigy + // messages about uninitialized memory read +#ifdef __WXDEBUG__ + logb.lbHatch = 0; +#endif break ; } logb.lbColor = ms_colour ; diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 8943720d8f..cc1b230b54 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -21,18 +21,18 @@ #endif #ifndef WX_PRECOMP - #include + #include "wx/string.h" #endif //WX_PRECOMP -#include -#include -#include -#include +#include "wx/event.h" +#include "wx/app.h" +#include "wx/log.h" +#include "wx/config.h" #ifndef __WIN16__ -#include -#include +#include "wx/msw/registry.h" +#include "wx/msw/regconf.h" // ---------------------------------------------------------------------------- // constants @@ -287,14 +287,39 @@ size_t wxRegConfig::GetNumberOfGroups(bool bRecursive) const // tests for existence // ---------------------------------------------------------------------------- -bool wxRegConfig::HasGroup(const wxString& strName) const +bool wxRegConfig::HasGroup(const wxString& key) const { - return m_keyLocal.HasSubKey(strName) || m_keyGlobal.HasSubKey(strName); + wxConfigPathChanger path(this, key); + + wxString strName(path.Name()); + + return m_keyLocal.HasSubKey(strName) || m_keyGlobal.HasSubKey(strName); } -bool wxRegConfig::HasEntry(const wxString& strName) const +bool wxRegConfig::HasEntry(const wxString& key) const { - return m_keyLocal.HasValue(strName) || m_keyGlobal.HasValue(strName); + wxConfigPathChanger path(this, key); + + wxString strName(path.Name()); + + return m_keyLocal.HasValue(strName) || m_keyGlobal.HasValue(strName); +} + +wxConfigBase::EntryType wxRegConfig::GetEntryType(const wxString& key) const +{ + wxConfigPathChanger path(this, key); + + wxString strName(path.Name()); + + bool isNumeric; + if ( m_keyLocal.HasValue(strName) ) + isNumeric = m_keyLocal.IsNumericValue(strName); + else if ( m_keyGlobal.HasValue(strName) ) + isNumeric = m_keyGlobal.IsNumericValue(strName); + else + return wxConfigBase::Type_Unknown; + + return isNumeric ? wxConfigBase::Type_Integer : wxConfigBase::Type_String; } // ---------------------------------------------------------------------------- @@ -329,8 +354,6 @@ bool wxRegConfig::Read(const wxString& key, wxString *pStr) const (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) { // nothing to do - // TODO: do we return TRUE? Not in original implementation, - // but I don't see why not. -- JACS *pStr = wxConfigBase::ExpandEnvVars(*pStr); return TRUE; } -- 2.45.2