allow to optionally use vendor name component in standard paths (slightly modified patch 1831308)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50025 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -280,3 +280,24 @@ automatically, portable programs should call this function. Usually the prefix
 | 
			
		||||
is set during program configuration if using GNU autotools and so it is enough
 | 
			
		||||
to pass its value defined in \texttt{config.h} to this function.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\membersection{wxStandardPaths::UseAppInfo}\label{wxstandardpathsuseappinfo}
 | 
			
		||||
 | 
			
		||||
\func{void}{UseAppInfo}{\param{int }{info}}
 | 
			
		||||
 | 
			
		||||
Controls what application information is used when constructing paths that
 | 
			
		||||
should be unique to this program, such as the application data directory, the
 | 
			
		||||
plugins directory on Unix, etc.
 | 
			
		||||
 | 
			
		||||
Valid values for \arg{info} are \texttt{AppInfo\_None} and either one or
 | 
			
		||||
combination of \texttt{AppInfo\_AppName} and \texttt{AppInfo\_VendorName}. The
 | 
			
		||||
first one tells this class to not use neither application nor vendor name in
 | 
			
		||||
the paths.
 | 
			
		||||
 | 
			
		||||
By default, only the application name is used under Unix systems but both
 | 
			
		||||
application and vendor names are used under Windows and Mac.
 | 
			
		||||
 | 
			
		||||
\wxheading{See also}
 | 
			
		||||
 | 
			
		||||
\helpref{wxApp::SetAppName}{wxappsetappname}, \helpref{wxApp::SetVendorName}{wxappsetvendorname}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,13 @@
 | 
			
		||||
