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:
		| @@ -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; | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user