]> git.saurik.com Git - wxWidgets.git/commitdiff
Empty container and design description for native PalmOS wxPrefConfig. Remove MSW...
authorWłodzimierz Skiba <abx@abx.art.pl>
Wed, 29 Dec 2004 09:48:43 +0000 (09:48 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Wed, 29 Dec 2004 09:48:43 +0000 (09:48 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
build/palmos/makefile
docs/changes.txt
include/wx/config.h
include/wx/palmos/chkconf.h
include/wx/palmos/iniconf.h [deleted file]
include/wx/palmos/prefconf.h [new file with mode: 0644]
include/wx/palmos/regconf.h [deleted file]
include/wx/palmos/registry.h [deleted file]
include/wx/palmos/setup0.h
src/common/config.cpp
src/palmos/iniconf.cpp [deleted file]
src/palmos/prefconf.cpp [new file with mode: 0644]
src/palmos/regconf.cpp [deleted file]
src/palmos/utils.cpp

index f25610f8ee341a27774537dec7d851dcdd1052cf..20d2ca89c09237846b09c0e8698dafd452c450ad 100644 (file)
@@ -228,7 +228,6 @@ SOURCES =  ../../samples/minimal/minimal.cpp \
 ../../src/palmos/help.cpp \
 ../../src/palmos/icon.cpp \
 ../../src/palmos/imaglist.cpp \
-../../src/palmos/iniconf.cpp \
 ../../src/palmos/joystick.cpp \
 ../../src/palmos/listbox.cpp \
 ../../src/palmos/listctrl.cpp \
@@ -245,11 +244,11 @@ SOURCES =  ../../samples/minimal/minimal.cpp \
 ../../src/palmos/palette.cpp \
 ../../src/palmos/pen.cpp \
 ../../src/palmos/popupwin.cpp \
+../../src/palmos/prefconf.cpp \
 ../../src/palmos/printdlg.cpp \
 ../../src/palmos/printpalm.cpp \
 ../../src/palmos/radiobox.cpp \
 ../../src/palmos/radiobut.cpp \
-../../src/palmos/regconf.cpp \
 ../../src/palmos/region.cpp \
 ../../src/palmos/scrolbar.cpp \
 ../../src/palmos/settings.cpp \
index fac0708a2c3c1b798d878a3fdb49673ea375fba5..9883a6d83553972db9b9645bc06bf19eff4b2ab2 100644 (file)
@@ -96,6 +96,7 @@ wxPalmOS:
 - polishing of the port (unnecessary 2.4 API compatibility, removed
   all wxMSW specific code which was base for the new port)
 - enumeration of available volumes
+- native wxPrefConfig around Preferences database
 
 
 2.5.3
index 41afd94b018314fb8f82ff355fdae61438b274a2..e6275cb52ef1e0aa4c14bc9d8f771b7fb9cfff71 100644 (file)
@@ -4,11 +4,13 @@
 #include "wx/confbase.h"
 
 #if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE
-#  ifdef __WIN32__
-#    include "wx/msw/regconf.h"
-#else
-#    include "wx/msw/iniconf.h"
-#  endif
+#    ifdef __WIN32__
+#        include "wx/msw/regconf.h"
+#    else
+#        include "wx/msw/iniconf.h"
+#    endif
+#elif defined(__WXPALMOS__) && wxUSE_CONFIG_NATIVE
+#    include "wx/palmos/prefconf.h"
 #else
 #    include "wx/fileconf.h"
 #endif
index 9f880c25f1d07e9dabd56b386421716675dc9245..18772c368e7bcd840d3671e3f7c0eeb2edfc5831 100644 (file)
     #error "wxPalmOS port was introduced after 2.4.X"
 #endif
 
+#ifdef wxUSE_FILECONFIG
+    #undef wxUSE_FILECONFIG
+#endif
+#define wxUSE_FILECONFIG 0
+
 /*
  * disable the settings which don't work for some compilers
  */
diff --git a/include/wx/palmos/iniconf.h b/include/wx/palmos/iniconf.h
deleted file mode 100644 (file)
index acc36af..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        include/wx/palmos/iniconf.h
-// Purpose:     INI-file based wxConfigBase implementation
-// Author:      William Osborne
-// Modified by:
-// Created:     10/13/04
-// RCS-ID:      $Id: 
-// Copyright:   (c) William Osborne
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef   _INICONF_H
-#define   _INICONF_H
-
-// ----------------------------------------------------------------------------
-// wxIniConfig is a wxConfig implementation which uses MS Windows INI files to
-// store the data. Because INI files don't really support arbitrary nesting of
-// groups, we do the following:
-//  (1) in win.ini file we store all entries in the [vendor] section and
-//      the value group1/group2/key is mapped to the value group1_group2_key
-//      in this section, i.e. all path separators are replaced with underscore
-//  (2) in appname.ini file we map group1/group2/group3/key to the entry
-//      group2_group3_key in [group1]
-//
-// Of course, it might lead to indesirable results if '_' is also used in key
-// names (i.e. group/key is the same as group_key) and also GetPath() result
-// may be not what you would expect it to be.
-//
-// Another limitation: the keys and section names are never case-sensitive
-// which might differ from wxFileConfig it it was compiled with
-// wxCONFIG_CASE_SENSITIVE option.
-// ----------------------------------------------------------------------------
-
-// for this class, "local" file is the file appname.ini and the global file
-// is the [vendor] subsection of win.ini (default for "vendor" is to be the
-// same as appname). The file name (strAppName parameter) may, in fact,
-// contain the full path to the file. If it doesn't, the file is searched for
-// in the Windows directory.
-class WXDLLEXPORT wxIniConfig : public wxConfigBase
-{
-public:
-  // ctor & dtor
-    // if strAppName doesn't contain the extension and is not an absolute path,
-    // ".ini" is appended to it. if strVendor is empty, it's taken to be the
-    // same as strAppName.
-  wxIniConfig(const wxString& strAppName = wxEmptyString, const wxString& strVendor = wxEmptyString,
-    const wxString& localFilename = wxEmptyString, const wxString& globalFilename = wxEmptyString, long style = wxCONFIG_USE_LOCAL_FILE);
-  virtual ~wxIniConfig();
-
-  // implement inherited pure virtual functions
-  virtual void SetPath(const wxString& strPath);
-  virtual const wxString& GetPath() const;
-
-  virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
-  virtual bool GetNextGroup (wxString& str, long& lIndex) const;
-  virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
-  virtual bool GetNextEntry (wxString& str, long& lIndex) const;
-
-  virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const;
-  virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const;
-
-  virtual bool HasGroup(const wxString& strName) const;
-  virtual bool HasEntry(const wxString& strName) const;
-
-  // return TRUE if the current group is empty
-  bool IsEmpty() const;
-
-  virtual bool Flush(bool bCurrentOnly = FALSE);
-
-  virtual bool RenameEntry(const wxString& oldName, const wxString& newName);
-  virtual bool RenameGroup(const wxString& oldName, const wxString& newName);
-
-  virtual bool DeleteEntry(const wxString& Key, bool bGroupIfEmptyAlso = TRUE);
-  virtual bool DeleteGroup(const wxString& szKey);
-  virtual bool DeleteAll();
-
-protected:
-  // read/write
-  bool DoReadString(const wxString& key, wxString *pStr) const;
-  bool DoReadLong(const wxString& key, long *plResult) const;
-
-  bool DoWriteString(const wxString& key, const wxString& szValue);
-  bool DoWriteLong(const wxString& key, long lValue);
-
-private:
-  // helpers
-  wxString GetPrivateKeyName(const wxString& szKey) const;
-  wxString GetKeyName(const wxString& szKey) const;
-
-  wxString m_strLocalFilename;  // name of the private INI file
-  wxString m_strGroup,    // current group in appname.ini file
-           m_strPath;     // the rest of the path (no trailing '_'!)
-};
-
-#endif  //_INICONF_H
diff --git a/include/wx/palmos/prefconf.h b/include/wx/palmos/prefconf.h
new file mode 100644 (file)
index 0000000..59f99cd
--- /dev/null
@@ -0,0 +1,94 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/palmos/prefconf.h
+// Purpose:     wxPrefConfig interface
+// Author:      Wlodzimierz ABX Skiba
+// Modified by:
+// Created:     28.12.2004
+// RCS-ID:      $Id$
+// Copyright:   (c) Wlodzimierz Skiba
+// License:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _PREFCONF_H_
+#define _PREFCONF_H_
+
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+#pragma interface "prefconf.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// wxPrefConfig
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxPrefConfig : public wxConfigBase
+{
+public:
+  // ctor & dtor
+  wxPrefConfig(const wxString& appName = wxEmptyString,
+               const wxString& vendorName = wxEmptyString,
+               const wxString& localFilename = wxEmptyString,
+               const wxString& globalFilename = wxEmptyString,
+               long style = wxCONFIG_USE_GLOBAL_FILE);
+
+  // dtor will save unsaved data
+  virtual ~wxPrefConfig(){}
+
+  // implement inherited pure virtual functions
+  // ------------------------------------------
+
+  // path management
+  virtual void SetPath(const wxString& strPath);
+  virtual const wxString& GetPath() const { return m_strPath; }
+
+  // entry/subgroup info
+  virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
+  virtual bool GetNextGroup (wxString& str, long& lIndex) const;
+  virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
+  virtual bool GetNextEntry (wxString& str, long& lIndex) const;
+
+  // 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
+  virtual size_t GetNumberOfEntries(bool bRecursive = false) const;
+  virtual size_t GetNumberOfGroups(bool bRecursive = false) const;
+
+  virtual bool Flush(bool WXUNUSED(bCurrentOnly) = false) { return true; }
+
+  // rename
+  virtual bool RenameEntry(const wxString& oldName, const wxString& newName);
+  virtual bool RenameGroup(const wxString& oldName, const wxString& newName);
+
+  // delete
+  virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso = true);
+  virtual bool DeleteGroup(const wxString& key);
+  virtual bool DeleteAll();
+
+protected:
+  // implement read/write methods
+  virtual bool DoReadString(const wxString& key, wxString *pStr) const;
+  virtual bool DoReadLong(const wxString& key, long *plResult) const;
+
+  virtual bool DoWriteString(const wxString& key, const wxString& szValue);
+  virtual bool DoWriteLong(const wxString& key, long lValue);
+
+private:
+  // no copy ctor/assignment operator
+  wxPrefConfig(const wxPrefConfig&);
+  wxPrefConfig& operator=(const wxPrefConfig&);
+
+  // current path (not '/' terminated)
+  wxString  m_strPath;
+
+  // current path (group) content (cache for read/write)
+  wxString m_strGroup;
+
+  // current group modified ?
+  bool m_modGroup;
+};
+
+#endif // _PREFCONF_H_
+
diff --git a/include/wx/palmos/regconf.h b/include/wx/palmos/regconf.h
deleted file mode 100644 (file)
index 4088af5..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        palmos/regconf.h
-// Purpose:     Registry based implementation of wxConfigBase
-// Author:      William Osborne
-// Modified by:
-// Created:     10/13/04
-// RCS-ID:      $Id: 
-// Copyright:   (c) William Osborne
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef   _REGCONF_H
-#define   _REGCONF_H
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "regconf.h"
-#endif
-
-#ifndef   _REGISTRY_H
-  #include "wx/palmos/registry.h"
-#endif
-#include "wx/object.h"
-
-// ----------------------------------------------------------------------------
-// wxRegConfig
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxRegConfig : public wxConfigBase
-{
-public:
-  // ctor & dtor
-    // will store data in HKLM\appName and HKCU\appName
-  wxRegConfig(const wxString& appName = wxEmptyString,
-              const wxString& vendorName = wxEmptyString,
-              const wxString& localFilename = wxEmptyString,
-              const wxString& globalFilename = wxEmptyString,
-              long style = wxCONFIG_USE_GLOBAL_FILE);
-
-    // dtor will save unsaved data
-  virtual ~wxRegConfig();
-
-  // implement inherited pure virtual functions
-  // ------------------------------------------
-
-  // path management
-  virtual void SetPath(const wxString& strPath);
-  virtual const wxString& GetPath() const { return m_strPath; }
-
-  // entry/subgroup info
-    // enumerate all of them
-  virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
-  virtual bool GetNextGroup (wxString& str, long& lIndex) const;
-  virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
-  virtual bool GetNextEntry (wxString& str, long& lIndex) const;
-
-    // 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
-  virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const;
-  virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const;
-
-  virtual bool Flush(bool WXUNUSED(bCurrentOnly) = FALSE) { return TRUE; }
-
-  // rename
-  virtual bool RenameEntry(const wxString& oldName, const wxString& newName);
-  virtual bool RenameGroup(const wxString& oldName, const wxString& newName);
-
-  // delete
-  virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso = TRUE);
-  virtual bool DeleteGroup(const wxString& key);
-  virtual bool DeleteAll();
-
-protected:
-  // opens the local key creating it if necessary and returns it
-  wxRegKey& LocalKey() const // must be const to be callable from const funcs
-  {
-      wxRegConfig* self = wxConstCast(this, wxRegConfig);
-
-      if ( !m_keyLocal.IsOpened() )
-      {
-          // create on demand
-          self->m_keyLocal.Create();
-      }
-
-      return self->m_keyLocal;
-  }
-
-  // implement read/write methods
-  virtual bool DoReadString(const wxString& key, wxString *pStr) const;
-  virtual bool DoReadLong(const wxString& key, long *plResult) const;
-
-  virtual bool DoWriteString(const wxString& key, const wxString& szValue);
-  virtual bool DoWriteLong(const wxString& key, long lValue);
-
-private:
-  // no copy ctor/assignment operator
-  wxRegConfig(const wxRegConfig&);
-  wxRegConfig& operator=(const wxRegConfig&);
-
-  // these keys are opened during all lifetime of wxRegConfig object
-  wxRegKey  m_keyLocalRoot,  m_keyLocal,
-            m_keyGlobalRoot, m_keyGlobal;
-
-  // current path (not '/' terminated)
-  wxString  m_strPath;
-};
-
-#endif  //_REGCONF_H
diff --git a/include/wx/palmos/registry.h b/include/wx/palmos/registry.h
deleted file mode 100644 (file)
index 68b1592..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        palmos/registry.h
-// Purpose:     Registry classes and functions
-// Author:      William Osborne
-// Modified by:
-// Created:     10/13/04
-// RCS-ID:      $Id:
-// Copyright:   (c) William Osborne
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef   _REGISTRY_H
-#define   _REGISTRY_H
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "registry.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// types used in this module
-// ----------------------------------------------------------------------------
-
-/*
-#ifndef   HKEY_DEFINED
-  #define HKEY_DEFINED
-  #define HKEY unsigned long
-#endif
-*/
-
-typedef unsigned long ulong;
-
-// ----------------------------------------------------------------------------
-// class wxRegKey encapsulates window HKEY handle
-// ----------------------------------------------------------------------------
-class WXDLLIMPEXP_BASE wxRegKey
-{
-public:
-  // NB: do _not_ change the values of elements in these enumerations!
-
-  // registry value types (with comments from winnt.h)
-  enum ValueType
-  {
-    Type_None,                       // No value type
-    Type_String,                     // Unicode nul terminated string
-  };
-
-  // predefined registry keys
-  enum StdKey
-  {
-    HKCR        // classes root
-  };
-
-  // access mode for the key
-  enum AccessMode
-  {
-      Read,     // read-only
-      Write     // read and write
-  };
-
-  // information about standard (predefined) registry keys
-    // number of standard keys
-  static const size_t nStdKeys;
-    // get the name of a standard key
-  static const wxChar *GetStdKeyName(size_t key);
-    // get the short name of a standard key
-  static const wxChar *GetStdKeyShortName(size_t key);
-    // get StdKey from root HKEY
-  static StdKey GetStdKeyFromHkey(WXHKEY hkey);
-
-  // extacts the std key prefix from the string (return value) and
-  // leaves only the part after it (i.e. modifies the string passed!)
-  static StdKey ExtractKeyName(wxString& str);
-
-  // ctors
-    // root key is set to HKCR (the only root key under Win16)
-  wxRegKey();
-    // strKey is the full name of the key (i.e. starting with HKEY_xxx...)
-  wxRegKey(const wxString& strKey);
-    // strKey is the name of key under (standard key) keyParent
-  wxRegKey(StdKey keyParent, const wxString& strKey);
-    // strKey is the name of key under (previously created) keyParent
-  wxRegKey(const wxRegKey& keyParent, const wxString& strKey);
-    // dtor closes the key
- ~wxRegKey();
-
-  // change key (closes the previously opened key if any)
-    // the name is absolute, i.e. should start with HKEY_xxx
-  void  SetName(const wxString& strKey);
-    // the name is relative to the parent key
-  void  SetName(StdKey keyParent, const wxString& strKey);
-    // the name is relative to the parent key
-  void  SetName(const wxRegKey& keyParent, const wxString& strKey);
-    // hKey should be opened and will be closed in wxRegKey dtor
-  void  SetHkey(WXHKEY hKey);
-
-  // get infomation about the key
-    // get the (full) key name. Abbreviate std root keys if bShortPrefix.
-  wxString GetName(bool bShortPrefix = true) const;
-    // return true if the key exists
-  bool  Exists() const;
-    // get the info about key (any number of these pointers may be NULL)
-  bool  GetKeyInfo(size_t *pnSubKeys,      // number of subkeys
-                   size_t *pnMaxKeyLen,    // max len of subkey name
-                   size_t *pnValues,       // number of values
-                   size_t *pnMaxValueLen) const;
-    // return true if the key is opened
-  bool  IsOpened() const { return m_hKey != 0; }
-    // for "if ( !key ) wxLogError(...)" kind of expressions
-  operator bool()  const { return m_dwLastError == 0; }
-
-  // operations on the key itself
-    // explicitly open the key (will be automatically done by all functions
-    // which need the key to be opened if the key is not opened yet)
-  bool  Open(AccessMode mode = Write);
-    // create the key: will fail if the key already exists and !bOkIfExists
-  bool  Create(bool bOkIfExists = true);
-    // rename a value from old name to new one
-  bool  RenameValue(const wxChar *szValueOld, const wxChar *szValueNew);
-    // rename the key
-  bool  Rename(const wxChar *szNewName);
-    // copy value to another key possibly changing its name (by default it will
-    // remain the same)
-  bool  CopyValue(const wxChar *szValue, wxRegKey& keyDst,
-                  const wxChar *szNewName = NULL);
-    // copy the entire contents of the key recursively to another location
-  bool  Copy(const wxChar *szNewName);
-    // same as Copy() but using a key and not the name
-  bool  Copy(wxRegKey& keyDst);
-    // close the key (will be automatically done in dtor)
-  bool  Close();
-
-  // deleting keys/values
-    // deletes this key and all of it's subkeys/values
-  bool  DeleteSelf();
-    // deletes the subkey with all of it's subkeys/values recursively
-  bool  DeleteKey(const wxChar *szKey);
-    // deletes the named value (may be NULL to remove the default value)
-  bool  DeleteValue(const wxChar *szValue);
-
-  // access to values and subkeys
-    // get value type
-  ValueType GetValueType(const wxChar *szValue) const;
-    // returns true if the value contains a number (else it's some string)
-  bool IsNumericValue(const wxChar *szValue) const;
-
-    // assignment operators set the default value of the key
-  wxRegKey& operator=(const wxString& strValue)
-    { SetValue(NULL, strValue); return *this; }
-
-    // query the default value of the key: implicitly or explicitly
-  wxString QueryDefaultValue() const;
-  operator wxString() const { return QueryDefaultValue(); }
-
-    // named values
-
-    // set the string value
-  bool  SetValue(const wxChar *szValue, const wxString& strValue);
-    // retrieve the string value
-  bool  QueryValue(const wxChar *szValue, wxString& strValue) const
-    { return QueryValue(szValue, strValue, false); }
-    // retrieve raw string value
-  bool  QueryRawValue(const wxChar *szValue, wxString& strValue) const
-    { return QueryValue(szValue, strValue, true); }
-    // retrieve either raw or expanded string value
-  bool  QueryValue(const wxChar *szValue, wxString& strValue, bool raw) const;
-
-  // query existence of a key/value
-    // return true if value exists
-  bool HasValue(const wxChar *szKey) const;
-    // return true if given subkey exists
-  bool HasSubKey(const wxChar *szKey) const;
-    // return true if any subkeys exist
-  bool HasSubkeys() const;
-    // return true if any values exist
-  bool HasValues() const;
-    // return true if the key is empty (nothing under this key)
-  bool IsEmpty() const { return !HasSubkeys() && !HasValues(); }
-
-  // enumerate values and subkeys
-  bool  GetFirstValue(wxString& strValueName, long& lIndex);
-  bool  GetNextValue (wxString& strValueName, long& lIndex) const;
-
-  bool  GetFirstKey  (wxString& strKeyName  , long& lIndex);
-  bool  GetNextKey   (wxString& strKeyName  , long& lIndex) const;
-
-  // for wxRegConfig usage only: preallocate some memory for the name
-  void ReserveMemoryForName(size_t bytes) { m_strKey.reserve(bytes); }
-
-private:
-  // common part of all ctors
-  void Init()
-  {
-    m_hKey = (WXHKEY) NULL;
-    m_dwLastError = 0;
-  }
-
-  // no copy ctor/assignment operator
-  wxRegKey(const wxRegKey& key);            // not implemented
-  wxRegKey& operator=(const wxRegKey& key); // not implemented
-
-  WXHKEY      m_hKey,           // our handle
-              m_hRootKey;       // handle of the top key (i.e. StdKey)
-  wxString    m_strKey;         // key name (relative to m_hRootKey)
-
-  long        m_dwLastError;    // last error (0 if none)
-};
-
-#endif  //_REGISTRY_H
-
index e84fa206cbbb832a1db18e777502550fbe80a139..5718b61ca1823f98fac2e2e1ad62012006560f72 100644 (file)
 // See also wxUSE_CONFIG_NATIVE below.
 //
 // Recommended setting: 1
