+ const wxString lastdir = fn.GetDirs().Last().Lower();
+ if ( lastdir.Matches(subdirPattern.Lower()) )
+ {
+ fn.RemoveLastDir();
+
+ // store the cached value so that subsequent calls to GetAppDir() will
+ // reuse it instead of using just the program binary directory
+ m_appDir = fn.GetPath();
+ }
+}
+
+void wxStandardPaths::IgnoreAppBuildSubDirs()
+{
+ IgnoreAppSubDir("debug");
+ IgnoreAppSubDir("release");
+
+ wxString compilerPrefix;
+#ifdef __VISUALC__
+ compilerPrefix = "vc";
+#elif defined(__GNUG__)
+ compilerPrefix = "gcc";
+#elif defined(__BORLANDC__)
+ compilerPrefix = "bcc";
+#elif defined(__DIGITALMARS__)
+ compilerPrefix = "dmc";
+#elif defined(__WATCOMC__)
+ compilerPrefix = "wat";
+#else
+ return;
+#endif
+
+ IgnoreAppSubDir(compilerPrefix + "_msw*");
+}
+
+void wxStandardPaths::DontIgnoreAppSubDir()
+{
+ // this will force the next call to GetAppDir() to use the program binary
+ // path as the application directory
+ m_appDir.clear();
+}
+
+/* static */
+wxString wxStandardPaths::MSWGetShellDir(int csidl)
+{
+ return DoGetDirectory(csidl);