X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/64c288fa47480385ad656ae3249b5b131340c1d6..1ae82ba9f23ee688bc4db2cd449eca5bf97cfdf0:/src/msw/stdpaths.cpp diff --git a/src/msw/stdpaths.cpp b/src/msw/stdpaths.cpp index 3b815eac7b..7eef3af3a0 100644 --- a/src/msw/stdpaths.cpp +++ b/src/msw/stdpaths.cpp @@ -68,6 +68,10 @@ static const wxChar *TRACE_MASK = _T("stdpaths"); #define CSIDL_PROGRAM_FILES 0x0026 #endif +#ifndef CSIDL_PERSONAL + #define CSIDL_PERSONAL 0x0005 +#endif + #ifndef SHGFP_TYPE_CURRENT #define SHGFP_TYPE_CURRENT 0 #endif @@ -75,7 +79,6 @@ static const wxChar *TRACE_MASK = _T("stdpaths"); #ifndef SHGFP_TYPE_DEFAULT #define SHGFP_TYPE_DEFAULT 1 #endif - // ---------------------------------------------------------------------------- // module globals // ---------------------------------------------------------------------------- @@ -242,6 +245,31 @@ wxString wxStandardPaths::DoGetDirectory(int csidl) return dir; } +/* static */ +wxString wxStandardPaths::GetAppDir() +{ + wxFileName fn(wxGetFullModuleName()); + + // allow running the apps directly from build directory in debug builds +#ifdef __WXDEBUG__ + wxString lastdir; + if ( fn.GetDirCount() ) + { + lastdir = fn.GetDirs().Last(); + lastdir.MakeLower(); + if ( lastdir.Matches(_T("debug*")) || lastdir.Matches(_T("vc_msw*")) ) + fn.RemoveLastDir(); + } +#endif // __WXDEBUG__ + + return fn.GetPath(); +} + +wxString wxStandardPaths::GetDocumentsDir() const +{ + return DoGetDirectory(CSIDL_PERSONAL); +} + // ---------------------------------------------------------------------------- // public functions // ---------------------------------------------------------------------------- @@ -260,7 +288,7 @@ wxString wxStandardPaths::GetDataDir() const { // under Windows each program is usually installed in its own directory and // so its datafiles are in the same directory as its main executable - return wxFileName(wxGetFullModuleName()).GetPath(); + return GetAppDir(); } wxString wxStandardPaths::GetUserDataDir() const @@ -275,10 +303,11 @@ wxString wxStandardPaths::GetUserLocalDataDir() const wxString wxStandardPaths::GetPluginsDir() const { - return wxFileName(wxGetFullModuleName()).GetPath(); + // there is no standard location for plugins, suppose they're in the same + // directory as the .exe + return GetAppDir(); } - // ============================================================================ // wxStandardPathsWin16 implementation // ============================================================================