]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/confbase.h
handle mouse capture lost event in grid windows and reset the grid to normal state...
[wxWidgets.git] / include / wx / confbase.h
index 0e23972e4cc6c21e844082a07fff316ffb586526..698e94b895dc9448e0c910e5b971365dabe95ddb 100644 (file)
 #ifndef   _WX_CONFBASE_H_
 #define   _WX_CONFBASE_H_
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "confbase.h"
-#endif
-
 #include "wx/defs.h"
 #include "wx/string.h"
 
@@ -60,7 +56,8 @@ enum
     wxCONFIG_USE_LOCAL_FILE = 1,
     wxCONFIG_USE_GLOBAL_FILE = 2,
     wxCONFIG_USE_RELATIVE_PATH = 4,
-    wxCONFIG_USE_NO_ESCAPE_CHARACTERS = 8
+    wxCONFIG_USE_NO_ESCAPE_CHARACTERS = 8,
+    wxCONFIG_USE_SUBDIR = 16
 };
 
 // ----------------------------------------------------------------------------
@@ -206,8 +203,12 @@ public:
 
   // we have to provide a separate version for C strings as otherwise they
   // would be converted to bool and not to wxString as expected!
-  bool Write(const wxString& key, const wxChar *value)
+  bool Write(const wxString& key, const char *value)
+    { return Write(key, wxString(value)); }
+#if wxUSE_WCHAR_T
+  bool Write(const wxString& key, const wchar_t *value)
     { return Write(key, wxString(value)); }
+#endif
 
   // permanently writes all changes
   virtual bool Flush(bool bCurrentOnly = false) = 0;
@@ -229,7 +230,7 @@ public:
     // delete the group (with all subgroups)
   virtual bool DeleteGroup(const wxString& key) = 0;
     // delete the whole underlying object (disk file, registry key, ...)
-    // primarly for use by desinstallation routine.
+    // primarily for use by uninstallation routine.
   virtual bool DeleteAll() = 0;
 
   // options
@@ -258,6 +259,13 @@ protected:
   static bool IsImmutable(const wxString& key)
     { return !key.IsEmpty() && key[0] == wxCONFIG_IMMUTABLE_PREFIX; }
 
+  // return the path without trailing separator, if any: this should be called
+  // to sanitize paths referring to the group names before passing them to
+  // wxConfigPathChanger as "/foo/bar/" should be the same as "/foo/bar" and it
+  // isn't interpreted in the same way by it (and this can't be changed there
+  // as it's not the same for the entries names)
+  static wxString RemoveTrailingSeparator(const wxString& key);
+
   // do read/write the values of different types
   virtual bool DoReadString(const wxString& key, wxString *pStr) const = 0;
   virtual bool DoReadLong(const wxString& key, long *pl) const = 0;
@@ -297,13 +305,21 @@ private:
 class WXDLLIMPEXP_BASE wxConfigPathChanger
 {
 public:
-  // ctor/dtor do path changing/restorin
+  // ctor/dtor do path changing/restoring of the path
   wxConfigPathChanger(const wxConfigBase *pContainer, const wxString& strEntry);
  ~wxConfigPathChanger();
 
   // get the key name
   const wxString& Name() const { return m_strName; }
 
+  // this method must be called if the original path (i.e. the current path at
+  // the moment of creation of this object) could have been deleted to prevent
+  // us from restoring the not existing (any more) path
+  //
+  // if the original path doesn't exist any more, the path will be restored to
+  // the deepest still existing component of the old path
+  void UpdateIfDeleted();
+
 private:
   wxConfigBase *m_pContainer;   // object we live in
   wxString      m_strName,      // name of entry (i.e. name only)