]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/registry.cpp
Corrected the signature for wxFrame::Maximize
[wxWidgets.git] / src / msw / registry.cpp
index c6d0142dc1fb940c9637b4a19935fcc8a4e3c3ad..1fcc78c55f926aa263b3b8a403cfd0164cf72e73 100644 (file)
@@ -256,9 +256,10 @@ void wxRegKey::SetName(const wxRegKey& keyParent, const wxString& strKey)
   Close();
 
   // combine our name with parent's to get the full name
-  m_strKey = strKey;
+  m_strKey = keyParent.m_strKey;
   if ( !strKey.IsEmpty() && strKey[0] != REG_SEPARATOR )
     m_strKey += REG_SEPARATOR;
+  m_strKey += strKey;
 
   RemoveTrailingSeparator(m_strKey);
 
@@ -296,6 +297,49 @@ wxString wxRegKey::GetName(bool bShortPrefix) const
   return str;
 }
 
+#ifdef __GNUWIN32__
+bool wxRegKey::GetKeyInfo(uint* pnSubKeys,
+                          uint* pnMaxKeyLen,
+                          uint* pnValues,
+                          uint* pnMaxValueLen) const
+#else
+bool wxRegKey::GetKeyInfo(ulong *pnSubKeys,
+                          ulong *pnMaxKeyLen,
+                          ulong *pnValues,
+                          ulong *pnMaxValueLen) const
+#endif
+{
+#ifdef  __WIN32__
+  m_dwLastError = ::RegQueryInfoKey
+                  (
+                    m_hKey,
+                    NULL,           // class name
+                    NULL,           // (ptr to) size of class name buffer
+                    RESERVED,
+                    pnSubKeys,      // [out] number of subkeys
+                    pnMaxKeyLen,    // [out] max length of a subkey name
+                    NULL,           // longest subkey class name
+                    pnValues,       // [out] number of values
+                    pnMaxValueLen,  // [out] max length of a value name
+                    NULL,           // longest value data
+                    NULL,           // security descriptor
+                    NULL            // time of last modification
+                  );
+
+  if ( m_dwLastError != ERROR_SUCCESS ) {
+    wxLogSysError(m_dwLastError, _("can't get info about registry key '%s'"),
+                  GetName().c_str());
+    return FALSE;
+  }
+  else
+    return TRUE;
+#else // Win16
+  wxFAIL_MSG("GetKeyInfo() not implemented");
+
+  return FALSE;
+#endif
+}
+
 // ----------------------------------------------------------------------------
 // operations
 // ----------------------------------------------------------------------------
