minor fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1998-08-23 22:21:47 +00:00
parent c47711479e
commit 4128681253
2 changed files with 85 additions and 13 deletions

View File

@ -78,6 +78,9 @@ wxRegConfig::wxRegConfig(const wxString& strRoot)
// Create() will Open() if key already exists // Create() will Open() if key already exists
m_keyLocalRoot.Create(); m_keyLocalRoot.Create();
// as it's the same key, Open() shouldn't fail (i.e. no need for Create())
m_keyLocal.Open();
wxLogNull nolog; wxLogNull nolog;
m_keyGlobalRoot.Open(); m_keyGlobalRoot.Open();
} }
@ -94,10 +97,9 @@ void wxRegConfig::SetPath(const wxString& strPath)
{ {
wxArrayString aParts; wxArrayString aParts;
if ( strPath.IsEmpty() ) // because GetPath() returns "" when we're at root, we must understand
return; // empty string as "/"
if ( strPath.IsEmpty() || (strPath[0] == wxCONFIG_PATH_SEPARATOR) ) {
if ( strPath[0] == wxCONFIG_PATH_SEPARATOR ) {
// absolute path // absolute path
wxSplitPath(aParts, strPath); wxSplitPath(aParts, strPath);
} }
@ -278,14 +280,19 @@ bool wxRegConfig::Read(wxString *pStr,
// first try local key // first try local key
if ( TryGetValue(m_keyLocal, path.Name(), *pStr) || if ( TryGetValue(m_keyLocal, path.Name(), *pStr) ||
(bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) { (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) {
return TRUE; // nothing to do
}
else {
if ( IsRecordingDefaults() ) {
((wxRegConfig*)this)->Write(szKey, szDefault);
}
// default value
*pStr = szDefault;
} }
if(IsRecordingDefaults()) *pStr = wxConfigBase::ExpandEnvVars(*pStr);
((wxRegConfig*)this)->Write(szKey,szDefault);
// default value
*pStr = szDefault;
return FALSE; return FALSE;
} }

View File

@ -32,6 +32,8 @@
#include "wx/intl.h" #include "wx/intl.h"
#include "wx/log.h" #include "wx/log.h"
#include "wx/config.h" // for wxExpandEnvVars
// Windows headers // Windows headers
/* /*
#define STRICT #define STRICT
@ -804,7 +806,7 @@ bool GetExtensionFromMimeType(wxString *pExt, const wxString& strMimeType)
// suppress possible error messages // suppress possible error messages
wxLogNull nolog; wxLogNull nolog;
wxRegKey key(wxRegKey::HKCR, strKey); wxRegKey key(wxRegKey::HKCR, strKey);
if ( key.IsOpened() ) { if ( key.Open() ) {
if ( key.QueryValue("Extension", *pExt) ) if ( key.QueryValue("Extension", *pExt) )
return TRUE; return TRUE;
} }
@ -827,7 +829,7 @@ bool GetMimeTypeFromExtension(wxString *pMimeType, const wxString& strExt)
// suppress possible error messages // suppress possible error messages
wxLogNull nolog; wxLogNull nolog;
wxRegKey key(wxRegKey::HKCR, str); wxRegKey key(wxRegKey::HKCR, str);
if ( key.IsOpened() ) { if ( key.Open() ) {
if ( key.QueryValue("Content Type", *pMimeType) ) if ( key.QueryValue("Content Type", *pMimeType) )
return TRUE; return TRUE;
} }
@ -850,11 +852,74 @@ bool GetFileTypeFromExtension(wxString *pFileType, const wxString& strExt)
// suppress possible error messages // suppress possible error messages
wxLogNull nolog; wxLogNull nolog;
wxRegKey key(wxRegKey::HKCR, str); wxRegKey key(wxRegKey::HKCR, str);
if ( key.IsOpened() ) { if ( key.Open() ) {
if ( key.QueryValue("", *pFileType) ) // it's the default value of the key if ( key.QueryValue("", *pFileType) ) // it's the default value of the key
return TRUE; return TRUE;
} }
// no such extension or no value // no such extension or no value
return FALSE; return FALSE;
} }
bool GetFileTypeIcon(wxIcon *pIcon, const wxString& strFileType)
{
wxCHECK( !strFileType.IsEmpty(), FALSE );
wxString strIconKey;
strIconKey << strFileType << REG_SEPARATOR << "DefaultIcon";
// suppress possible error messages
wxLogNull nolog;
wxRegKey key(wxRegKey::HKCR, strIconKey);
if ( key.Open() ) {
wxString strIcon;
if ( key.QueryValue("", strIcon) ) { // it's the default value of the key
// the format is the following: <full path to file>, <icon index>
// NB: icon index may be negative as well as positive and the full path
// may contain the environment variables inside '%'
wxString strFullPath = strIcon.Before(','),
strIndex = strIcon.After(',');
// unless I misunderstand the format (may be index may be ommited, I
// don't know)
wxASSERT( !(strFullPath.IsEmpty() || strIndex.IsEmpty()) );
wxString strExpPath = wxExpandEnvVars(strFullPath);
int nIndex = atoi(strIndex);
HICON hIcon = ExtractIcon(GetModuleHandle(NULL), strExpPath, nIndex);
switch ( (int)hIcon ) {
case 0: // means no icons were found
case 1: // means no such file or it wasn't a DLL/EXE/OCX/ICO/...
wxLogDebug("incorrect registry entry '%s': no such icon.",
GetFullName(&key));
break;
default:
pIcon->SetHICON((WXHICON)hIcon);
return TRUE;
}
}
}
// no such file type or no value or incorrect icon entry
return FALSE;
}
bool GetFileTypeDescription(wxString *pDesc, const wxString& strFileType)
{
wxCHECK( !strFileType.IsEmpty(), FALSE );
// suppress possible error messages
wxLogNull nolog;
wxRegKey key(wxRegKey::HKCR, strFileType);
if ( key.Open() ) {
if ( key.QueryValue("", *pDesc) ) // it's the default value of the key
return TRUE;
}
// no such file type or no value
return FALSE;
}