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