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
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; }

View File

@ -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

View File

@ -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 ;

View File

@ -21,18 +21,18 @@
#endif
#ifndef WX_PRECOMP
#include <wx/string.h>
#include "wx/string.h"
#endif //WX_PRECOMP
#include <wx/event.h>
#include <wx/app.h>
#include <wx/log.h>
#include <wx/config.h>
#include "wx/event.h"
#include "wx/app.h"
#include "wx/log.h"
#include "wx/config.h"
#ifndef __WIN16__
#include <wx/msw/registry.h>
#include <wx/msw/regconf.h>
#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;
}