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 GetLocalizedResourcesDir(const wxString& lang, | ||||
|                                               ResourceCat category) const; | ||||
| #ifndef __VMS | ||||
|     virtual wxString GetDocumentsDir() const; | ||||
| #endif | ||||
|  | ||||
| private: | ||||
|     wxString m_prefix; | ||||
|   | ||||
| @@ -33,6 +33,8 @@ | ||||
| #endif //WX_PRECOMP | ||||
|  | ||||
| #include "wx/filename.h" | ||||
| #include "wx/log.h" | ||||
| #include "wx/textfile.h" | ||||
|  | ||||
| #if defined( __LINUX__ ) || defined( __VMS ) | ||||
|     #include <unistd.h> | ||||
| @@ -52,6 +54,7 @@ wxString wxStandardPaths::GetUserConfigDir() const | ||||
|     return wxFileName::GetHomeDir(); | ||||
| } | ||||
|  | ||||
|  | ||||
| // ============================================================================ | ||||
| // wxStandardPaths implementation for VMS | ||||
| // ============================================================================ | ||||
| @@ -215,6 +218,46 @@ wxStandardPaths::GetLocalizedResourcesDir(const wxString& lang, | ||||
|     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 // wxUSE_STDPATHS | ||||
|   | ||||
		Reference in New Issue
	
	Block a user