added FindFileInPath() (part of an otherwise rejected patch)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
591087eda4
commit
3ab6fcee36
@ -26,12 +26,14 @@ provide access to user-defined virtual file systems.
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||
|
||||
|
||||
\membersection{wxFileSystem::wxFileSystem}\label{wxfilesystemwxfilesystem}
|
||||
|
||||
\func{}{wxFileSystem}{\void}
|
||||
|
||||
Constructor.
|
||||
|
||||
|
||||
\membersection{wxFileSystem::AddHandler}\label{wxfilesystemaddhandler}
|
||||
|
||||
\func{static void}{AddHandler}{\param{wxFileSystemHandler }{*handler}}
|
||||
@ -51,6 +53,7 @@ This is because (a) AddHandler is a static method, and (b) the handlers
|
||||
are deleted in wxFileSystem's destructor so that you don't have to
|
||||
care about it.
|
||||
|
||||
|
||||
\membersection{wxFileSystem::ChangePathTo}\label{wxfilesystemchangepathto}
|
||||
|
||||
\func{void}{ChangePathTo}{\param{const wxString\& }{location}, \param{bool }{is\_dir = false}}
|
||||
@ -83,12 +86,14 @@ commands change the path to "dir/subdir/":
|
||||
f = fs -> OpenFile("hello.htm"); // opens file 'subdir/folder/hello.htm' !!
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\membersection{wxFileSystem::GetPath}\label{wxfilesystemgetpath}
|
||||
|
||||
\func{wxString}{GetPath}{\void}
|
||||
|
||||
Returns actual path (set by \helpref{ChangePathTo}{wxfilesystemchangepathto}).
|
||||
|
||||
|
||||
\membersection{wxFileSystem::FileNameToURL}\label{wxfilesystemfilenametourl}
|
||||
|
||||
\func{static wxString}{FileNameToURL}{\param{wxFileName }{filename}}
|
||||
@ -100,6 +105,26 @@ Converts filename into URL.
|
||||
\helpref{wxFileSystem::URLToFileName}{wxfilesystemurltofilename},
|
||||
\helpref{wxFileName}{wxfilename}
|
||||
|
||||
|
||||
\membersection{wxFileSystem::FindFileInPath}\label{wxfilesystemfindfileinpath}
|
||||
|
||||
\func{bool}{FindFileInPath}{\param{wxString }{*str}, \param{const wxChar }{*path}, \param{const wxChar }{*file}}
|
||||
|
||||
Looks for the file with the given name \arg{file} in a colon or semi-colon
|
||||
(depending on the current platform) separated list of directories in
|
||||
\arg{path}. If the file is found in any directory, returns \true and the full
|
||||
path of the file in \arg{str}, otherwise returns \false and doesn't modify
|
||||
\arg{str}.
|
||||
|
||||
\wxheading{Parameters}
|
||||
|
||||
\docparam{str}{Receives the full path of the file, must not be \NULL}
|
||||
|
||||
\docparam{path}{\texttt{wxPATH\_SEP}-separated list of directories}
|
||||
|
||||
\docparam{file}{the name of the file to look for}
|
||||
|
||||
|
||||
\membersection{wxFileSystem::FindFirst}\label{wxfilesystemfindfirst}
|
||||
|
||||
\func{wxString}{FindFirst}{\param{const wxString\& }{wildcard}, \param{int }{flags = 0}}
|
||||
@ -108,12 +133,14 @@ Works like \helpref{wxFindFirstFile}{wxfindfirstfile}. Returns name of the first
|
||||
filename (within filesystem's current path) that matches {\it wildcard}. {\it flags} may be one of
|
||||
wxFILE (only files), wxDIR (only directories) or 0 (both).
|
||||
|
||||
|
||||
\membersection{wxFileSystem::FindNext}\label{wxfilesystemfindnext}
|
||||
|
||||
\func{wxString}{FindNext}{\void}
|
||||
|
||||
Returns the next filename that matches parameters passed to \helpref{FindFirst}{wxfilesystemfindfirst}.
|
||||
|
||||
|
||||
\membersection{wxFileSystem::OpenFile}\label{wxfilesystemopenfile}
|
||||
|
||||
\func{wxFSFile*}{OpenFile}{\param{const wxString\& }{location}}
|
||||
@ -124,6 +151,7 @@ or NULL if failed. It first tries to open the file in relative scope
|
||||
absolute path. Note that the user is responsible for deleting the returned
|
||||
wxFSFile.
|
||||
|
||||
|
||||
\membersection{wxFileSystem::URLToFileName}\label{wxfilesystemurltofilename}
|
||||
|
||||
\func{static wxFileName}{URLToFileName}{\param{const wxString\& }{url}}
|
||||
|
@ -181,6 +181,9 @@ public:
|
||||
wxString FindFirst(const wxString& spec, int flags = 0);
|
||||
wxString FindNext();
|
||||
|
||||
// find a file in a list of directories, returns false if not found
|
||||
bool FindFileInPath(wxString *pStr, const wxChar *path, const wxChar *file);
|
||||
|
||||
// Adds FS handler.
|
||||
// In fact, this class is only front-end to the FS handlers :-)
|
||||
static void AddHandler(wxFileSystemHandler *handler);
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "wx/module.h"
|
||||
#include "wx/mimetype.h"
|
||||
#include "wx/filename.h"
|
||||
#include "wx/tokenzr.h"
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
@ -447,7 +448,37 @@ wxString wxFileSystem::FindNext()
|
||||
else return m_FindFileHandler -> FindNext();
|
||||
}
|
||||
|
||||
bool wxFileSystem::FindFileInPath(wxString *pStr,
|
||||
const wxChar *path,
|
||||
const wxChar *basename)
|
||||
{
|
||||
// we assume that it's not empty
|
||||
wxCHECK_MSG( !wxIsEmpty(basename), false,
|
||||
_T("empty file name in wxFileSystem::FindFileInPath"));
|
||||
|
||||
// skip path separator in the beginning of the file name if present
|
||||
if ( wxIsPathSeparator(*basename) )
|
||||
basename++;
|
||||
|
||||
wxStringTokenizer tokenizer(path, wxPATH_SEP);
|
||||
while ( tokenizer.HasMoreTokens() )
|
||||
{
|
||||
wxString strFile = tokenizer.GetNextToken();
|
||||
if ( !wxEndsWithPathSeparator(strFile) )
|
||||
strFile += wxFILE_SEP_PATH;
|
||||
strFile += basename;
|
||||
|
||||
wxFSFile *file = OpenFile(strFile);
|
||||
if ( file )
|
||||
{
|
||||
delete file;
|
||||
*pStr = strFile;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void wxFileSystem::AddHandler(wxFileSystemHandler *handler)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user