wxRegConfig::GetEntryType() added and some bugs fixed

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-04-06 21:13:46 +00:00
parent 22d5903e91
commit 61ba49f2b6
4 changed files with 60 additions and 32 deletions

View File

@@ -90,11 +90,11 @@ public:
// the type of an entry // the type of an entry
enum EntryType enum EntryType
{ {
Unknown, Type_Unknown,
String, Type_String,
Boolean, Type_Boolean,
Integer, // use Read(long *) Type_Integer, // use Read(long *)
Float // use Read(double *) Type_Float // use Read(double *)
}; };
// static functions // static functions
@@ -111,17 +111,14 @@ public:
// should Get() try to create a new log object if the current one is NULL? // should Get() try to create a new log object if the current one is NULL?
static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; }
// ctor & virtual dtor // ctors & virtual dtor
// environment variable expansion is on by default // Not all args will always be used by derived classes, but including
// wxConfigBase() { m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; } // them all in each class ensures compatibility. If appName is empty,
// uses wxApp name
// ctor wxConfigBase(const wxString& appName = wxEmptyString,
const wxString& vendorName = wxEmptyString,
// Not all args will always be used by derived classes, but const wxString& localFilename = wxEmptyString,
// including them all in each class ensures compatibility. const wxString& globalFilename = wxEmptyString,
// 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); long style = 0);
// empty but ensures that dtor of all derived classes is virtual // empty but ensures that dtor of all derived classes is virtual
@@ -161,7 +158,7 @@ public:
virtual EntryType GetEntryType(const wxString& name) const virtual EntryType GetEntryType(const wxString& name) const
{ {
// by default all entries are strings // 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 // 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 GetAppName() const { return m_appName; }
wxString GetVendorName() const { return m_vendorName; } wxString GetVendorName() const { return m_vendorName; }
void SetAppName(const wxString& appName) { m_appName = appName; } virtual void SetAppName(const wxString& appName)
void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } { m_appName = appName; }
virtual void SetVendorName(const wxString& vendorName)
{ m_vendorName = vendorName; }
void SetStyle(long style) { m_style = style; } void SetStyle(long style) { m_style = style; }
long GetStyle() const { return m_style; } long GetStyle() const { return m_style; }

View File

@@ -53,6 +53,7 @@ public:
// tests for existence // tests for existence
virtual bool HasGroup(const wxString& strName) const; virtual bool HasGroup(const wxString& strName) const;
virtual bool HasEntry(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 // get number of entries/subgroups in the current group, with or without
// it's subgroups // it's subgroups

View File

@@ -224,6 +224,11 @@ bool wxPen::RealizeResource()
break ; break ;
default: default:
logb.lbStyle = BS_SOLID ; 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 ; break ;
} }
logb.lbColor = ms_colour ; logb.lbColor = ms_colour ;

View File

@@ -21,18 +21,18 @@
#endif #endif
#ifndef WX_PRECOMP #ifndef WX_PRECOMP
#include <wx/string.h> #include "wx/string.h"
#endif //WX_PRECOMP #endif //WX_PRECOMP
#include <wx/event.h> #include "wx/event.h"
#include <wx/app.h> #include "wx/app.h"
#include <wx/log.h> #include "wx/log.h"
#include <wx/config.h> #include "wx/config.h"
#ifndef __WIN16__ #ifndef __WIN16__
#include <wx/msw/registry.h> #include "wx/msw/registry.h"
#include <wx/msw/regconf.h> #include "wx/msw/regconf.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// constants // constants
@@ -287,14 +287,39 @@ size_t wxRegConfig::GetNumberOfGroups(bool bRecursive) const
// tests for existence // 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)) ) { (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) {
// nothing to do // nothing to do
// TODO: do we return TRUE? Not in original implementation,
// but I don't see why not. -- JACS
*pStr = wxConfigBase::ExpandEnvVars(*pStr); *pStr = wxConfigBase::ExpandEnvVars(*pStr);
return TRUE; return TRUE;
} }