class WXDLLIMPEXP_BASE wxStandardPaths : public wxStandardPathsBase
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    wxStandardPaths()
 | 
			
		||||
    {
 | 
			
		||||
        UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ~wxStandardPaths() { }
 | 
			
		||||
 | 
			
		||||
    // implement base class pure virtuals
 | 
			
		||||
    virtual wxString GetExecutablePath() const;
 | 
			
		||||
    virtual wxString GetConfigDir() const;
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,15 @@ public:
 | 
			
		||||
        ResourceCat_Max
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // what should we use to construct paths unique to this application:
 | 
			
		||||
    // (AppInfo_AppName and AppInfo_VendorName can be combined together)
 | 
			
		||||
    enum
 | 
			
		||||
    {
 | 
			
		||||
        AppInfo_None       = 0,  // nothing
 | 
			
		||||
        AppInfo_AppName    = 1,  // the application name
 | 
			
		||||
        AppInfo_VendorName = 2   // the vendor name
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // return the global standard paths object
 | 
			
		||||
    static wxStandardPathsBase& Get();
 | 
			
		||||
@@ -126,13 +135,32 @@ public:
 | 
			
		||||
    virtual wxString GetTempDir() const;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ctor for the base class
 | 
			
		||||
    wxStandardPathsBase();
 | 
			
		||||
 | 
			
		||||
    // virtual dtor for the base class
 | 
			
		||||
    virtual ~wxStandardPathsBase();
 | 
			
		||||
 | 
			
		||||
    // Information used by AppendAppInfo
 | 
			
		||||
    void UseAppInfo(int info)
 | 
			
		||||
    {
 | 
			
		||||
        m_usedAppInfo = info;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool UsesAppInfo(int info) const { return (m_usedAppInfo & info) != 0; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    // append "/appname" suffix if the app name is set (doesn't append the
 | 
			
		||||
    // slash if dir already ends with a slash or dot)
 | 
			
		||||
    static wxString AppendAppName(const wxString& dir);
 | 
			
		||||
    // append the path component, with a leading path seperator if a
 | 
			
		||||
    // path seperator or dot (.) is not already at the end of dir
 | 
			
		||||
    static wxString AppendPathComponent(const wxString& dir, const wxString& component);
 | 
			
		||||
 | 
			
		||||
    // append application information determined by m_usedAppInfo to dir
 | 
			
		||||
    wxString AppendAppInfo(const wxString& dir) const;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // combination of AppInfo_XXX flags used by AppendAppInfo()
 | 
			
		||||
    int m_usedAppInfo;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if wxUSE_STDPATHS
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,15 @@ wxStandardPathsBase& wxAppTraitsBase::GetStandardPaths()
 | 
			
		||||
    return gs_stdPaths;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxStandardPathsBase::wxStandardPathsBase()
 | 
			
		||||
{
 | 
			
		||||
    // Set the default information that is used when
 | 
			
		||||
    // forming some paths (by AppendAppInfo).
 | 
			
		||||
    // Derived classes can call this in their constructors
 | 
			
		||||
    // to set the platform-specific settings
 | 
			
		||||
    UseAppInfo(AppInfo_AppName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxStandardPathsBase::~wxStandardPathsBase()
 | 
			
		||||
{
 | 
			
		||||
    // nothing to do here
 | 
			
		||||
@@ -104,23 +113,41 @@ wxString wxStandardPathsBase::GetTempDir() const
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* static */
 | 
			
		||||
wxString wxStandardPathsBase::AppendAppName(const wxString& dir)
 | 
			
		||||
wxString wxStandardPathsBase::AppendPathComponent(const wxString& dir, const wxString& component)
 | 
			
		||||
{
 | 
			
		||||
    wxString subdir(dir);
 | 
			
		||||
 | 
			
		||||
    // empty string indicates that an error has occurred, don't touch it then
 | 
			
		||||
    if ( !subdir.empty() )
 | 
			
		||||
    {
 | 
			
		||||
        const wxString appname = wxTheApp->GetAppName();
 | 
			
		||||
        if ( !appname.empty() )
 | 
			
		||||
        if ( !component.empty() )
 | 
			
		||||
        {
 | 
			
		||||
            const wxChar ch = *(subdir.end() - 1);
 | 
			
		||||
            if ( !wxFileName::IsPathSeparator(ch) && ch != _T('.') )
 | 
			
		||||
                subdir += wxFileName::GetPathSeparator();
 | 
			
		||||
 | 
			
		||||
            subdir += appname;
 | 
			
		||||
            subdir += component;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return subdir;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPathsBase::AppendAppInfo(const wxString& dir) const
 | 
			
		||||
{
 | 
			
		||||
    wxString subdir(dir);
 | 
			
		||||
 | 
			
		||||
    if ( UsesAppInfo(AppInfo_VendorName) )
 | 
			
		||||
    {
 | 
			
		||||
        subdir = AppendPathComponent(subdir, wxTheApp->GetVendorName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ( UsesAppInfo(AppInfo_AppName) )
 | 
			
		||||
    {
 | 
			
		||||
        subdir = AppendPathComponent(subdir, wxTheApp->GetAppName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return subdir;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,12 +49,14 @@ wxStandardPathsCF::wxStandardPathsCF()
 | 
			
		||||
                 : m_bundle(CFBundleGetMainBundle())
 | 
			
		||||
{
 | 
			
		||||
    CFRetain(m_bundle);
 | 
			
		||||
    UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxStandardPathsCF::wxStandardPathsCF(wxCFBundleRef bundle)
 | 
			
		||||
                 : m_bundle(bundle)
 | 
			
		||||
{
 | 
			
		||||
    CFRetain(m_bundle);
 | 
			
		||||
    UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxStandardPathsCF::~wxStandardPathsCF()
 | 
			
		||||
@@ -170,18 +172,18 @@ wxString wxStandardPathsCF::GetExecutablePath() const
 | 
			
		||||
wxString wxStandardPathsCF::GetLocalDataDir() const
 | 
			
		||||
{
 | 
			
		||||
#ifdef __WXMAC__
 | 
			
		||||
    return AppendAppName(wxMacFindFolder((short)kLocalDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
			
		||||
    return AppendAppInfo(wxMacFindFolder((short)kLocalDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
			
		||||
#else
 | 
			
		||||
    return AppendAppName(wxT("/Library/Application Support"));
 | 
			
		||||
    return AppendAppInfo(wxT("/Library/Application Support"));
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPathsCF::GetUserDataDir() const
 | 
			
		||||
{
 | 
			
		||||
#ifdef __WXMAC__
 | 
			
		||||
    return AppendAppName(wxMacFindFolder((short)kUserDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
			
		||||
    return AppendAppInfo(wxMacFindFolder((short)kUserDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
			
		||||
#else
 | 
			
		||||
    return AppendAppName(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
 | 
			
		||||
    return AppendAppInfo(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -281,7 +281,7 @@ wxString wxStandardPaths::GetExecutablePath() const
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetConfigDir() const
 | 
			
		||||
{
 | 
			
		||||
    return AppendAppName(DoGetDirectory(CSIDL_COMMON_APPDATA));
 | 
			
		||||
    return AppendAppInfo(DoGetDirectory(CSIDL_COMMON_APPDATA));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserConfigDir() const
 | 
			
		||||
@@ -298,12 +298,12 @@ wxString wxStandardPaths::GetDataDir() const
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
			
		||||
{
 | 
			
		||||
    return AppendAppName(GetUserConfigDir());
 | 
			
		||||
    return AppendAppInfo(GetUserConfigDir());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserLocalDataDir() const
 | 
			
		||||
{
 | 
			
		||||
    return AppendAppName(DoGetDirectory(CSIDL_LOCAL_APPDATA));
 | 
			
		||||
    return AppendAppInfo(DoGetDirectory(CSIDL_LOCAL_APPDATA));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ wxString wxStandardPaths::GetDataDir() const
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
			
		||||
{
 | 
			
		||||
    return AppendAppName(wxFileName::GetHomeDir() + _T("\\."));
 | 
			
		||||
    return AppendAppInfo(wxFileName::GetHomeDir() + _T("\\."));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
			
		||||
 
 | 
			
		||||
@@ -75,12 +75,12 @@ wxString wxStandardPaths::GetConfigDir() const
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetDataDir() const
 | 
			
		||||
{
 | 
			
		||||
   return AppendAppName(GetInstallPrefix() + _T("/sys$share"));
 | 
			
		||||
   return AppendAppInfo(GetInstallPrefix() + _T("/sys$share"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetLocalDataDir() const
 | 
			
		||||
{
 | 
			
		||||
   return AppendAppName(_T("/sys$manager"));
 | 
			
		||||
   return AppendAppInfo(_T("/sys$manager"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
			
		||||
@@ -187,22 +187,22 @@ wxString wxStandardPaths::GetConfigDir() const
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetDataDir() const
 | 
			
		||||
{
 | 
			
		||||
   return AppendAppName(GetInstallPrefix() + _T("/share"));
 | 
			
		||||
   return AppendAppInfo(GetInstallPrefix() + _T("/share"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetLocalDataDir() const
 | 
			
		||||
{
 | 
			
		||||
   return AppendAppName(_T("/etc"));
 | 
			
		||||
   return AppendAppInfo(_T("/etc"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
			
		||||
{
 | 
			
		||||
   return AppendAppName(wxFileName::GetHomeDir() + _T("/."));
 | 
			
		||||
   return AppendAppInfo(wxFileName::GetHomeDir() + _T("/."));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
			
		||||
{
 | 
			
		||||
    return AppendAppName(GetInstallPrefix() + _T("/lib"));
 | 
			
		||||
    return AppendAppInfo(GetInstallPrefix() + _T("/lib"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxString
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user