]>
Commit | Line | Data |
---|---|---|
ccaaf5b0 | 1 | \section{wxFileSystem}\label{fs} |
704a4b75 | 2 | |
b453e1b2 RR |
3 | The wxHTML library uses a {\bf virtual file systems} mechanism |
4 | similar to the one used in Midnight Commander, Dos Navigator, | |
704a4b75 | 5 | FAR or almost any modern file manager. (Do you remember? You can |
b453e1b2 RR |
6 | press enter on ZIP file and its contents is displayed as if it |
7 | were a local directory...) | |
704a4b75 VS |
8 | |
9 | \wxheading{Classes} | |
10 | ||
11 | Three classes are used in order to provide full VFS: | |
12 | ||
22d6efa8 | 13 | \begin{itemize}\itemsep=0pt |
b453e1b2 | 14 | \item The \helpref{wxFSFile}{wxfsfile} class provides information |
704a4b75 | 15 | on opened file (name, input stream, mime type and anchor). |
b453e1b2 RR |
16 | \item The \helpref{wxFileSystem}{wxfilesystem} class is the interface. |
17 | Its main methods are ChangePathTo() and OpenFile(). This class | |
704a4b75 | 18 | is most often used by the end user. |
b453e1b2 | 19 | \item The \helpref{wxFileSystemHandler}{wxfilesystemhandler} is the core |
704a4b75 VS |
20 | if VFS mechanism. You can derive your own handler and pass it to |
21 | wxFileSystem's AddHandler() method. In the new handler you only need to | |
22 | overwrite OpenFile() and CanOpen() methods. | |
23 | \end{itemize} | |
24 | ||
25 | \wxheading{Locations} | |
26 | ||
27 | Locations (aka filenames aka addresses) are constructed from 4 parts: | |
28 | ||
22d6efa8 | 29 | \begin{itemize}\itemsep=0pt |
b453e1b2 RR |
30 | \item {\bf protocol} - handler can recognize if it is able to open a |
31 | file by checking its protocol. Examples are "http", "file" or "ftp". | |
704a4b75 | 32 | \item {\bf right location} - is the name of file within the protocol. |
b453e1b2 | 33 | In "http://www.wxwindows.org/index.html" the right location is "//www.wxwindows.org/index.html". |
704a4b75 | 34 | \item {\bf anchor} - anchor is optional and is usually not present. |
b453e1b2 | 35 | In "index.htm\#chapter2" the anchor is "chapter2". |
b453e1b2 | 36 | \item {\bf left location} - this is usually an empty string. |
704a4b75 VS |
37 | It is used by 'local' protocols such as ZIP. |
38 | See Combined Protocols paragraph for details. | |
39 | \end{itemize} | |
40 | ||
41 | \wxheading{Combined Protocols} | |
42 | ||
43 | Left location pretends protocol in URL string. | |
44 | It's not used by global protocols like HTTP but it's used | |
45 | by local ones - for example you can see this address: | |
46 | ||
47 | file:archives/cpp\_doc.zip\#zip:reference/fopen.htm\#syntax | |
48 | ||
49 | In this example, protocol is "zip", left location is | |
50 | "reference/fopen.htm", anchor is "syntax" and right location | |
605d715d | 51 | is "file:archives/cpp\_doc.zip". It is used by zip handler |
704a4b75 VS |
52 | to determine in what file this particular zip VFS is stored. |
53 | ||
b453e1b2 | 54 | In fact there are two protocols used in this example: zip and file. |
704a4b75 VS |
55 | You can construct even more complicated addresses like this one: |
56 | ||
57 | http://www.archives.org/myarchive.zip\#zip:local/docs/cpp/stdio.zip\#zip:index.htm | |
58 | ||
59 | In this example you access zip VFS stdio.zip stored in another zip (myarchive.zip) | |
b453e1b2 | 60 | which is at WWW. |
704a4b75 VS |
61 | |
62 | \wxheading{File Systems Included in wxHTML} | |
63 | ||
22d6efa8 | 64 | \begin{enumerate}\itemsep=0pt |
704a4b75 VS |
65 | \item Local files |
66 | \item HTTP protocol | |
67 | \item FTP protocol | |
68 | \item .ZIP archives | |
69 | \end{enumerate} | |
70 |