-#define wxUSE_CONFIG        0
+#define wxUSE_CONFIG        1
 
 // If wxUSE_CONFIG is 1, you may choose to use either the native config
 // classes under Windows (using .INI files under Win16 and the registry under
 // not wxFileConfig.
 //
 // Recommended setting: 1
-#define wxUSE_CONFIG_NATIVE   0
+#define wxUSE_CONFIG_NATIVE   1
 
 // If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows
 // to connect/disconnect from the network and be notified whenever the dial-up
 // that use the connection) should support forward only scrolling of cursors,
 // or both forward and backward support for backward scrolling cursors is
 // dependent on the data source as well as the ODBC driver being used.
-#define wxODBC_FWD_ONLY_CURSORS         0
+#define wxODBC_FWD_ONLY_CURSORS 0
 
 // Default is 0.  Set to 1 to use the deprecated classes, enum types, function,
 // member variables.  With a setting of 1, full backward compatability with the
index 3248e1e59ab73647b6edcc1d6828de24703fa22c..a0c3a75738bb00bdeef6e92426e53ca7c90f0368 100644 (file)
@@ -91,6 +91,8 @@ wxConfigBase *wxConfigBase::Create()
     ms_pConfig =
     #if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE
         new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
+    #elif defined(__WXPALMOS__) && wxUSE_CONFIG_NATIVE
+        new wxPrefConfig(wxTheApp->GetAppName());
     #else // either we're under Unix or wish to use files even under Windows
       new wxFileConfig(wxTheApp->GetAppName());
     #endif