@@ -308,7 +352,7 @@ bool wxRegKey::Open()
 
   m_dwLastError = RegOpenKey(m_hRootKey, m_strKey, &m_hKey);
   if ( m_dwLastError != ERROR_SUCCESS ) {
-    wxLogSysError(m_dwLastError, "can't open registry key '%s'", 
+    wxLogSysError(m_dwLastError, _("can't open registry key '%s'"),
                   GetName().c_str());
     return FALSE;
   }
@@ -329,7 +373,7 @@ bool wxRegKey::Create(bool bOkIfExists)
 
   m_dwLastError = RegCreateKey(m_hRootKey, m_strKey, &m_hKey);
   if ( m_dwLastError != ERROR_SUCCESS ) {
-    wxLogSysError(m_dwLastError, "can't create registry key '%s'", 
+    wxLogSysError(m_dwLastError, _("can't create registry key '%s'"),
                   GetName().c_str());
     return FALSE;
   }
@@ -343,7 +387,7 @@ bool wxRegKey::Close()
   if ( IsOpened() ) {
     m_dwLastError = RegCloseKey(m_hKey);
     if ( m_dwLastError != ERROR_SUCCESS ) {
-      wxLogSysError(m_dwLastError, "can't close registry key '%s'", 
+      wxLogSysError(m_dwLastError, _("can't close registry key '%s'"),
                     GetName().c_str());
 
       m_hKey = 0;
@@ -395,7 +439,8 @@ bool wxRegKey::DeleteSelf()
 
   m_dwLastError = RegDeleteKey(m_hRootKey, m_strKey);
   if ( m_dwLastError != ERROR_SUCCESS ) {
-    wxLogSysError(m_dwLastError, "can't delete key '%s'", GetName().c_str());
+    wxLogSysError(m_dwLastError, _("can't delete key '%s'"),
+                  GetName().c_str());
     return FALSE;
   }
 
@@ -419,7 +464,7 @@ bool wxRegKey::DeleteValue(const char *szValue)
   #ifdef  __WIN32__
     m_dwLastError = RegDeleteValue(m_hKey, szValue);
     if ( m_dwLastError != ERROR_SUCCESS ) {
-      wxLogSysError(m_dwLastError, "can't delete value '%s' from key '%s'",
+      wxLogSysError(m_dwLastError, _("can't delete value '%s' from key '%s'"),
                     szValue, GetName().c_str());
       return FALSE;
     }
@@ -430,7 +475,7 @@ bool wxRegKey::DeleteValue(const char *szValue)
     // just set the (default and unique) value of the key to ""
     m_dwLastError = RegSetValue(m_hKey, NULL, REG_SZ, "", RESERVED);
     if ( m_dwLastError != ERROR_SUCCESS ) {
-      wxLogSysError(m_dwLastError, "can't delete value of key '%s'", 
+      wxLogSysError(m_dwLastError, _("can't delete value of key '%s'"),
                     GetName().c_str());
       return FALSE;
     }
@@ -487,7 +532,7 @@ wxRegKey::ValueType wxRegKey::GetValueType(const char *szValue)
     m_dwLastError = RegQueryValueEx(m_hKey, szValue, RESERVED,
                                     &dwType, NULL, NULL);
     if ( m_dwLastError != ERROR_SUCCESS ) {
-      wxLogSysError(m_dwLastError, "can't read value of key '%s'", 
+      wxLogSysError(m_dwLastError, _("can't read value of key '%s'"),
                     GetName().c_str());
       return Type_None;
     }
@@ -508,7 +553,7 @@ bool wxRegKey::SetValue(const char *szValue, long lValue)
       return TRUE;
   }
 
-  wxLogSysError(m_dwLastError, "can't set value of '%s'", 
+  wxLogSysError(m_dwLastError, _("can't set value of '%s'"),
                 GetFullName(this, szValue));
   return FALSE;
 }
@@ -521,7 +566,7 @@ bool wxRegKey::QueryValue(const char *szValue, long *plValue) const
     m_dwLastError = RegQueryValueEx(m_hKey, szValue, RESERVED, 
                                     &dwType, pBuf, &dwSize);
     if ( m_dwLastError != ERROR_SUCCESS ) {
-      wxLogSysError(m_dwLastError, "can't read value of key '%s'", 
+      wxLogSysError(m_dwLastError, _("can't read value of key '%s'"),
                     GetName().c_str());
       return FALSE;
     }
@@ -551,6 +596,7 @@ bool wxRegKey::QueryValue(const char *szValue, wxString& strValue) const
         RegString pBuf = (RegString)strValue.GetWriteBuf(dwSize);
         m_dwLastError = RegQueryValueEx(m_hKey, szValue, RESERVED, 
                                         &dwType, pBuf, &dwSize);
+        strValue.UngetWriteBuf();
         if ( m_dwLastError == ERROR_SUCCESS ) {
           // check that it was the right type
           wxASSERT_MSG( dwType == REG_SZ, 
@@ -564,12 +610,13 @@ bool wxRegKey::QueryValue(const char *szValue, wxString& strValue) const
       wxASSERT( IsEmpty(szValue) );
 
       m_dwLastError = RegQueryValue(m_hKey, 0, strValue.GetWriteBuf(256), &l);
+      strValue.UngetWriteBuf();
       if ( m_dwLastError == ERROR_SUCCESS )
         return TRUE;
     #endif  //WIN16/32
   }
 
-  wxLogSysError(m_dwLastError, "can't read value of '%s'", 
+  wxLogSysError(m_dwLastError, _("can't read value of '%s'"),
                 GetFullName(this, szValue));
   return FALSE;
 }
@@ -593,7 +640,7 @@ bool wxRegKey::SetValue(const char *szValue, const wxString& strValue)
     #endif  //WIN16/32
   }
 
-  wxLogSysError(m_dwLastError, "can't set value of '%s'", 
+  wxLogSysError(m_dwLastError, _("can't set value of '%s'"),
                 GetFullName(this, szValue));
   return FALSE;
 }
@@ -646,7 +693,7 @@ bool wxRegKey::GetNextValue(wxString& strValueName, long& lIndex) const
         lIndex = -1;
       }
       else {
-        wxLogSysError(m_dwLastError, "can't enumerate values of key '%s'", 
+        wxLogSysError(m_dwLastError, _("can't enumerate values of key '%s'"),
                       GetName().c_str());
       }
 
@@ -691,7 +738,7 @@ bool wxRegKey::GetNextKey(wxString& strKeyName, long& lIndex) const
       lIndex = -1;
     }
     else {
-      wxLogSysError(m_dwLastError, "can't enumerate subkeys of key '%s'", 
+      wxLogSysError(m_dwLastError, _("can't enumerate subkeys of key '%s'"),
                     GetName().c_str());
     }