X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ac7ad70d4c6d7db2ab9e01a4662611f2a706b6fe..7bd30a12ade503fd135c686ecc98a6f6d5fecbeb:/include/wx/msw/stdpaths.h diff --git a/include/wx/msw/stdpaths.h b/include/wx/msw/stdpaths.h index d8f15d43c9..a9d53f38a6 100644 --- a/include/wx/msw/stdpaths.h +++ b/include/wx/msw/stdpaths.h @@ -19,6 +19,10 @@ class WXDLLIMPEXP_BASE wxStandardPaths : public wxStandardPathsBase { public: + // ctor calls IgnoreAppBuildSubDirs() and also sets up the object to use + // both vendor and application name by default + wxStandardPaths(); + // implement base class pure virtuals virtual wxString GetExecutablePath() const; virtual wxString GetConfigDir() const; @@ -29,12 +33,48 @@ public: virtual wxString GetPluginsDir() const; virtual wxString GetDocumentsDir() const; + + // MSW-specific methods + + // This class supposes that data, plugins &c files are located under the + // program directory which is the directory containing the application + // binary itself. But sometimes this binary may be in a subdirectory of the + // main program directory, e.g. this happens in at least the following + // common cases: + // 1. The program is in "bin" subdirectory of the installation directory. + // 2. The program is in "debug" subdirectory of the directory containing + // sources and data files during development + // + // By calling this function you instruct the class to remove the last + // component of the path if it matches its argument. Notice that it may be + // called more than once, e.g. you can call both IgnoreAppSubDir("bin") and + // IgnoreAppSubDir("debug") to take care of both production and development + // cases above but that each call will only remove the last path component. + // Finally note that the argument can contain wild cards so you can also + // call IgnoreAppSubDir("vc*msw*") to ignore all build directories at once + // when using wxWidgets-inspired output directories names. + void IgnoreAppSubDir(const wxString& subdirPattern); + + // This function is used to ignore all common build directories and is + // called from the ctor -- use DontIgnoreAppSubDir() to undo this. + void IgnoreAppBuildSubDirs(); + + // Undo the effects of all preceding IgnoreAppSubDir() calls. + void DontIgnoreAppSubDir(); + + + // Returns the directory corresponding to the specified Windows shell CSIDL + static wxString MSWGetShellDir(int csidl); + protected: // get the path corresponding to the given standard CSIDL_XXX constant static wxString DoGetDirectory(int csidl); // return the directory of the application itself - static wxString GetAppDir(); + wxString GetAppDir() const; + + // directory returned by GetAppDir() + mutable wxString m_appDir; }; // ----------------------------------------------------------------------------