diff --git a/src/palmos/iniconf.cpp b/src/palmos/iniconf.cpp
deleted file mode 100644 (file)
index 369b7e6..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        src/palmos/iniconf.cpp
-// Purpose:     implementation of wxIniConfig class
-// Author:      William Osborne
-// Modified by:
-// Created:     10/13/04
-// RCS-ID:      $Id: 
-// Copyright:   (c) William Osborne
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "iniconf.h"
-#endif
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#ifndef   WX_PRECOMP
-  #include  "wx/string.h"
-  #include  "wx/intl.h"
-  #include  "wx/event.h"
-  #include  "wx/app.h"
-  #include  "wx/utils.h"
-#endif  //WX_PRECOMP
-
-// Doesn't yet compile in Unicode mode
-
-#if wxUSE_CONFIG && !wxUSE_UNICODE
-
-#include  "wx/dynarray.h"
-#include  "wx/log.h"
-#include  "wx/config.h"
-#include  "wx/file.h"
-
-#include  "wx/palmos/iniconf.h"
-
-#include  "wx/palmos/wrapwin.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// we replace all path separators with this character
-#define PATH_SEP_REPLACE  '_'
-
-// ============================================================================
-// implementation
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// ctor & dtor
-// ----------------------------------------------------------------------------
-
-wxIniConfig::wxIniConfig(const wxString& strAppName,
-                         const wxString& strVendor,
-                         const wxString& localFilename,
-                         const wxString& globalFilename,
-                         long style)
-           : wxConfigBase(strAppName, strVendor, localFilename, globalFilename, style)
-{
-}
-
-wxIniConfig::~wxIniConfig()
-{
-}
-
-// ----------------------------------------------------------------------------
-// path management
-// ----------------------------------------------------------------------------
-
-void wxIniConfig::SetPath(const wxString& strPath)
-{
-}
-
-const wxString& wxIniConfig::GetPath() const
-{
-  static wxString s_str;
-
-  return s_str;
-}
-
-wxString wxIniConfig::GetPrivateKeyName(const wxString& szKey) const
-{
-  wxString strKey;
-
-  return strKey;
-}
-
-wxString wxIniConfig::GetKeyName(const wxString& szKey) const
-{
-  wxString strKey;
-
-  return strKey;
-}
-
-// ----------------------------------------------------------------------------
-// enumeration
-// ----------------------------------------------------------------------------
-
-bool wxIniConfig::GetFirstGroup(wxString& WXUNUSED(str), long& WXUNUSED(lIndex)) const
-{
-  return FALSE;
-}
-
-bool wxIniConfig::GetNextGroup (wxString& WXUNUSED(str), long& WXUNUSED(lIndex)) const
-{
-  return FALSE;
-}
-
-bool wxIniConfig::GetFirstEntry(wxString& WXUNUSED(str), long& WXUNUSED(lIndex)) const
-{
-  return FALSE;
-}
-
-bool wxIniConfig::GetNextEntry (wxString& WXUNUSED(str), long& WXUNUSED(lIndex)) const
-{
-  return FALSE;
-}
-
-// ----------------------------------------------------------------------------
-// misc info
-// ----------------------------------------------------------------------------
-
-size_t wxIniConfig::GetNumberOfEntries(bool WXUNUSED(bRecursive)) const
-{
-  return (size_t)-1;
-}
-
-size_t wxIniConfig::GetNumberOfGroups(bool WXUNUSED(bRecursive)) const
-{
-  return (size_t)-1;
-}
-
-bool wxIniConfig::HasGroup(const wxString& WXUNUSED(strName)) const
-{
-  return FALSE;
-}
-
-bool wxIniConfig::HasEntry(const wxString& WXUNUSED(strName)) const
-{
-  return FALSE;
-}
-
-// is current group empty?
-bool wxIniConfig::IsEmpty() const
-{
-  return TRUE;
-}
-
-// ----------------------------------------------------------------------------
-// read/write
-// ----------------------------------------------------------------------------
-
-bool wxIniConfig::DoReadString(const wxString& szKey, wxString *pstr) const
-{
-  return FALSE;
-}
-
-bool wxIniConfig::DoReadLong(const wxString& szKey, long *pl) const
-{
-  return FALSE ;
-}
-
-bool wxIniConfig::DoWriteString(const wxString& szKey, const wxString& szValue)
-{
-  return FALSE;
-}
-
-bool wxIniConfig::DoWriteLong(const wxString& szKey, long lValue)
-{
-    return FALSE;
-}
-
-bool wxIniConfig::Flush(bool /* bCurrentOnly */)
-{
-    return FALSE;
-}
-
-// ----------------------------------------------------------------------------
-// delete
-// ----------------------------------------------------------------------------
-
-bool wxIniConfig::DeleteEntry(const wxString& szKey, bool bGroupIfEmptyAlso)
-{
-    return FALSE;
-}
-
-bool wxIniConfig::DeleteGroup(const wxString& szKey)
-{
-    return FALSE;
-}
-
-#ifndef MAX_PATH
-#define MAX_PATH 256
-#endif
-
-bool wxIniConfig::DeleteAll()
-{
-  return FALSE;
-}
-
-bool wxIniConfig::RenameEntry(const wxString& WXUNUSED(oldName),
-                              const wxString& WXUNUSED(newName))
-{
-    return FALSE;
-}
-
-bool wxIniConfig::RenameGroup(const wxString& WXUNUSED(oldName),
-                              const wxString& WXUNUSED(newName))
-{
-    return FALSE;
-}
-
-#endif
-    // wxUSE_CONFIG && wxUSE_UNICODE
diff --git a/src/palmos/prefconf.cpp b/src/palmos/prefconf.cpp
new file mode 100644 (file)
index 0000000..77a84d8
--- /dev/null
@@ -0,0 +1,234 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/palmos/prefconf.cpp
+// Purpose:     wxPrefConfig implementation
+// Author:      Wlodzimierz ABX Skiba
+// Modified by:
+// Created:     28.12.2004
+// RCS-ID:      $Id$
+// Copyright:   (c) Wlodzimierz Skiba
+// License:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+#pragma implementation "prefconf.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include  "wx/string.h"
+#endif //WX_PRECOMP
+
+#if wxUSE_CONFIG && wxUSE_CONFIG_NATIVE
+
+#include "wx/config.h"
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+/*
+
+http://www.palmos.com/dev/support/docs/protein_books/System_Management/PreferenceConcepts.html
+
+This wxPrefConfig class is a wxConfig wrapper around PalmOS Preferences
+functionality. Preferences allow to write any structure into its database so
+wxPrefConfig writes there all entries of single group into one Preference.
+To optimize read/write operations value of preference is cached. Cache is filled
+after each change of the path (including using path to group names in all
+operations) and it is flushed on destructor, any path change on or purpose
+with Flush().
+
+Meaning of styles:
+
+  wxCONFIG_USE_LOCAL_FILE => store config in "saved" preferences database
+                             (not to be backed up during a HotSync operation)
+  wxCONFIG_USE_GLOBAL_FILE => store config in "unsaved" preferences database
+                             (backed up during a HotSync operation)
+
+
+Each Preference is an array of chars. First unsigned char describes 
+number N of chars used for Preference size. Next N chars (string) contains
+length of rest of Preference. Preference consists in serie of entries which
+should be read in loop until in reaches end of Preference.
+
+  Each entry is an set of chars with following structure:
+  1. name (null terminated)
+  2. type (single char): b,s,g,l,d (see value)
+  3. value
+     - for type="b" (bool) it os "0" or "1"
+     - for type="s" (string) it is null terminated set of chars
+     - for type="g" (subgroup) as for "s" but string is converted to
+       uint16_t for id parameter of ::PrefGetAppPreferences()
+     - for type="l" (long) as for "s" but string is converted to long
+     - for type="d" (double) as for "s" but string is converted to double
+     - otherwise it is ""
+
+So all together first Read in group needs 3 reading from Preference:
+  1. take the length N of length
+  2. take the length M of the group content
+  3. take the group content
+and all it is in single Preference to not overload Preferences database.
+As long as each next Read/Write is performed in the same group then none
+access to Preferences is performed. Flushing needs only single writing to
+databease because all 3 parts of Preference can be prepared in memory.
+
+NOTE: wxPrefConfig can read/write only its own entries. It is impossible to
+know structures of Preferences of other non wxW applications.
+
+*/
+
+// ----------------------------------------------------------------------------
+// ctor/dtor
+// ----------------------------------------------------------------------------
+
+wxPrefConfig::wxPrefConfig(const wxString& appName, const wxString& vendorName,
+                           const wxString& strLocal, const wxString& strGlobal,
+                           long style)
+             : wxConfigBase(appName, vendorName, strLocal, strGlobal, style)
+{
+}
+
+// ----------------------------------------------------------------------------
+// path management
+// ----------------------------------------------------------------------------
+
+void wxPrefConfig::SetPath(const wxString& strPath)
+{
+}
+
+// ----------------------------------------------------------------------------
+// enumeration (works only with current group)
+// ----------------------------------------------------------------------------
+
+bool wxPrefConfig::GetFirstGroup(wxString& str, long& lIndex) const
+{
+}
+
+bool wxPrefConfig::GetNextGroup(wxString& str, long& lIndex) const
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::GetFirstEntry(wxString& str, long& lIndex) const
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::GetNextEntry(wxString& str, long& lIndex) const
+{
+    /* TODO */
+    return false;
+}
+
+size_t wxPrefConfig::GetNumberOfEntries(bool WXUNUSED(bRecursive)) const
+{
+    /* TODO */
+    return 0;
+}
+
+size_t wxPrefConfig::GetNumberOfGroups(bool WXUNUSED(bRecursive)) const
+{
+    /* TODO */
+    return 0;
+}
+
+// ----------------------------------------------------------------------------
+// tests for existence
+// ----------------------------------------------------------------------------
+
+bool wxPrefConfig::HasGroup(const wxString& key) const
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::HasEntry(const wxString& key) const
+{
+    /* TODO */
+    return false;
+}
+
+wxConfigBase::EntryType wxPrefConfig::GetEntryType(const wxString& key) const
+{
+    /* TODO */
+    return wxConfigBase::Type_Unknown;
+}
+
+// ----------------------------------------------------------------------------
+// reading/writing
+// ----------------------------------------------------------------------------
+
+bool wxPrefConfig::DoReadString(const wxString& key, wxString *pStr) const
+{
+    /* TODO */
+    return false;
+}
+
+// this exactly reproduces the string version above except for ExpandEnvVars(),
+// we really should avoid this code duplication somehow...
+
+bool wxPrefConfig::DoReadLong(const wxString& key, long *plResult) const
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::DoWriteString(const wxString& key, const wxString& szValue)
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::DoWriteLong(const wxString& key, long lValue)
+{
+    /* TODO */
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// renaming
+// ----------------------------------------------------------------------------
+
+bool wxPrefConfig::RenameEntry(const wxString& oldName, const wxString& newName)
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::RenameGroup(const wxString& oldName, const wxString& newName)
+{
+    /* TODO */
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// deleting
+// ----------------------------------------------------------------------------
+
+bool wxPrefConfig::DeleteEntry(const wxString& value, bool bGroupIfEmptyAlso)
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::DeleteGroup(const wxString& key)
+{
+    /* TODO */
+    return false;
+}
+
+bool wxPrefConfig::DeleteAll()
+{
+    /* TODO */
+    return false;
+}
+
+#endif // wxUSE_CONFIG && wxUSE_CONFIG_NATIVE
diff --git a/src/palmos/regconf.cpp b/src/palmos/regconf.cpp
deleted file mode 100644 (file)
index a7db041..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        palmos/regconf.cpp
-// Purpose:
-// Author:      William Osborne
-// Modified by:
-// Created:     10/13/04
-// RCS-ID:      $Id: 
-// Copyright:   (c) William Osborne
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "regconf.h"
-#endif
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#ifndef WX_PRECOMP
-  #include  "wx/string.h"
-  #include  "wx/intl.h"
-#endif //WX_PRECOMP
-
-#include "wx/event.h"
-#include "wx/app.h"
-#include "wx/log.h"
-
-#if wxUSE_CONFIG
-
-#include "wx/config.h"
-
-#include "wx/palmos/registry.h"
-#include "wx/palmos/regconf.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// we put our data in HKLM\SOFTWARE_KEY\appname
-#define SOFTWARE_KEY    wxString(wxT("Software\\"))
-
-// ----------------------------------------------------------------------------
-// global functions
-// ----------------------------------------------------------------------------
-
-// get the value if the key is opened and it exists
-bool TryGetValue(const wxRegKey& key, const wxString& str, wxString& strVal)
-{
-    return false;
-}
-
-bool TryGetValue(const wxRegKey& key, const wxString& str, long *plVal)
-{
-    return false;
-}
-
-// ============================================================================
-// implementation
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// ctor/dtor
-// ----------------------------------------------------------------------------
-
-// create the config object which stores its data under HKCU\vendor\app and, if
-// style & wxCONFIG_USE_GLOBAL_FILE, under HKLM\vendor\app
-wxRegConfig::wxRegConfig(const wxString& appName, const wxString& vendorName,
-                         const wxString& strLocal, const wxString& strGlobal,
-                         long style)
-           : wxConfigBase(appName, vendorName, strLocal, strGlobal, style)
-{
-}
-
-wxRegConfig::~wxRegConfig()
-{
-}
-
-// ----------------------------------------------------------------------------
-// path management
-// ----------------------------------------------------------------------------
-
-void wxRegConfig::SetPath(const wxString& strPath)
-{
-}
-
-// ----------------------------------------------------------------------------
-// enumeration (works only with current group)
-// ----------------------------------------------------------------------------
-
-#define LOCAL_MASK        0x8000
-#define IS_LOCAL_INDEX(l) (((l) & LOCAL_MASK) != 0)
-
-bool wxRegConfig::GetFirstGroup(wxString& str, long& lIndex) const
-{
-    return false;
-}
-
-bool wxRegConfig::GetNextGroup(wxString& str, long& lIndex) const
-{
-    return false;
-}
-
-bool wxRegConfig::GetFirstEntry(wxString& str, long& lIndex) const
-{
-    return false;
-}
-
-bool wxRegConfig::GetNextEntry(wxString& str, long& lIndex) const
-{
-    return false;
-}
-
-size_t wxRegConfig::GetNumberOfEntries(bool WXUNUSED(bRecursive)) const
-{
-  return 0;
-}
-
-size_t wxRegConfig::GetNumberOfGroups(bool WXUNUSED(bRecursive)) const
-{
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-// tests for existence
-// ----------------------------------------------------------------------------
-
-bool wxRegConfig::HasGroup(const wxString& key) const
-{
-    return false;
-}
-
-bool wxRegConfig::HasEntry(const wxString& key) const
-{
-    return false;
-}
-
-wxConfigBase::EntryType wxRegConfig::GetEntryType(const wxString& key) const
-{
-    return wxConfigBase::Type_Integer;
-}
-
-// ----------------------------------------------------------------------------
-// reading/writing
-// ----------------------------------------------------------------------------
-
-bool wxRegConfig::DoReadString(const wxString& key, wxString *pStr) const
-{
-    return FALSE;
-}
-
-// this exactly reproduces the string version above except for ExpandEnvVars(),
-// we really should avoid this code duplication somehow...
-
-bool wxRegConfig::DoReadLong(const wxString& key, long *plResult) const
-{
-    return FALSE;
-}
-
-bool wxRegConfig::DoWriteString(const wxString& key, const wxString& szValue)
-{
-    return false;
-}
-
-bool wxRegConfig::DoWriteLong(const wxString& key, long lValue)
-{
-    return false;
-}
-
-// ----------------------------------------------------------------------------
-// renaming
-// ----------------------------------------------------------------------------
-
-bool wxRegConfig::RenameEntry(const wxString& oldName, const wxString& newName)
-{
-    return false;
-}
-
-bool wxRegConfig::RenameGroup(const wxString& oldName, const wxString& newName)
-{
-    return false;
-}
-
-// ----------------------------------------------------------------------------
-// deleting
-// ----------------------------------------------------------------------------
-
-bool wxRegConfig::DeleteEntry(const wxString& value, bool bGroupIfEmptyAlso)
-{
-    return false;
-}
-
-bool wxRegConfig::DeleteGroup(const wxString& key)
-{
-    return false;
-}
-
-bool wxRegConfig::DeleteAll()
-{
-    return false;
-}
-
-#endif
-  // wxUSE_CONFIG
index db8ce7235779a8600ada928e2a8e1c1eec7df0c9..e32477f327e8d9c2ceb286adc89cf2192b92b3b9 100644 (file)
@@ -244,8 +244,6 @@ extern long wxCharsetToCodepage(const wxChar *name)
 
 #else // !wxUSE_FONTMAP
 
-#include "wx/palmos/registry.h"
-
 // this should work if Internet Exploiter is installed
 extern long wxCharsetToCodepage(const wxChar *name)
 {