1999-11-22 07:13:55 -05:00
|
|
|
\section{wxFileSystem}\label{fs}
|
1999-07-10 17:17:24 -04:00
|
|
|
|
1999-07-30 08:02:28 -04:00
|
|
|
The wxHTML library uses a {\bf virtual file systems} mechanism
|
|
|
|
similar to the one used in Midnight Commander, Dos Navigator,
|
1999-07-10 17:17:24 -04:00
|
|
|
FAR or almost any modern file manager. (Do you remember? You can
|
1999-07-30 08:02:28 -04:00
|
|
|
press enter on ZIP file and its contents is displayed as if it
|
|
|
|
were a local directory...)
|
1999-07-10 17:17:24 -04:00
|
|
|
|
|
|
|
\wxheading{Classes}
|
|
|
|
|
|
|
|
Three classes are used in order to provide full VFS:
|
|
|
|
|
1999-08-05 18:05:15 -04:00
|
|
|
\begin{itemize}\itemsep=0pt
|
1999-07-30 08:02:28 -04:00
|
|
|
\item The \helpref{wxFSFile}{wxfsfile} class provides information
|
1999-07-10 17:17:24 -04:00
|
|
|
on opened file (name, input stream, mime type and anchor).
|
1999-07-30 08:02:28 -04:00
|
|
|
\item The \helpref{wxFileSystem}{wxfilesystem} class is the interface.
|
|
|
|
Its main methods are ChangePathTo() and OpenFile(). This class
|
1999-07-10 17:17:24 -04:00
|
|
|
is most often used by the end user.
|
1999-07-30 08:02:28 -04:00
|
|
|
\item The \helpref{wxFileSystemHandler}{wxfilesystemhandler} is the core
|
1999-07-10 17:17:24 -04:00
|
|
|
if VFS mechanism. You can derive your own handler and pass it to
|
|
|
|
wxFileSystem's AddHandler() method. In the new handler you only need to
|
|
|
|
overwrite OpenFile() and CanOpen() methods.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\wxheading{Locations}
|
|
|
|
|
|
|
|
Locations (aka filenames aka addresses) are constructed from 4 parts:
|
|
|
|
|
1999-08-05 18:05:15 -04:00
|
|
|
\begin{itemize}\itemsep=0pt
|
1999-07-30 08:02:28 -04:00
|
|
|
\item {\bf protocol} - handler can recognize if it is able to open a
|
|
|
|
file by checking its protocol. Examples are "http", "file" or "ftp".
|
1999-07-10 17:17:24 -04:00
|
|
|
\item {\bf right location} - is the name of file within the protocol.
|
1999-07-30 08:02:28 -04:00
|
|
|
In "http://www.wxwindows.org/index.html" the right location is "//www.wxwindows.org/index.html".
|
1999-07-10 17:17:24 -04:00
|
|
|
\item {\bf anchor} - anchor is optional and is usually not present.
|
1999-07-30 08:02:28 -04:00
|
|
|
In "index.htm\#chapter2" the anchor is "chapter2".
|
|
|
|
\item {\bf left location} - this is usually an empty string.
|
1999-07-10 17:17:24 -04:00
|
|
|
It is used by 'local' protocols such as ZIP.
|
|
|
|
See Combined Protocols paragraph for details.
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\wxheading{Combined Protocols}
|
|
|
|
|
|
|
|
Left location pretends protocol in URL string.
|
|
|
|
It's not used by global protocols like HTTP but it's used
|
|
|
|
by local ones - for example you can see this address:
|
|
|
|
|
|
|
|
file:archives/cpp\_doc.zip\#zip:reference/fopen.htm\#syntax
|
|
|
|
|
|
|
|
In this example, protocol is "zip", left location is
|
|
|
|
"reference/fopen.htm", anchor is "syntax" and right location
|
1999-12-24 18:40:13 -05:00
|
|
|
is "file:archives/cpp\_doc.zip". It is used by zip handler
|
1999-07-10 17:17:24 -04:00
|
|
|
to determine in what file this particular zip VFS is stored.
|
|
|
|
|
1999-07-30 08:02:28 -04:00
|
|
|
In fact there are two protocols used in this example: zip and file.
|
1999-07-10 17:17:24 -04:00
|
|
|
You can construct even more complicated addresses like this one:
|
|
|
|
|
|
|
|
http://www.archives.org/myarchive.zip\#zip:local/docs/cpp/stdio.zip\#zip:index.htm
|
|
|
|
|
|
|
|
In this example you access zip VFS stdio.zip stored in another zip (myarchive.zip)
|
1999-07-30 08:02:28 -04:00
|
|
|
which is at WWW.
|
1999-07-10 17:17:24 -04:00
|
|
|
|
|
|
|
\wxheading{File Systems Included in wxHTML}
|
|
|
|
|
1999-08-05 18:05:15 -04:00
|
|
|
\begin{enumerate}\itemsep=0pt
|
1999-07-10 17:17:24 -04:00
|
|
|
\item Local files
|
|
|
|
\item HTTP protocol
|
|
|
|
\item FTP protocol
|
|
|
|
\item .ZIP archives
|
|
|
|
\end{enumerate}
|
|
|
|
|