This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
177 lines
4.5 KiB
C++
177 lines
4.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/common/stdpbase.cpp
|
|
// Purpose: wxStandardPathsBase methods common to all ports
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 2004-10-19
|
|
// Copyright: (c) 2004 Vadim Zeitlin <vadim@wxwindows.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ============================================================================
|
|
// declarations
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// for compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/app.h"
|
|
#endif //WX_PRECOMP
|
|
#include "wx/apptrait.h"
|
|
|
|
#include "wx/filename.h"
|
|
#include "wx/stdpaths.h"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// module globals
|
|
// ----------------------------------------------------------------------------
|
|
|
|
namespace
|
|
{
|
|
|
|
// Derive a class just to be able to create it: wxStandardPaths ctor is
|
|
// protected to prevent its misuse, but it also means we can't create an object
|
|
// of this class directly.
|
|
class wxStandardPathsDefault : public wxStandardPaths
|
|
{
|
|
public:
|
|
wxStandardPathsDefault() { }
|
|
};
|
|
|
|
static wxStandardPathsDefault gs_stdPaths;
|
|
|
|
} // anonymous namespace
|
|
|
|
// ============================================================================
|
|
// implementation
|
|
// ============================================================================
|
|
|
|
/* static */
|
|
wxStandardPaths& wxStandardPathsBase::Get()
|
|
{
|
|
wxAppTraits * const traits = wxTheApp ? wxTheApp->GetTraits() : NULL;
|
|
wxCHECK_MSG( traits, gs_stdPaths, wxT("create wxApp before calling this") );
|
|
|
|
return traits->GetStandardPaths();
|
|
}
|
|
|
|
wxString wxStandardPathsBase::GetExecutablePath() const
|
|
{
|
|
if ( !wxTheApp || !wxTheApp->argv )
|
|
return wxEmptyString;
|
|
|
|
wxString argv0 = wxTheApp->argv[0];
|
|
if (wxIsAbsolutePath(argv0))
|
|
return argv0;
|
|
|
|
// Search PATH.environment variable...
|
|
wxPathList pathlist;
|
|
pathlist.AddEnvList(wxT("PATH"));
|
|
wxString path = pathlist.FindAbsoluteValidPath(argv0);
|
|
if ( path.empty() )
|
|
return argv0; // better than nothing
|
|
|
|
wxFileName filename(path);
|
|
filename.Normalize();
|
|
return filename.GetFullPath();
|
|
}
|
|
|
|
wxStandardPaths& 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
|
|
}
|
|
|
|
wxString wxStandardPathsBase::GetLocalDataDir() const
|
|
{
|
|
return GetDataDir();
|
|
}
|
|
|
|
wxString wxStandardPathsBase::GetUserLocalDataDir() const
|
|
{
|
|
return GetUserDataDir();
|
|
}
|
|
|
|
wxString wxStandardPathsBase::GetDocumentsDir() const
|
|
{
|
|
return wxFileName::GetHomeDir();
|
|
}
|
|
|
|
wxString wxStandardPathsBase::GetAppDocumentsDir() const
|
|
{
|
|
const wxString docsDir = GetDocumentsDir();
|
|
wxString appDocsDir = AppendAppInfo(docsDir);
|
|
|
|
return wxDirExists(appDocsDir) ? appDocsDir : docsDir;
|
|
}
|
|
|
|
// return the temporary directory for the current user
|
|
wxString wxStandardPathsBase::GetTempDir() const
|
|
{
|
|
return wxFileName::GetTempDir();
|
|
}
|
|
|
|
/* static */
|
|
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() )
|
|
{
|
|
if ( !component.empty() )
|
|
{
|
|
const wxChar ch = *(subdir.end() - 1);
|
|
if ( !wxFileName::IsPathSeparator(ch) && ch != wxT('.') )
|
|
subdir += wxFileName::GetPathSeparator();
|
|
|
|
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;
|
|
}
|
|
|