La bibliothèque wxHTML utilise un mécanisme desystèmes de fichiers virtuels similaire à celui utilisé dans Midnight Commander, Dos Navigator, FAR ou à peut près la majorité des gestionnaires de fichiers modernes. Il permet à l'utilisateur d'accéder à des données stockées dans des archives comme s'il s'agissait de fichiers ordinaires. Les fichiers générés "à la volée" qui n'existent qu'en mémoire sont également supportés.
Classes
Trois classes sont utilisées afin de fournir un mécanisme de systèmes de fichiers virtuels:
Emplacements
Emplacements (également connues comme noms de fichiers, ou adresses) sont construits d'après quatre parties:
Protocoles Combinés
L'emplacement de gauche précède le protocole dans une chaine URL. Il n'est pas utilisé par les protocoles globaux tels que HTTP, mais il devient utile Section non traduite:when nesting protocols - par exemple, vous voulez avoir accès à des fichiers dans une archive ZIP:
file:archives/cpp_doc.zip#zip:reference/fopen.htm#syntax
Dans cet exemple, le protocole est "zip", l'emplacement réel est "reference/fopen.htm", l'ancre est "syntax" et l'emplacement de gauche est "file:archives/cpp_doc.zip".
Il y a deux protocoles utilisés dans cet exemple : "zip" et "file".
Systèmes de fichiers inclus dans wxHTML
Les gestionnaires de fichiers virtuels suivants font partie de wxWidgets:
| wxArchiveFSHandler | Un gestionnaire pour les archives telles que zip et tar. Le fichier à inclure est <wx/fs_arc.h>. Exemples d'URLs : "archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename". |
| wxFilterFSHandler | Un gestionnaire pour les schémas de compression tel que gzip. Le fichier à inclure est <wx/fs_filter.h>. Les URLs sont par exemple de la forme: "document.ps.gz#gzip:". |
| wxInternetFSHandler | Un gestionnaire pour accéder aux documents via les protocoles HTTP ou FTP. Le fichier à inclure est <wx/fs_inet.h>. |
| wxMemoryFSHandler | Ce gestionnaire vouspermet d'accéder à des données stockées en mémoire (telles que des bitmaps) comme s'il s'agissait de fichier normaux. Voir la documentation wxMemoryFSHandle pour plus de détails. Le fichier à inclure est <wx/fs_mem.h>. Les URLs sont préfixées avec memory:, par exemple : "memory:myfile.htm" |
De plus, wxFileSystem lui-même peut accéder aux fichiers locaux.
Initialiser les gestionnaires de systèmes de fichiers
Utilisez wxFileSystem::AddHandler pour initialiser un gestionnaire, par exemple :
#include <wx/fs_mem.h>
...
bool MyApp::OnInit()
{
wxFileSystem::AddHandler(new wxMemoryFSHandler);
...
}