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
 | 
					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.
 | 
					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
 | 
					class WXDLLIMPEXP_BASE wxStandardPaths : public wxStandardPathsBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					    wxStandardPaths()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~wxStandardPaths() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // implement base class pure virtuals
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
    virtual wxString GetExecutablePath() const;
 | 
					    virtual wxString GetExecutablePath() const;
 | 
				
			||||||
    virtual wxString GetConfigDir() const;
 | 
					    virtual wxString GetConfigDir() const;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,15 @@ public:
 | 
				
			|||||||
        ResourceCat_Max
 | 
					        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
 | 
					    // return the global standard paths object
 | 
				
			||||||
    static wxStandardPathsBase& Get();
 | 
					    static wxStandardPathsBase& Get();
 | 
				
			||||||
@@ -126,13 +135,32 @@ public:
 | 
				
			|||||||
    virtual wxString GetTempDir() const;
 | 
					    virtual wxString GetTempDir() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ctor for the base class
 | 
				
			||||||
 | 
					    wxStandardPathsBase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // virtual dtor for the base class
 | 
					    // virtual dtor for the base class
 | 
				
			||||||
    virtual ~wxStandardPathsBase();
 | 
					    virtual ~wxStandardPathsBase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Information used by AppendAppInfo
 | 
				
			||||||
 | 
					    void UseAppInfo(int info)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        m_usedAppInfo = info;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool UsesAppInfo(int info) const { return (m_usedAppInfo & info) != 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    // append "/appname" suffix if the app name is set (doesn't append the
 | 
					    // append the path component, with a leading path seperator if a
 | 
				
			||||||
    // slash if dir already ends with a slash or dot)
 | 
					    // path seperator or dot (.) is not already at the end of dir
 | 
				
			||||||
    static wxString AppendAppName(const wxString& 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
 | 
					#if wxUSE_STDPATHS
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,6 +77,15 @@ wxStandardPathsBase& wxAppTraitsBase::GetStandardPaths()
 | 
				
			|||||||
    return gs_stdPaths;
 | 
					    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()
 | 
					wxStandardPathsBase::~wxStandardPathsBase()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // nothing to do here
 | 
					    // nothing to do here
 | 
				
			||||||
@@ -104,23 +113,41 @@ wxString wxStandardPathsBase::GetTempDir() const
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* static */
 | 
					/* static */
 | 
				
			||||||
wxString wxStandardPathsBase::AppendAppName(const wxString& dir)
 | 
					wxString wxStandardPathsBase::AppendPathComponent(const wxString& dir, const wxString& component)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxString subdir(dir);
 | 
					    wxString subdir(dir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // empty string indicates that an error has occurred, don't touch it then
 | 
					    // empty string indicates that an error has occurred, don't touch it then
 | 
				
			||||||
    if ( !subdir.empty() )
 | 
					    if ( !subdir.empty() )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        const wxString appname = wxTheApp->GetAppName();
 | 
					        if ( !component.empty() )
 | 
				
			||||||
        if ( !appname.empty() )
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            const wxChar ch = *(subdir.end() - 1);
 | 
					            const wxChar ch = *(subdir.end() - 1);
 | 
				
			||||||
            if ( !wxFileName::IsPathSeparator(ch) && ch != _T('.') )
 | 
					            if ( !wxFileName::IsPathSeparator(ch) && ch != _T('.') )
 | 
				
			||||||
                subdir += wxFileName::GetPathSeparator();
 | 
					                subdir += wxFileName::GetPathSeparator();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            subdir += appname;
 | 
					            subdir += component;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return subdir;
 | 
					    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())
 | 
					                 : m_bundle(CFBundleGetMainBundle())
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    CFRetain(m_bundle);
 | 
					    CFRetain(m_bundle);
 | 
				
			||||||
 | 
					    UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxStandardPathsCF::wxStandardPathsCF(wxCFBundleRef bundle)
 | 
					wxStandardPathsCF::wxStandardPathsCF(wxCFBundleRef bundle)
 | 
				
			||||||
                 : m_bundle(bundle)
 | 
					                 : m_bundle(bundle)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    CFRetain(m_bundle);
 | 
					    CFRetain(m_bundle);
 | 
				
			||||||
 | 
					    UseAppInfo(AppInfo_AppName | AppInfo_VendorName);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxStandardPathsCF::~wxStandardPathsCF()
 | 
					wxStandardPathsCF::~wxStandardPathsCF()
 | 
				
			||||||
@@ -170,18 +172,18 @@ wxString wxStandardPathsCF::GetExecutablePath() const
 | 
				
			|||||||
wxString wxStandardPathsCF::GetLocalDataDir() const
 | 
					wxString wxStandardPathsCF::GetLocalDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef __WXMAC__
 | 
					#ifdef __WXMAC__
 | 
				
			||||||
    return AppendAppName(wxMacFindFolder((short)kLocalDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
					    return AppendAppInfo(wxMacFindFolder((short)kLocalDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    return AppendAppName(wxT("/Library/Application Support"));
 | 
					    return AppendAppInfo(wxT("/Library/Application Support"));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPathsCF::GetUserDataDir() const
 | 
					wxString wxStandardPathsCF::GetUserDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef __WXMAC__
 | 
					#ifdef __WXMAC__
 | 
				
			||||||
    return AppendAppName(wxMacFindFolder((short)kUserDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
					    return AppendAppInfo(wxMacFindFolder((short)kUserDomain, kApplicationSupportFolderType, kCreateFolder));
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    return AppendAppName(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
 | 
					    return AppendAppInfo(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -281,7 +281,7 @@ wxString wxStandardPaths::GetExecutablePath() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetConfigDir() const
 | 
					wxString wxStandardPaths::GetConfigDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return AppendAppName(DoGetDirectory(CSIDL_COMMON_APPDATA));
 | 
					    return AppendAppInfo(DoGetDirectory(CSIDL_COMMON_APPDATA));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserConfigDir() const
 | 
					wxString wxStandardPaths::GetUserConfigDir() const
 | 
				
			||||||
@@ -298,12 +298,12 @@ wxString wxStandardPaths::GetDataDir() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
					wxString wxStandardPaths::GetUserDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return AppendAppName(GetUserConfigDir());
 | 
					    return AppendAppInfo(GetUserConfigDir());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserLocalDataDir() const
 | 
					wxString wxStandardPaths::GetUserLocalDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return AppendAppName(DoGetDirectory(CSIDL_LOCAL_APPDATA));
 | 
					    return AppendAppInfo(DoGetDirectory(CSIDL_LOCAL_APPDATA));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
					wxString wxStandardPaths::GetPluginsDir() const
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@ wxString wxStandardPaths::GetDataDir() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
					wxString wxStandardPaths::GetUserDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return AppendAppName(wxFileName::GetHomeDir() + _T("\\."));
 | 
					    return AppendAppInfo(wxFileName::GetHomeDir() + _T("\\."));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
					wxString wxStandardPaths::GetPluginsDir() const
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,12 +75,12 @@ wxString wxStandardPaths::GetConfigDir() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetDataDir() const
 | 
					wxString wxStandardPaths::GetDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   return AppendAppName(GetInstallPrefix() + _T("/sys$share"));
 | 
					   return AppendAppInfo(GetInstallPrefix() + _T("/sys$share"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetLocalDataDir() const
 | 
					wxString wxStandardPaths::GetLocalDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   return AppendAppName(_T("/sys$manager"));
 | 
					   return AppendAppInfo(_T("/sys$manager"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
					wxString wxStandardPaths::GetUserDataDir() const
 | 
				
			||||||
@@ -187,22 +187,22 @@ wxString wxStandardPaths::GetConfigDir() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetDataDir() const
 | 
					wxString wxStandardPaths::GetDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   return AppendAppName(GetInstallPrefix() + _T("/share"));
 | 
					   return AppendAppInfo(GetInstallPrefix() + _T("/share"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetLocalDataDir() const
 | 
					wxString wxStandardPaths::GetLocalDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   return AppendAppName(_T("/etc"));
 | 
					   return AppendAppInfo(_T("/etc"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetUserDataDir() const
 | 
					wxString wxStandardPaths::GetUserDataDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   return AppendAppName(wxFileName::GetHomeDir() + _T("/."));
 | 
					   return AppendAppInfo(wxFileName::GetHomeDir() + _T("/."));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString wxStandardPaths::GetPluginsDir() const
 | 
					wxString wxStandardPaths::GetPluginsDir() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return AppendAppName(GetInstallPrefix() + _T("/lib"));
 | 
					    return AppendAppInfo(GetInstallPrefix() + _T("/lib"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxString
 | 
					wxString
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user