X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce336c6d76d8c513487af08857c1cd3cbe806d30..27ee942feb598fc96f790d62bb8aac6d8c97cce5:/src/common/stdpbase.cpp diff --git a/src/common/stdpbase.cpp b/src/common/stdpbase.cpp index 58e9e4ebba..3aacd46b8a 100644 --- a/src/common/stdpbase.cpp +++ b/src/common/stdpbase.cpp @@ -24,9 +24,12 @@ #pragma hdrstop #endif +#if wxUSE_STDPATHS + #ifndef WX_PRECOMP #include "wx/app.h" #endif //WX_PRECOMP +#include "wx/apptrait.h" #include "wx/filename.h" #include "wx/stdpaths.h" @@ -42,7 +45,36 @@ static wxStandardPaths gs_stdPaths; // ============================================================================ /* static */ -wxStandardPaths& wxStandardPathsBase::Get() +wxStandardPathsBase& wxStandardPathsBase::Get() +{ + wxAppTraits * const traits = wxTheApp ? wxTheApp->GetTraits() : NULL; + wxCHECK_MSG( traits, gs_stdPaths, _T("create wxApp before calling this") ); + + return traits->GetStandardPaths(); +} + +wxString wxStandardPathsBase::GetExecutablePath() const +{ + if ( !wxTheApp || !wxTheApp->argv ) + return wxEmptyString; + + wxString argv0 = wxTheApp->argv[0]; + if (wxIsAbsolutePath(argv0)) + return argv0; + + // Search PATH.environment variable... + wxPathList pathlist; + pathlist.AddEnvList(wxT("PATH")); + wxString path = pathlist.FindAbsoluteValidPath(argv0); + if ( path.empty() ) + return argv0; // better than nothing + + wxFileName filename(path); + filename.Normalize(); + return filename.GetFullPath(); +} + +wxStandardPathsBase& wxAppTraitsBase::GetStandardPaths() { return gs_stdPaths; } @@ -62,12 +94,23 @@ wxString wxStandardPathsBase::GetUserLocalDataDir() const return GetUserDataDir(); } +wxString wxStandardPathsBase::GetDocumentsDir() const +{ + return wxFileName::GetHomeDir(); +} + +// return the temporary directory for the current user +wxString wxStandardPathsBase::GetTempDir() const +{ + return wxFileName::GetTempDir(); +} + /* static */ wxString wxStandardPathsBase::AppendAppName(const wxString& dir) { wxString subdir(dir); - // empty string indicates that an error has occured, don't touch it then + // empty string indicates that an error has occurred, don't touch it then if ( !subdir.empty() ) { const wxString appname = wxTheApp->GetAppName(); @@ -84,3 +127,4 @@ wxString wxStandardPathsBase::AppendAppName(const wxString& dir) return subdir; } +#endif // wxUSE_STDPATHS