Add wxStandardPaths::Dir_Config

This allows using GetUserDir(Dir_Config) to retrieve XDG-compliant
location of the configuration files, independently of the file layout
used by the global wxStandardPaths object.

Recommend using this directory instead of GetUserDataDir() for multiple
configuration files under Unix.
This commit is contained in:
Vadim Zeitlin
2024-01-02 02:07:25 +01:00
parent 72c164f28c
commit d56cf71466
5 changed files with 30 additions and 4 deletions
+1
View File
@@ -51,6 +51,7 @@ public:
enum Dir
{
Dir_Cache,
Dir_Config,
Dir_Documents,
Dir_Desktop,
Dir_Downloads,
+14 -2
View File
@@ -79,6 +79,18 @@ public:
*/
Dir_Cache,
/**
Directory containing configuration information.
Example return values:
- Unix: `~/.config`
- Windows: `C:\Users\username\AppData\Roaming`
- Mac: @c `~/Library/Preferences`
@since 3.3.0
*/
Dir_Config,
/**
Directory containing user documents.
@@ -384,8 +396,8 @@ public:
- Mac: @c ~/Library/Preferences
Only use this method if you have a single configuration file to put in this
directory, otherwise GetUserDataDir() is more appropriate as the latter
adds @c appinfo to the path, unlike this function.
directory, otherwise calling AppendAppInfo() with the value returned by
GetDir() with wxStandardPaths::Dir_Config is more appropriate.
*/
virtual wxString GetUserConfigDir() const;
+3
View File
@@ -189,6 +189,9 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
case Dir_Cache:
csidl = CSIDL_LOCAL_APPDATA;
break;
case Dir_Config:
csidl = CSIDL_APPDATA;
break;
case Dir_Desktop:
csidl = CSIDL_DESKTOPDIRECTORY;
break;
+7 -1
View File
@@ -101,12 +101,18 @@ wxStandardPaths::GetLocalizedResourcesDir(const wxString& lang,
wxString wxStandardPaths::GetUserDir(Dir userDir) const
{
wxString subdir;
NSSearchPathDirectory dirType;
switch (userDir)
{
case Dir_Cache:
dirType = NSCachesDirectory;
break;
case Dir_Config:
dirType = NSLibraryDirectory;
subdir = "/Preferences";
break;
case Dir_Desktop:
dirType = NSDesktopDirectory;
break;
@@ -127,7 +133,7 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
break;
}
return GetFMDirectory(dirType, NSUserDomainMask);
return GetFMDirectory(dirType, NSUserDomainMask) + subdir;
}
wxString
+5 -1
View File
@@ -274,7 +274,11 @@ wxString wxStandardPaths::GetUserDir(Dir userDir) const
return cacheDir;
}
const wxFileName dirsFile(GetXDGConfigHome(), wxS("user-dirs.dirs"));
const wxString configDir = GetXDGConfigHome();
if (userDir == Dir_Config)
return configDir;
const wxFileName dirsFile(configDir, wxS("user-dirs.dirs"));
if ( dirsFile.FileExists() )
{
wxString userDirId;