Try standard XDG location for documents directory

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2008-04-08 13:52:39 +00:00
parent 7b74e82834
commit 0ce52f3d4e
2 changed files with 46 additions and 0 deletions

View File

@@ -47,6 +47,9 @@ public:
virtual wxString GetPluginsDir() const; virtual wxString GetPluginsDir() const;
virtual wxString GetLocalizedResourcesDir(const wxString& lang, virtual wxString GetLocalizedResourcesDir(const wxString& lang,
ResourceCat category) const; ResourceCat category) const;
#ifndef __VMS
virtual wxString GetDocumentsDir() const;
#endif
private: private:
wxString m_prefix; wxString m_prefix;

View File

@@ -33,6 +33,8 @@
#endif //WX_PRECOMP #endif //WX_PRECOMP
#include "wx/filename.h" #include "wx/filename.h"
#include "wx/log.h"
#include "wx/textfile.h"
#if defined( __LINUX__ ) || defined( __VMS ) #if defined( __LINUX__ ) || defined( __VMS )
#include <unistd.h> #include <unistd.h>
@@ -52,6 +54,7 @@ wxString wxStandardPaths::GetUserConfigDir() const
return wxFileName::GetHomeDir(); return wxFileName::GetHomeDir();
} }
// ============================================================================ // ============================================================================
// wxStandardPaths implementation for VMS // wxStandardPaths implementation for VMS
// ============================================================================ // ============================================================================
@@ -215,6 +218,46 @@ wxStandardPaths::GetLocalizedResourcesDir(const wxString& lang,
return GetInstallPrefix() + _T("/share/locale/") + lang + _T("/LC_MESSAGES"); return GetInstallPrefix() + _T("/share/locale/") + lang + _T("/LC_MESSAGES");
} }
wxString wxStandardPaths::GetDocumentsDir() const
{
{
wxLogNull logNull;
wxString homeDir = wxFileName::GetHomeDir();
wxString configPath;
if (wxGetenv(wxT("XDG_CONFIG_HOME")))
configPath = wxGetenv(wxT("XDG_CONFIG_HOME"));
else
configPath = homeDir + wxT("/.config");
wxString dirsFile = configPath + wxT("/user-dirs.dirs");
if (wxFileExists(dirsFile))
{
wxTextFile textFile;
if (textFile.Open(dirsFile))
{
size_t i;
for (i = 0; i < textFile.GetLineCount(); i++)
{
wxString line(textFile[i]);
int pos = line.Find(wxT("XDG_DOCUMENTS_DIR"));
if (pos != wxNOT_FOUND)
{
wxString value = line.AfterFirst(wxT('='));
value.Replace(wxT("$HOME"), homeDir);
value.Trim(true);
value.Trim(false);
if (!value.IsEmpty() && wxDirExists(value))
return value;
else
break;
}
}
}
}
}
return wxStandardPathsBase::GetDocumentsDir();
}
#endif // __VMS/!__VMS #endif // __VMS/!__VMS
#endif // wxUSE_STDPATHS #endif // wxUSE_STDPATHS